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