<?php

/*
+--------------------------------------------------------------------------
|   Invision Power Board v1.2
|   ========================================
|   by Matthew Mecham
|   (c) 2001 - 2003 Invision Power Services
|   http://www.invisionpower.com
|   ========================================
|   Web: http://www.invisionboard.com
|   Email: matt@invisionpower.com
|   Licence Info: http://www.invisionboard.com/?license
+---------------------------------------------------------------------------
|
|   > Admin Setting functions
|   > Module written by Matt Mecham
|   > Date started: 20th March 2002
|
|	> Module Version Number: 1.0.0
+--------------------------------------------------------------------------
*/


$idx = new ad_settings();


class ad_settings {

	var $base_url;

	function ad_settings() {
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP, $HTTP_POST_VARS;
		
		//---------------------------------------
		// Kill globals - globals bad, Homer good.
		//---------------------------------------
		
		$tmp_in = array_merge( $_GET, $_POST, $_COOKIE );
		
		foreach ( $tmp_in as $k => $v )
		{
			unset($$k);
		}

		//---------------------------------------
		
		$DB->query("SELECT VERSION() AS version");
		
		if ( ! $row = $DB->fetch_row() )
		{
			$DB->query("SHOW VARIABLES LIKE 'version'");
			$row = $DB->fetch_row();
		}
		
		$this->true_version = $row['version'];
		
		$no_array = explode( '.', preg_replace( "/^(.+?)[-_]?/", "\\1", $row['version']) );
		
		$one   = (!isset($no_array) || !isset($no_array[0])) ? 3  : $no_array[0];
		$two   = (!isset($no_array[1]))                      ? 21 : $no_array[1];
		$three = (!isset($no_array[2]))                      ? 0  : $no_array[2];
		
   		$this->mysql_version = (int)sprintf('%d%02d%02d', $one, $two, intval($three));

		switch($IN['code'])
		{
			case 'fulltext':
				$this->fulltext();
				break;
				
			case 'dofulltext':
				$this->do_fulltext();
				break;
				
			case 'phpinfo':
				phpinfo();
				exit;
				
			case 'glines':
				$this->guidelines();
				break;
			case 'doglines':
				$this->do_guidelines();
				break;
				
			case 'cookie':
				$this->cookie();
				break;
			case 'docookie':
				$this->save_config( array( 'cookie_domain', 'cookie_id', 'cookie_path' ) );
				break;
				
			case 'warn':
				$this->warn();
				break;
			case 'dowarn':
				$HTTP_POST_VARS['warn_protected'] = ','. @implode( ",", $HTTP_POST_VARS['groups'] ) . ',';
				$this->save_config( array( 	'warn_show_rating', "warn_past_max", 'warn_show_own', 'warn_min', 'warn_protected', 'warn_mod_day', 'warn_gmod_day', "warn_gmod_ban","warn_gmod_modq","warn_gmod_post","warn_mod_post","warn_mod_modq","warn_mod_ban",'warn_max',"warn_on" ) );
				break;

			case 'secure':
				$this->secure();
				break;
			case 'dosecure':
				$this->save_config( array ( 'strip_space_chr', 'validate_day_prune', 'bot_antispam', 'use_ttf', 'gd_width', 'gd_height',"gd_font",  'disable_admin_anon', 'disable_online_ip', 'disable_reportpost', 'allow_dynamic_img','session_expiration','match_browser','allow_dup_email','allow_images', 'force_login', 'no_reg',
											'allow_flash','new_reg_notify','use_mail_form','flood_control', 'allow_online_list', 'reg_auth_type' ) );
				break;
			//-------------------------
			case 'post':
				$this->post();
				break;
			case 'dopost':
//-- mod_resize_images begin 缩图外挂
                global $mod_rsi;
                $mod_rsi->save_config();
        
                if (isset($IN['poll_tags'] )) 
//-- mod_resize_images end 缩图外挂


				$this->save_config( array ( 'poll_disable_noreply', 'siu_thumb', 'siu_width', 'siu_height', 'startpoll_cutoff', 'post_wordwrap', 'allow_result_view', 'max_poll_choices', 'poll_tags', 'guest_name_pre', 'guest_name_suf', 'max_w_flash', 'max_h_flash', 'hot_topic', 'display_max_topics','display_max_posts','max_emos','max_images','emo_per_row', 'etfilter_punct', 'etfilter_shout',
											'strip_quotes', 'max_post_length','show_img_upload','pre_polls','pre_moved','pre_pinned','img_ext' ) );
				break;
			//-------------------------
			case 'avatars':
				$this->avatars();
				break;
			case 'doavatars':
				$this->save_config( array ( 'av_gal_cols' , "disable_ipbsize", "photo_ext", 'subs_autoprune', 'topicpage_contents', 'postpage_contents', 'allow_skins', 'max_sig_length', 'sig_allow_ibc', 'sig_allow_html','avatar_ext','avatar_url','avup_size_max','avatars_on','avatar_dims','avatar_def', 'max_location_length', 'max_interest_length', 'post_titlechange', 'guests_ava', 'guests_img', 'guests_sig' ) );
				break;
			//-------------------------
			case 'dates':
				$this->dates();
				break;
			case 'dodates':
				$this->save_config( array ( 'time_offset','clock_short','clock_joined','clock_long', 'time_adjust' ) );
				break;
			//-------------------------
			
			case 'calendar':
				$this->calendar();
				break;
			case 'docalendar':
				$this->save_config( array ( 'autohide_bday', 'autohide_calendar', 'show_birthdays', 'show_bday_calendar', 'show_calendar','calendar_limit', 'year_limit', 'start_year' ) );
				break;
			//-------------------------
                        //金钱hack
			case 'money':
				$this->money();
				break;
			case 'domoney':
				$this->save_config( array ( 'enable_money_system', 'interest_per_day', 'money_register', 'money_per_topic', 'money_per_post', 'money_per_poll', 'money_per_vote', 'money_per_kernel', 'money_per_delete','money_view_step', 'money_view_bounty', 'money_view_count_self', 'money_reply_step', 'money_reply_bounty', 'money_reply_count_self' ) );
				break;
			//-------------------------
			
			case 'cpu':
				$this->cpu();
				break;
			case 'docpu':
				$this->save_config( array ( 'custom_profile_topic', 'min_search_word', 'short_forum_jump', 'no_au_forum', 'no_au_topic', 'au_cutoff', 'load_limit','show_active','show_birthdays','show_totals','allow_search', 'search_post_cut', 'show_user_posted', 'nocache' ) );
				break;
			//-------------------------
			case 'email':
				$this->email();
				break;
			case 'doemail':
				$this->save_config( array ( 'email_in', 'email_out', 'mail_method', 'smtp_host', 'smtp_port', 'smtp_user', 'smtp_pass' ) );
				break;
			//-------------------------
			case 'url':
				$this->url();
				break;
			case 'dourl':
				$this->save_config( array ( 'number_format', 'html_dir','safe_mode_skins', 'board_name','board_url','home_name','home_url', 'disable_gzip',
										    'html_url','upload_url', 'upload_dir', 'print_headers', 'header_redirect', 'debug_level', 'sql_debug', 'auto_pm_on', 'auto_pm_subject', 'auto_pm_message', 'auto_pm_from') );
				break;
				break;
			//-------------------------
			case 'pm':
				$this->pm();
				break;
			case 'dopm':
				$this->save_config( array ( 'show_max_msg_list', 'msg_allow_code', 'msg_allow_html' ) );
				break;
			//-------------------------
			case 'news':
				$this->news();
				break;
			case 'donews':
				$this->save_config( array ( 'news_forum_id', 'index_news_link' ) );
				break;
			//-------------------------
			case 'coppa':
				$this->coppa();
				break;
			case 'docoppa':
				$this->save_config( array ( 'use_coppa', 'coppa_fax', 'coppa_address' ) );
				break;
			//-------------------------
			case 'board':
				$this->board();
				break;
			case 'doboard':
				$this->save_config( array ( 'board_offline', 'offline_msg' ) );
				break;
			//-------------------------
			case 'spider':
				$this->spider();
				break;
			case 'dospider':
				$this->save_config( array (  'spider_suit', "spider_sense","spider_visit","spider_group","spider_active",'sp_google' ,'sp_inktomi','sp_lycos'  ,'sp_jeeves','sp_wuseek', 'spider_anon' ) );
				break;
			//-------------------------
			case 'bw':
				$this->badword();
				break;
			case 'bw_add':
				$this->add_badword();
				break;
			case 'bw_remove':
				$this->remove_badword();
				break;
			case 'bw_edit':
				$this->edit_badword();
				break;
			case 'bw_doedit':
				$this->doedit_badword();
				break;
			//-------------------------
			case 'emo':
				$this->emoticons();
				break;
			case 'emo_add':
				$this->add_emoticons();
				break;
			case 'emo_remove':
				$this->remove_emoticons();
				break;
			case 'emo_edit':
				$this->edit_emoticons();
				break;
			case 'emo_doedit':
				$this->doedit_emoticons();
				break;
			case 'emo_upload':
				$this->upload_emoticon();			
			//-------------------------
			case 'count':
				$this->countstats();
				break;
			case 'docount':
				$this->docount();
				break;
			default:
				$this->cookie();
				break;
		}
		
	}
	
	
	
	//-------------------------------------------------------------
	// Full Text options page
	//--------------------------------------------------------------
	
	function fulltext()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP, $HTTP_POST_VARS;
	
		//---------------------------------------
		// Get the mySQL version.
		// Adapted from phpMyAdmin
		//---------------------------------------
		
		$DB->query("SELECT VERSION() AS version");
		
		if ( ! $row = $DB->fetch_row() )
		{
			$DB->query("SHOW VARIABLES LIKE 'version'");
			$row = $DB->fetch_row();
		}
		
		$this->true_version = $row['version'];
		
		$no_array = explode( '.', preg_replace( "/^(.+?)[-_]?/", "\\1", $row['version']) );
		
		$one   = (!isset($no_array) || !isset($no_array[0])) ? 3  : $no_array[0];
		$two   = (!isset($no_array[1]))                      ? 21 : $no_array[1];
		$three = (!isset($no_array[2]))                      ? 0  : $no_array[2];
		
   		$this->mysql_version = (int)sprintf('%d%02d%02d', $one, $two, intval($three));
   		
   		$this->common_header('dofulltext', '全文检索设定', '您可以在下面变更组态');
   		
   		if ( $this->mysql_version < 32323 )
   		{
   			$ADMIN->html .= $SKIN->add_td_basic("<strong>抱歉，您安装的 MySQL 没有使用全文检索的能力。</strong><br />请连络您的主机服务商进行 MySQL 升级。");
											
   			$ADMIN->html .= $SKIN->end_form($button);
										 
			$ADMIN->html .= $SKIN->end_table();
		
			$ADMIN->output();
			
			exit();
		}
		else
		{
			$ADMIN->html .= $SKIN->add_td_basic("<strong>什么是全文检索？</strong><br />全文检索是一种无须维护人工索引
												而能非常快速有效率地搜索巨量文章的方式。");
												
			//-------------------------------------------
			// Do we already have full text enabled?
			//-------------------------------------------
			
			$DB->query("SHOW CREATE TABLE ibf_posts");
			
			$tbl_info = $DB->fetch_row();
			
			if ( preg_match( "/FULLTEXT KEY/i", $tbl_info['Create Table'] ) )
			{
				$ADMIN->html .= $SKIN->add_td_basic("<b>全文索引已经存在</b><input type='hidden' name='ftexist' value='1' />");
									 			 
				$ADMIN->html .= $SKIN->add_td_row( array( "<b>要使用的搜索类型？</b>" ,
												  $SKIN->form_dropdown( "search_sql_method", array( 0 => array( 'ftext', '全文' ), 1 => array( 'man', '手动' ) ), $INFO['search_sql_method'] )
										 )      );
	
				$ADMIN->html .= $SKIN->add_td_row( array( "<b>预设搜索模式？</b><br>只有在使用全文检索时才有影响" ,
												  $SKIN->form_dropdown( "search_default_method", array( 0 => array( 'simple', '简易搜索' ), 1 => array( 'adv', '进阶' ) ), $INFO['search_default_method']  )
										 )      );
			}
			else
			{
				$ADMIN->html .= $SKIN->add_td_basic( "<b>在您可以进行设定之前必须建立全文索引。只要送出此表单即可开始设置索引。</b>" .
											       "<input type='hidden' name='setup' value='1'>");
			}
			
			$this->common_footer();
		}						 
	}
	
	//-------------------------------------------------------------
	// Save full text options
	//--------------------------------------------------------------
	
	function do_fulltext()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP, $HTTP_POST_VARS;
		
		if ( $IN['ftexist'] == 1)
		{
			$master = array();
			$master['search_sql_method']      = $IN['search_sql_method'];
			$master['search_default_method']  = $IN['search_default_method'];
			
			$ADMIN->rebuild_config($master);
		}
		else
		{
			// They don't.
			// Check for correct version and if need be, attempt to create the indexes...
			
			if ( $this->mysql_version >= 32323 )
			{
				// How many posts do we have?
				
				$DB->query("SELECT COUNT(*) as cnt from ibf_posts");
				
				$result = $DB->fetch_row();
				
				// If over 15,000 posts...
				
				if ( $result['cnt'] > 15000 )
				{
					// Explain how, why and what to do..
					
					$ADMIN->page_detail = "";
					$ADMIN->page_title  = "无法继续";
		
					$ADMIN->html .= $SKIN->add_td_basic( $this->return_sql_no_no_cant_do_it_sorry_text(), 'left', 'faker' );
					
					$ADMIN->output();
				}
				else
				{
					// Index away!
					
					$DB->query("alter table ibf_topics add fulltext(title)");
					
					$DB->query("alter table ibf_posts add fulltext(post)");
					
				}
			}
			else
			{
				$ADMIN->error("抱歉，您目前的 MySQL 版本无法使用全文检索");
			}
		}
		
		$ADMIN->save_log("已更新全文选项");
		
		$ADMIN->done_screen("已更新全文设定", "全文设定", "act=op&code=fulltext" );
		
	}
	
	//-------------------------------------------------------------
	// WARNY PORNY!
	//--------------------------------------------------------------
	
	function warn()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
	
		$this->common_header('dowarn', '会员警告设定', '您可以在下面变更组态' );
		
		$DB->query("SELECT g_id, g_title FROM ibf_groups ORDER BY g_title");
		
		while ( $r = $DB->fetch_row() )
		{
			$mem_group[] = array( $r['g_id'] , $r['g_title'] );
		}
		
		$protected = explode(',', trim($INFO['warn_protected']) );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>启用警告系统？</b>" ,
										  $SKIN->form_yes_no( "warn_on", $INFO['warn_on']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>警告层级...</b><br />这与会员个人资料中的视觉指标有关" ,
										 '最小 '.$SKIN->form_simple_input( 'warn_min' , $INFO['warn_min']  == "" ? 0 : $INFO['warn_min'] ) .' 到 '.
										 '最大 '.$SKIN->form_simple_input( 'warn_max' , $INFO['warn_max']  == "" ? 10 : $INFO['warn_max'] ) .
										 "<br>允许负数。如果有使用负数，我们建议您不要使用图形方块及百分比，改用 '评价' 模式为 '警告模式' 则不用顾虑到起始数字为负数。<br>当会员注册时警告层级都是从零开始。"
								 )      );	
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>受保护的群组...</b><br>无法被警告的群组<br />您可以选择一个以上" ,
												  $SKIN->form_multiselect( "groups[]", $mem_group, $protected )
										 )      );
										 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许其他所有不受保护的群组看到 <em>他们自己</em> 的警告层级与理由？</b>" ,
										  $SKIN->form_yes_no( "warn_show_own", $INFO['warn_show_own']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>一旦达到最小或最大值时允许继续警告？</b>" ,
										  $SKIN->form_yes_no( "warn_past_max", $INFO['warn_past_max']  )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>视觉指标类型？</b>" ,
										  $SKIN->form_dropdown( 'warn_show_rating', array( 0 => array( 0, '警告模式：显示图形方块 & 百分比' ), 1 => array( 1, '评价模式：显示 < 最小 | 目前 | 最大 > 层级' ) ), $INFO['warn_show_rating']  )
								 )      );				 
								 
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '讨论区板主权限', 'left', 'catrow2' );
		
		//----------------------------------------------------------------------------------------------------------- 
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>板主可以由警告平台封锁？</b><br />适用于那些被允许使用警告系统的板主<br />管理员可以由警告平台自动为之。" ,
										  $SKIN->form_yes_no( "warn_mod_ban", $INFO['warn_mod_ban']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>板主可以由警告平台管制伫列会员？</b><br />适用于那些被允许使用警告系统的板主<br />管理员可以由警告平台自动为之。" ,
										  $SKIN->form_yes_no( "warn_mod_modq", $INFO['warn_mod_modq']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>板主可以由警告平台移除发表权利？</b><br />适用于那些被允许使用警告系统的板主<br />管理员可以由警告平台自动为之。" ,
										  $SKIN->form_yes_no( "warn_mod_post", $INFO['warn_mod_post']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>板主可以警告会员...</b>" ,
										 $SKIN->form_input( 'warn_mod_day' , $INFO['warn_mod_day']  == "" ? 1 : $INFO['warn_mod_day'] ).'... 次一天'
								 )      );		
								 
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '全体板主权限', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>全体板主可以由警告平台封锁？</b><br />管理员可以由警告平台自动为之。" ,
										  $SKIN->form_yes_no( "warn_gmod_ban", $INFO['warn_gmod_ban']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>全体板主可以由警告平台管制伫列会员？</b><br />管理员可以由警告平台自动为之。" ,
										  $SKIN->form_yes_no( "warn_gmod_modq", $INFO['warn_gmod_modq']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>全体板主可以由警告平台移除发表权利？</b><br />管理员可以由警告平台自动为之。" ,
										  $SKIN->form_yes_no( "warn_gmod_post", $INFO['warn_gmod_post']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>全体板主可以警告会员...</b>" ,
										 $SKIN->form_input( 'warn_gmod_day' , $INFO['warn_gmod_day']  == "" ? 1 : $INFO['warn_gmod_day'] ).'... 次一天'
								 )      );
								 
		$this->common_footer();
	
	}
	
	//-------------------------------------------------------------
	// SPIDER MAN! CHECK OUT THOSE CRAZY PANTS!
	//--------------------------------------------------------------
	
	function spider()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
	
		$this->common_header('dospider', '搜索引擎蜘蛛/爬行设定', '您可以在下面变更组态<br />'.$SKIN->js_help_link('set_spider') );
		
		$DB->query("SELECT g_id, g_title FROM ibf_groups ORDER BY g_title");
		
		$mem_group = array();
		
		while ( $r = $DB->fetch_row() )
		{
			if ($INFO['admin_group'] == $r['g_id'])
			{
				if ($MEMBER['mgroup'] != $INFO['admin_group'])
				{
					continue;
				}
			}
			
			$mem_group[] = array( $r['g_id'] , $r['g_title'] );
		}
		
		$DB->query("SELECT sname, sid FROM ibf_skins ORDER BY sname");
		
		$skin_sets = array( 0 => array('', "使用预设面板" ) );
		
		while ( $s = $DB->fetch_row() )
		{
			$skin_sets[] = array( $s['sid'], $s['sname'] );
		}
		
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>启用搜索引擎蜘蛛识别？</b>" ,
										  $SKIN->form_yes_no( "spider_sense", $INFO['spider_sense']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>记录所有蜘蛛访问？</b><br />如果您遭到重度攻击，请把这项关闭！" ,
										  $SKIN->form_yes_no( "spider_visit", $INFO['spider_visit']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>将蜘蛛/机器人当成哪个群组的一部份？</b>" ,
										  $SKIN->form_dropdown( "spider_group", $mem_group, $INFO['spider_group'] == "" ? $INFO['guest_group'] : $INFO['spider_group']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>强制蜘蛛/机器人使用面板：</b>" ,
										  $SKIN->form_dropdown( "spider_suit", $skin_sets, $INFO['spider_suit']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>在活动使用者列表显示蜘蛛/机器人？</b>" ,
										  $SKIN->form_yes_no( "spider_active", $INFO['spider_active']  )
										  ."<br />".$SKIN->form_checkbox( 'spider_anon', $INFO['spider_anon'] )." 显示为匿名者 (只有最高管理员可以看见)"
								 )      );
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '在活动使用者列表...', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>呼叫 Googlebot...</b>" ,
										 $SKIN->form_input( 'sp_google' , $INFO['sp_google']  == "" ? 'GoogleBot'   : $INFO['sp_google'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>呼叫 Microsoft / Hotbot...</b>" ,
										 $SKIN->form_input( 'sp_inktomi', $INFO['sp_inktomi'] == "" ? 'Hot Bot'     : $INFO['sp_inktomi'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>呼叫 Lycos...</b>" ,
										 $SKIN->form_input( 'sp_lycos'  , $INFO['sp_lycos']   == "" ? 'Lycos'       : $INFO['sp_lycos'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>呼叫 Ask Jeeves...</b>" ,
										 $SKIN->form_input( 'sp_jeeves' , $INFO['sp_jeeves']  == "" ? 'Ask Jeeves'  : $INFO['sp_jeeves'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>呼叫 What U Seek...</b>" ,
										 $SKIN->form_input( 'sp_wuseek' , $INFO['sp_wuseek']  == "" ? 'What U Seek' : $INFO['sp_wuseek'] )
								 )      );
		
		$this->common_footer();
	
	
	}
	
	
	//-------------------------------------------------------------
	// Board Guidelines
	//--------------------------------------------------------------
	
	function do_guidelines()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP, $HTTP_POST_VARS;
		
		$master = array();
		$master['gl_show']  = $IN['gl_show'];
		$master['gl_link']  = $IN['gl_link'];
		$master['gl_title'] = $DB->oopsAddSlashes($IN['gl_title']); /* 中文修正 */
		
		$ADMIN->rebuild_config($master);
		
		$glines = $std->txt_raw2form($HTTP_POST_VARS['gl_guidelines']);
		$glines = str_replace( "<br>", "<br />", $glines);
		
		$DB->query("SELECT * FROM ibf_cache_store WHERE cs_key='boardrules'");

		if ( $row = $DB->fetch_row() )
		{
			$DB->query("UPDATE ibf_cache_store SET cs_value='".$DB->oopsAddSlashes($glines)."' WHERE cs_key='boardrules'");
		}
		else
		{
			$db_string = $DB->compile_db_insert_string( array(
															   'cs_key' => 'boardrules',
															   'cs_value' => $glines,
										  ) );

			$DB->query("INSERT INTO ibf_cache_store (".$db_string['FIELD_NAMES'].") VALUES(".$db_string['FIELD_VALUES'].")");
		}

		$ADMIN->save_log("已更新论坛指南");
		
		$ADMIN->done_screen("已更新讨论区组态", "管理控制台首页", "act=index" );
		
	}
	
	//---------------------------------------------
	
	function guidelines()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
	
		$this->common_header('doglines', '论坛准则/规则', '您可以在下面变更组态');
		
		$DB->query("SELECT * FROM ibf_cache_store WHERE cs_key='boardrules'");
		
		$row = $DB->fetch_row();
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>在页眉中显示准则连结？</b>" ,
										  $SKIN->form_yes_no( "gl_show", $INFO['gl_show'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>外部准则页面 http:// 连结？</b><br>留空使用内部页面" ,
										  $SKIN->form_input( "gl_link", $INFO['gl_link'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>使用在页眉上的抬头？</b>" ,
										  $SKIN->form_input( "gl_title", $INFO['gl_title'] )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>如果不使用外部连结；准则/规则文字</b><br>HTML 开放" ,
										  $SKIN->form_textarea( "gl_guidelines", $std->my_br2nl($row['cs_value']), 65, 20  )
								 )      );
								 
 
		$this->common_footer();
	
	
	}
	
	//-------------------------------------------------------------
	// COPPA
	//--------------------------------------------------------------
	
	function coppa()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
	
		$this->common_header('docoppa', 'COPPA 设定', '您可以在下面变更配置。注意，在您的论坛启用 <a href="http://www.ftc.gov/ogc/coppa1.htm" target="_blank">COPPA</a> 时，会要求 13 岁以下的儿童以传真或邮件表单取得父母的同意。');
		
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>使用 COPPA 注册系统？</b>" ,
										  $SKIN->form_yes_no( "use_coppa", $INFO['use_coppa']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>接收 COPPA 表单的传真号码</b>" ,
										  $SKIN->form_input( "coppa_fax", $INFO['coppa_fax']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>接收 COPPA 表单的邮件地址</b>" ,
										  $SKIN->form_textarea( "coppa_address", str_replace( "\n\n", "\n", $std->my_br2nl(str_replace( "\r\n", "\n", $INFO['coppa_address']) ) )  )
								 )      );
		
		
		$this->common_footer();
	
	
	}
	
	//=====================================================
	
	function docount()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
		
		if ( (! $IN['posts']) and (! $IN['members'] ) and (! $IN['lastreg'] ) )
		{
			$ADMIN->error("没有要重新计算的！");
		}
		
		$stats = array();
		
		if ($IN['posts'])
		{
			$DB->query("SELECT COUNT(pid) as posts FROM ibf_posts WHERE queued <> 1");
			$r = $DB->fetch_row();
			$stats['TOTAL_REPLIES'] = $r['posts'];
			$stats['TOTAL_REPLIES'] < 1 ? 0 : $stats['TOTAL_REPLIES'];
			
			$DB->query("SELECT COUNT(tid) as topics FROM ibf_topics WHERE approved = 1");
			$r = $DB->fetch_row();
			$stats['TOTAL_TOPICS'] = $r['topics'];
			$stats['TOTAL_TOPICS'] < 1 ? 0 : $stats['TOTAL_TOPICS'];
			
			$stats['TOTAL_REPLIES'] -= $stats['TOTAL_TOPICS'];
		}
		
		if ($IN['members'])
		{
			$DB->query("SELECT COUNT(uid) as members from ibf_members WHERE mgroup <> '".$INFO['auth_group']."'");
			$r = $DB->fetch_row();
			$stats['MEM_COUNT'] = $r['members'];
			// Remove "guest" account...
			$stats['MEM_COUNT']--;
			$stats['MEM_COUNT'] < 1 ? 0 : $stats['MEM_COUNT'];
		}
		
		if ($IN['lastreg'])
		{
			$DB->query("SELECT uid, uname FROM ibf_members WHERE mgroup <> '".$INFO['auth_group']."' ORDER BY uid DESC LIMIT 0,1");
			$r = $DB->fetch_row();
			$stats['LAST_MEM_NAME'] = $r['uname'];
			$stats['LAST_MEM_ID']   = $r['uid'];
		}
		
		if ($IN['online'])
		{
			$stats['MOST_DATE'] = time();
			$stats['MOST_COUNT'] = 1;
		}
		
		if ( count($stats) > 0 )
		{
			$db_string = $DB->compile_db_update_string( $stats );
			$DB->query("UPDATE ibf_stats SET $db_string");
		}
		else
		{
			$ADMIN->error("没有要重新计算的！");
		}
		
		$ADMIN->done_screen("已重新计算统计", "管理控制台首页", "act=index" );
		
	}
	
	
	
	function countstats()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
	
		$ADMIN->page_detail = "请选择要重新计算的统计值";
		$ADMIN->page_title  = "重新计算统计控制";
		
		$ADMIN->html .= $SKIN->start_form( array( 1 => array( 'code'  , 'docount' ),
												  2 => array( 'act'   , 'op'     ),
									     )      );
									     
		//+-------------------------------
		
		$SKIN->td_header[] = array( "统计"    , "70%" );
		$SKIN->td_header[] = array( "选项"       , "30%" );
		
		//+-------------------------------
		
		$ADMIN->html .= $SKIN->start_table( "重新计算统计" );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "重新计算所有主题与文章",
												  $SKIN->form_dropdown( 'posts', array( 0 => array( 1, '是'  ), 1 => array( 0, '否' ) ) )
										 )      );
										 
		$ADMIN->html .= $SKIN->add_td_row( array( "重新计算会员",
												  $SKIN->form_dropdown( 'members', array( 0 => array( 1, '是'  ), 1 => array( 0, '否' ) ) )
										 )      );
										 
		$ADMIN->html .= $SKIN->add_td_row( array( "重设最新注册会员",
												  $SKIN->form_dropdown( 'lastreg', array( 0 => array( 1, '是'  ), 1 => array( 0, '否' ) ) )
										 )      );
										 
		$ADMIN->html .= $SKIN->add_td_row( array( "重设 '线上最高记录' 统计？",
												  $SKIN->form_dropdown( 'online', array( 0 => array( 0, '否'  ), 1 => array( 1, '是' ) ) )
										 )      );
										 
		$ADMIN->html .= $SKIN->end_form('重设这些统计');
										 
		$ADMIN->html .= $SKIN->end_table();
		
		$ADMIN->output();
	
	}
	
	//-------------------------------------------------------------
	// CALENDAR
	//--------------------------------------------------------------
	
	function calendar()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
	
		$this->common_header('docalendar', '日历设定', '您可以在下面变更配置');
		
		$INFO['start_year'] = (isset($INFO['start_year'])) ? $INFO['start_year'] : 2001;
		$INFO['year_limit'] = (isset($INFO['year_limit'])) ? $INFO['year_limit'] : 5;
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>在日历主页面显示生日？</b>" ,
										  $SKIN->form_yes_no( "show_bday_calendar", $INFO['show_bday_calendar'] )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>在论坛首页显示今天生日者？</b>" ,
										  $SKIN->form_yes_no( "show_birthdays", $INFO['show_birthdays'] )
										  ."<br />".$SKIN->form_checkbox( "autohide_bday", $INFO["autohide_bday"] )." 无可显示时自动隐藏？"
								 )      );
								 						 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>显示即将来临的事件？</b><br>这会将日历事件显示在论坛首页的统计区内" ,
										  $SKIN->form_yes_no( "show_calendar", $INFO['show_calendar'] )
										  ."<br />".$SKIN->form_checkbox( "autohide_calendar", $INFO["autohide_calendar"] )." 无可显示时自动隐藏？"
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>显示最近未来 [x] 天的事件</b><br>这适用于上面的选项" ,
										  $SKIN->form_input( "calendar_limit", $INFO['calendar_limit']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>日历 '年份' 下拉选单的开始年份</b><br>这适用于检视日历 / 发表事件" ,
										  $SKIN->form_input( "start_year", $INFO['start_year']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>'年份' 下拉选单的年限</b><br>这适用于检视日历 / 发表事件。<br>范例：现在是 2002 年，您输入 5 - 最后可选的年份 = 2007" ,
										  $SKIN->form_input( "year_limit", $INFO['year_limit']  )
								 )      );
								 
 		
								 
		$this->common_footer();
	
	
	}
	
	//-------------------------------------------------------------
	// URLs and ADDRESSES
	//--------------------------------------------------------------
	
	function board()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
	
		$this->common_header('doboard', '论坛关闭/开放', '您可以在下面变更配置');
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>关闭论坛？</b><br>有权限的人依然可以进入论坛" ,
										  $SKIN->form_yes_no( "board_offline", $INFO['board_offline'] )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>要显示的关闭讯息</b>" ,
										  $SKIN->form_textarea( "offline_msg", $INFO['offline_msg']  )
								 )      );
								 
 
		$this->common_footer();
	
	
	}
	
	//-------------------------------------------------------------
	// EMOTICON FUNCTIONS
	//-------------------------------------------------------------

	function doedit_emoticons()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;

		if ($IN['before'] == "")
		{
			$ADMIN->error("您必须输入一个要取代的文字!");
		}

		if ($IN['id'] == "")
		{
			$ADMIN->error("您必须输入一个有效的表情图示 id!");
		}

		if ( strstr( $IN['before'], '&#092;' ) )
		{
			$ADMIN->error("您不能在 \"{$IN['before']}\" 使用反斜线字符，请改用其他的字符.");
		}

		$IN['clickable'] = $IN['clickable'] ? 1 : 0;

		$db_string = $DB->compile_db_update_string( array( 'code'      => $IN['before'],
														   'smile_url' => $IN['after'],
														   'clickable' => $IN['click'],
												  )      );

		$DB->query("UPDATE ibf_emoticons SET $db_string WHERE id='".$IN['id']."'");

		$std->boink_it($SKIN->base_url."&act=op&code=emo");
		exit();


	}

	//=====================================================


	function edit_emoticons()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;

		$ADMIN->page_detail = "您可以在下面编辑表情图示过滤";
		$ADMIN->page_title  = "编辑表情图示";

		//+-------------------------------

		if ($IN['id'] == "")
		{
			$ADMIN->error("您必须输入一个有效的过滤 id!");
		}

		//+-------------------------------

		$DB->query("SELECT * FROM ibf_emoticons WHERE id='".$IN['id']."'");

		if ( ! $r = $DB->fetch_row() )
		{
			$ADMIN->error("无法在资料库中找到该表情图示");
		}

		//+-------------------------------

		$ADMIN->html .= $SKIN->start_form( array( 1 => array( 'code'  , 'emo_doedit' ),
												  2 => array( 'act'   , 'op'     ),
												  3 => array( 'id'    , $IN['id'] ),
									     )      );



		$SKIN->td_header[] = array( "之前"  , "40%" );
		$SKIN->td_header[] = array( "之后"   , "40%" );
		$SKIN->td_header[] = array( "+ 可点选"  , "20%" );

		//+-------------------------------

		$emos = array();

		if (! is_dir($INFO['html_dir'].'/../../../uploads') )
		{
			$ADMIN->error("无法找到表情图示目录 - 请确定 'html_dir' 路径设置妥当");
		}

		//+-------------------------------


		$dh = opendir( $INFO['html_dir'].'/../../../uploads' ) or die("无法开启要读取的表情图示目录，请检查路径及权限");
 		while ( $file = readdir( $dh ) )
 		{
 			if ( preg_match( "/^smil.*/i", $file ) )
 			{
 				$emos[] = array( $file, $file );
 			}
 		}
 		closedir( $dh );

 		//+-------------------------------

		$ADMIN->html .= $SKIN->start_table( "编辑表情图示" );

		$ADMIN->html .= "<script language='javascript'>
						 <!--
						 	function show_emo() {

						 		var emo_url = '{$INFO['html_url']}/../../../uploads/' + document.theAdminForm.after.options[document.theAdminForm.after.selectedIndex].value;

						 		document.images.emopreview.src = emo_url;
							}
						//-->
						</script>
						";

		$ADMIN->html .= $SKIN->add_td_row( array( $SKIN->form_input('before', stripslashes($r['code']) ),
												  $SKIN->form_dropdown('after', $emos, $r['smile_url'], "onChange='show_emo()'") . "&nbsp;&nbsp;<img src='../../uploads/{$r['smile_url']}' name='emopreview' border='0'>",
												  $SKIN->form_dropdown( 'click', array( 0 => array( 1, '是'  ), 1 => array( 0, '否' ) ), $r['clickable'] )
										 )      );

		$ADMIN->html .= $SKIN->end_form('编辑表情图示');

		$ADMIN->html .= $SKIN->end_table();

		$ADMIN->output();

	}

	//=====================================================

	function remove_emoticons()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;

		if ($IN['id'] == "")
		{
			$ADMIN->error("您必须输入一个有效的表情图示 id!");
		}

		$DB->query("DELETE FROM ibf_emoticons WHERE id='".$IN['id']."'");

		$std->boink_it($SKIN->base_url."&act=op&code=emo");
		exit();


	}

	//=====================================================

	function add_emoticons()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;

		if ($IN['before'] == "")
		{
			$ADMIN->error("您必须输入要置换的表情图示文字!");
		}

		if ( strstr( $IN['before'], '&#092;' ) )
		{
			$ADMIN->error("您不能在 \"{$IN['before']}\" 使用反斜线字符，请改用其他的字符.");
		}

		$IN['click'] = $IN['click'] ? 1 : 0;

		$db_string = $DB->compile_db_insert_string( array( 'code'       => $IN['before'],
														   'smile_url'  => $IN['after'],
														   'clickable'  => $IN['click'],
												  )      );

		$DB->query("INSERT INTO ibf_emoticons (".$db_string['FIELD_NAMES'].") VALUES(".$db_string['FIELD_VALUES'].")");

		$std->boink_it($SKIN->base_url."&act=op&code=emo");
		exit();


	}


	function perly_length_sort($a, $b)
	{
		if ( strlen($a['code']) == strlen($b['code']) )
		{
			return 0;
		}
		return ( strlen($a['code']) > strlen($b['code']) ) ? -1 : 1;
	}

	function perly_word_sort($a, $b)
	{
		if ( strlen($a['code']) == strlen($b['code']) )
		{
			return 0;
		}
		return ( strlen($a['code']) > strlen($b['code']) ) ? -1 : 1;
	}

	//=====================================================

	function upload_emoticon()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP, $HTTP_POST_FILES;

		$FILE_NAME = $HTTP_POST_FILES['FILE_UPLOAD']['name'];
		$FILE_SIZE = $HTTP_POST_FILES['FILE_UPLOAD']['size'];
		$FILE_TYPE = $HTTP_POST_FILES['FILE_UPLOAD']['type'];

		// Naughty Opera adds the filename on the end of the
		// mime type - we don't want this.

		$FILE_TYPE = preg_replace( "/^(.+?);.*$/", "\\1", $FILE_TYPE );

		if (! is_dir($INFO['html_dir'].'../../../uploads') )
		{
			$ADMIN->error("无法找到表情图示目录 - 请确定 'html_dir' 路径是否设定正确");
		}

		// Naughty Mozilla likes to use "none" to indicate an empty upload field.
		// I love universal languages that aren't universal.

		if ($HTTP_POST_FILES['FILE_UPLOAD']['name'] == "" or !$HTTP_POST_FILES['FILE_UPLOAD']['name'] or ($HTTP_POST_FILES['FILE_UPLOAD']['name'] == "none") )
		{
			$ADMIN->error("没有选择要上传的档案!");
		}

		//-------------------------------------------------
		// Copy the upload to the uploads directory
		//-------------------------------------------------

		if (! @move_uploaded_file( $HTTP_POST_FILES['FILE_UPLOAD']['tmp_name'], $INFO['html_dir'].'../../../uploads'."/"."smiles-".$FILE_NAME) )
		{
			$ADMIN->error("上传失败");
		}
		else
		{
			@chmod( $INFO['html_dir'].'../../../uploads'."/".$FILE_NAME, 0777 );
		}

		$std->boink_it($SKIN->base_url."&act=op&code=emo");
		exit();


	}

	function emoticons()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;

		$ADMIN->page_detail = "您可以在这里增加/编辑或移除表情图示.<br>您只能选择已经上传到 <font color=blue>'yoursite.com/uploads'</font> 目录的表情图示<br><br>可点选与发表画面 '可点选表情图示' 表格中的表情图示有关.";
		$ADMIN->page_title  = "表情图示控制";

		//+-------------------------------

		$SKIN->td_header[] = array( "之前"      , "30%" );
		$SKIN->td_header[] = array( "之后"       , "30%" );
		$SKIN->td_header[] = array( "+ 可点选" , "20%" );
		$SKIN->td_header[] = array( "编辑"        , "10%" );
		$SKIN->td_header[] = array( "移除"      , "10%" );

		//+-------------------------------



		$ADMIN->html .= $SKIN->start_table( "目前的表情图示" );

		$DB->query("SELECT * from ibf_emoticons");

		$emo_url = $INFO['html_url'] . '/../../../uploads';

		$smilies = array();

		if ( $DB->get_num_rows() )
		{
			while ( $r = $DB->fetch_row() )
			{
				$smilies[] = $r;
			}

			usort($smilies, array( 'ad_settings', 'perly_length_sort' ) );

			foreach( $smilies as $array_idx => $r )
			{

				$click = $r['clickable'] ? '是' : '否';

				$ADMIN->html .= $SKIN->add_td_row( array( stripslashes($r['code']),
														  "<center><img src='$emo_url/{$r['smile_url']}'></center>",
														  "<center>$click</center>",
														  "<center><a href='".$SKIN->base_url."&act=op&code=emo_edit&id={$r['id']}'>编辑</a></center>",
														  "<center><a href='".$SKIN->base_url."&act=op&code=emo_remove&id={$r['id']}'>移除</a></center>",
												 )      );



			}
		}

		$ADMIN->html .= $SKIN->end_table();

		//+-------------------------------

		$emos = array();

		if (! is_dir($INFO['html_dir'].'../../../uploads') )
		{
			$ADMIN->error("无法找到表情图示目录 - 请确定 'html_dir' 路径是否设正确");
		}

		//+-------------------------------

		$cnt   = 0;
		$start = "";

		$dh = opendir( $INFO['html_dir'].'../../../uploads' ) or die("无法开启表情图示目录以进行读取，请检查路径与权限");
 		while ( $file = readdir( $dh ) )
 		{
			if (preg_match("/^smil.*/i",$file))
 			{
 				$emos[] = array( $file, $file );

 				if ($cnt == 0)
 				{
 					$cnt = 1;
 					$start = $file;
 				}
 			}
 		}
 		closedir( $dh );

 		//+-------------------------------

		$ADMIN->html .= $SKIN->start_form( array( 1 => array( 'code'  , 'emo_add' ),
												  2 => array( 'act'   , 'op'     ),
									     )      );


		$SKIN->td_header[] = array( "之前"       , "40%" );
		$SKIN->td_header[] = array( "之后"        , "40%" );
		$SKIN->td_header[] = array( "+ 可点选"  , "20%" );

		//+-------------------------------

		$ADMIN->html .= "<script language='javascript'>
						 <!--
						 	function show_emo() {

						 		var emo_url = '{$INFO['html_url']}/../../../uploads/' + document.theAdminForm.after.options[document.theAdminForm.after.selectedIndex].value;

						 		document.images.emopreview.src = emo_url;
							}
						//-->
						</script>
						";

		$ADMIN->html .= $SKIN->start_table( "新增表情图示" );

		$ADMIN->html .= $SKIN->add_td_row( array( $SKIN->form_input('before'),
												  $SKIN->form_dropdown('after', $emos, "", "onChange='show_emo()'") . "&nbsp;&nbsp;<img src='../../uploads/$start' name='emopreview' border='0'>",
												  $SKIN->form_dropdown( 'click', array( 0 => array( 1, 'Yes'  ), 1 => array( 0, 'No' ) ) )
										 )      );

		$ADMIN->html .= $SKIN->end_form('增加表情图示');

		$ADMIN->html .= $SKIN->end_table();

		//+-------------------------------
		//+-------------------------------

		$ADMIN->html .= $SKIN->start_form( array( 1 => array( 'code'  , 'emo_upload' ),
												  2 => array( 'act'   , 'op'     ),
												  3 => array( 'MAX_FILE_SIZE', '10000000000' ),
									     ) , "uploadform", " enctype='multipart/form-data'"     );


		$SKIN->td_header[] = array( "&nbsp;"       , "40%" );
		$SKIN->td_header[] = array( "&nbsp;"       , "60%" );


		$ADMIN->html .= $SKIN->start_table( "上传一个表情图示到表情图示目录" );

		$ADMIN->html .= $SKIN->add_td_row( array( "<b>从您的电脑选择一个要上传的档案</b><br>上传之后，可在上面的表单选用表情图示.",
												  $SKIN->form_upload(),
										 )      );

		$ADMIN->html .= $SKIN->end_form('上传表情图示');

		$ADMIN->html .= $SKIN->end_table();

		$ADMIN->output();

	}

	//-------------------------------------------------------------
	// BADWORD FUNCTIONS
	//--------------------------------------------------------------
	
	
	function doedit_badword()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
		
		if ($IN['before'] == "")
		{
			$ADMIN->error("您必须输入一个要取代的字汇，笨蛋！");
		}
		
		if ($IN['id'] == "")
		{
			$ADMIN->error("您必须输入一个有效的过滤 id，笨蛋！");
		}
		
		$IN['match'] = $IN['match'] ? 1 : 0;
		
		strlen($IN['swop']) > 1 ?  $IN['swop'] : "";
		
		$db_string = $DB->compile_db_update_string( array( 'type'    => $IN['before'],
														   'swop'    => $IN['after'],
														   'm_exact' => $IN['match'],
												  )      );
												  
		$DB->query("UPDATE ibf_badwords SET $db_string WHERE wid='".$IN['id']."'");
		
		$std->boink_it($SKIN->base_url."&act=op&code=bw");
		exit();
			
		
	}
	
	//=====================================================
	
	function edit_badword()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
	
		$ADMIN->page_detail = "您可以在下面编辑所选的过滤";
		$ADMIN->page_title  = "不良字汇过滤";
		
		//+-------------------------------
		
		if ($IN['id'] == "")
		{
			$ADMIN->error("您必须输入一个有效的过滤 id，笨蛋！");
		}
		
		//+-------------------------------
		
		$DB->query("SELECT * FROM ibf_badwords WHERE wid='".$IN['id']."'");
		
		if ( ! $r = $DB->fetch_row() )
		{
			$ADMIN->error("无法在资料库中找到该过滤");
		}
		
		//+-------------------------------
		
		$ADMIN->html .= $SKIN->start_form( array( 1 => array( 'code'  , 'bw_doedit' ),
												  2 => array( 'act'   , 'op'     ),
												  3 => array( 'id'    , $IN['id'] ),
									     )      );
		
		
		
		$SKIN->td_header[] = array( "之前"  , "40%" );
		$SKIN->td_header[] = array( "之后"   , "40%" );
		$SKIN->td_header[] = array( "模式"  , "20%" );
		
		//+-------------------------------
		
		$ADMIN->html .= $SKIN->start_table( "编辑过滤" );
		
		$ADMIN->html .= $SKIN->add_td_row( array( $SKIN->form_input('before', stripslashes($r['type']) ),
												  $SKIN->form_input('after' , stripslashes($r['swop']) ),
												  $SKIN->form_dropdown( 'match', array( 0 => array( 1, '精确'  ), 1 => array( 0, '宽松' ) ), $r['m_exact'] )
										 )      );
										 
		$ADMIN->html .= $SKIN->end_form('编辑过滤');
										 
		$ADMIN->html .= $SKIN->end_table();
		
		$ADMIN->output();
	
	}
	
	//=====================================================
	
	function remove_badword()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
		
		if ($IN['id'] == "")
		{
			$ADMIN->error("您必须输入一个有效的过滤 id，笨蛋！");
		}
		
		$DB->query("DELETE FROM ibf_badwords WHERE wid='".$IN['id']."'");
		
		$std->boink_it($SKIN->base_url."&act=op&code=bw");
		exit();
			
		
	}
	
	//=====================================================
	
	function add_badword()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
		
		if ($IN['before'] == "")
		{
			$ADMIN->error("您必须输入一个要取代的字汇，笨蛋！");
		}
		
		$IN['match'] = $IN['match'] ? 1 : 0;
		
		strlen($IN['swop']) > 1 ?  $IN['swop'] : "";
		
		$db_string = $DB->compile_db_insert_string( array( 'type'    => $IN['before'],
														   'swop'    => $IN['after'],
														   'm_exact' => $IN['match'],
												  )      );
												  
		$DB->query("INSERT INTO ibf_badwords (".$db_string['FIELD_NAMES'].") VALUES(".$db_string['FIELD_VALUES'].")");
		
		$std->boink_it($SKIN->base_url."&act=op&code=bw");
		exit();
			
		
	}
	
	//=====================================================
	
	function badword()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
	
		$ADMIN->page_detail = "您可以在这里增加/编辑与移除不良字汇过滤。<br>不良字汇过滤允许您从会员文章、签名档及主题标题做大范围的取代。<br><br><b>宽松符合</b>：如果您输入 'hell' 当作一个不良字汇，则会将 'hell' 及 'hello' 取代为您所输入的替代字或 6 个井字号 (不分大小写)<br><br><b>精确符合</b>：如果您输入 'hell' 当作一个不良字汇，只会将 'hell' 取代为您所输入的替代字或者 6 个井字号 (不分大小写)";
		$ADMIN->page_title  = "不良字汇过滤";
		
		//+-------------------------------
		
		$ADMIN->html .= $SKIN->start_form( array( 1 => array( 'code'  , 'bw_add' ),
												  2 => array( 'act'   , 'op'     ),
									     )      );
		
		//+-------------------------------
		
		$SKIN->td_header[] = array( "之前"  , "30%" );
		$SKIN->td_header[] = array( "之后"   , "30%" );
		$SKIN->td_header[] = array( "模式"  , "20%" );
		$SKIN->td_header[] = array( "编辑"    , "10%" );
		$SKIN->td_header[] = array( "移除"  , "10%" );
		
		//+-------------------------------
		
		$ADMIN->html .= $SKIN->start_table( "目前过滤" );
		
		$DB->query("SELECT * from ibf_badwords");
		
		if ( $DB->get_num_rows() )
		{
			while ( $r = $DB->fetch_row() )
			{
				$words[] = $r;
			}
			
			usort($words, array( 'ad_settings', 'perly_word_sort' ) );
			
			foreach($words as $idx => $r)
			{
			
				$replace = $r['swop']    ? stripslashes($r['swop']) : '######';
				
				$method  = $r['m_exact'] ? '精确' : '宽松';
				
				$ADMIN->html .= $SKIN->add_td_row( array( stripslashes($r['type']),
														  $replace,
														  $method,
														  "<center><a href='".$SKIN->base_url."&act=op&code=bw_edit&id={$r['wid']}'>编辑</a></center>",
														  "<center><a href='".$SKIN->base_url."&act=op&code=bw_remove&id={$r['wid']}'>移除</a></center>",
												 )      );
			}
			
		}
		
		$ADMIN->html .= $SKIN->end_table();
		
		
		$SKIN->td_header[] = array( "之前"  , "40%" );
		$SKIN->td_header[] = array( "之后"   , "40%" );
		$SKIN->td_header[] = array( "模式"  , "20%" );
		
		//+-------------------------------
		
		$ADMIN->html .= $SKIN->start_table( "新增过滤" );
		
		$ADMIN->html .= $SKIN->add_td_row( array( $SKIN->form_input('before'),
												  $SKIN->form_input('after'),
												  $SKIN->form_dropdown( 'match', array( 0 => array( 1, '精确'  ), 1 => array( 0, '宽松' ) ) )
										 )      );
										 
		$ADMIN->html .= $SKIN->end_form('增加过滤');
										 
		$ADMIN->html .= $SKIN->end_table();
		
		$ADMIN->output();
	
	}
	
	//-------------------------------------------------------------
	// NEWS
	//--------------------------------------------------------------
	
	function news()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
	
		$this->common_header('donews', '新闻汇出设定', '您可以在下面变更配置');
		
		$DB->query("SELECT id, name FROM ibf_forums ORDER BY name");
		
		$form_array = array();
		
		while ( $r = $DB->fetch_row() )
		{
			$form_array[] = array( $r['id'], $r['name'] );
		}
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>从哪个讨论区汇入新闻主题？</b>" ,
										  $SKIN->form_dropdown( "news_forum_id", $form_array, $INFO['news_forum_id']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>显示 '最新消息' 连结于论坛首页？</b>" ,
										  $SKIN->form_yes_no( "index_news_link", $INFO['index_news_link']  )
								 )      );
		
		
		$this->common_footer();
	
	
	}
	
	//-------------------------------------------------------------
	// PM
	//--------------------------------------------------------------
	
	function pm()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
	
		$this->common_header('dopm', '传讯者设定', '您可以在下面变更配置');
		
		
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许在讯息中使用 IBF Code？</b>" ,
										  $SKIN->form_yes_no( "msg_allow_code", $INFO['msg_allow_code']  )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许在讯息中使用 HTML？</b>" ,
										  $SKIN->form_yes_no( "msg_allow_html", $INFO['msg_allow_html']  )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>当检视讯息列表时每页显示的讯息数</b><br>预设为 50" ,
										  $SKIN->form_input( "show_max_msg_list", $INFO['show_max_msg_list']  )
								 )      );

		$this->common_footer();
	
	
	}
	
	//-------------------------------------------------------------
	// EMAIL functions
	//--------------------------------------------------------------
	
	function email()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
	
		$this->common_header('doemail', '电子邮件设定', '您可以在下面变更设定');
		
		$ADMIN->html .= $SKIN->add_td_basic( '电子邮件位址', 'left', 'catrow2' );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>论坛接收电子邮件位址</b>" ,
										  $SKIN->form_input( "email_in", $INFO['email_in']  )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>论坛外寄电子邮件位址</b>" ,
										  $SKIN->form_input( "email_out", $INFO['email_out']  )
								 )      );
								 
		//-----------------------------------------------------------------------------------------------------------
								 
		$ADMIN->html .= $SKIN->add_td_basic( '邮递方式', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>邮递方式</b><br>如果 PHP 的 mail() 不可使用，请选择 SMTP" ,
										  $SKIN->form_dropdown( "mail_method", 
										  						 array(
										  						 		0 => array( 'mail', 'PHP mail()' ),
										  						 		1 => array( 'smtp', 'SMTP'  ),
										  						 	  ),
										  						 $INFO['mail_method']  )
								 )      );
		
		//-----------------------------------------------------------------------------------------------------------
								 
		$ADMIN->html .= $SKIN->add_td_basic( 'SMTP 选项', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>凌驾 SMTP 主机？</b><br>预设是 'localhost'" ,
										  $SKIN->form_input( "smtp_host", $INFO['smtp_host']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>凌驾 SMTP 埠号？</b><br>预设是 25" ,
										  $SKIN->form_input( "smtp_port", $INFO['smtp_port']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>SMTP 使用者名称</b><br>当使用 'localhost' 时，多半不需要" ,
										  $SKIN->form_input( "smtp_user", $INFO['smtp_user']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>SMTP 密码</b><br>当使用 'localhost' 时，多半不需要" ,
										  $SKIN->form_input( "smtp_pass", $INFO['smtp_pass'], 'password'  )
								 )      );
 
		$this->common_footer();
	
	
	}
	
	//-------------------------------------------------------------
	// URLs and ADDRESSES
	//--------------------------------------------------------------
	
	function url()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
	
		$this->common_header('dourl', '整体设定', '您可以在下面变更设定');
		
		//-----------------------------------------------------------------------------------------------------------
								 
		$ADMIN->html .= $SKIN->add_td_basic( '论坛名称与 HTTP 位址', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>论坛名称</b>" ,
										  $SKIN->form_input( "board_name", $INFO['board_name']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>论坛网址</b>" ,
										  $SKIN->form_input( "board_url", $INFO['board_url']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>网站名称</b>" ,
										  $SKIN->form_input( "home_name", $INFO['home_name']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>网站位址</b>" ,
										  $SKIN->form_input( "home_url", $INFO['home_url']  )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>HTML URL</b><br>图片...等等" ,
										  $SKIN->form_input( "html_url", $INFO['html_url']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>上传 URL</b>" ,
										  $SKIN->form_input( "upload_url", $INFO['upload_url']  )
								 )      );
								 					 
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '论坛服务器路径', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>'html' 目录路径</b><br>注意：这是路径，不是 URL" ,
										  $SKIN->form_input( "html_dir", $INFO['html_dir']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>上传目录</b>" ,
										  $SKIN->form_input( "upload_dir", $INFO['upload_dir']  )
								 )      );
								 
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( 'HTTP 环境', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>输出 HTTP 档头？</b><br>(某些 NT 安装需要将此关闭)" ,
										  $SKIN->form_yes_no( "print_headers", $INFO['print_headers'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b><i>取消</I> GZIP 编码？</b><br>(GZIP 可以加快页面的传送及降低频宽的使用)" ,
										  $SKIN->form_yes_no( "disable_gzip", $INFO['disable_gzip'] )
								 )      );
								 
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>自动重新导向类型？</b><br>(这适用于快速无页面重新导向)" ,
										  $SKIN->form_dropdown( 'header_redirect', 
										  						 array(
										  						 		0 => array( 'location', '定位形态 (*nix savvy)' ),
										  						 		1 => array( 'refresh' , '重新整理 (Windows savvy)' ),
										  						 		2 => array( 'html'    , 'HTML META 重新导向 (如果都失败的话...)' ),
										  						 	  ),
										  						 $INFO['header_redirect']  )
								 )      );
		
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '除错', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>除错层级</b>" ,
										  $SKIN->form_dropdown( "debug_level", 
										  						 array(
										  						 		0 => array( 0, '0: None - 不要显示任何除错资讯' ),
										  						 		1 => array( 1, '1: 显示服务器负载、页面产生时间及查询计数' ),
										  						 		2 => array( 2, '2: 显示层级 1 (上面) 及 GET、POST 资讯'),
										  						 		3 => array( 3, '3: 显示层级 1 + 2 及资料库查询'),
										  						 	  ),
										  						 $INFO['debug_level']  )
								 )      );
								 
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b><i>启用</I> SQL 除错模式？</b><br>(如果是，将 '&debug=1' 加到任何页面以便检视 mySQL 除错资讯)" ,
										  $SKIN->form_yes_no( "sql_debug", $INFO['sql_debug'] )
								 )      );
		
                //-----------------------------------------------------------------------------------------------------------
		
		$ADMIN->html .= $SKIN->add_td_basic( '给新进会员寄送私人讯息', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
								 								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>使用自动讯息?</b><br>(如果是,当新进会员登陆后将会收到私人讯息)" ,
										  $SKIN->form_yes_no( "auto_pm_on", $INFO['auto_pm_on'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>寄送者名称?</b><br>(请填入一名寄送者ID)" ,
										  $SKIN->form_input( "auto_pm_from", $INFO['auto_pm_from'] )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>讯息标题</b><br>(自动寄送的讯息标题)" ,
										  $SKIN->form_input( "auto_pm_subject", $INFO['auto_pm_subject'] )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>讯息内容</b><br>(自动寄送的讯息内容)" ,
										  $SKIN->form_textarea( "auto_pm_message", $INFO['auto_pm_message'] )
								 )      );

		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '整体面板设定', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>使用安全模式面板？</b><br>(注意：如果您曾经自订/编辑过面板，在做这个改变之后您可能必须再次同步化您的模板组件。)" ,
										  $SKIN->form_dropdown( 'safe_mode_skins', 
										  						 array(
										  						 		0 => array( '0', '否' ),
										  						 		1 => array( '1' , '是' ),
										  						 	  ),
										  						 $INFO['safe_mode_skins']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>数字格式</b><br>您可以选择用于分隔千、百的字元<br>(例如：美国及英国使用逗号)" ,
										  $SKIN->form_dropdown( 'number_format', 
										  						 array(
										  						 		0 => array( '无', '不使用' ),
										  						 		1 => array( '空格' , '空格' ),
										  						 		2 => array( ',' , ',' ),
										  						 		3 => array( '.' , '.' ),
										  						 	  ),
										  						 $INFO['number_format']  )
								 )      );
								 
 
		$this->common_footer();
	
	
	}
	
	
	
	//-------------------------------------------------------------
	// CPU SAVING
	//--------------------------------------------------------------
	
	function cpu()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
	
		$this->common_header('docpu', 'CPU 节省', '您可以选择关闭某些功能以节省资源的耗用');
		
		
		if ($INFO['au_cutoff'] == "")
		{
			$INFO['au_cutoff'] = 15;
		}
		
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( 'SQL 节省', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>显示活动使用者？</b>" ,
										  $SKIN->form_yes_no( "show_active", $INFO['show_active'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>显示若干分钟以内的活动使用者</b>" ,
										  $SKIN->form_input( "au_cutoff", $INFO['au_cutoff'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>显示生日？</b>" ,
										  $SKIN->form_yes_no( "show_birthdays", $INFO['show_birthdays'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>显示论坛统计？</b>" ,
										  $SKIN->form_yes_no( "show_totals", $INFO['show_totals'] )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许在主题检视中使用自订个人资料栏位资讯？</b>" ,
										  $SKIN->form_yes_no( "custom_profile_topic", $INFO['custom_profile_topic'] )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>当显示讨论区时标记使用者参与发表过的主题？</b>" ,
										  $SKIN->form_yes_no( "show_user_posted", $INFO['show_user_posted'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>移除 '使用者正浏览此 <u>讨论区</u>' 功能？</b><br>(每次检视讨论区时可以节省 1 个查询)" ,
										  $SKIN->form_yes_no( "no_au_forum", $INFO['no_au_forum'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>移除 '使用者正浏览此 <u>主题</u>' 功能？</b><br>(每次检视主题时可以节省 1 个查询)" ,
										  $SKIN->form_yes_no( "no_au_topic", $INFO['no_au_topic'] )
								 )      );
		
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( 'CPU 节省', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>服务器负载限制</b><br>达到限制时将显示 '忙碌' 讯息<br>可以留空不做限制" ,
										  $SKIN->form_input( "load_limit", $INFO['load_limit']  )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许使用者 (被允许的地方) 使用搜索？</b>" ,
										  $SKIN->form_yes_no( "allow_search", $INFO['allow_search'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>搜索的文章裁切至 [x] 个字元</b><br>适用在以文章显示搜索结果时<br>留空会以适当的格式传回整篇文章" ,
										  $SKIN->form_input( "search_post_cut", $INFO['search_post_cut'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>最小搜索字串长度</b><br>允许较短的搜索字串可以传回更多的结果，例如 'if', 'at', 等等" ,
										  $SKIN->form_input( "min_search_word", $INFO['min_search_word'] )."<br>注意，如果您启用全文检索，最少需 4 个字元并且无法由 IPB 变更。"
								 )      );
								 
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '频宽节省', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>输出 HTTP 无快取档头？</b><br>(这会停止浏览器快取页面)" ,
										  $SKIN->form_yes_no( "nocache", $INFO['nocache'] )
								 )      );
								 
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>显示简短的讨论区跳跃列表？</b><br>这会将子讨论区从下拉列表移除 - 如果您有很多子讨论区这个蛮有用的" ,
										  $SKIN->form_yes_no( "short_forum_jump", $INFO['short_forum_jump'] )
								 )      );
 
		$this->common_footer();
	
	
	}
	
	//-------------------------------------------------------------
	// DATES
	//--------------------------------------------------------------
	
	function dates()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
	
		$this->common_header('dodates', '日期', '定义日期格式');
		
		$time_array = array();
		
		require ROOT_PATH."lang/tw/lang_ucp.php";
		
		foreach( $lang as $off => $words )
 		{
 			if (preg_match("/^time_(\S+)$/", $off, $match))
 			{
 				$time_select[] = array( $match[1], $words );
 			}
 		}
 		
 		$d_date = $std->get_date(time(), 'LONG');
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>服务器本地时区</b><br><span style='color:red'>如果您已经选择了正确的时区并且时钟有一小时的误差，这是因为夏时制的缘故，您的会员可以经由使用者控制台编辑他们的 '论坛设定' 来校正。</span>" ,
										  $SKIN->form_dropdown( "time_offset", $time_select, $INFO['time_offset']  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>服务器时间调整 (分钟)</b><br>微调服务器时间，如果您需要从服务器的时间减少数分钟，数字开头请加上 '-' (不须引号)。" ,
										  $SKIN->form_input( "time_adjust", $INFO['time_adjust'] ) . "<br>论坛时间 (综合上面的时区及目前的调整) 现在为： $d_date"
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>短时间格式</b><br>配置方式与 <a href='http://www.php.net/date' target='_blank'>PHP 日期</a> 相同" ,
										  $SKIN->form_input( "clock_short", $INFO['clock_short'] )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>注册日期时间格式</b><br>配置方式与 <a href='http://www.php.net/date' target='_blank'>PHP 日期</a> 相同" ,
										  $SKIN->form_input( "clock_joined", $INFO['clock_joined'] )
								 )      );
									     
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>长时间格式</b><br>配置方式与 <a href='http://www.php.net/date' target='_blank'>PHP 日期</a> 相同" ,
										  $SKIN->form_input( "clock_long", $INFO['clock_long'] )
								 )      );
 
		$this->common_footer();
	
	
	}
	
	//-------------------------------------------------------------
	// AVATARS
	//--------------------------------------------------------------
	
	function avatars()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
	
		$this->common_header('doavatars', '使用者个人资料', '定义使用者个人资料权限');
		
		$INFO['avatar_ext'] = preg_replace( "/\|/", ",", $INFO['avatar_ext'] );
		$INFO['photo_ext']  = preg_replace( "/\|/", ",", $INFO['photo_ext'] );
		
		
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '使用者个人资料 & 选项', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许会员选择面板？</b>" ,
										  $SKIN->form_yes_no( "allow_skins", $INFO['allow_skins'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>会员变更头衔所需的文章数？</b><br>留空则会完全禁止" ,
										  $SKIN->form_input( "post_titlechange", $INFO['post_titlechange'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>位置栏位词条的长度上限 (位元组)</b>" ,
										  $SKIN->form_input( "max_location_length", $INFO['max_location_length'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>兴趣栏位词条的长度上限 (位元组)</b>" ,
										  $SKIN->form_input( "max_interest_length", $INFO['max_interest_length'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>使用者签名档栏位词条的长度上限 (位元组)</b>" ,
										  $SKIN->form_input( "max_sig_length", $INFO['max_sig_length'] )
								 )      );						 
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许签名档使用 HTML？</b>" ,
										  $SKIN->form_yes_no( "sig_allow_html", $INFO['sig_allow_html'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许签名档使用 IBF Code？</b>" ,
										  $SKIN->form_yes_no( "sig_allow_ibc", $INFO['sig_allow_ibc'] )
								 )      );
								 
		if ($INFO['postpage_contents'] == "")
		{
			$INFO['postpage_contents'] = '5,10,15,20,25,30,35,40';
		}
		
		if ($INFO['topicpage_contents'] == "")
		{
			$INFO['topicpage_contents'] = '5,10,15,20,25,30,35,40';
		}
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>使用者可选择的每页文章数下拉选单内容</b><br>以逗号隔开，会自动加入 '使用论坛预设'<br>范例： 5,15,20,25,30" ,
										  $SKIN->form_input( "postpage_contents", $INFO['postpage_contents'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>使用者可选择的讨论区页面主题数下拉选单内容</b><br>以逗号隔开，会自动加入 '使用论坛预设'<br>范例： 5,15,20,25,30" ,
										  $SKIN->form_input( "topicpage_contents", $INFO['topicpage_contents'] )
								 )      );
								 
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>如果主题超过 [x] 天没有回复自动取消订阅</b><br>留空则不会自动取消" ,
										  $SKIN->form_input( "subs_autoprune", $INFO['subs_autoprune'] )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许的照片 URL 副档名</b><br>以逗号隔开 (gif,png,jpeg) 等等" ,
										  $SKIN->form_input( "photo_ext", strlen($INFO['photo_ext']) > 1 ? $INFO['photo_ext'] : "gif,jpg,jpeg,png" )
								 )      );
		
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '个人图片', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>禁止 IPB 自动缩小大张的照片/个人图片？</b><br/ >这样会要求会员输入尺寸" ,
										  $SKIN->form_yes_no( "disable_ipbsize", $INFO['disable_ipbsize'] )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许使用个人图片？</b>" ,
										  $SKIN->form_yes_no( "avatars_on", $INFO['avatars_on'] )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许的图片副档名</b><br>以逗号隔开 (gif,png,jpeg) 等等" ,
										  $SKIN->form_input( "avatar_ext", $INFO['avatar_ext'] )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许使用远端 URL 个人图片？</b>" ,
										  $SKIN->form_yes_no( "avatar_url", $INFO['avatar_url'] )
								 )      );
									     
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>上传的个人图片档案大小上限？ (K)</b>" ,
										  $SKIN->form_input( "avup_size_max", $INFO['avup_size_max'] )
								 )      );
 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>个人图片最大尺寸</b><br>(宽<b>x</b>高)" ,
										  $SKIN->form_input( "avatar_dims", $INFO['avatar_dims'] )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>预设的个人图片集尺寸</b><br>(宽<b>x</b>高)" ,
										  $SKIN->form_input( "avatar_def", $INFO['avatar_def'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>个人图片画册的栏位数？</b>" ,
										  $SKIN->form_input( 'av_gal_cols' 	, $INFO['av_gal_cols'] = $INFO['av_gal_cols'] ? $INFO['av_gal_cols'] : 5 )
								 )      );						 
								 
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '访客权限', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许访客看见签名档？</b>" ,
										  $SKIN->form_yes_no( "guests_sig", $INFO['guests_sig'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许访客看见张贴的图片？</b>" ,
										  $SKIN->form_yes_no( "guests_img", $INFO['guests_img'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许访客看见使用者个人图片？</b>" ,
										  $SKIN->form_yes_no( "guests_ava", $INFO['guests_ava'] )
								 )      );
								 
			     
								 					 
		$this->common_footer();
	
	
	}
	
	
	//-------------------------------------------------------------
	// TOPICS and POSTS
	//--------------------------------------------------------------
	
	function post()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
		
		$INFO['img_ext'] = preg_replace( "/\|/", ",", $INFO['img_ext'] );
	
		$this->common_header('dopost', '主题、文章及发表', '设定可见的发表元素和限制');
		
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '主题', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------	
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>讨论区每页主题数</b>" ,
										  $SKIN->form_input( "display_max_topics", $INFO['display_max_topics'] )
								 )      );
									     
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>标示为 '热门主题' 所需的文章数？</b>" ,
										  $SKIN->form_input( "hot_topic", $INFO['hot_topic'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>固定主题的前置名称</b>" ,
										  $SKIN->form_input( "pre_pinned", $INFO['pre_pinned'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>搬移主题的前置名称</b>" ,
										  $SKIN->form_input( "pre_moved", $INFO['pre_moved'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>投票主题的前置名称</b>" ,
										  $SKIN->form_input( "pre_polls", $INFO['pre_polls'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>阻止在主题标题上咆哮？</b><br>(会将 CLICK HERE 转为 Click Here)<br><font color=red>译注：启用这个选项中文会有问题。</font>" ,
										  $SKIN->form_yes_no( "etfilter_shout", $INFO['etfilter_shout'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>移除主题标题上多余的惊叹号/问号？</b><br>(会将 This!!!!! 转为 This!)" ,
										  $SKIN->form_yes_no( "etfilter_punct", $INFO['etfilter_punct'] )
								 )      );						 
		
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '文章 & 发表', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------	
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>每个主题页面的文章数？</b>" ,
										  $SKIN->form_input( "display_max_posts", $INFO['display_max_posts'] )
								 )      );						 
								 
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>每一个表格列可按的表情图示数量</b>" ,
										  $SKIN->form_input( "emo_per_row", $INFO['emo_per_row'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>每篇文章可用的表情图示上限</b>" ,
										  $SKIN->form_input( "max_emos", $INFO['max_emos'] )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>每篇文章可张贴的图片上限</b>" ,
										  $SKIN->form_input( "max_images", $INFO['max_images'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>每篇文章的大小上限 (千位元组 [kb])</b>" ,
										  $SKIN->form_input( "max_post_length", $INFO['max_post_length'] )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>张贴的 Flash 影片宽度上限 (像素 pixels)</b>" ,
										  $SKIN->form_input( "max_w_flash", $INFO['max_w_flash'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>张贴的 Flash 影片高度上限 (像素 pixels)</b>" ,
										  $SKIN->form_input( "max_h_flash", $INFO['max_h_flash'] )
								 )      );
								 
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>可张贴的有效图片副档名</b><br>(以逗号分隔 (gif,jpeg,jpg) 等等" ,
										  $SKIN->form_input( "img_ext", $INFO['img_ext'] )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>在文章中显示上传的图片？</b>" ,
										  $SKIN->form_yes_no( "show_img_upload", $INFO['show_img_upload'] )
										 ."<br />".$SKIN->form_checkbox( 'siu_thumb', $INFO['siu_thumb'] )."显示缩图？ 大小 ".$SKIN->form_simple_input( 'siu_width', $INFO['siu_width'] )." x ".$SKIN->form_simple_input( 'siu_height', $INFO['siu_height'] )
								 )      );					 
		
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>禁止内嵌引言？</b><br>这会将引用的文章内含的任何引言文字移除<br><a href='#' title='如果这有任何的意义，那么您的 IQ 比我还高。'>..</a>" ,
										  $SKIN->form_yes_no( "strip_quotes", $INFO['strip_quotes'] )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>访客名称 <i>字首</i></b><br>(当访客以与会员相同的名称发表时，这样可以做点区别以避免混淆)" ,
										  $SKIN->form_input( "guest_name_pre", $INFO['guest_name_pre'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>访客名称 <i>字尾</i></b><br>(当访客以与会员相同的名称发表时，这样可以做点区别以避免混淆)" ,
										  $SKIN->form_input( "guest_name_suf", $INFO['guest_name_suf'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>文字换列的字元数？</b><br>防止表格被长串连续的字元撑开。建议 80 - 100<br><font color=red>译注：中文会有问题，不要使用</font>" ,
										  $SKIN->form_input( "post_wordwrap", $INFO['post_wordwrap'] )
								 )      );
//-- mod_resize_image begin 缩图外挂
        global $mod_rsi;
        $mod_rsi->ad_settings();
//-- mod_resize_image end 缩图外挂


		
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '投票', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
		
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许投票选项使用 [IMG] 及 [URL] 标签？</b>" ,
										  $SKIN->form_yes_no( "poll_tags", $INFO['poll_tags'] )
								 )      );
								 						 						 					 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>最多允许的投票选项数？</b><br>" ,
										  $SKIN->form_input( "max_poll_choices", $INFO['max_poll_choices'] ? $INFO['max_poll_choices'] : 10)
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许会员检视投票结果而不会丧失其投票权？</b>" ,
										  $SKIN->form_yes_no( 'allow_result_view', $INFO['allow_result_view'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>取消会员发表 '不要回复' 投票的能力？</b>" ,
										  $SKIN->form_yes_no( 'poll_disable_noreply', $INFO['poll_disable_noreply'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>主题发起者可以在其主题附加投票的时限 (小时)</b><br>对管理员或超级板主没有影响" ,
										  $SKIN->form_input( 'startpoll_cutoff', $INFO['startpoll_cutoff'] ? $INFO['startpoll_cutoff'] : 24)
								 )      );
								 					 						 						 						 					 
		$this->common_footer();
	
	
	}
	
	//-------------------------------------------------------------
	// SECURITY
	//--------------------------------------------------------------
	
	function secure()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
	
		$this->common_header('dosecure', '安全性', '使用下面的配置定义您论坛的安全性处理层级');

		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '安全性 (程式/机器人灌水控制)', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>启动程式/机器人灌水控制？</b><br>强制使用者在注册或变更电子邮件位址时输入随机代码...等等，以防止机器人大量送出表单。".$SKIN->js_help_link('s_reg_antispam') ,
										  $SKIN->form_dropdown( "bot_antispam", 
										  						array(
										  								0 => array( '0'    , '无'                  ),
										  								1 => array( 'gd'   , '进阶 (需要 GD 函式库)'    ),
										  								2 => array( 'gif'  , '标准 (无特殊要求)'  ),
										  								
										  							 ),
										  					    $INFO['bot_antispam']
										  					  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>采用 GD 时；使用 [是] TTF 方法，或 [否] 基本方法？</b><br />如果可用的话，TTF 是最佳的" ,
										  $SKIN->form_yes_no( "use_ttf", isset($INFO['use_ttf']) ? $INFO['use_ttf'] : 1 )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>如果使用 GD & TTF；影像宽度</b>" ,
										  $SKIN->form_input( "gd_width", isset($INFO['gd_width']) ? $INFO['gd_width'] : 250 )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>如果使用 GD & TTF；影像高度</b>" ,
										  $SKIN->form_input( "gd_height", isset($INFO['gd_height']) ? $INFO['gd_height'] : 70 )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>如果使用 GD & TTF；要使用的 .ttf 路径</b>" ,
										  $SKIN->form_input( "gd_font", isset($INFO['gd_font']) ? $INFO['gd_font'] : getcwd().'/fonts/progbot.ttf' )
								 )      );
		
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '安全性 (高)', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许动态图片？</b><br>如果 '是' 使用者可以张贴程式化的图片产生器" ,
										  $SKIN->form_yes_no( "allow_dynamic_img", $INFO['allow_dynamic_img'] )
								 )      );
									     
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>Session 逾期 (秒)</b><br>移除已经超过您指定期限的闲置 sessions" ,
										  $SKIN->form_input( "session_expiration", $INFO['session_expiration'] )
								 )      );
 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>认证时配合使用者的浏览器？</b>" ,
										  $SKIN->form_yes_no( "match_browser", $INFO['match_browser'] )
								 )      );
								 
								 
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '安全性 (中)', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------
		
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>使用安全的邮件表单作为会员之间的邮件往返？</b><br>隐藏使用者的电子邮件位址" ,
										  $SKIN->form_yes_no( "use_mail_form", $INFO['use_mail_form'] )
								 )      );
								 
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '安全性 (低)', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------						 
								 					 
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许张贴图片？</b><br>进阶的程式设计师能够强迫图片当作程式执行，不过 IBF 可由这个方法限制其危险性。" ,
										  $SKIN->form_yes_no( "allow_images", $INFO['allow_images'] )
								 )      );
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许在文章中及个人图片使用 flash 影片？</b><br>Flash 有内建的程式语言，有可能危及安全性。" ,
										  $SKIN->form_yes_no( "allow_flash", $INFO['allow_flash'] )
								 )      );	
								 
								 
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '安全性 (讨厌的使用者)', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------						 					 
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>当使用者注册时允许重复的电子邮件？</b><br>不会检查是否存在相同的电子邮件位址" ,
										  $SKIN->form_yes_no( "allow_dup_email", $INFO['allow_dup_email'] )
								 )      );
		
						 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>以电子邮件认证新人注册？</b><br>管理员人工预览所有新的帐号，或者让新使用者以他们的电子邮件位址做认证。" ,
										  $SKIN->form_dropdown( "reg_auth_type", 
										  						array(
										  								0 => array( 'user' , '使用者电子邮件认证' ),
										  								1 => array( 'admin', '管理员认证'      ),
										  								2 => array( '0'    , '不用'                  )
										  							 ),
										  					    $INFO['reg_auth_type']
										  					  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>移除未完成注册启动超过...</b>" ,
										  $SKIN->form_simple_input( 'validate_day_prune', $INFO['validate_day_prune'], 3 ). "... 天之后"
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>有新人注册时，以电子邮件通知管理员？</b>" ,
										  $SKIN->form_dropdown( "new_reg_notify", 
										  						array(
										  								0 => array( '1' , '是' ),
										  								1 => array( '0' , '否'  )
										  							 ),
										  					    $INFO['new_reg_notify']
										  					  )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>强制访客登陆才可浏览论坛？</b>" ,
										  $SKIN->form_yes_no( "force_login", $INFO['force_login'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>禁止新人注册？</b>" ,
										  $SKIN->form_yes_no( "no_reg", $INFO['no_reg'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>从输入中移除 chr(0xCA)？</b><br />这个字元可被当成 '隐藏' 的空白冒充已注册的名称 - 但是在非西欧字元设定的编码可能会造成问题。<br /><font color=red>译注：中文会有问题，不要使用。</font>" ,
										  $SKIN->form_yes_no( 'strip_space_chr', $INFO['strip_space_chr'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>取消 '检举此篇文章' 连结？</b>" ,
										  $SKIN->form_yes_no( "disable_reportpost", $INFO['disable_reportpost'] )
								 )      ); // 
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>灌水控制延迟 (秒)</b><br>使用者需等待若干时间之后才能再次发表<br>可以留空不进行灌水控制" ,
										  $SKIN->form_input( "flood_control", $INFO['flood_control'] )
								 )      );
		
		//-----------------------------------------------------------------------------------------------------------						 
		
		$ADMIN->html .= $SKIN->add_td_basic( '隐私', 'left', 'catrow2' );
		
		//-----------------------------------------------------------------------------------------------------------	
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>允许使用者浏览线上人员列表？</b>" ,
										  $SKIN->form_yes_no( "allow_online_list", $INFO['allow_online_list'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>禁止最高管理群组检视线上匿名使用者？</b><br>匿名使用者在他们的名称后面会有星号" ,
										  $SKIN->form_yes_no( "disable_admin_anon", $INFO['disable_admin_anon'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>禁止最高管理群组检视线上列表中的使用者 IP 位址？</b>" ,
										  $SKIN->form_yes_no( "disable_online_ip", $INFO['disable_online_ip'] )
								 )      );
								 
		
								 					 
		$this->common_footer();
	
	
	}
	
	//-------------------------------------------------------------
	// COOKIES: Yum Yum!
	//--------------------------------------------------------------
	
	function cookie()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
	
		$this->common_header('docookie', 'Cookies', '这些栏位可以全部留空。请实验看看找出您主机的正确设定。');
		
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>Cookie 网域</b><br>提示：使用 <b>.your-domain.com</b> 作为整体 cookies" ,
										  $SKIN->form_input( "cookie_domain", $INFO['cookie_domain'] )
								 )      );
									     
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>Cookie 名称字首</b><br>允许多个论坛在同一部主机。" ,
										  $SKIN->form_input( "cookie_id", $INFO['cookie_id'] )
								 )      );
 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>Cookie 路径</b><br>从网域到 IBF 根目录的相对路径" ,
										  $SKIN->form_input( "cookie_path", $INFO['cookie_path'] )
								 )      );
		
		$this->common_footer();
	
	
	}
	

//金钱hacj开始
	//-------------------------------------------------------------
	// Money parameter setting
	//--------------------------------------------------------------

	function money()
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;

		$this->common_header('domoney', '金钱系统设定', '您可以在这里设置论坛得金钱系统数据,请输入合法的整数,如果启用论坛金钱系统,则每个项目都必须填入整数,不能留空<br />说明:会员得到的金钱和本设定数据有关,例如每篇新主题给予3,每篇回复给予1,那么在一个金钱数据为3的论坛里,发表一篇新主题所得到的金钱为（3+1）*3=12,发表一篇回复文章所得到的金钱为1*3=3,以此类推');

		//-----------------------------------------------------------------------------------------------------------

		$ADMIN->html .= $SKIN->add_td_basic( '金钱系统设定', 'left', 'catrow2' );

		//-----------------------------------------------------------------------------------------------------------

		$ADMIN->html .= $SKIN->add_td_row( array( "<b>启用金钱系统?</b>" ,
										  $SKIN->form_yes_no( "enable_money_system", $INFO['enable_money_system'] )
								 )      );
								 
		$ADMIN->html .= $SKIN->add_td_row( array( "<b>银行日利率(%)</b><br />请使用整数" ,
                                                                                   $SKIN->form_input( "interest_per_day", $INFO['interest_per_day'] ) 
                                                                 )      );

		$ADMIN->html .= $SKIN->add_td_row( array( "<b>每个新注册会员给予</b>" ,
										  $SKIN->form_input( "money_register", $INFO['money_register'] )
								 )      );

		$ADMIN->html .= $SKIN->add_td_row( array( "<b>建立新主题给予</b>" ,
										  $SKIN->form_input( "money_per_topic", $INFO['money_per_topic'] )
								 )      );

		$ADMIN->html .= $SKIN->add_td_row( array( "<b>发表回复给予</b>" ,
										  $SKIN->form_input( "money_per_post", $INFO['money_per_post'] )
								 )      );

		$ADMIN->html .= $SKIN->add_td_row( array( "<b>发起投票给予</b>" ,
										  $SKIN->form_input( "money_per_poll", $INFO['money_per_poll'] )
								 )      );

		$ADMIN->html .= $SKIN->add_td_row( array( "<b>参与投票给予</b>" ,
										  $SKIN->form_input( "money_per_vote", $INFO['money_per_vote'] )
								 )      );

		$ADMIN->html .= $SKIN->add_td_row( array( "<b>每篇精华文章给予</b>" ,
										  $SKIN->form_input( "money_per_kernel", $INFO['money_per_kernel'] )
								 )      );

		$ADMIN->html .= $SKIN->add_td_row( array( "<b>被删除文章扣除</b><br />请输入整数" ,
										  $SKIN->form_input( "money_per_delete", $INFO['money_per_delete'] )
								 )      );

		$ADMIN->html .= $SKIN->add_td_row( array( "<b>主题回复</b>" ,
										  "每回复".$SKIN->form_simple_input( "money_reply_step", $INFO['money_reply_step'] )."次,给予发起者".$SKIN->form_simple_input( "money_reply_bounty", $INFO['money_reply_bounty'] )."金钱<br />".$SKIN->form_checkbox( 'money_reply_count_self', $INFO['money_reply_count_self'] )."包含计算主题发起者自己回复的次数"
								 )      );

		$ADMIN->html .= $SKIN->add_td_row( array( "<b>主题浏览</b>" ,
										  "每浏览".$SKIN->form_simple_input( "money_view_step", $INFO['money_view_step'] )."次,给予发起者".$SKIN->form_simple_input( "money_view_bounty", $INFO['money_view_bounty'] )."金钱<br />".$SKIN->form_checkbox( 'money_view_count_self', $INFO['money_view_count_self'] )."包含计算主题发起者自己浏览的次数"
								 )      );

		$this->common_footer();


	}
//金钱hack结束
        //-------------------------------------------------------------
	//
	// Save config. Does the hard work, so you don't have to.
	//
	//--------------------------------------------------------------
	
	function save_config( $new )
	{
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP, $HTTP_POST_VARS;
		
		$master = array();
		
		if ( is_array($new) )
		{
			if ( count($new) > 0 )
			{
				foreach( $new as $field )
				{
				
					// Handle special..
					
					if ($field == 'img_ext' or $field == 'avatar_ext' or $field == 'photo_ext')
					{
						$HTTP_POST_VARS[ $field ] = preg_replace( "/[\.\s]/", "" , $HTTP_POST_VARS[ $field ] );
						$HTTP_POST_VARS[ $field ] = str_replace('|', "|", $HTTP_POST_VARS[ $field ]);
						$HTTP_POST_VARS[ $field ] = preg_replace( "/,/"     , '|', $HTTP_POST_VARS[ $field ] );
					}
					else if ($field == 'coppa_address')
					{
						$HTTP_POST_VARS[ $field ] = nl2br( $HTTP_POST_VARS[ $field ] );
					}
					
					if ( $field == 'gd_font' OR $field == 'html_dir' OR $field == 'upload_dir')
					{
						$HTTP_POST_VARS[ $field ] = preg_replace( "/'/", "'", $HTTP_POST_VARS[ $field ] );
					}
					else
					{
						$HTTP_POST_VARS[ $field ] = preg_replace( "/'/", "'", $HTTP_POST_VARS[ $field ] ); /* 中文修正 */
					}
				
					$master[ $field ] = stripslashes($HTTP_POST_VARS[ $field ]);  
				}
				
				$ADMIN->rebuild_config($master);
			}
		}
		
		$ADMIN->save_log("更新论坛设定，已备份");
		
		$ADMIN->done_screen("论坛设定已更新", "管理控制台首页", "act=index" );
		
		
		
	}
	//-------------------------------------------------------------
	//
	// Common header: Saves writing the same stuff out over and over
	//
	//--------------------------------------------------------------
	
	function common_header( $formcode = "", $section = "", $extra = "" )
	{
	
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;
		
		$extra = $extra ? $extra."<br>" : $extra;
		
		$ADMIN->page_detail = $extra . "请在确定变更之前检查您所输入的资料";
		$ADMIN->page_title  = "论坛设定 ($section)";
		
		//+-------------------------------
		
		$ADMIN->html .= $SKIN->start_form( array( 1 => array( 'code'  , $formcode ),
												  2 => array( 'act'   , 'op'      ),
									     )      );
		
		//+-------------------------------
		
		$SKIN->td_header[] = array( "{none}"  , "40%" );
		$SKIN->td_header[] = array( "{none}"  , "60%" );
		
		//+-------------------------------
		
		$ADMIN->html .= $SKIN->start_table( "设定" );
		
	}

	//-------------------------------------------------------------
	//
	// Common footer: Saves writing the same stuff out over and over
	//
	//--------------------------------------------------------------
	
	function common_footer( $button="确定变更" )
	{
	
		global $IN, $INFO, $DB, $SKIN, $ADMIN, $std, $MEMBER, $GROUP;

		$ADMIN->html .= $SKIN->end_form($button);
										 
		$ADMIN->html .= $SKIN->end_table();
		
		$ADMIN->output();
		
	}				
	
	function return_sql_no_no_cant_do_it_sorry_text()
	{
return "
<div style='line-height:150%'>
<span id='large'>无法自动建立全文索引</span>
<br /><br />
对于自动建立全文索引，您的文章量太多。很有可能在索引完成之前使 PHP 逾时中断，
这会造成某些索引损坏。
<br />
建立全文索引是相当缓慢的过程，但是值得进行一次，
因为当您的会员搜索时这样将会节省您很多时间及 CPU 资源。
<br />
平均而言，一个普通的网站服务器有能力一个小时索引大约 80,000 篇文章，不过这是相当剧烈的处理过程。
如果您使用 MySQL 4.0.12+ 时间绝对会更少。
<br />
<br />
<strong style='color:red;font-size:14px'>如何手动建立索引</strong>
<br />
如果您有 mysql 的 shell (SSH / Telnet) 使用权，此过程非常简单。如果您没有 shell 使用权，您必须
连络主机商要求他们为您进行。
<br /><br />
<strong>步骤 1: 起始 mysql</strong>
<br />
在 shell 键入：
<br />
<pre>mysql -u{your_sql_user_name} -p{your_sql_password}</pre>
<br />
您的 MySQL 使用者名称及密码可在 conf_global.php 档案中找到
<br />
<br />
<strong>步骤 2: 选择您的资料库</strong>
<br />
在 mysql 键入：
<br />
<pre>use {your_database_name_here};</pre>
<br />
务必在尾端加上分号。您的 MySQL 资料库名称可在 conf_global.php 中找到。
<br /><br />
<strong>步骤 3: 索引主题资料表</strong>
<br />
在 mysql 键入：
<br />
<pre>\g alter table ibf_topics add fulltext(title);</pre>
<br />
如果您未使用 'ibf_' 当成您的资料表延伸名称，请调整该查询对应，
此查询所需的时间端赖您拥有的主题数而定。
<br />
<br />
<strong>步骤 4: 索引文章资料表</strong>
<br />
在 mysql 键入：
<br />
<pre>\g alter table ibf_posts add fulltext(post);</pre>
<br />
如果您未使用 'ibf_' 当成您的资料表延伸名称，请调整该查询对应，
此查询所需的时间端赖您拥有的文章数而定。平均而言，MySQL 一个小时能够索引 80,000 篇文章。如果您使用 MySQL 4，时间会大幅减少。
</div>
";
	}
}


?>
