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

« back to all changes in this revision

Viewing changes to www/php/phpBB3/includes/acp/acp_board.php

  • Committer: William Grant
  • Date: 2009-02-23 23:47:02 UTC
  • mfrom: (1099.1.211 new-dispatch)
  • Revision ID: grantw@unimelb.edu.au-20090223234702-db4b1llly46ignwo
Merge from lp:~ivle-dev/ivle/new-dispatch.

Pretty much everything changes. Reread the setup docs. Backup your databases.
Every file is now in a different installed location, the configuration system
is rewritten, the dispatch system is rewritten, URLs are different, the
database is different, worksheets and exercises are no longer on the
filesystem, we use a templating engine, jail service protocols are rewritten,
we don't repeat ourselves, we have authorization rewritten, phpBB is gone,
and probably lots of other things that I cannot remember.

This is certainly the biggest commit I have ever made, and hopefully
the largest I ever will.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
 
?>
 
 
b'\\ No newline at end of file'