[ Index ] |
PHP Cross Reference of phpBB-3.3.14-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * 4 * This file is part of the phpBB Forum Software package. 5 * 6 * @copyright (c) phpBB Limited <https://www.phpbb.com> 7 * @license GNU General Public License, version 2 (GPL-2.0) 8 * 9 * For full copyright and license information, please see 10 * the docs/CREDITS.txt file. 11 * 12 */ 13 14 /** 15 * @ignore 16 */ 17 if (!defined('IN_PHPBB')) 18 { 19 exit; 20 } 21 22 /** 23 * ucp_prefs 24 * Changing user preferences 25 */ 26 class ucp_prefs 27 { 28 var $u_action; 29 30 function main($id, $mode) 31 { 32 global $config, $db, $user, $auth, $template, $phpbb_dispatcher, $request; 33 34 $submit = (isset($_POST['submit'])) ? true : false; 35 $error = $data = array(); 36 $s_hidden_fields = ''; 37 38 switch ($mode) 39 { 40 case 'personal': 41 add_form_key('ucp_prefs_personal'); 42 $data = array( 43 'notifymethod' => $request->variable('notifymethod', $user->data['user_notify_type']), 44 'dateformat' => $request->variable('dateformat', $user->data['user_dateformat'], true), 45 'lang' => basename($request->variable('lang', $user->data['user_lang'])), 46 'user_style' => $request->variable('user_style', (int) $user->data['user_style']), 47 'tz' => $request->variable('tz', $user->data['user_timezone']), 48 49 'viewemail' => $request->variable('viewemail', (bool) $user->data['user_allow_viewemail']), 50 'massemail' => $request->variable('massemail', (bool) $user->data['user_allow_massemail']), 51 'hideonline' => $request->variable('hideonline', (bool) !$user->data['user_allow_viewonline']), 52 'allowpm' => $request->variable('allowpm', (bool) $user->data['user_allow_pm']), 53 ); 54 55 if ($data['notifymethod'] == NOTIFY_IM && (!$config['jab_enable'] || !$user->data['user_jabber'] || !@extension_loaded('xml'))) 56 { 57 // Jabber isnt enabled, or no jabber field filled in. Update the users table to be sure its correct. 58 $data['notifymethod'] = NOTIFY_BOTH; 59 } 60 61 /** 62 * Add UCP edit global settings data before they are assigned to the template or submitted 63 * 64 * To assign data to the template, use $template->assign_vars() 65 * 66 * @event core.ucp_prefs_personal_data 67 * @var bool submit Do we display the form only 68 * or did the user press submit 69 * @var array data Array with current ucp options data 70 * @var array error Array with list of errors 71 * @since 3.1.0-a1 72 * @changed 3.1.4-RC1 Added error variable to the event 73 */ 74 $vars = array('submit', 'data', 'error'); 75 extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_personal_data', compact($vars))); 76 77 if ($submit) 78 { 79 if ($config['override_user_style']) 80 { 81 $data['user_style'] = (int) $config['default_style']; 82 } 83 else if (!phpbb_style_is_active($data['user_style'])) 84 { 85 $data['user_style'] = (int) $user->data['user_style']; 86 } 87 88 $error = array_merge(validate_data($data, array( 89 'dateformat' => array('string', false, 1, 64), 90 'lang' => array('language_iso_name'), 91 'tz' => array('timezone'), 92 )), $error); 93 94 if (!check_form_key('ucp_prefs_personal')) 95 { 96 $error[] = 'FORM_INVALID'; 97 } 98 99 if (!count($error)) 100 { 101 $sql_ary = array( 102 'user_allow_pm' => $data['allowpm'], 103 'user_allow_viewemail' => $data['viewemail'], 104 'user_allow_massemail' => $data['massemail'], 105 'user_allow_viewonline' => ($auth->acl_get('u_hideonline')) ? !$data['hideonline'] : $user->data['user_allow_viewonline'], 106 'user_notify_type' => $data['notifymethod'], 107 'user_options' => $user->data['user_options'], 108 109 'user_dateformat' => $data['dateformat'], 110 'user_lang' => $data['lang'], 111 'user_timezone' => $data['tz'], 112 'user_style' => $data['user_style'], 113 ); 114 115 /** 116 * Update UCP edit global settings data on form submit 117 * 118 * @event core.ucp_prefs_personal_update_data 119 * @var array data Submitted display options data 120 * @var array sql_ary Display options data we update 121 * @since 3.1.0-a1 122 */ 123 $vars = array('data', 'sql_ary'); 124 extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_personal_update_data', compact($vars))); 125 126 $sql = 'UPDATE ' . USERS_TABLE . ' 127 SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' 128 WHERE user_id = ' . $user->data['user_id']; 129 $db->sql_query($sql); 130 131 meta_refresh(3, $this->u_action); 132 $message = $user->lang['PREFERENCES_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>'); 133 trigger_error($message); 134 } 135 136 // Replace "error" strings with their real, localised form 137 $error = array_map(array($user, 'lang'), $error); 138 } 139 140 $dateformat_options = ''; 141 142 foreach ($user->lang['dateformats'] as $format => $null) 143 { 144 $dateformat_options .= '<option value="' . $format . '"' . (($format == $data['dateformat']) ? ' selected="selected"' : '') . '>'; 145 $dateformat_options .= $user->format_date(time(), $format, false) . ((strpos($format, '|') !== false) ? $user->lang['VARIANT_DATE_SEPARATOR'] . $user->format_date(time(), $format, true) : ''); 146 $dateformat_options .= '</option>'; 147 } 148 149 $s_custom = false; 150 151 $dateformat_options .= '<option value="custom"'; 152 if (!isset($user->lang['dateformats'][$data['dateformat']])) 153 { 154 $dateformat_options .= ' selected="selected"'; 155 $s_custom = true; 156 } 157 $dateformat_options .= '>' . $user->lang['CUSTOM_DATEFORMAT'] . '</option>'; 158 159 phpbb_timezone_select($template, $user, $data['tz'], true); 160 161 // check if there are any user-selectable languages 162 $sql = 'SELECT lang_iso, lang_local_name 163 FROM ' . LANG_TABLE . ' 164 ORDER BY lang_english_name'; 165 $result = $db->sql_query($sql); 166 $lang_row = (array) $db->sql_fetchrowset($result); 167 $db->sql_freeresult($result); 168 $s_more_languages = count($lang_row) > 1; 169 170 // check if there are any user-selectable styles 171 $sql = 'SELECT style_id, style_name 172 FROM ' . STYLES_TABLE . ' 173 WHERE style_active = 1 174 ORDER BY style_name'; 175 $result = $db->sql_query($sql); 176 $styles_row = (array) $db->sql_fetchrowset($result); 177 $db->sql_freeresult($result); 178 $s_more_styles = count($styles_row) > 1; 179 180 $template->assign_vars(array( 181 'ERROR' => (count($error)) ? implode('<br />', $error) : '', 182 183 'S_NOTIFY_EMAIL' => ($data['notifymethod'] == NOTIFY_EMAIL) ? true : false, 184 'S_NOTIFY_IM' => ($data['notifymethod'] == NOTIFY_IM) ? true : false, 185 'S_NOTIFY_BOTH' => ($data['notifymethod'] == NOTIFY_BOTH) ? true : false, 186 'S_VIEW_EMAIL' => $data['viewemail'], 187 'S_MASS_EMAIL' => $data['massemail'], 188 'S_ALLOW_PM' => $data['allowpm'], 189 'S_HIDE_ONLINE' => $data['hideonline'], 190 191 'DATE_FORMAT' => $data['dateformat'], 192 'A_DATE_FORMAT' => addslashes($data['dateformat']), 193 'S_DATEFORMAT_OPTIONS' => $dateformat_options, 194 'S_CUSTOM_DATEFORMAT' => $s_custom, 195 'DEFAULT_DATEFORMAT' => $config['default_dateformat'], 196 'A_DEFAULT_DATEFORMAT' => addslashes($config['default_dateformat']), 197 198 'S_MORE_LANGUAGES' => $s_more_languages, 199 'S_MORE_STYLES' => $s_more_styles, 200 201 'S_LANG_OPTIONS' => language_select($data['lang'], $lang_row), 202 'S_STYLE_OPTIONS' => ($config['override_user_style']) ? '' : style_select($data['user_style'], false, $styles_row), 203 'S_CAN_HIDE_ONLINE' => ($auth->acl_get('u_hideonline')) ? true : false, 204 'S_SELECT_NOTIFY' => ($config['jab_enable'] && $user->data['user_jabber'] && @extension_loaded('xml')) ? true : false) 205 ); 206 207 break; 208 209 case 'view': 210 211 add_form_key('ucp_prefs_view'); 212 213 $data = array( 214 'topic_sk' => $request->variable('topic_sk', (!empty($user->data['user_topic_sortby_type'])) ? $user->data['user_topic_sortby_type'] : 't'), 215 'topic_sd' => $request->variable('topic_sd', (!empty($user->data['user_topic_sortby_dir'])) ? $user->data['user_topic_sortby_dir'] : 'd'), 216 'topic_st' => $request->variable('topic_st', (!empty($user->data['user_topic_show_days'])) ? (int) $user->data['user_topic_show_days'] : 0), 217 218 'post_sk' => $request->variable('post_sk', (!empty($user->data['user_post_sortby_type'])) ? $user->data['user_post_sortby_type'] : 't'), 219 'post_sd' => $request->variable('post_sd', (!empty($user->data['user_post_sortby_dir'])) ? $user->data['user_post_sortby_dir'] : 'a'), 220 'post_st' => $request->variable('post_st', (!empty($user->data['user_post_show_days'])) ? (int) $user->data['user_post_show_days'] : 0), 221 222 'images' => $request->variable('images', (bool) $user->optionget('viewimg')), 223 'flash' => $request->variable('flash', (bool) $user->optionget('viewflash')), 224 'smilies' => $request->variable('smilies', (bool) $user->optionget('viewsmilies')), 225 'sigs' => $request->variable('sigs', (bool) $user->optionget('viewsigs')), 226 'avatars' => $request->variable('avatars', (bool) $user->optionget('viewavatars')), 227 'wordcensor' => $request->variable('wordcensor', (bool) $user->optionget('viewcensors')), 228 ); 229 230 /** 231 * Add UCP edit display options data before they are assigned to the template or submitted 232 * 233 * To assign data to the template, use $template->assign_vars() 234 * 235 * @event core.ucp_prefs_view_data 236 * @var bool submit Do we display the form only 237 * or did the user press submit 238 * @var array data Array with current ucp options data 239 * @since 3.1.0-a1 240 */ 241 $vars = array('submit', 'data'); 242 extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_view_data', compact($vars))); 243 244 if ($submit) 245 { 246 $error = validate_data($data, array( 247 'topic_sk' => array( 248 array('string', false, 1, 1), 249 array('match', false, '#(a|r|s|t|v)#'), 250 ), 251 'topic_sd' => array( 252 array('string', false, 1, 1), 253 array('match', false, '#(a|d)#'), 254 ), 255 'post_sk' => array( 256 array('string', false, 1, 1), 257 array('match', false, '#(a|s|t)#'), 258 ), 259 'post_sd' => array( 260 array('string', false, 1, 1), 261 array('match', false, '#(a|d)#'), 262 ), 263 )); 264 265 if (!check_form_key('ucp_prefs_view')) 266 { 267 $error[] = 'FORM_INVALID'; 268 } 269 270 if (!count($error)) 271 { 272 $user->optionset('viewimg', $data['images']); 273 $user->optionset('viewflash', $data['flash']); 274 $user->optionset('viewsmilies', $data['smilies']); 275 $user->optionset('viewsigs', $data['sigs']); 276 $user->optionset('viewavatars', $data['avatars']); 277 278 if ($auth->acl_get('u_chgcensors')) 279 { 280 $user->optionset('viewcensors', $data['wordcensor']); 281 } 282 283 $sql_ary = array( 284 'user_options' => $user->data['user_options'], 285 'user_topic_sortby_type' => $data['topic_sk'], 286 'user_post_sortby_type' => $data['post_sk'], 287 'user_topic_sortby_dir' => $data['topic_sd'], 288 'user_post_sortby_dir' => $data['post_sd'], 289 290 'user_topic_show_days' => $data['topic_st'], 291 'user_post_show_days' => $data['post_st'], 292 ); 293 294 /** 295 * Update UCP edit display options data on form submit 296 * 297 * @event core.ucp_prefs_view_update_data 298 * @var array data Submitted display options data 299 * @var array sql_ary Display options data we update 300 * @since 3.1.0-a1 301 */ 302 $vars = array('data', 'sql_ary'); 303 extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_view_update_data', compact($vars))); 304 305 $sql = 'UPDATE ' . USERS_TABLE . ' 306 SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' 307 WHERE user_id = ' . $user->data['user_id']; 308 $db->sql_query($sql); 309 310 meta_refresh(3, $this->u_action); 311 $message = $user->lang['PREFERENCES_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>'); 312 trigger_error($message); 313 } 314 315 // Replace "error" strings with their real, localised form 316 $error = array_map(array($user, 'lang'), $error); 317 } 318 319 $sort_dir_text = array('a' => $user->lang['ASCENDING'], 'd' => $user->lang['DESCENDING']); 320 321 // Topic ordering options 322 $limit_topic_days = array(0 => $user->lang['ALL_TOPICS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']); 323 324 $sort_by_topic_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 'r' => $user->lang['REPLIES'], 's' => $user->lang['SUBJECT'], 'v' => $user->lang['VIEWS']); 325 $sort_by_topic_sql = array('a' => 't.topic_first_poster_name', 't' => array('t.topic_last_post_time', 't.topic_last_post_id'), 'r' => 't.topic_posts_approved', 's' => 't.topic_title', 'v' => 't.topic_views'); 326 327 // Post ordering options 328 $limit_post_days = array(0 => $user->lang['ALL_POSTS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']); 329 330 $sort_by_post_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 's' => $user->lang['SUBJECT']); 331 $sort_by_post_sql = array('a' => 'u.username_clean', 't' => 'p.post_id', 's' => 'p.post_subject'); 332 333 $_options = array('topic', 'post'); 334 foreach ($_options as $sort_option) 335 { 336 ${'s_limit_' . $sort_option . '_days'} = '<select name="' . $sort_option . '_st">'; 337 foreach (${'limit_' . $sort_option . '_days'} as $day => $text) 338 { 339 $selected = ($data[$sort_option . '_st'] == $day) ? ' selected="selected"' : ''; 340 ${'s_limit_' . $sort_option . '_days'} .= '<option value="' . $day . '"' . $selected . '>' . $text . '</option>'; 341 } 342 ${'s_limit_' . $sort_option . '_days'} .= '</select>'; 343 344 ${'s_sort_' . $sort_option . '_key'} = '<select name="' . $sort_option . '_sk">'; 345 foreach (${'sort_by_' . $sort_option . '_text'} as $key => $text) 346 { 347 $selected = ($data[$sort_option . '_sk'] == $key) ? ' selected="selected"' : ''; 348 ${'s_sort_' . $sort_option . '_key'} .= '<option value="' . $key . '"' . $selected . '>' . $text . '</option>'; 349 } 350 ${'s_sort_' . $sort_option . '_key'} .= '</select>'; 351 352 ${'s_sort_' . $sort_option . '_dir'} = '<select name="' . $sort_option . '_sd">'; 353 foreach ($sort_dir_text as $key => $value) 354 { 355 $selected = ($data[$sort_option . '_sd'] == $key) ? ' selected="selected"' : ''; 356 ${'s_sort_' . $sort_option . '_dir'} .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>'; 357 } 358 ${'s_sort_' . $sort_option . '_dir'} .= '</select>'; 359 } 360 361 /** 362 * Run code before view form is displayed 363 * 364 * @event core.ucp_prefs_view_after 365 * @var bool submit Do we display the form only 366 * or did the user press submit 367 * @var array data Array with current ucp options data 368 * @var array sort_dir_text Array with sort dir language strings 369 * @var array limit_topic_days Topic ordering options 370 * @var array sort_by_topic_text Topic ordering language strings 371 * @var array sort_by_topic_sql Topic ordering sql 372 * @var array limit_post_days Post ordering options 373 * @var array sort_by_post_text Post ordering language strings 374 * @var array sort_by_post_sql Post ordering sql 375 * @var array _options Sort options 376 * @var string s_limit_topic_days Sort limit topic by days select box 377 * @var string s_sort_topic_key Sort topic key select box 378 * @var string s_sort_topic_dir Sort topic dir select box 379 * @var string s_limit_post_days Sort limit post by days select box 380 * @var string s_sort_post_key Sort post key select box 381 * @var string s_sort_post_dir Sort post dir select box 382 * @since 3.1.8-RC1 383 */ 384 $vars = array( 385 'submit', 386 'data', 387 'sort_dir_text', 388 'limit_topic_days', 389 'sort_by_topic_text', 390 'sort_by_topic_sql', 391 'limit_post_days', 392 'sort_by_post_text', 393 'sort_by_post_sql', 394 '_options', 395 's_limit_topic_days', 396 's_sort_topic_key', 397 's_sort_topic_dir', 398 's_limit_post_days', 399 's_sort_post_key', 400 's_sort_post_dir', 401 ); 402 extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_view_after', compact($vars))); 403 404 $template->assign_vars(array( 405 'ERROR' => (count($error)) ? implode('<br />', $error) : '', 406 407 'S_IMAGES' => $data['images'], 408 'S_FLASH' => $data['flash'], 409 'S_SMILIES' => $data['smilies'], 410 'S_SIGS' => $data['sigs'], 411 'S_AVATARS' => $data['avatars'], 412 'S_DISABLE_CENSORS' => $data['wordcensor'], 413 414 'S_CHANGE_CENSORS' => ($auth->acl_get('u_chgcensors') && $config['allow_nocensors']) ? true : false, 415 416 'S_TOPIC_SORT_DAYS' => $s_limit_topic_days, 417 'S_TOPIC_SORT_KEY' => $s_sort_topic_key, 418 'S_TOPIC_SORT_DIR' => $s_sort_topic_dir, 419 'S_POST_SORT_DAYS' => $s_limit_post_days, 420 'S_POST_SORT_KEY' => $s_sort_post_key, 421 'S_POST_SORT_DIR' => $s_sort_post_dir) 422 ); 423 424 break; 425 426 case 'post': 427 428 $data = array( 429 'bbcode' => $request->variable('bbcode', $user->optionget('bbcode')), 430 'smilies' => $request->variable('smilies', $user->optionget('smilies')), 431 'sig' => $request->variable('sig', $user->optionget('attachsig')), 432 'notify' => $request->variable('notify', (bool) $user->data['user_notify']), 433 ); 434 add_form_key('ucp_prefs_post'); 435 436 /** 437 * Add UCP edit posting defaults data before they are assigned to the template or submitted 438 * 439 * To assign data to the template, use $template->assign_vars() 440 * 441 * @event core.ucp_prefs_post_data 442 * @var bool submit Do we display the form only 443 * or did the user press submit 444 * @var array data Array with current ucp options data 445 * @since 3.1.0-a1 446 */ 447 $vars = array('submit', 'data'); 448 extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_post_data', compact($vars))); 449 450 if ($submit) 451 { 452 if (check_form_key('ucp_prefs_post')) 453 { 454 $user->optionset('bbcode', $data['bbcode']); 455 $user->optionset('smilies', $data['smilies']); 456 $user->optionset('attachsig', $data['sig']); 457 458 $sql_ary = array( 459 'user_options' => $user->data['user_options'], 460 'user_notify' => $data['notify'], 461 ); 462 463 /** 464 * Update UCP edit posting defaults data on form submit 465 * 466 * @event core.ucp_prefs_post_update_data 467 * @var array data Submitted display options data 468 * @var array sql_ary Display options data we update 469 * @since 3.1.0-a1 470 */ 471 $vars = array('data', 'sql_ary'); 472 extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_post_update_data', compact($vars))); 473 474 $sql = 'UPDATE ' . USERS_TABLE . ' 475 SET ' . $db->sql_build_array('UPDATE', $sql_ary) . ' 476 WHERE user_id = ' . $user->data['user_id']; 477 $db->sql_query($sql); 478 479 $msg = $user->lang['PREFERENCES_UPDATED']; 480 } 481 else 482 { 483 $msg = $user->lang['FORM_INVALID']; 484 } 485 meta_refresh(3, $this->u_action); 486 $message = $msg . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>'); 487 trigger_error($message); 488 } 489 490 $template->assign_vars(array( 491 'S_SIG_ALLOWED' => $config['allow_sig'] && $auth->acl_get('u_sig'), 492 493 'S_BBCODE' => $data['bbcode'], 494 'S_SMILIES' => $data['smilies'], 495 'S_SIG' => $data['sig'], 496 'S_NOTIFY' => $data['notify']) 497 ); 498 break; 499 } 500 501 /** 502 * Modify UCP preferences data before the page load 503 * 504 * @event core.ucp_prefs_modify_common 505 * @var array data Array with current/submitted UCP options data 506 * @var array error Errors data 507 * @var string mode UCP prefs operation mode 508 * @var string s_hidden_fields Hidden fields data 509 * @since 3.1.0-RC3 510 */ 511 $vars = array( 512 'data', 513 'error', 514 'mode', 515 's_hidden_fields', 516 ); 517 extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_modify_common', compact($vars))); 518 519 $template->assign_vars(array( 520 'L_TITLE' => $user->lang['UCP_PREFS_' . strtoupper($mode)], 521 522 'S_HIDDEN_FIELDS' => $s_hidden_fields, 523 'S_UCP_ACTION' => $this->u_action) 524 ); 525 526 $this->tpl_name = 'ucp_prefs_' . $mode; 527 $this->page_title = 'UCP_PREFS_' . strtoupper($mode); 528 } 529 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Mon Nov 25 19:05:08 2024 | Cross-referenced by PHPXref 0.7.1 |