Verzeichnisstruktur phpBB-3.1.0


Veröffentlicht
27.10.2014

So funktioniert es


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

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

      (Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

ucp_prefs.php

Zuletzt modifiziert: 09.10.2024, 12:52 - Dateigröße: 17.92 KiB


 001  <?php
 002  /**
 003  *
 004  * This file is part of the phpBB Forum Software package.
 005  *
 006  * @copyright (c) phpBB Limited <https://www.phpbb.com>
 007  * @license GNU General Public License, version 2 (GPL-2.0)
 008  *
 009  * For full copyright and license information, please see
 010  * the docs/CREDITS.txt file.
 011  *
 012  */
 013   
 014  /**
 015  * @ignore
 016  */
 017  if (!defined('IN_PHPBB'))
 018  {
 019      exit;
 020  }
 021   
 022  /**
 023  * ucp_prefs
 024  * Changing user preferences
 025  */
 026  class ucp_prefs
 027  {
 028      var $u_action;
 029   
 030      function main($id, $mode)
 031      {
 032          global $config, $db, $user, $auth, $template, $phpbb_dispatcher, $phpbb_root_path, $phpEx;
 033   
 034          $submit = (isset($_POST['submit'])) ? true : false;
 035          $error = $data = array();
 036          $s_hidden_fields = '';
 037   
 038          switch ($mode)
 039          {
 040              case 'personal':
 041                  add_form_key('ucp_prefs_personal');
 042                  $data = array(
 043                      'notifymethod'    => request_var('notifymethod', $user->data['user_notify_type']),
 044                      'dateformat'    => request_var('dateformat', $user->data['user_dateformat'], true),
 045                      'lang'            => basename(request_var('lang', $user->data['user_lang'])),
 046                      'user_style'        => request_var('user_style', (int) $user->data['user_style']),
 047                      'tz'            => request_var('tz', $user->data['user_timezone']),
 048   
 049                      'viewemail'        => request_var('viewemail', (bool) $user->data['user_allow_viewemail']),
 050                      'massemail'        => request_var('massemail', (bool) $user->data['user_allow_massemail']),
 051                      'hideonline'    => request_var('hideonline', (bool) !$user->data['user_allow_viewonline']),
 052                      'allowpm'        => request_var('allowpm', (bool) $user->data['user_allow_pm']),
 053                  );
 054   
 055                  if ($data['notifymethod'] == NOTIFY_IM && (!$config['jab_enable'] || !$user->data['user_jabber'] || !@extension_loaded('xml')))
 056                  {
 057                      // Jabber isnt enabled, or no jabber field filled in. Update the users table to be sure its correct.
 058                      $data['notifymethod'] = NOTIFY_BOTH;
 059                  }
 060   
 061                  /**
 062                  * Add UCP edit global settings data before they are assigned to the template or submitted
 063                  *
 064                  * To assign data to the template, use $template->assign_vars()
 065                  *
 066                  * @event core.ucp_prefs_personal_data
 067                  * @var    bool    submit        Do we display the form only
 068                  *                            or did the user press submit
 069                  * @var    array    data        Array with current ucp options data
 070                  * @since 3.1.0-a1
 071                  */
 072                  $vars = array('submit', 'data');
 073                  extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_personal_data', compact($vars)));
 074   
 075                  if ($submit)
 076                  {
 077                      if ($config['override_user_style'])
 078                      {
 079                          $data['user_style'] = (int) $config['default_style'];
 080                      }
 081                      else if (!phpbb_style_is_active($data['user_style']))
 082                      {
 083                          $data['user_style'] = (int) $user->data['user_style'];
 084                      }
 085   
 086                      $error = validate_data($data, array(
 087                          'dateformat'    => array('string', false, 1, 30),
 088                          'lang'            => array('language_iso_name'),
 089                          'tz'            => array('timezone'),
 090                      ));
 091   
 092                      if (!check_form_key('ucp_prefs_personal'))
 093                      {
 094                          $error[] = 'FORM_INVALID';
 095                      }
 096   
 097                      if (!sizeof($error))
 098                      {
 099                          $sql_ary = array(
 100                              'user_allow_pm'            => $data['allowpm'],
 101                              'user_allow_viewemail'    => $data['viewemail'],
 102                              'user_allow_massemail'    => $data['massemail'],
 103                              'user_allow_viewonline'    => ($auth->acl_get('u_hideonline')) ? !$data['hideonline'] : $user->data['user_allow_viewonline'],
 104                              'user_notify_type'        => $data['notifymethod'],
 105                              'user_options'            => $user->data['user_options'],
 106   
 107                              'user_dateformat'        => $data['dateformat'],
 108                              'user_lang'                => $data['lang'],
 109                              'user_timezone'            => $data['tz'],
 110                              'user_style'            => $data['user_style'],
 111                          );
 112   
 113                          /**
 114                          * Update UCP edit global settings data on form submit
 115                          *
 116                          * @event core.ucp_prefs_personal_update_data
 117                          * @var    array    data        Submitted display options data
 118                          * @var    array    sql_ary        Display options data we update
 119                          * @since 3.1.0-a1
 120                          */
 121                          $vars = array('data', 'sql_ary');
 122                          extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_personal_update_data', compact($vars)));
 123   
 124                          $sql = 'UPDATE ' . USERS_TABLE . '
 125                              SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
 126                              WHERE user_id = ' . $user->data['user_id'];
 127                          $db->sql_query($sql);
 128   
 129                          meta_refresh(3, $this->u_action);
 130                          $message = $user->lang['PREFERENCES_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
 131                          trigger_error($message);
 132                      }
 133   
 134                      // Replace "error" strings with their real, localised form
 135                      $error = array_map(array($user, 'lang'), $error);
 136                  }
 137   
 138                  $dateformat_options = '';
 139   
 140                  foreach ($user->lang['dateformats'] as $format => $null)
 141                  {
 142                      $dateformat_options .= '<option value="' . $format . '"' . (($format == $data['dateformat']) ? ' selected="selected"' : '') . '>';
 143                      $dateformat_options .= $user->format_date(time(), $format, false) . ((strpos($format, '|') !== false) ? $user->lang['VARIANT_DATE_SEPARATOR'] . $user->format_date(time(), $format, true) : '');
 144                      $dateformat_options .= '</option>';
 145                  }
 146   
 147                  $s_custom = false;
 148   
 149                  $dateformat_options .= '<option value="custom"';
 150                  if (!isset($user->lang['dateformats'][$data['dateformat']]))
 151                  {
 152                      $dateformat_options .= ' selected="selected"';
 153                      $s_custom = true;
 154                  }
 155                  $dateformat_options .= '>' . $user->lang['CUSTOM_DATEFORMAT'] . '</option>';
 156   
 157                  phpbb_timezone_select($template, $user, $data['tz'], true);
 158   
 159                  // check if there are any user-selectable languages
 160                  $sql = 'SELECT COUNT(lang_id) as languages_count
 161                                  FROM ' . LANG_TABLE;
 162                  $result = $db->sql_query($sql);
 163                  if ($db->sql_fetchfield('languages_count') > 1)
 164                  {
 165                      $s_more_languages = true;
 166                  }
 167                  else
 168                  {
 169                      $s_more_languages = false;
 170                  }
 171                  $db->sql_freeresult($result);
 172   
 173                  // check if there are any user-selectable styles
 174                  $sql = 'SELECT COUNT(style_id) as styles_count
 175                                  FROM ' . STYLES_TABLE . '
 176                                  WHERE style_active = 1';
 177                  $result = $db->sql_query($sql);
 178                  if ($db->sql_fetchfield('styles_count') > 1)
 179                  {
 180                      $s_more_styles = true;
 181                  }
 182                  else
 183                  {
 184                      $s_more_styles = false;
 185                  }
 186                  $db->sql_freeresult($result);
 187   
 188                  $template->assign_vars(array(
 189                      'ERROR'                => (sizeof($error)) ? implode('<br />', $error) : '',
 190   
 191                      'S_NOTIFY_EMAIL'    => ($data['notifymethod'] == NOTIFY_EMAIL) ? true : false,
 192                      'S_NOTIFY_IM'        => ($data['notifymethod'] == NOTIFY_IM) ? true : false,
 193                      'S_NOTIFY_BOTH'        => ($data['notifymethod'] == NOTIFY_BOTH) ? true : false,
 194                      'S_VIEW_EMAIL'        => $data['viewemail'],
 195                      'S_MASS_EMAIL'        => $data['massemail'],
 196                      'S_ALLOW_PM'        => $data['allowpm'],
 197                      'S_HIDE_ONLINE'        => $data['hideonline'],
 198   
 199                      'DATE_FORMAT'            => $data['dateformat'],
 200                      'A_DATE_FORMAT'            => addslashes($data['dateformat']),
 201                      'S_DATEFORMAT_OPTIONS'    => $dateformat_options,
 202                      'S_CUSTOM_DATEFORMAT'    => $s_custom,
 203                      'DEFAULT_DATEFORMAT'    => $config['default_dateformat'],
 204                      'A_DEFAULT_DATEFORMAT'    => addslashes($config['default_dateformat']),
 205   
 206                      'S_MORE_LANGUAGES'    => $s_more_languages,
 207                      'S_MORE_STYLES'            => $s_more_styles,
 208   
 209                      'S_LANG_OPTIONS'        => language_select($data['lang']),
 210                      'S_STYLE_OPTIONS'        => ($config['override_user_style']) ? '' : style_select($data['user_style']),
 211                      'S_CAN_HIDE_ONLINE'        => ($auth->acl_get('u_hideonline')) ? true : false,
 212                      'S_SELECT_NOTIFY'        => ($config['jab_enable'] && $user->data['user_jabber'] && @extension_loaded('xml')) ? true : false)
 213                  );
 214   
 215              break;
 216   
 217              case 'view':
 218   
 219                  add_form_key('ucp_prefs_view');
 220   
 221                  $data = array(
 222                      'topic_sk'        => request_var('topic_sk', (!empty($user->data['user_topic_sortby_type'])) ? $user->data['user_topic_sortby_type'] : 't'),
 223                      'topic_sd'        => request_var('topic_sd', (!empty($user->data['user_topic_sortby_dir'])) ? $user->data['user_topic_sortby_dir'] : 'd'),
 224                      'topic_st'        => request_var('topic_st', (!empty($user->data['user_topic_show_days'])) ? (int) $user->data['user_topic_show_days'] : 0),
 225   
 226                      'post_sk'        => request_var('post_sk', (!empty($user->data['user_post_sortby_type'])) ? $user->data['user_post_sortby_type'] : 't'),
 227                      'post_sd'        => request_var('post_sd', (!empty($user->data['user_post_sortby_dir'])) ? $user->data['user_post_sortby_dir'] : 'a'),
 228                      'post_st'        => request_var('post_st', (!empty($user->data['user_post_show_days'])) ? (int) $user->data['user_post_show_days'] : 0),
 229   
 230                      'images'        => request_var('images', (bool) $user->optionget('viewimg')),
 231                      'flash'            => request_var('flash', (bool) $user->optionget('viewflash')),
 232                      'smilies'        => request_var('smilies', (bool) $user->optionget('viewsmilies')),
 233                      'sigs'            => request_var('sigs', (bool) $user->optionget('viewsigs')),
 234                      'avatars'        => request_var('avatars', (bool) $user->optionget('viewavatars')),
 235                      'wordcensor'    => request_var('wordcensor', (bool) $user->optionget('viewcensors')),
 236                  );
 237   
 238                  /**
 239                  * Add UCP edit display options data before they are assigned to the template or submitted
 240                  *
 241                  * To assign data to the template, use $template->assign_vars()
 242                  *
 243                  * @event core.ucp_prefs_view_data
 244                  * @var    bool    submit        Do we display the form only
 245                  *                            or did the user press submit
 246                  * @var    array    data        Array with current ucp options data
 247                  * @since 3.1.0-a1
 248                  */
 249                  $vars = array('submit', 'data');
 250                  extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_view_data', compact($vars)));
 251   
 252                  if ($submit)
 253                  {
 254                      $error = validate_data($data, array(
 255                          'topic_sk'    => array(
 256                              array('string', false, 1, 1),
 257                              array('match', false, '#(a|r|s|t|v)#'),
 258                          ),
 259                          'topic_sd'    => array(
 260                              array('string', false, 1, 1),
 261                              array('match', false, '#(a|d)#'),
 262                          ),
 263                          'post_sk'    => array(
 264                              array('string', false, 1, 1),
 265                              array('match', false, '#(a|s|t)#'),
 266                          ),
 267                          'post_sd'    => array(
 268                              array('string', false, 1, 1),
 269                              array('match', false, '#(a|d)#'),
 270                          ),
 271                      ));
 272   
 273                      if (!check_form_key('ucp_prefs_view'))
 274                      {
 275                          $error[] = 'FORM_INVALID';
 276                      }
 277   
 278                      if (!sizeof($error))
 279                      {
 280                          $user->optionset('viewimg', $data['images']);
 281                          $user->optionset('viewflash', $data['flash']);
 282                          $user->optionset('viewsmilies', $data['smilies']);
 283                          $user->optionset('viewsigs', $data['sigs']);
 284                          $user->optionset('viewavatars', $data['avatars']);
 285   
 286                          if ($auth->acl_get('u_chgcensors'))
 287                          {
 288                              $user->optionset('viewcensors', $data['wordcensor']);
 289                          }
 290   
 291                          $sql_ary = array(
 292                              'user_options'                => $user->data['user_options'],
 293                              'user_topic_sortby_type'    => $data['topic_sk'],
 294                              'user_post_sortby_type'        => $data['post_sk'],
 295                              'user_topic_sortby_dir'        => $data['topic_sd'],
 296                              'user_post_sortby_dir'        => $data['post_sd'],
 297   
 298                              'user_topic_show_days'    => $data['topic_st'],
 299                              'user_post_show_days'    => $data['post_st'],
 300                          );
 301   
 302                          /**
 303                          * Update UCP edit display options data on form submit
 304                          *
 305                          * @event core.ucp_prefs_view_update_data
 306                          * @var    array    data        Submitted display options data
 307                          * @var    array    sql_ary        Display options data we update
 308                          * @since 3.1.0-a1
 309                          */
 310                          $vars = array('data', 'sql_ary');
 311                          extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_view_update_data', compact($vars)));
 312   
 313                          $sql = 'UPDATE ' . USERS_TABLE . '
 314                              SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
 315                              WHERE user_id = ' . $user->data['user_id'];
 316                          $db->sql_query($sql);
 317   
 318                          meta_refresh(3, $this->u_action);
 319                          $message = $user->lang['PREFERENCES_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
 320                          trigger_error($message);
 321                      }
 322   
 323                      // Replace "error" strings with their real, localised form
 324                      $error = array_map(array($user, 'lang'), $error);
 325                  }
 326   
 327                  $sort_dir_text = array('a' => $user->lang['ASCENDING'], 'd' => $user->lang['DESCENDING']);
 328   
 329                  // Topic ordering options
 330                  $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']);
 331   
 332                  $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']);
 333                  $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');
 334   
 335                  // Post ordering options
 336                  $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']);
 337   
 338                  $sort_by_post_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 's' => $user->lang['SUBJECT']);
 339                  $sort_by_post_sql = array('a' => 'u.username_clean', 't' => 'p.post_id', 's' => 'p.post_subject');
 340   
 341                  $_options = array('topic', 'post');
 342                  foreach ($_options as $sort_option)
 343                  {
 344                      ${'s_limit_' . $sort_option . '_days'} = '<select name="' . $sort_option . '_st">';
 345                      foreach (${'limit_' . $sort_option . '_days'} as $day => $text)
 346                      {
 347                          $selected = ($data[$sort_option . '_st'] == $day) ? ' selected="selected"' : '';
 348                          ${'s_limit_' . $sort_option . '_days'} .= '<option value="' . $day . '"' . $selected . '>' . $text . '</option>';
 349                      }
 350                      ${'s_limit_' . $sort_option . '_days'} .= '</select>';
 351   
 352                      ${'s_sort_' . $sort_option . '_key'} = '<select name="' . $sort_option . '_sk">';
 353                      foreach (${'sort_by_' . $sort_option . '_text'} as $key => $text)
 354                      {
 355                          $selected = ($data[$sort_option . '_sk'] == $key) ? ' selected="selected"' : '';
 356                          ${'s_sort_' . $sort_option . '_key'} .= '<option value="' . $key . '"' . $selected . '>' . $text . '</option>';
 357                      }
 358                      ${'s_sort_' . $sort_option . '_key'} .= '</select>';
 359   
 360                      ${'s_sort_' . $sort_option . '_dir'} = '<select name="' . $sort_option . '_sd">';
 361                      foreach ($sort_dir_text as $key => $value)
 362                      {
 363                          $selected = ($data[$sort_option . '_sd'] == $key) ? ' selected="selected"' : '';
 364                          ${'s_sort_' . $sort_option . '_dir'} .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>';
 365                      }
 366                      ${'s_sort_' . $sort_option . '_dir'} .= '</select>';
 367                  }
 368   
 369                  $template->assign_vars(array(
 370                      'ERROR'                => (sizeof($error)) ? implode('<br />', $error) : '',
 371   
 372                      'S_IMAGES'            => $data['images'],
 373                      'S_FLASH'            => $data['flash'],
 374                      'S_SMILIES'            => $data['smilies'],
 375                      'S_SIGS'            => $data['sigs'],
 376                      'S_AVATARS'            => $data['avatars'],
 377                      'S_DISABLE_CENSORS'    => $data['wordcensor'],
 378   
 379                      'S_CHANGE_CENSORS'        => ($auth->acl_get('u_chgcensors') && $config['allow_nocensors']) ? true : false,
 380   
 381                      'S_TOPIC_SORT_DAYS'        => $s_limit_topic_days,
 382                      'S_TOPIC_SORT_KEY'        => $s_sort_topic_key,
 383                      'S_TOPIC_SORT_DIR'        => $s_sort_topic_dir,
 384                      'S_POST_SORT_DAYS'        => $s_limit_post_days,
 385                      'S_POST_SORT_KEY'        => $s_sort_post_key,
 386                      'S_POST_SORT_DIR'        => $s_sort_post_dir)
 387                  );
 388   
 389              break;
 390   
 391              case 'post':
 392   
 393                  $data = array(
 394                      'bbcode'    => request_var('bbcode', $user->optionget('bbcode')),
 395                      'smilies'    => request_var('smilies', $user->optionget('smilies')),
 396                      'sig'        => request_var('sig', $user->optionget('attachsig')),
 397                      'notify'    => request_var('notify', (bool) $user->data['user_notify']),
 398                  );
 399                  add_form_key('ucp_prefs_post');
 400   
 401                  /**
 402                  * Add UCP edit posting defaults data before they are assigned to the template or submitted
 403                  *
 404                  * To assign data to the template, use $template->assign_vars()
 405                  *
 406                  * @event core.ucp_prefs_post_data
 407                  * @var    bool    submit        Do we display the form only
 408                  *                            or did the user press submit
 409                  * @var    array    data        Array with current ucp options data
 410                  * @since 3.1.0-a1
 411                  */
 412                  $vars = array('submit', 'data');
 413                  extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_post_data', compact($vars)));
 414   
 415                  if ($submit)
 416                  {
 417                      if (check_form_key('ucp_prefs_post'))
 418                      {
 419                          $user->optionset('bbcode', $data['bbcode']);
 420                          $user->optionset('smilies', $data['smilies']);
 421                          $user->optionset('attachsig', $data['sig']);
 422   
 423                          $sql_ary = array(
 424                              'user_options'    => $user->data['user_options'],
 425                              'user_notify'    => $data['notify'],
 426                          );
 427   
 428                          /**
 429                          * Update UCP edit posting defaults data on form submit
 430                          *
 431                          * @event core.ucp_prefs_post_update_data
 432                          * @var    array    data        Submitted display options data
 433                          * @var    array    sql_ary        Display options data we update
 434                          * @since 3.1.0-a1
 435                          */
 436                          $vars = array('data', 'sql_ary');
 437                          extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_post_update_data', compact($vars)));
 438   
 439                          $sql = 'UPDATE ' . USERS_TABLE . '
 440                              SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
 441                              WHERE user_id = ' . $user->data['user_id'];
 442                          $db->sql_query($sql);
 443   
 444                          $msg = $user->lang['PREFERENCES_UPDATED'];
 445                      }
 446                      else
 447                      {
 448                          $msg = $user->lang['FORM_INVALID'];
 449                      }
 450                      meta_refresh(3, $this->u_action);
 451                      $message = $msg . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
 452                      trigger_error($message);
 453                  }
 454   
 455                  $template->assign_vars(array(
 456                      'S_BBCODE'    => $data['bbcode'],
 457                      'S_SMILIES'    => $data['smilies'],
 458                      'S_SIG'        => $data['sig'],
 459                      'S_NOTIFY'    => $data['notify'])
 460                  );
 461              break;
 462          }
 463   
 464          /**
 465          * Modify UCP preferences data before the page load
 466          *
 467          * @event core.ucp_prefs_modify_common
 468          * @var    array    data        Array with current/submitted UCP options data
 469          * @var    array    error        Errors data
 470          * @var    string    mode        UCP prefs operation mode
 471          * @var    string    s_hidden_fields        Hidden fields data
 472          * @since 3.1.0-RC3
 473          */
 474          $vars = array(
 475              'data',
 476              'error',
 477              'mode',
 478              's_hidden_fields',
 479          );
 480          extract($phpbb_dispatcher->trigger_event('core.ucp_prefs_modify_common', compact($vars)));
 481   
 482          $template->assign_vars(array(
 483              'L_TITLE'            => $user->lang['UCP_PREFS_' . strtoupper($mode)],
 484   
 485              'S_HIDDEN_FIELDS'    => $s_hidden_fields,
 486              'S_UCP_ACTION'        => $this->u_action)
 487          );
 488   
 489          $this->tpl_name = 'ucp_prefs_' . $mode;
 490          $this->page_title = 'UCP_PREFS_' . strtoupper($mode);
 491      }
 492  }
 493