~azzar1/unity/add-show-desktop-key

443 by dcoles
Added Forum application along with unmodifed version of phpBB3 "Olympus" 3.0.0
1
<?php
2
/**
3
*
4
* @package acp
5
* @version $Id: acp_board.php,v 1.82 2007/10/09 11:21:07 kellanved Exp $
6
* @copyright (c) 2005 phpBB Group
7
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
8
*
9
* @todo add cron intervals to server settings? (database_gc, queue_interval, session_gc, search_gc, cache_gc, warnings_gc)
10
*/
11
12
/**
13
* @ignore
14
*/
15
if (!defined('IN_PHPBB'))
16
{
17
	exit;
18
}
19
20
/**
21
* @package acp
22
*/
23
class acp_board
24
{
25
	var $u_action;
26
	var $new_config = array();
27
28
	function main($id, $mode)
29
	{
30
		global $db, $user, $auth, $template;
31
		global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
32
33
		$user->add_lang('acp/board');
34
35
		$action	= request_var('action', '');
36
		$submit = (isset($_POST['submit'])) ? true : false;
37
38
		$form_key = 'acp_board';
39
		add_form_key($form_key);
40
41
		/**
42
		*	Validation types are:
43
		*		string, int, bool,
44
		*		script_path (absolute path in url - beginning with / and no trailing slash),
45
		*		rpath (relative), rwpath (realtive, writable), path (relative path, but able to escape the root), wpath (writable)
46
		*/
47
		switch ($mode)
48
		{
49
			case 'settings':
50
				$display_vars = array(
51
					'title'	=> 'ACP_BOARD_SETTINGS',
52
					'vars'	=> array(
53
						'legend1'				=> 'ACP_BOARD_SETTINGS',
54
						'sitename'				=> array('lang' => 'SITE_NAME',				'validate' => 'string',	'type' => 'text:40:255', 'explain' => false),
55
						'site_desc'				=> array('lang' => 'SITE_DESC',				'validate' => 'string',	'type' => 'text:40:255', 'explain' => false),
56
						'board_disable'			=> array('lang' => 'DISABLE_BOARD',			'validate' => 'bool',	'type' => 'custom', 'method' => 'board_disable', 'explain' => true),
57
						'board_disable_msg'		=> false,
58
						'default_lang'			=> array('lang' => 'DEFAULT_LANGUAGE',		'validate' => 'lang',	'type' => 'select', 'function' => 'language_select', 'params' => array('{CONFIG_VALUE}'), 'explain' => false),
59
						'default_dateformat'	=> array('lang' => 'DEFAULT_DATE_FORMAT',	'validate' => 'string',	'type' => 'custom', 'method' => 'dateformat_select', 'explain' => true),
60
						'board_timezone'		=> array('lang' => 'SYSTEM_TIMEZONE',		'validate' => 'string',	'type' => 'select', 'function' => 'tz_select', 'params' => array('{CONFIG_VALUE}', 1), 'explain' => false),
61
						'board_dst'				=> array('lang' => 'SYSTEM_DST',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
62
						'default_style'			=> array('lang' => 'DEFAULT_STYLE',			'validate' => 'int',	'type' => 'select', 'function' => 'style_select', 'params' => array('{CONFIG_VALUE}', false), 'explain' => false),
63
						'override_user_style'	=> array('lang' => 'OVERRIDE_STYLE',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
64
65
						'legend2'				=> 'WARNINGS',
66
						'warnings_expire_days'	=> array('lang' => 'WARNINGS_EXPIRE',		'validate' => 'int',	'type' => 'text:3:4', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
67
					)
68
				);
69
			break;
70
71
			case 'features':
72
				$display_vars = array(
73
					'title'	=> 'ACP_BOARD_FEATURES',
74
					'vars'	=> array(
75
						'legend1'				=> 'ACP_BOARD_FEATURES',
76
						'allow_privmsg'			=> array('lang' => 'BOARD_PM',				'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
77
						'allow_topic_notify'	=> array('lang' => 'ALLOW_TOPIC_NOTIFY',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
78
						'allow_forum_notify'	=> array('lang' => 'ALLOW_FORUM_NOTIFY',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
79
						'allow_namechange'		=> array('lang' => 'ALLOW_NAME_CHANGE',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
80
						'allow_attachments'		=> array('lang' => 'ALLOW_ATTACHMENTS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
81
						'allow_pm_attach'		=> array('lang' => 'ALLOW_PM_ATTACHMENTS',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
82
						'allow_bbcode'			=> array('lang' => 'ALLOW_BBCODE',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
83
						'allow_smilies'			=> array('lang' => 'ALLOW_SMILIES',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
84
						'allow_sig'				=> array('lang' => 'ALLOW_SIG',				'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
85
						'allow_nocensors'		=> array('lang' => 'ALLOW_NO_CENSORS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
86
						'allow_bookmarks'		=> array('lang' => 'ALLOW_BOOKMARKS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
87
						'allow_birthdays'		=> array('lang' => 'ALLOW_BIRTHDAYS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
88
89
						'legend2'				=> 'ACP_LOAD_SETTINGS',
90
						'load_birthdays'		=> array('lang' => 'YES_BIRTHDAYS',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
91
						'load_moderators'		=> array('lang' => 'YES_MODERATORS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
92
						'load_jumpbox'			=> array('lang' => 'YES_JUMPBOX',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
93
						'load_cpf_memberlist'	=> array('lang' => 'LOAD_CPF_MEMBERLIST',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
94
						'load_cpf_viewprofile'	=> array('lang' => 'LOAD_CPF_VIEWPROFILE',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
95
						'load_cpf_viewtopic'	=> array('lang' => 'LOAD_CPF_VIEWTOPIC',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
96
					)
97
				);
98
			break;
99
100
			case 'avatar':
101
				$display_vars = array(
102
					'title'	=> 'ACP_AVATAR_SETTINGS',
103
					'vars'	=> array(
104
						'legend1'				=> 'ACP_AVATAR_SETTINGS',
105
						'avatar_min_height'		=> false, 'avatar_min_width' => false, 'avatar_max_height' => false, 'avatar_max_width' => false,
106
107
						'allow_avatar_local'	=> array('lang' => 'ALLOW_LOCAL',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
108
						'allow_avatar_remote'	=> array('lang' => 'ALLOW_REMOTE',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
109
						'allow_avatar_upload'	=> array('lang' => 'ALLOW_UPLOAD',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
110
						'avatar_filesize'		=> array('lang' => 'MAX_FILESIZE',			'validate' => 'int',	'type' => 'text:4:10', 'explain' => true, 'append' => ' ' . $user->lang['BYTES']),
111
						'avatar_min'			=> array('lang' => 'MIN_AVATAR_SIZE',		'validate' => 'int',	'type' => 'dimension:3:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
112
						'avatar_max'			=> array('lang' => 'MAX_AVATAR_SIZE',		'validate' => 'int',	'type' => 'dimension:3:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
113
						'avatar_path'			=> array('lang' => 'AVATAR_STORAGE_PATH',	'validate' => 'rwpath',	'type' => 'text:20:255', 'explain' => true),
114
						'avatar_gallery_path'	=> array('lang' => 'AVATAR_GALLERY_PATH',	'validate' => 'rpath',	'type' => 'text:20:255', 'explain' => true)
115
					)
116
				);
117
			break;
118
119
			case 'message':
120
				$display_vars = array(
121
					'title'	=> 'ACP_MESSAGE_SETTINGS',
122
					'lang'	=> 'ucp',
123
					'vars'	=> array(
124
						'legend1'				=> 'GENERAL_SETTINGS',
125
						'allow_privmsg'			=> array('lang' => 'BOARD_PM',				'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
126
						'pm_max_boxes'			=> array('lang' => 'BOXES_MAX',				'validate' => 'int',	'type' => 'text:4:4', 'explain' => true),
127
						'pm_max_msgs'			=> array('lang' => 'BOXES_LIMIT',			'validate' => 'int',	'type' => 'text:4:4', 'explain' => true),
128
						'full_folder_action'	=> array('lang' => 'FULL_FOLDER_ACTION',	'validate' => 'int',	'type' => 'select', 'method' => 'full_folder_select', 'explain' => true),
129
						'pm_edit_time'			=> array('lang' => 'PM_EDIT_TIME',			'validate' => 'int',	'type' => 'text:5:5', 'explain' => true, 'append' => ' ' . $user->lang['MINUTES']),
130
						
131
						'legend2'				=> 'GENERAL_OPTIONS',
132
						'allow_mass_pm'			=> array('lang' => 'ALLOW_MASS_PM',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
133
						'auth_bbcode_pm'		=> array('lang' => 'ALLOW_BBCODE_PM',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
134
						'auth_smilies_pm'		=> array('lang' => 'ALLOW_SMILIES_PM',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
135
						'allow_pm_attach'		=> array('lang' => 'ALLOW_PM_ATTACHMENTS',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
136
						'allow_sig_pm'			=> array('lang' => 'ALLOW_SIG_PM',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
137
						'print_pm'				=> array('lang' => 'ALLOW_PRINT_PM',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
138
						'forward_pm'			=> array('lang' => 'ALLOW_FORWARD_PM',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
139
						'auth_img_pm'			=> array('lang' => 'ALLOW_IMG_PM',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
140
						'auth_flash_pm'			=> array('lang' => 'ALLOW_FLASH_PM',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
141
						'enable_pm_icons'		=> array('lang' => 'ENABLE_PM_ICONS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false)
142
					)
143
				);
144
			break;
145
146
			case 'post':
147
				$display_vars = array(
148
					'title'	=> 'ACP_POST_SETTINGS',
149
					'vars'	=> array(
150
						'legend1'				=> 'GENERAL_OPTIONS',
151
						'allow_topic_notify'	=> array('lang' => 'ALLOW_TOPIC_NOTIFY',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
152
						'allow_forum_notify'	=> array('lang' => 'ALLOW_FORUM_NOTIFY',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
153
						'allow_bbcode'			=> array('lang' => 'ALLOW_BBCODE',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
154
						'allow_post_flash'		=> array('lang' => 'ALLOW_POST_FLASH',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
155
						'allow_smilies'			=> array('lang' => 'ALLOW_SMILIES',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
156
						'allow_post_links'		=> array('lang' => 'ALLOW_POST_LINKS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
157
						'allow_nocensors'		=> array('lang' => 'ALLOW_NO_CENSORS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
158
						'allow_bookmarks'		=> array('lang' => 'ALLOW_BOOKMARKS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
159
						'enable_post_confirm'	=> array('lang' => 'VISUAL_CONFIRM_POST',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
160
161
						'legend2'				=> 'POSTING',
162
						'bump_type'				=> false,
163
						'edit_time'				=> array('lang' => 'EDIT_TIME',				'validate' => 'int',	'type' => 'text:5:5', 'explain' => true, 'append' => ' ' . $user->lang['MINUTES']),
164
						'display_last_edited'	=> array('lang' => 'DISPLAY_LAST_EDITED',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
165
						'flood_interval'		=> array('lang' => 'FLOOD_INTERVAL',		'validate' => 'int',	'type' => 'text:3:10', 'explain' => true, 'append' => ' ' . $user->lang['SECONDS']),
166
						'bump_interval'			=> array('lang' => 'BUMP_INTERVAL',			'validate' => 'int',	'type' => 'custom', 'method' => 'bump_interval', 'explain' => true),
167
						'topics_per_page'		=> array('lang' => 'TOPICS_PER_PAGE',		'validate' => 'int',	'type' => 'text:3:4', 'explain' => false),
168
						'posts_per_page'		=> array('lang' => 'POSTS_PER_PAGE',		'validate' => 'int',	'type' => 'text:3:4', 'explain' => false),
169
						'hot_threshold'			=> array('lang' => 'HOT_THRESHOLD',			'validate' => 'int',	'type' => 'text:3:4', 'explain' => true),
170
						'max_poll_options'		=> array('lang' => 'MAX_POLL_OPTIONS',		'validate' => 'int',	'type' => 'text:4:4', 'explain' => false),
171
						'max_post_chars'		=> array('lang' => 'CHAR_LIMIT',			'validate' => 'int',	'type' => 'text:4:6', 'explain' => true),
172
						'max_post_smilies'		=> array('lang' => 'SMILIES_LIMIT',			'validate' => 'int',	'type' => 'text:4:4', 'explain' => true),
173
						'max_post_urls'			=> array('lang' => 'MAX_POST_URLS',			'validate' => 'int',	'type' => 'text:5:4', 'explain' => true),
174
						'max_post_font_size'	=> array('lang' => 'MAX_POST_FONT_SIZE',	'validate' => 'int',	'type' => 'text:5:4', 'explain' => true, 'append' => ' %'),
175
						'max_quote_depth'		=> array('lang' => 'QUOTE_DEPTH_LIMIT',		'validate' => 'int',	'type' => 'text:4:4', 'explain' => true),
176
						'max_post_img_width'	=> array('lang' => 'MAX_POST_IMG_WIDTH',	'validate' => 'int',	'type' => 'text:5:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
177
						'max_post_img_height'	=> array('lang' => 'MAX_POST_IMG_HEIGHT',	'validate' => 'int',	'type' => 'text:5:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
178
					)
179
				);
180
			break;
181
182
			case 'signature':
183
				$display_vars = array(
184
					'title'	=> 'ACP_SIGNATURE_SETTINGS',
185
					'vars'	=> array(
186
						'legend1'				=> 'GENERAL_OPTIONS',
187
						'allow_sig'				=> array('lang' => 'ALLOW_SIG',				'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
188
						'allow_sig_bbcode'		=> array('lang' => 'ALLOW_SIG_BBCODE',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
189
						'allow_sig_img'			=> array('lang' => 'ALLOW_SIG_IMG',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
190
						'allow_sig_flash'		=> array('lang' => 'ALLOW_SIG_FLASH',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
191
						'allow_sig_smilies'		=> array('lang' => 'ALLOW_SIG_SMILIES',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
192
						'allow_sig_links'		=> array('lang' => 'ALLOW_SIG_LINKS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
193
194
						'legend2'				=> 'GENERAL_SETTINGS',
195
						'max_sig_chars'			=> array('lang' => 'MAX_SIG_LENGTH',		'validate' => 'int',	'type' => 'text:5:4', 'explain' => true),
196
						'max_sig_urls'			=> array('lang' => 'MAX_SIG_URLS',			'validate' => 'int',	'type' => 'text:5:4', 'explain' => true),
197
						'max_sig_font_size'		=> array('lang' => 'MAX_SIG_FONT_SIZE',		'validate' => 'int',	'type' => 'text:5:4', 'explain' => true, 'append' => ' %'),
198
						'max_sig_smilies'		=> array('lang' => 'MAX_SIG_SMILIES',		'validate' => 'int',	'type' => 'text:5:4', 'explain' => true),
199
						'max_sig_img_width'		=> array('lang' => 'MAX_SIG_IMG_WIDTH',		'validate' => 'int',	'type' => 'text:5:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
200
						'max_sig_img_height'	=> array('lang' => 'MAX_SIG_IMG_HEIGHT',	'validate' => 'int',	'type' => 'text:5:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
201
					)
202
				);
203
			break;
204
205
			case 'registration':
206
				$display_vars = array(
207
					'title'	=> 'ACP_REGISTER_SETTINGS',
208
					'vars'	=> array(
209
						'legend1'				=> 'GENERAL_SETTINGS',
210
						'max_name_chars'		=> false,
211
						'max_pass_chars'		=> false,
212
213
						'require_activation'	=> array('lang' => 'ACC_ACTIVATION',	'validate' => 'int',	'type' => 'custom', 'method' => 'select_acc_activation', 'explain' => true),
214
						'min_name_chars'		=> array('lang' => 'USERNAME_LENGTH',	'validate' => 'int',	'type' => 'custom', 'method' => 'username_length', 'explain' => true),
215
						'min_pass_chars'		=> array('lang' => 'PASSWORD_LENGTH',	'validate' => 'int',	'type' => 'custom', 'method' => 'password_length', 'explain' => true),
216
						'allow_name_chars'		=> array('lang' => 'USERNAME_CHARS',	'validate' => 'string',	'type' => 'select', 'method' => 'select_username_chars', 'explain' => true),
217
						'pass_complex'			=> array('lang' => 'PASSWORD_TYPE',		'validate' => 'string',	'type' => 'select', 'method' => 'select_password_chars', 'explain' => true),
218
						'chg_passforce'			=> array('lang' => 'FORCE_PASS_CHANGE',	'validate' => 'int',	'type' => 'text:3:3', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
219
220
						'legend2'				=> 'GENERAL_OPTIONS',
221
						'allow_namechange'		=> array('lang' => 'ALLOW_NAME_CHANGE',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
222
						'allow_emailreuse'		=> array('lang' => 'ALLOW_EMAIL_REUSE',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
223
						'enable_confirm'		=> array('lang' => 'VISUAL_CONFIRM_REG',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
224
						'max_login_attempts'	=> array('lang' => 'MAX_LOGIN_ATTEMPTS',	'validate' => 'int',	'type' => 'text:3:3', 'explain' => true),
225
						'max_reg_attempts'		=> array('lang' => 'REG_LIMIT',				'validate' => 'int',	'type' => 'text:4:4', 'explain' => true),
226
						'min_time_reg'			=> array('lang' => 'MIN_TIME_REG',			'validate' => 'int',	'type' => 'text:3:3', 'explain' => true, 'append' => ' ' . $user->lang['SECONDS']),
227
						'min_time_terms'		=> array('lang' => 'MIN_TIME_TERMS',		'validate' => 'int',	'type' => 'text:3:3', 'explain' => true, 'append' => ' ' . $user->lang['SECONDS']),
228
229
						'legend3'			=> 'COPPA',
230
						'coppa_enable'		=> array('lang' => 'ENABLE_COPPA',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
231
						'coppa_mail'		=> array('lang' => 'COPPA_MAIL',		'validate' => 'string',	'type' => 'textarea:5:40', 'explain' => true),
232
						'coppa_fax'			=> array('lang' => 'COPPA_FAX',			'validate' => 'string',	'type' => 'text:25:100', 'explain' => false),
233
					)
234
				);
235
			break;
236
237
			case 'cookie':
238
				$display_vars = array(
239
					'title'	=> 'ACP_COOKIE_SETTINGS',
240
					'vars'	=> array(
241
						'legend1'		=> 'ACP_COOKIE_SETTINGS',
242
						'cookie_domain'	=> array('lang' => 'COOKIE_DOMAIN',	'validate' => 'string',	'type' => 'text::255', 'explain' => false),
243
						'cookie_name'	=> array('lang' => 'COOKIE_NAME',	'validate' => 'string',	'type' => 'text::16', 'explain' => false),
244
						'cookie_path'	=> array('lang'	=> 'COOKIE_PATH',	'validate' => 'string',	'type' => 'text::255', 'explain' => false),
245
						'cookie_secure'	=> array('lang' => 'COOKIE_SECURE',	'validate' => 'bool',	'type' => 'radio:disabled_enabled', 'explain' => true)
246
					)
247
				);
248
			break;
249
250
			case 'load':
251
				$display_vars = array(
252
					'title'	=> 'ACP_LOAD_SETTINGS',
253
					'vars'	=> array(
254
						'legend1'			=> 'GENERAL_SETTINGS',
255
						'limit_load'		=> array('lang' => 'LIMIT_LOAD',		'validate' => 'string',	'type' => 'text:4:4', 'explain' => true),
256
						'session_length'	=> array('lang' => 'SESSION_LENGTH',	'validate' => 'int',	'type' => 'text:5:10', 'explain' => true, 'append' => ' ' . $user->lang['SECONDS']),
257
						'active_sessions'	=> array('lang' => 'LIMIT_SESSIONS',	'validate' => 'int',	'type' => 'text:4:4', 'explain' => true),
258
						'load_online_time'	=> array('lang' => 'ONLINE_LENGTH',		'validate' => 'int',	'type' => 'text:4:3', 'explain' => true, 'append' => ' ' . $user->lang['MINUTES']),
259
260
						'legend2'				=> 'GENERAL_OPTIONS',
261
						'load_db_track'			=> array('lang' => 'YES_POST_MARKING',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
262
						'load_db_lastread'		=> array('lang' => 'YES_READ_MARKING',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
263
						'load_anon_lastread'	=> array('lang' => 'YES_ANON_READ_MARKING',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
264
						'load_online'			=> array('lang' => 'YES_ONLINE',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
265
						'load_online_guests'	=> array('lang' => 'YES_ONLINE_GUESTS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
266
						'load_onlinetrack'		=> array('lang' => 'YES_ONLINE_TRACK',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
267
						'load_birthdays'		=> array('lang' => 'YES_BIRTHDAYS',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
268
						'load_moderators'		=> array('lang' => 'YES_MODERATORS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
269
						'load_jumpbox'			=> array('lang' => 'YES_JUMPBOX',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
270
						'load_user_activity'	=> array('lang' => 'LOAD_USER_ACTIVITY',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
271
						'load_tplcompile'		=> array('lang' => 'RECOMPILE_STYLES',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
272
						
273
						'legend3'				=> 'CUSTOM_PROFILE_FIELDS',
274
						'load_cpf_memberlist'	=> array('lang' => 'LOAD_CPF_MEMBERLIST',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
275
						'load_cpf_viewprofile'	=> array('lang' => 'LOAD_CPF_VIEWPROFILE',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
276
						'load_cpf_viewtopic'	=> array('lang' => 'LOAD_CPF_VIEWTOPIC',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => false),
277
					)
278
				);
279
			break;
280
281
			case 'auth':
282
				$display_vars = array(
283
					'title'	=> 'ACP_AUTH_SETTINGS',
284
					'vars'	=> array(
285
						'legend1'		=> 'ACP_AUTH_SETTINGS',
286
						'auth_method'	=> array('lang' => 'AUTH_METHOD',	'validate' => 'string',	'type' => 'select', 'method' => 'select_auth_method', 'explain' => false)
287
					)
288
				);
289
			break;
290
291
			case 'server':
292
				$display_vars = array(
293
					'title'	=> 'ACP_SERVER_SETTINGS',
294
					'vars'	=> array(
295
						'legend1'				=> 'ACP_SERVER_SETTINGS',
296
						'gzip_compress'			=> array('lang' => 'ENABLE_GZIP',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
297
298
						'legend2'				=> 'PATH_SETTINGS',
299
						'smilies_path'			=> array('lang' => 'SMILIES_PATH',		'validate' => 'rpath',	'type' => 'text:20:255', 'explain' => true),
300
						'icons_path'			=> array('lang' => 'ICONS_PATH',		'validate' => 'rpath',	'type' => 'text:20:255', 'explain' => true),
301
						'upload_icons_path'		=> array('lang' => 'UPLOAD_ICONS_PATH',	'validate' => 'rpath',	'type' => 'text:20:255', 'explain' => true),
302
						'ranks_path'			=> array('lang' => 'RANKS_PATH',		'validate' => 'rpath',	'type' => 'text:20:255', 'explain' => true),
303
304
						'legend3'				=> 'SERVER_URL_SETTINGS',
305
						'force_server_vars'		=> array('lang' => 'FORCE_SERVER_VARS',	'validate' => 'bool',			'type' => 'radio:yes_no', 'explain' => true),
306
						'server_protocol'		=> array('lang' => 'SERVER_PROTOCOL',	'validate' => 'string',			'type' => 'text:10:10', 'explain' => true),
307
						'server_name'			=> array('lang' => 'SERVER_NAME',		'validate' => 'string',			'type' => 'text:40:255', 'explain' => true),
308
						'server_port'			=> array('lang' => 'SERVER_PORT',		'validate' => 'int',			'type' => 'text:5:5', 'explain' => true),
309
						'script_path'			=> array('lang' => 'SCRIPT_PATH',		'validate' => 'script_path',	'type' => 'text::255', 'explain' => true),
310
					)
311
				);
312
			break;
313
314
			case 'security':
315
				$display_vars = array(
316
					'title'	=> 'ACP_SECURITY_SETTINGS',
317
					'vars'	=> array(
318
						'legend1'				=> 'ACP_SECURITY_SETTINGS',
319
						'allow_autologin'		=> array('lang' => 'ALLOW_AUTOLOGIN',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
320
						'max_autologin_time'	=> array('lang' => 'AUTOLOGIN_LENGTH',		'validate' => 'int',	'type' => 'text:5:5', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
321
						'ip_check'				=> array('lang' => 'IP_VALID',				'validate' => 'int',	'type' => 'custom', 'method' => 'select_ip_check', 'explain' => true),
322
						'browser_check'			=> array('lang' => 'BROWSER_VALID',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
323
						'forwarded_for_check'	=> array('lang' => 'FORWARDED_FOR_VALID',	'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
324
						'check_dnsbl'			=> array('lang' => 'CHECK_DNSBL',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
325
						'email_check_mx'		=> array('lang' => 'EMAIL_CHECK_MX',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
326
						'pass_complex'			=> array('lang' => 'PASSWORD_TYPE',			'validate' => 'string',	'type' => 'select', 'method' => 'select_password_chars', 'explain' => true),
327
						'chg_passforce'			=> array('lang' => 'FORCE_PASS_CHANGE',		'validate' => 'int',	'type' => 'text:3:3', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
328
						'max_login_attempts'	=> array('lang' => 'MAX_LOGIN_ATTEMPTS',	'validate' => 'int',	'type' => 'text:3:3', 'explain' => true),
329
						'tpl_allow_php'			=> array('lang' => 'TPL_ALLOW_PHP',			'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
330
						'form_token_lifetime'	=> array('lang' => 'FORM_TIME_MAX',			'validate' => 'int',	'type' => 'text:5:5', 'explain' => true, 'append' => ' ' . $user->lang['SECONDS']),
331
						'form_token_mintime'	=> array('lang' => 'FORM_TIME_MIN',			'validate' => 'int',	'type' => 'text:5:5', 'explain' => true, 'append' => ' ' . $user->lang['SECONDS']),
332
						'form_token_sid_guests'	=> array('lang' => 'FORM_SID_GUESTS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
333
334
					)
335
				);
336
			break;
337
338
			case 'email':
339
				$display_vars = array(
340
					'title'	=> 'ACP_EMAIL_SETTINGS',
341
					'vars'	=> array(
342
						'legend1'				=> 'GENERAL_SETTINGS',
343
						'email_enable'			=> array('lang' => 'ENABLE_EMAIL',			'validate' => 'bool',	'type' => 'radio:enabled_disabled', 'explain' => true),
344
						'board_email_form'		=> array('lang' => 'BOARD_EMAIL_FORM',		'validate' => 'bool',	'type' => 'radio:enabled_disabled', 'explain' => true),
345
						'email_function_name'	=> array('lang' => 'EMAIL_FUNCTION_NAME',	'validate' => 'string',	'type' => 'text:20:50', 'explain' => true),
346
						'email_package_size'	=> array('lang' => 'EMAIL_PACKAGE_SIZE',	'validate' => 'int',	'type' => 'text:5:5', 'explain' => true),
347
						'board_contact'			=> array('lang' => 'CONTACT_EMAIL',			'validate' => 'string',	'type' => 'text:25:100', 'explain' => true),
348
						'board_email'			=> array('lang' => 'ADMIN_EMAIL',			'validate' => 'string',	'type' => 'text:25:100', 'explain' => true),
349
						'board_email_sig'		=> array('lang' => 'EMAIL_SIG',				'validate' => 'string',	'type' => 'textarea:5:30', 'explain' => true),
350
						'board_hide_emails'		=> array('lang' => 'BOARD_HIDE_EMAILS',		'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
351
352
						'legend2'				=> 'SMTP_SETTINGS',
353
						'smtp_delivery'			=> array('lang' => 'USE_SMTP',				'validate' => 'bool',	'type' => 'radio:yes_no', 'explain' => true),
354
						'smtp_host'				=> array('lang' => 'SMTP_SERVER',			'validate' => 'string',	'type' => 'text:25:50', 'explain' => false),
355
						'smtp_port'				=> array('lang' => 'SMTP_PORT',				'validate' => 'int',	'type' => 'text:4:5', 'explain' => true),
356
						'smtp_auth_method'		=> array('lang' => 'SMTP_AUTH_METHOD',		'validate' => 'string',	'type' => 'select', 'method' => 'mail_auth_select', 'explain' => true),
357
						'smtp_username'			=> array('lang' => 'SMTP_USERNAME',			'validate' => 'string',	'type' => 'text:25:255', 'explain' => true),
358
						'smtp_password'			=> array('lang' => 'SMTP_PASSWORD',			'validate' => 'string',	'type' => 'password:25:255', 'explain' => true)
359
					)
360
				);
361
			break;
362
363
			default:
364
				trigger_error('NO_MODE', E_USER_ERROR);
365
			break;
366
		}
367
368
		if (isset($display_vars['lang']))
369
		{
370
			$user->add_lang($display_vars['lang']);
371
		}
372
373
		$this->new_config = $config;
374
		$cfg_array = (isset($_REQUEST['config'])) ? utf8_normalize_nfc(request_var('config', array('' => ''), true)) : $this->new_config;
375
		$error = array();
376
377
		// We validate the complete config if whished
378
		validate_config_vars($display_vars['vars'], $cfg_array, $error);
379
380
		if ($submit && !check_form_key($form_key))
381
		{
382
			$error[] = $user->lang['FORM_INVALID'];
383
		}
384
		// Do not write values if there is an error
385
		if (sizeof($error))
386
		{
387
			$submit = false;
388
		}
389
390
		// We go through the display_vars to make sure no one is trying to set variables he/she is not allowed to...
391
		foreach ($display_vars['vars'] as $config_name => $null)
392
		{
393
			if (!isset($cfg_array[$config_name]) || strpos($config_name, 'legend') !== false)
394
			{
395
				continue;
396
			}
397
398
			if ($config_name == 'auth_method')
399
			{
400
				continue;
401
			}
402
403
			$this->new_config[$config_name] = $config_value = $cfg_array[$config_name];
404
405
			if ($config_name == 'email_function_name')
406
			{
407
				$this->new_config['email_function_name'] = trim(str_replace(array('(', ')'), array('', ''), $this->new_config['email_function_name']));
408
				$this->new_config['email_function_name'] = (empty($this->new_config['email_function_name']) || !function_exists($this->new_config['email_function_name'])) ? 'mail' : $this->new_config['email_function_name'];
409
				$config_value = $this->new_config['email_function_name'];
410
			}
411
412
			if ($submit)
413
			{
414
				set_config($config_name, $config_value);
415
			}
416
		}
417
418
		if ($mode == 'auth')
419
		{
420
			// Retrieve a list of auth plugins and check their config values
421
			$auth_plugins = array();
422
423
			$dp = @opendir($phpbb_root_path . 'includes/auth');
424
425
			if ($dp)
426
			{
427
				while (($file = readdir($dp)) !== false)
428
				{
429
					if (preg_match('#^auth_(.*?)\.' . $phpEx . '$#', $file))
430
					{
431
						$auth_plugins[] = basename(preg_replace('#^auth_(.*?)\.' . $phpEx . '$#', '\1', $file));
432
					}
433
				}
434
				closedir($dp);
435
436
				sort($auth_plugins);
437
			}
438
439
			$updated_auth_settings = false;
440
			$old_auth_config = array();
441
			foreach ($auth_plugins as $method)
442
			{
443
				if ($method && file_exists($phpbb_root_path . 'includes/auth/auth_' . $method . '.' . $phpEx))
444
				{
445
					include_once($phpbb_root_path . 'includes/auth/auth_' . $method . '.' . $phpEx);
446
447
					$method = 'acp_' . $method;
448
					if (function_exists($method))
449
					{
450
						if ($fields = $method($this->new_config))
451
						{
452
							// Check if we need to create config fields for this plugin and save config when submit was pressed
453
							foreach ($fields['config'] as $field)
454
							{
455
								if (!isset($config[$field]))
456
								{
457
									set_config($field, '');
458
								}
459
460
								if (!isset($cfg_array[$field]) || strpos($field, 'legend') !== false)
461
								{
462
									continue;
463
								}
464
465
								$old_auth_config[$field] = $this->new_config[$field];
466
								$config_value = $cfg_array[$field];
467
								$this->new_config[$field] = $config_value;
468
469
								if ($submit)
470
								{
471
									$updated_auth_settings = true;
472
									set_config($field, $config_value);
473
								}
474
							}
475
						}
476
						unset($fields);
477
					}
478
				}
479
			}
480
481
			if ($submit && (($cfg_array['auth_method'] != $this->new_config['auth_method']) || $updated_auth_settings))
482
			{
483
				$method = basename($cfg_array['auth_method']);
484
				if ($method && in_array($method, $auth_plugins))
485
				{
486
					include_once($phpbb_root_path . 'includes/auth/auth_' . $method . '.' . $phpEx);
487
488
					$method = 'init_' . $method;
489
					if (function_exists($method))
490
					{
491
						if ($error = $method())
492
						{
493
							foreach ($old_auth_config as $config_name => $config_value)
494
							{
495
								set_config($config_name, $config_value);
496
							}
497
							trigger_error($error . adm_back_link($this->u_action), E_USER_WARNING);
498
						}
499
					}
500
					set_config('auth_method', basename($cfg_array['auth_method']));
501
				}
502
				else
503
				{
504
					trigger_error('NO_AUTH_PLUGIN', E_USER_ERROR);
505
				}
506
			}
507
		}
508
509
		if ($submit)
510
		{
511
			add_log('admin', 'LOG_CONFIG_' . strtoupper($mode));
512
513
			trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action));
514
		}
515
516
		$this->tpl_name = 'acp_board';
517
		$this->page_title = $display_vars['title'];
518
519
		$template->assign_vars(array(
520
			'L_TITLE'			=> $user->lang[$display_vars['title']],
521
			'L_TITLE_EXPLAIN'	=> $user->lang[$display_vars['title'] . '_EXPLAIN'],
522
523
			'S_ERROR'			=> (sizeof($error)) ? true : false,
524
			'ERROR_MSG'			=> implode('<br />', $error),
525
526
			'U_ACTION'			=> $this->u_action)
527
		);
528
529
		// Output relevant page
530
		foreach ($display_vars['vars'] as $config_key => $vars)
531
		{
532
			if (!is_array($vars) && strpos($config_key, 'legend') === false)
533
			{
534
				continue;
535
			}
536
537
			if (strpos($config_key, 'legend') !== false)
538
			{
539
				$template->assign_block_vars('options', array(
540
					'S_LEGEND'		=> true,
541
					'LEGEND'		=> (isset($user->lang[$vars])) ? $user->lang[$vars] : $vars)
542
				);
543
544
				continue;
545
			}
546
547
			$type = explode(':', $vars['type']);
548
549
			$l_explain = '';
550
			if ($vars['explain'] && isset($vars['lang_explain']))
551
			{
552
				$l_explain = (isset($user->lang[$vars['lang_explain']])) ? $user->lang[$vars['lang_explain']] : $vars['lang_explain'];
553
			}
554
			else if ($vars['explain'])
555
			{
556
				$l_explain = (isset($user->lang[$vars['lang'] . '_EXPLAIN'])) ? $user->lang[$vars['lang'] . '_EXPLAIN'] : '';
557
			}
558
559
			$template->assign_block_vars('options', array(
560
				'KEY'			=> $config_key,
561
				'TITLE'			=> (isset($user->lang[$vars['lang']])) ? $user->lang[$vars['lang']] : $vars['lang'],
562
				'S_EXPLAIN'		=> $vars['explain'],
563
				'TITLE_EXPLAIN'	=> $l_explain,
564
				'CONTENT'		=> build_cfg_template($type, $config_key, $this->new_config, $config_key, $vars),
565
				)
566
			);
567
		
568
			unset($display_vars['vars'][$config_key]);
569
		}
570
571
		if ($mode == 'auth')
572
		{
573
			$template->assign_var('S_AUTH', true);
574
575
			foreach ($auth_plugins as $method)
576
			{
577
				if ($method && file_exists($phpbb_root_path . 'includes/auth/auth_' . $method . '.' . $phpEx))
578
				{
579
					$method = 'acp_' . $method;
580
					if (function_exists($method))
581
					{
582
						$fields = $method($this->new_config);
583
584
						if ($fields['tpl'])
585
						{
586
							$template->assign_block_vars('auth_tpl', array(
587
								'TPL'	=> $fields['tpl'])
588
							);
589
						}
590
						unset($fields);
591
					}
592
				}
593
			}
594
		}
595
	}
596
597
	/**
598
	* Select auth method
599
	*/
600
	function select_auth_method($selected_method, $key = '')
601
	{
602
		global $phpbb_root_path, $phpEx;
603
604
		$auth_plugins = array();
605
606
		$dp = @opendir($phpbb_root_path . 'includes/auth');
607
608
		if (!$dp)
609
		{
610
			return '';
611
		}
612
613
		while (($file = readdir($dp)) !== false)
614
		{
615
			if (preg_match('#^auth_(.*?)\.' . $phpEx . '$#', $file))
616
			{
617
				$auth_plugins[] = preg_replace('#^auth_(.*?)\.' . $phpEx . '$#', '\1', $file);
618
			}
619
		}
620
		closedir($dp);
621
622
		sort($auth_plugins);
623
624
		$auth_select = '';
625
		foreach ($auth_plugins as $method)
626
		{
627
			$selected = ($selected_method == $method) ? ' selected="selected"' : '';
628
			$auth_select .= '<option value="' . $method . '"' . $selected . '>' . ucfirst($method) . '</option>';
629
		}
630
631
		return $auth_select;
632
	}
633
634
	/**
635
	* Select mail authentication method
636
	*/
637
	function mail_auth_select($selected_method, $key = '')
638
	{
639
		global $user;
640
641
		$auth_methods = array('PLAIN', 'LOGIN', 'CRAM-MD5', 'DIGEST-MD5', 'POP-BEFORE-SMTP');
642
		$s_smtp_auth_options = '';
643
644
		foreach ($auth_methods as $method)
645
		{
646
			$s_smtp_auth_options .= '<option value="' . $method . '"' . (($selected_method == $method) ? ' selected="selected"' : '') . '>' . $user->lang['SMTP_' . str_replace('-', '_', $method)] . '</option>';
647
		}
648
649
		return $s_smtp_auth_options;
650
	}
651
652
	/**
653
	* Select full folder action
654
	*/
655
	function full_folder_select($value, $key = '')
656
	{
657
		global $user;
658
659
		return '<option value="1"' . (($value == 1) ? ' selected="selected"' : '') . '>' . $user->lang['DELETE_OLDEST_MESSAGES'] . '</option><option value="2"' . (($value == 2) ? ' selected="selected"' : '') . '>' . $user->lang['HOLD_NEW_MESSAGES_SHORT'] . '</option>';
660
	}
661
662
	/**
663
	* Select ip validation
664
	*/
665
	function select_ip_check($value, $key = '')
666
	{
667
		$radio_ary = array(4 => 'ALL', 3 => 'CLASS_C', 2 => 'CLASS_B', 0 => 'NO_IP_VALIDATION');
668
669
		return h_radio('config[ip_check]', $radio_ary, $value, $key);
670
	}
671
672
	/**
673
	* Select account activation method
674
	*/
675
	function select_acc_activation($value, $key = '')
676
	{
677
		global $user, $config;
678
679
		$radio_ary = array(USER_ACTIVATION_DISABLE => 'ACC_DISABLE', USER_ACTIVATION_NONE => 'ACC_NONE');
680
		if ($config['email_enable'])
681
		{
682
			$radio_ary += array(USER_ACTIVATION_SELF => 'ACC_USER', USER_ACTIVATION_ADMIN => 'ACC_ADMIN');
683
		}
684
685
		return h_radio('config[require_activation]', $radio_ary, $value, $key);
686
	}
687
688
	/**
689
	* Maximum/Minimum username length
690
	*/
691
	function username_length($value, $key = '')
692
	{
693
		global $user;
694
695
		return '<input id="' . $key . '" type="text" size="3" maxlength="3" name="config[min_name_chars]" value="' . $value . '" /> ' . $user->lang['MIN_CHARS'] . '&nbsp;&nbsp;<input type="text" size="3" maxlength="3" name="config[max_name_chars]" value="' . $this->new_config['max_name_chars'] . '" /> ' . $user->lang['MAX_CHARS'];
696
	}
697
698
	/**
699
	* Allowed chars in usernames
700
	*/
701
	function select_username_chars($selected_value, $key)
702
	{
703
		global $user;
704
705
		$user_char_ary = array('USERNAME_CHARS_ANY', 'USERNAME_ALPHA_ONLY', 'USERNAME_ALPHA_SPACERS', 'USERNAME_LETTER_NUM', 'USERNAME_LETTER_NUM_SPACERS', 'USERNAME_ASCII');
706
		$user_char_options = '';
707
		foreach ($user_char_ary as $user_type)
708
		{
709
			$selected = ($selected_value == $user_type) ? ' selected="selected"' : '';
710
			$user_char_options .= '<option value="' . $user_type . '"' . $selected . '>' . $user->lang[$user_type] . '</option>';
711
		}
712
713
		return $user_char_options;
714
	}
715
716
	/**
717
	* Maximum/Minimum password length
718
	*/
719
	function password_length($value, $key)
720
	{
721
		global $user;
722
723
		return '<input id="' . $key . '" type="text" size="3" maxlength="3" name="config[min_pass_chars]" value="' . $value . '" /> ' . $user->lang['MIN_CHARS'] . '&nbsp;&nbsp;<input type="text" size="3" maxlength="3" name="config[max_pass_chars]" value="' . $this->new_config['max_pass_chars'] . '" /> ' . $user->lang['MAX_CHARS'];
724
	}
725
726
	/**
727
	* Required chars in passwords
728
	*/
729
	function select_password_chars($selected_value, $key)
730
	{
731
		global $user;
732
733
		$pass_type_ary = array('PASS_TYPE_ANY', 'PASS_TYPE_CASE', 'PASS_TYPE_ALPHA', 'PASS_TYPE_SYMBOL');
734
		$pass_char_options = '';
735
		foreach ($pass_type_ary as $pass_type)
736
		{
737
			$selected = ($selected_value == $pass_type) ? ' selected="selected"' : '';
738
			$pass_char_options .= '<option value="' . $pass_type . '"' . $selected . '>' . $user->lang[$pass_type] . '</option>';
739
		}
740
741
		return $pass_char_options;
742
	}
743
744
	/**
745
	* Select bump interval
746
	*/
747
	function bump_interval($value, $key)
748
	{
749
		global $user;
750
751
		$s_bump_type = '';
752
		$types = array('m' => 'MINUTES', 'h' => 'HOURS', 'd' => 'DAYS');
753
		foreach ($types as $type => $lang)
754
		{
755
			$selected = ($this->new_config['bump_type'] == $type) ? ' selected="selected"' : '';
756
			$s_bump_type .= '<option value="' . $type . '"' . $selected . '>' . $user->lang[$lang] . '</option>';
757
		}
758
759
		return '<input id="' . $key . '" type="text" size="3" maxlength="4" name="config[bump_interval]" value="' . $value . '" />&nbsp;<select name="config[bump_type]">' . $s_bump_type . '</select>';
760
	}
761
762
	/**
763
	* Board disable option and message
764
	*/
765
	function board_disable($value, $key)
766
	{
767
		global $user;
768
769
		$radio_ary = array(1 => 'YES', 0 => 'NO');
770
771
		return h_radio('config[board_disable]', $radio_ary, $value) . '<br /><input id="' . $key . '" type="text" name="config[board_disable_msg]" maxlength="255" size="40" value="' . $this->new_config['board_disable_msg'] . '" />';
772
	}
773
774
	/**
775
	* Select default dateformat
776
	*/
777
	function dateformat_select($value, $key)
778
	{
779
		global $user, $config;
780
781
		// Let the format_date function operate with the acp values
782
		$old_tz = $user->timezone;
783
		$old_dst = $user->dst;
784
785
		$user->timezone = $config['board_timezone'];
786
		$user->dst = $config['board_dst'];
787
788
		$dateformat_options = '';
789
790
		foreach ($user->lang['dateformats'] as $format => $null)
791
		{
792
			$dateformat_options .= '<option value="' . $format . '"' . (($format == $value) ? ' selected="selected"' : '') . '>';
793
			$dateformat_options .= $user->format_date(time(), $format, false) . ((strpos($format, '|') !== false) ? $user->lang['VARIANT_DATE_SEPARATOR'] . $user->format_date(time(), $format, true) : '');
794
			$dateformat_options .= '</option>';
795
		}
796
797
		$dateformat_options .= '<option value="custom"';
798
		if (!in_array($value, array_keys($user->lang['dateformats'])))
799
		{
800
			$dateformat_options .= ' selected="selected"';
801
		}
802
		$dateformat_options .= '>' . $user->lang['CUSTOM_DATEFORMAT'] . '</option>';
803
804
		// Reset users date options
805
		$user->timezone = $old_tz;
806
		$user->dst = $old_dst;
807
808
		return "<select name=\"dateoptions\" id=\"dateoptions\" onchange=\"if (this.value == 'custom') { document.getElementById('" . addslashes($key) . "').value = '" . addslashes($value) . "'; } else { document.getElementById('" . addslashes($key) . "').value = this.value; }\">$dateformat_options</select>
809
		<input type=\"text\" name=\"config[$key]\" id=\"$key\" value=\"$value\" maxlength=\"30\" />";
810
	}
811
}
812
813
?>