Verzeichnisstruktur phpBB-3.0.0


Veröffentlicht
12.12.2007

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

acp_board.php

Zuletzt modifiziert: 09.10.2024, 12:51 - Dateigröße: 39.13 KiB


001  <?php
002  /**
003  *
004  * @package acp
005  * @version $Id$
006  * @copyright (c) 2005 phpBB Group
007  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
008  *
009  * @todo add cron intervals to server settings? (database_gc, queue_interval, session_gc, search_gc, cache_gc, warnings_gc)
010  */
011   
012  /**
013  * @ignore
014  */
015  if (!defined('IN_PHPBB'))
016  {
017      exit;
018  }
019   
020  /**
021  * @package acp
022  */
023  class acp_board
024  {
025      var $u_action;
026      var $new_config = array();
027   
028      function main($id, $mode)
029      {
030          global $db, $user, $auth, $template;
031          global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
032   
033          $user->add_lang('acp/board');
034   
035          $action    = request_var('action', '');
036          $submit = (isset($_POST['submit'])) ? true : false;
037   
038          $form_key = 'acp_board';
039          add_form_key($form_key);
040   
041          /**
042          *    Validation types are:
043          *        string, int, bool,
044          *        script_path (absolute path in url - beginning with / and no trailing slash),
045          *        rpath (relative), rwpath (realtive, writable), path (relative path, but able to escape the root), wpath (writable)
046          */
047          switch ($mode)
048          {
049              case 'settings':
050                  $display_vars = array(
051                      'title'    => 'ACP_BOARD_SETTINGS',
052                      'vars'    => array(
053                          'legend1'                => 'ACP_BOARD_SETTINGS',
054                          'sitename'                => array('lang' => 'SITE_NAME',                'validate' => 'string',    'type' => 'text:40:255', 'explain' => false),
055                          'site_desc'                => array('lang' => 'SITE_DESC',                'validate' => 'string',    'type' => 'text:40:255', 'explain' => false),
056                          'board_disable'            => array('lang' => 'DISABLE_BOARD',            'validate' => 'bool',    'type' => 'custom', 'method' => 'board_disable', 'explain' => true),
057                          'board_disable_msg'        => false,
058                          'default_lang'            => array('lang' => 'DEFAULT_LANGUAGE',        'validate' => 'lang',    'type' => 'select', 'function' => 'language_select', 'params' => array('{CONFIG_VALUE}'), 'explain' => false),
059                          'default_dateformat'    => array('lang' => 'DEFAULT_DATE_FORMAT',    'validate' => 'string',    'type' => 'custom', 'method' => 'dateformat_select', 'explain' => true),
060                          'board_timezone'        => array('lang' => 'SYSTEM_TIMEZONE',        'validate' => 'string',    'type' => 'select', 'function' => 'tz_select', 'params' => array('{CONFIG_VALUE}', 1), 'explain' => false),
061                          'board_dst'                => array('lang' => 'SYSTEM_DST',            'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => false),
062                          'default_style'            => array('lang' => 'DEFAULT_STYLE',            'validate' => 'int',    'type' => 'select', 'function' => 'style_select', 'params' => array('{CONFIG_VALUE}', false), 'explain' => false),
063                          'override_user_style'    => array('lang' => 'OVERRIDE_STYLE',        'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => true),
064   
065                          'legend2'                => 'WARNINGS',
066                          'warnings_expire_days'    => array('lang' => 'WARNINGS_EXPIRE',        'validate' => 'int',    'type' => 'text:3:4', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
067                      )
068                  );
069              break;
070   
071              case 'features':
072                  $display_vars = array(
073                      'title'    => 'ACP_BOARD_FEATURES',
074                      'vars'    => array(
075                          'legend1'                => 'ACP_BOARD_FEATURES',
076                          'allow_privmsg'            => array('lang' => 'BOARD_PM',                'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => true),
077                          'allow_topic_notify'    => array('lang' => 'ALLOW_TOPIC_NOTIFY',    'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => false),
078                          'allow_forum_notify'    => array('lang' => 'ALLOW_FORUM_NOTIFY',    'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => false),
079                          'allow_namechange'        => array('lang' => 'ALLOW_NAME_CHANGE',        'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => false),
080                          'allow_attachments'        => array('lang' => 'ALLOW_ATTACHMENTS',        'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => false),
081                          'allow_pm_attach'        => array('lang' => 'ALLOW_PM_ATTACHMENTS',    'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => false),
082                          'allow_bbcode'            => array('lang' => 'ALLOW_BBCODE',            'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => false),
083                          'allow_smilies'            => array('lang' => 'ALLOW_SMILIES',            'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => false),
084                          'allow_sig'                => array('lang' => 'ALLOW_SIG',                'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => false),
085                          'allow_nocensors'        => array('lang' => 'ALLOW_NO_CENSORS',        'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => true),
086                          'allow_bookmarks'        => array('lang' => 'ALLOW_BOOKMARKS',        'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => true),
087                          'allow_birthdays'        => array('lang' => 'ALLOW_BIRTHDAYS',        'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => true),
088   
089                          'legend2'                => 'ACP_LOAD_SETTINGS',
090                          'load_birthdays'        => array('lang' => 'YES_BIRTHDAYS',            'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => true),
091                          'load_moderators'        => array('lang' => 'YES_MODERATORS',        'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => false),
092                          'load_jumpbox'            => array('lang' => 'YES_JUMPBOX',            'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => false),
093                          'load_cpf_memberlist'    => array('lang' => 'LOAD_CPF_MEMBERLIST',    'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => false),
094                          'load_cpf_viewprofile'    => array('lang' => 'LOAD_CPF_VIEWPROFILE',    'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => false),
095                          'load_cpf_viewtopic'    => array('lang' => 'LOAD_CPF_VIEWTOPIC',    'validate' => 'bool',    'type' => 'radio:yes_no', 'explain' => false),
096                      )
097                  );
098              break;
099   
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  ?>