intval($uid))); if(empty($user)) return 0; return vip__isvip(array_value($user, 'vip_end', 0)); } function vip_getlevel($uid) { $r = db_count('user_vip', array('uid' => intval($uid))); if($r > 0) { $vip = db_find_one('user_vip', array('uid' => intval($uid))); return intval(array_value($vip, 'level', 0)); } return 0; } function vip_get_credits_name($type) { switch($type) { default: return 'credits'; case '1': return 'credits'; case '2': return 'golds'; case '3': return 'golds'; } } function vip_read($uid) { return db_find_one('user_vip', array('uid' => intval($uid))); } function vip_permanent_end_time() { return 4102444800; // 2100-01-01 00:00:00 } function vip_is_permanent_end($end_time) { return intval($end_time) >= vip_permanent_end_time(); } function vip_format_end_time($end_time) { $end_time = intval($end_time); if($end_time <= 0) return '--'; return vip_is_permanent_end($end_time) ? '永久会员' : date('Y-m-d H:i:s', $end_time); } function vip_setting_defaults() { return array( 'up_read' => '0', 'no_credits_down' => '0', 'no_credits_see' => '0', 'no_reply_see' => '0', 'month_fee' => '1000', 'month_grow' => 10, 'half_year_fee' => '6000', 'half_year_grow' => 100, 'year_fee' => '12000', 'year_grow' => 300, 'permanent_fee' => '0', 'permanent_grow' => 0, 'fee_type' => '0', 'grow_per_day' => 10, 'decrease_per_day' => 10, 'level2' => 3000, 'level3' => 8000, 'level4' => 20000, 'level5' => 50000, 'level6' => 100000, 'vip_group_gid' => 0, ); } function vip_setting_get() { $stored = setting_get('wiki_vip'); is_array($stored) OR $stored = array(); $set = vip_setting_defaults(); foreach($set as $key => $default) { if(array_key_exists($key, $stored)) { $set[$key] = $stored[$key]; } } if(!array_key_exists('permanent_fee', $stored) && array_key_exists('season_fee', $stored)) { $set['permanent_fee'] = $stored['season_fee']; } if(!array_key_exists('permanent_grow', $stored) && array_key_exists('season_grow', $stored)) { $set['permanent_grow'] = $stored['season_grow']; } return $set; } function vip_setting_save($input) { $set = vip_setting_get(); foreach($set as $key => $value) { if(array_key_exists($key, $input)) { $set[$key] = $input[$key]; } } return setting_set('wiki_vip', $set); } function vip_get_group_gid() { static $vip_group_gid = NULL; if($vip_group_gid !== NULL) return $vip_group_gid; $set = vip_setting_get(); $vip_group_gid = intval(array_value($set, 'vip_group_gid', 0)); if($vip_group_gid > 0) { $group = group_read($vip_group_gid); if(!empty($group)) return $vip_group_gid; $vip_group_gid = 0; } global $grouplist; $vip_name = 'VIP会员'; $candidate = 0; if(!empty($grouplist)) { foreach($grouplist as $group) { if(strpos($group['name'], 'VIP') !== FALSE || strpos($group['name'], 'vip') !== FALSE) { $candidate = intval($group['gid']); break; } } if($candidate <= 0) { foreach($grouplist as $group) { if($group['name'] == $vip_name) { $candidate = intval($group['gid']); break; } } } } if($candidate <= 0) { $existing = db_find_one('group', array('name' => $vip_name)); if(!empty($existing)) { $candidate = intval($existing['gid']); } } if($candidate <= 0) { $max_gid = db_maxid('group', 'gid'); $candidate = max(199, intval($max_gid) + 1); $create = group_create(array( 'gid' => $candidate, 'name' => $vip_name, 'creditsfrom' => 1000000000, 'creditsto' => 2000000000, 'allowread' => 1, 'allowthread' => 1, 'allowpost' => 1, 'allowattach' => 1, 'allowdown' => 1, 'allowtop' => 0, 'allowupdate' => 0, 'allowdelete' => 0, 'allowmove' => 0, 'allowbanuser' => 0, 'allowviewip' => 0, 'allowpostcheck' => 0, 'disabled' => 0, )); if($create === FALSE) return $vip_group_gid = 0; group_list_cache_delete(); global $grouplist; $grouplist = group_list_cache(); } vip_setting_save(array('vip_group_gid' => $candidate)); $vip_group_gid = $candidate; return $vip_group_gid; } function vip_user_group_needs_sync($user) { if(empty($user)) return FALSE; $gid = intval(array_value($user, 'gid', 0)); if($gid < 100) return FALSE; $vip_group_gid = vip_get_group_gid(); if($vip_group_gid <= 0) return FALSE; $is_vip = !empty($user['vip_end']) && vip__isvip($user['vip_end']); if($is_vip && $gid != $vip_group_gid) return TRUE; if(!$is_vip && $gid == $vip_group_gid) return TRUE; return FALSE; } function vip_buy_type_map() { return array( 'month' => array('days' => 31, 'label' => '月度会员'), 'half_year' => array('days' => 180, 'label' => '半年会员'), 'year' => array('days' => 365, 'label' => '年度会员'), 'permanent' => array('days' => 0, 'label' => '永久会员', 'permanent' => 1), ); } function vip_buy_type_text($buy_type) { $map = vip_buy_type_map(); return isset($map[$buy_type]) ? $map[$buy_type]['label'] : '会员'; } function vip_buy_duration_text($buy_type, $buy_num = 1) { $buy_num = max(1, intval($buy_num)); $map = vip_buy_type_map(); if(!isset($map[$buy_type])) return ''; if(!empty($map[$buy_type]['permanent'])) return '永久有效'; return intval($map[$buy_type]['days']) * $buy_num.' 天'; } function vip_buy_info($buy_type, $buy_num = 1) { $buy_num = intval($buy_num); if($buy_num <= 0 || $buy_num > 999) return FALSE; $map = vip_buy_type_map(); if(!isset($map[$buy_type])) return FALSE; $set = vip_setting_get(); if(empty($set)) return FALSE; $is_permanent = !empty($map[$buy_type]['permanent']); $is_permanent AND $buy_num = 1; $fee_key = $buy_type.'_fee'; $grow_key = $buy_type.'_grow'; $fee = intval(array_value($set, $fee_key, 0)) * $buy_num; $grow = intval(array_value($set, $grow_key, 0)) * $buy_num; if($fee <= 0) return FALSE; $days = $is_permanent ? 0 : intval($map[$buy_type]['days']) * $buy_num; return array( 'buy_type' => $buy_type, 'buy_num' => $buy_num, 'days' => $days, 'label' => $map[$buy_type]['label'], 'duration_text' => vip_buy_duration_text($buy_type, $buy_num), 'is_permanent' => $is_permanent ? 1 : 0, 'fee' => $fee, 'grow' => $grow, 'fee_type' => 0, ); } function vip_txn_begin() { global $db; if(empty($db) || !method_exists($db, 'connect_master')) return FALSE; $db->connect_master(); if(empty($db->wlink)) return FALSE; try { if(method_exists($db->wlink, 'inTransaction') && $db->wlink->inTransaction()) return 0; return $db->wlink->beginTransaction() ? 1 : FALSE; } catch(Exception $e) { return FALSE; } } function vip_txn_commit($state) { global $db; if($state !== 1) return TRUE; if(empty($db) || empty($db->wlink)) return FALSE; try { return $db->wlink->commit(); } catch(Exception $e) { return FALSE; } } function vip_txn_rollback($state) { global $db; if($state !== 1) return TRUE; if(empty($db) || empty($db->wlink)) return FALSE; try { if(method_exists($db->wlink, 'inTransaction') && !$db->wlink->inTransaction()) return TRUE; return $db->wlink->rollBack(); } catch(Exception $e) { return FALSE; } } function vip_apply_membership($uid, $days, $grow, $now = NULL, $is_permanent = FALSE) { $uid = intval($uid); $days = intval($days); $grow = intval($grow); $now = $now === NULL ? time() : intval($now); $is_permanent = $is_permanent ? TRUE : FALSE; if($uid <= 0 || (!$is_permanent && $days <= 0)) return FALSE; $user = db_find_one('user', array('uid' => $uid)); if(empty($user)) return FALSE; $current_end = intval(array_value($user, 'vip_end', 0)); if(vip_is_permanent_end($current_end)) { $target_end = $current_end; } elseif($is_permanent) { $target_end = vip_permanent_end_time(); } else { $is_vip = $current_end > $now; $target_end = $is_vip ? $current_end + $days * 86400 : $now + $days * 86400; } $r = db_update('user', array('uid' => $uid), array('vip_end' => $target_end)); if($r === FALSE) return FALSE; $exist = db_count('user_vip', array('uid' => $uid)); if($exist === FALSE) return FALSE; if($exist) { $r = db_update('user_vip', array('uid' => $uid), array('end' => $target_end, 'grow+' => $grow)); } else { $r = db_insert('user_vip', array('uid' => $uid, 'end' => $target_end, 'grow' => $grow, 'level' => 1)); } if($r === FALSE) return FALSE; vip_update_level($uid); user_update_group($uid); return TRUE; } function vip_open_direct($uid, $num, $buy_type, $money = 0, $use_transaction = TRUE) { if(!is_numeric($uid) || $uid <= 0) return FALSE; $uid = intval($uid); $info = vip_buy_info($buy_type, $num); if($info === FALSE) return FALSE; $user = db_find_one('user', array('uid' => $uid)); if(empty($user)) return FALSE; $transaction_state = 0; try { if($use_transaction) { $transaction_state = vip_txn_begin(); if($transaction_state === FALSE) { throw new Exception('vip transaction begin failed'); } } $now = time(); $r = vip_apply_membership($uid, $info['days'], $info['grow'], $now, !empty($info['is_permanent'])); if($r === FALSE) { throw new Exception('vip apply failed'); } $pay_log_r = db_insert('user_pay', array( 'uid' => $uid, 'status' => 1, 'num' => intval($money), 'type' => 7, 'credit_type' => 0, 'time' => $now, 'code' => $info['label'].' '.$info['duration_text'] )); if($pay_log_r === FALSE) { throw new Exception('vip pay log insert failed'); } if($use_transaction && vip_txn_commit($transaction_state) === FALSE) { throw new Exception('vip transaction commit failed'); } return 1; } catch(Exception $e) { if($use_transaction) { vip_txn_rollback($transaction_state); } error_log('VIP direct open failed. uid:'.$uid.' err:'.$e->getMessage()); return FALSE; } } function vip_add($uid,$num,$T) { return FALSE; } function vip_update_level($uid) { $r = db_count('user_vip',array('uid'=>$uid)); if($r > 0) { $vip = db_find_one('user_vip', array('uid' => $uid)); $now_grow = intval(array_value($vip, 'grow', 0)); $set = vip_setting_get(); $level = 1; $set['level1'] = 0; $set['level7'] = 99999999; for($i = 1; $i <= 6; $i++) { if($now_grow >= $set['level'.$i] && $now_grow < $set['level'.($i + 1)]) { $level = $i; break; } } db_update('user_vip', array('uid' => $uid), array('level' => $level)); } } function vip_get_maxgrow($grow) { $set = vip_setting_get(); $max_grow = 0; $set['level1'] = 0; $set['level7'] = 99999999; for($i = 1; $i <= 6; $i++) { if($grow >= $set['level'.$i] && $grow < $set['level'.($i + 1)]) { $max_grow = $set['level'.($i + 1)]; break; } } return $max_grow; } function vip_get_icon_html($uid, $username) { $level = vip_getlevel($uid); $safe_username = htmlspecialchars($username, ENT_QUOTES); if($level > 0) { return ' '.$safe_username.''; } return $safe_username; } function vip_get_icon_html_with_online($uid, $username, $is_online = false) { $level = vip_getlevel($uid); $safe_username = htmlspecialchars($username, ENT_QUOTES); $result = $safe_username; if($level > 0) { $result = ' '.$safe_username.''; } if($is_online) { $result .= '在线'; } return $result; } function vip_get_large_icon_html($uid, $username) { $level = vip_getlevel($uid); $safe_username = htmlspecialchars($username, ENT_QUOTES); if($level > 0) { return ' '.$safe_username.''; } return $safe_username; } function vip_get_icon_html_with_size($uid, $username, $size = 'normal') { $level = vip_getlevel($uid); if($level > 0) { $style = ''; switch($size) { case 'large': $style = ' style="font-size: 1.8em; vertical-align: middle;"'; break; case 'xlarge': $style = ' style="font-size: 2.2em; vertical-align: middle;"'; break; case 'small': $style = ' style="font-size: 0.9em; vertical-align: middle;"'; break; default: $style = ''; } return ' '.htmlspecialchars($username, ENT_QUOTES).''; } return htmlspecialchars($username, ENT_QUOTES); } ?>
Error[2]: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time, File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 189
File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 189, ini_set(session.name , bbs_sid)
File: /www/wwwroot/xiuno/tmp/index.inc.php, Line: 12, sess_start()
File: /www/wwwroot/xiuno/index.php, Line: 52, include(/www/wwwroot/xiuno/tmp/index.inc.php)
Error[2]: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time, File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 191
File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 191, ini_set(session.use_cookies , On)
File: /www/wwwroot/xiuno/tmp/index.inc.php, Line: 12, sess_start()
File: /www/wwwroot/xiuno/index.php, Line: 52, include(/www/wwwroot/xiuno/tmp/index.inc.php)
Error[2]: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time, File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 192
File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 192, ini_set(session.use_only_cookies , On)
File: /www/wwwroot/xiuno/tmp/index.inc.php, Line: 12, sess_start()
File: /www/wwwroot/xiuno/index.php, Line: 52, include(/www/wwwroot/xiuno/tmp/index.inc.php)
Error[2]: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time, File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 193
File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 193, ini_set(session.cookie_domain , )
File: /www/wwwroot/xiuno/tmp/index.inc.php, Line: 12, sess_start()
File: /www/wwwroot/xiuno/index.php, Line: 52, include(/www/wwwroot/xiuno/tmp/index.inc.php)
Error[2]: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time, File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 194
File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 194, ini_set(session.cookie_path , )
File: /www/wwwroot/xiuno/tmp/index.inc.php, Line: 12, sess_start()
File: /www/wwwroot/xiuno/index.php, Line: 52, include(/www/wwwroot/xiuno/tmp/index.inc.php)
Error[2]: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time, File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 195
File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 195, ini_set(session.cookie_secure , Off)
File: /www/wwwroot/xiuno/tmp/index.inc.php, Line: 12, sess_start()
File: /www/wwwroot/xiuno/index.php, Line: 52, include(/www/wwwroot/xiuno/tmp/index.inc.php)
Error[2]: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time, File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 196
File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 196, ini_set(session.cookie_lifetime , 8640000)
File: /www/wwwroot/xiuno/tmp/index.inc.php, Line: 12, sess_start()
File: /www/wwwroot/xiuno/index.php, Line: 52, include(/www/wwwroot/xiuno/tmp/index.inc.php)
Error[2]: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time, File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 197
File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 197, ini_set(session.cookie_httponly , On)
File: /www/wwwroot/xiuno/tmp/index.inc.php, Line: 12, sess_start()
File: /www/wwwroot/xiuno/index.php, Line: 52, include(/www/wwwroot/xiuno/tmp/index.inc.php)
Error[2]: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time, File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 199
File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 199, ini_set(session.gc_maxlifetime , 3600)
File: /www/wwwroot/xiuno/tmp/index.inc.php, Line: 12, sess_start()
File: /www/wwwroot/xiuno/index.php, Line: 52, include(/www/wwwroot/xiuno/tmp/index.inc.php)
Error[2]: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time, File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 200
File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 200, ini_set(session.gc_probability , 1)
File: /www/wwwroot/xiuno/tmp/index.inc.php, Line: 12, sess_start()
File: /www/wwwroot/xiuno/index.php, Line: 52, include(/www/wwwroot/xiuno/tmp/index.inc.php)
Error[2]: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time, File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 201
File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 201, ini_set(session.gc_divisor , 500)
File: /www/wwwroot/xiuno/tmp/index.inc.php, Line: 12, sess_start()
File: /www/wwwroot/xiuno/index.php, Line: 52, include(/www/wwwroot/xiuno/tmp/index.inc.php)
Error[2]: session_set_save_handler(): Cannot change save handler when headers already sent, File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 203
File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 203, session_set_save_handler(sess_open , sess_close , sess_read , sess_write , sess_destroy , sess_gc)
File: /www/wwwroot/xiuno/tmp/index.inc.php, Line: 12, sess_start()
File: /www/wwwroot/xiuno/index.php, Line: 52, include(/www/wwwroot/xiuno/tmp/index.inc.php)
Error[2]: session_start(): Cannot start session when headers already sent, File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 210
File: /www/wwwroot/xiuno/tmp/model_session.func.php, Line: 210, session_start()
File: /www/wwwroot/xiuno/tmp/index.inc.php, Line: 12, sess_start()
File: /www/wwwroot/xiuno/index.php, Line: 52, include(/www/wwwroot/xiuno/tmp/index.inc.php)
四川-性息网-全国性息-免费楼凤论坛
首页 发现 发布 消息 我的
发新帖
四川