4 $prefetch = array('`boardlist_layout`', '`topiclist_layout`', '`msglist_layout`', '`msgs_page`', '`topics_page`', '`sig`', '`quote`');
6 $page->title
= _('Options Screen');
8 if ( ! ($user instanceof authuser
) ) {
9 $page->errorfooter('login');
13 $tmp = $DB->query('DESCRIBE `users`');
14 while ( $row = $tmp->fetch_assoc() ) {
15 preg_match('#\(([0-9]+)\)#', $row['Type'], $limits[$row['Field']]);
16 $limits[$row['Field']] = $limits[$row['Field']][1];
21 // Make selectboxes, throw exceptions
22 $timezone = new form_select('timezone', 2, $user->timezone
);
23 for ($i = -12; $i <= 12; $i++
)
24 $timezone->add_item($i);
26 $language = new form_select('language', 2, $user->language
, array() );
27 preg_match_all('#(.*)\: (.*)#', file_get_contents('lang/LINGUAS'), $matches, PREG_SET_ORDER
);
28 foreach ( $matches as $lingua )
29 $language->add_item($lingua[1], $lingua[2]);
31 $messagelist = new form_select('messagelist', 2, $user->msglist_layout
);
32 foreach ( glob('lib/class.messagelist_*') as $classname )
34 foreach ( $classes['messagelist'] as $name => $info )
35 $messagelist->add_item($info['ID'], $info['name']);
37 $topiclist = new form_select('topiclist', 2, $user->topiclist_layout
);
38 foreach ( glob('lib/class.topiclist_*') as $classname )
40 foreach ( $classes['topiclist'] as $name => $info )
41 $topiclist->add_item($info['ID'], $info['name']);
43 $boardlist = new form_select('boardlist', 2, $user->boardlist_layout
);
44 foreach ( glob('lib/class.boardlist_*') as $classname )
46 foreach ( $classes['boardlist'] as $name => $info )
47 $boardlist->add_item($info['ID'], $info['name']);
51 if ( isset($_POST['submit']) ) {
53 function rangecheck($varname, $min, $max, $errormsg) {
54 if ( !isset($_POST[$varname]) ||
!is_numeric($_POST[$varname]) ||
$_POST[$varname] < $min ||
$_POST[$varname] > $max )
55 throw new OutOfBoundsException(sprintf($errormsg, $min, $max));
58 function lengthcheck($varname, $errormsg) {
60 if ( !isset($_POST[$varname]) ||
strlen($_POST[$varname]) > $limits[$varname] )
61 throw new LengthException(sprintf($errormsg, $limits[$varname]));
64 $timezone->check_value($_POST['timezone']);
65 $language->check_value($_POST['language']);
66 $messagelist->check_value($_POST['messagelist']);
67 $topiclist->check_value($_POST['topiclist']);
68 $boardlist->check_value($_POST['boardlist']);
70 rangecheck('msgs_page', 5, 100, _('Messages per page must be a number between %d and %d.'));
71 rangecheck('topics_page', 5, 100, _('Topics per page must be a number between %d and %d.'));
74 'date_format' => _('The custom date format can not be longer than %d characters.'),
75 'sig' => _('Your user signature can not be longer than %d characters.'),
76 'quote' => _('Your quote can not be longer than %d characters.'),
77 'public_email' => _('Your public contact address can not be longer than %d characters.'),
78 'private_email' => _('Your private contact address can not be longer than %d characters.')
80 foreach ( $tmp as $varname => $errormsg )
81 lengthcheck($varname, $errormsg);
83 $DB->query('START TRANSACTION');
84 $messagelist->default = $user->msglist_layout
= intval($_POST['messagelist']);
85 $topiclist->default = $user->topiclist_layout
= intval($_POST['topiclist']);
86 $boardlist->default = $user->boardlist_layout
= intval($_POST['boardlist']);
88 $timezone->default = $user->timezone
= $_POST['timezone'];
89 $language->default = $user->language
= $_POST['language'];
91 $user->date_format
= $_POST['date_format'];
92 $user->sig
= $_POST['sig'];
93 $user->quote
= $_POST['quote'];
94 $user->msgs_page
= $_POST['msgs_page'];
96 $user->public_email
= htmlentities($_POST['public_email']);
97 $user->private_email
= htmlentities($_POST['private_email']);
101 echo '<div class="notice">',_('Settings have been saved.'),'</div>';
102 } catch ( Exception
$e ) {
104 echo '<div class="error">',$e->getMessage(),'</div>';
111 echo '<form method="post" action="',$_SERVER['PHP_SELF'],'">
115 <th scope="col">Option</th>
116 <th scope="col">Value</th>
120 $options[_('Display Settings')] = array(
121 _('Message list view') => $messagelist->display(),
122 _('Topic list view') => $topiclist->display(),
123 _('Board list view') => $boardlist->display(),
124 _('Messages per page') => '<input type="text" name="msgs_page" value="'.$user->msgs_page
.
125 '" maxlength="'.$limits['msgs_page'].'"/>',
126 _('Topics per page') => '<input type="text" name="topics_page" value="'.$user->topics_page
.
127 '" maxlength="'.$limits['topics_page'].'" readonly="readonly"/>',
128 _('Timezone offset') => gmdate($user->date_format
).' ± '.$timezone->display(),
129 _('Time format') => '<input type="text" name="date_format" value="'.$user->date_format
.
130 '" maxlength="'.$limits['date_format'].'"/>',
131 _('Language') => $language->display()
134 $options[_('User Settings')] = array(
135 _('Signature') => '<textarea rows="4" cols="60" name="sig">'.htmlspecialchars($user->sig
).'</textarea>',
136 _('Quote') => '<textarea rows="4" cols="60" name="quote">'.htmlspecialchars($user->quote
).'</textarea>',
137 _('Public e-mail address') => '<input type="text" name="public_email" value="'.$user->public_email
.
138 '" maxlength="'.$limits['public_email'].'"/>',
139 _('Private e-mail address') => '<input type="text" name="private_email" value="'.$user->private_email
.
140 '" maxlength="'.$limits['private_email'].'"/>'
143 foreach ( $options as $title => $array ) {
144 echo '<tbody id="',strtr(strtolower($title), ' ', '_'),'">',"\n",
145 '<tr><th scope="rowgroup" colspan="2">',$title,'</th></tr>';
147 foreach ( $array as $name => $value )
148 echo '<tr class="content c',(++
$a&1),'">',"\n",
149 "\t<td>",$name,":</td>\n",
150 "\t<td>",$value,"</td>\n",
158 <div><button type="submit" name="submit" value="save" accesskey="s">',_('Save Settings'),' (S)</button></div>