Verzeichnisstruktur phpBB-3.0.0


Veröffentlicht
12.12.2007

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:51 - Dateigröße: 13.56 KiB


001  <?php
002  /**
003  *
004  * @package ucp
005  * @version $Id$
006  * @copyright (c) 2005 phpBB Group
007  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
008  *
009  */
010   
011  /**
012  * @ignore
013  */
014  if (!defined('IN_PHPBB'))
015  {
016      exit;
017  }
018   
019  /**
020  * ucp_prefs
021  * Changing user preferences
022  * @package ucp
023  */
024  class ucp_prefs
025  {
026      var $u_action;
027   
028      function main($id, $mode)
029      {
030          global $config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx;
031   
032          $submit = (isset($_POST['submit'])) ? true : false;
033          $error = $data = array();
034          $s_hidden_fields = '';
035   
036          switch ($mode)
037          {
038              case 'personal':
039                  add_form_key('ucp_prefs_personal');
040                  $data = array(
041                      'notifymethod'    => request_var('notifymethod', $user->data['user_notify_type']),
042                      'dateformat'    => request_var('dateformat', $user->data['user_dateformat'], true),
043                      'lang'            => basename(request_var('lang', $user->data['user_lang'])),
044                      'style'            => request_var('style', (int) $user->data['user_style']),
045                      'tz'            => request_var('tz', (float) $user->data['user_timezone']),
046   
047                      'dst'            => request_var('dst', (bool) $user->data['user_dst']),
048                      'viewemail'        => request_var('viewemail', (bool) $user->data['user_allow_viewemail']),
049                      'massemail'        => request_var('massemail', (bool) $user->data['user_allow_massemail']),
050                      'hideonline'    => request_var('hideonline', (bool) !$user->data['user_allow_viewonline']),
051                      'notifypm'        => request_var('notifypm', (bool) $user->data['user_notify_pm']),
052                      'popuppm'        => request_var('popuppm', (bool) $user->optionget('popuppm')),
053                      'allowpm'        => request_var('allowpm', (bool) $user->data['user_allow_pm']),
054                  );
055   
056                  if ($submit)
057                  {
058                      $data['style'] = ($config['override_user_style']) ? $config['default_style'] : $data['style'];
059   
060                      $error = validate_data($data, array(
061                          'dateformat'    => array('string', false, 1, 30),
062                          'lang'            => array('match', false, '#^[a-z0-9_\-]{2,}$#i'),
063                          'tz'            => array('num', false, -14, 14),
064                      ));
065   
066                      if (!check_form_key('ucp_prefs_personal'))
067                      {
068                          $error[] = 'FORM_INVALID';
069                      }
070   
071                      if (!sizeof($error))
072                      {
073                          $user->optionset('popuppm', $data['popuppm']);
074   
075                          $sql_ary = array(
076                              'user_allow_pm'            => $data['allowpm'],
077                              'user_allow_viewemail'    => $data['viewemail'],
078                              'user_allow_massemail'    => $data['massemail'],
079                              'user_allow_viewonline'    => ($auth->acl_get('u_hideonline')) ? !$data['hideonline'] : $user->data['user_allow_viewonline'],
080                              'user_notify_type'        => $data['notifymethod'],
081                              'user_notify_pm'        => $data['notifypm'],
082                              'user_options'            => $user->data['user_options'],
083   
084                              'user_dst'                => $data['dst'],
085                              'user_dateformat'        => $data['dateformat'],
086                              'user_lang'                => $data['lang'],
087                              'user_timezone'            => $data['tz'],
088                              'user_style'            => $data['style'],
089                          );
090   
091                          $sql = 'UPDATE ' . USERS_TABLE . '
092                              SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
093                              WHERE user_id = ' . $user->data['user_id'];
094                          $db->sql_query($sql);
095   
096                          meta_refresh(3, $this->u_action);
097                          $message = $user->lang['PREFERENCES_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
098                          trigger_error($message);
099                      }
100   
101                      // Replace "error" strings with their real, localised form
102                      $error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
103                  }
104   
105                  $dateformat_options = '';
106   
107                  foreach ($user->lang['dateformats'] as $format => $null)
108                  {
109                      $dateformat_options .= '<option value="' . $format . '"' . (($format == $data['dateformat']) ? ' selected="selected"' : '') . '>';
110                      $dateformat_options .= $user->format_date(time(), $format, false) . ((strpos($format, '|') !== false) ? $user->lang['VARIANT_DATE_SEPARATOR'] . $user->format_date(time(), $format, true) : '');
111                      $dateformat_options .= '</option>';
112                  }
113   
114                  $s_custom = false;
115   
116                  $dateformat_options .= '<option value="custom"';
117                  if (!in_array($data['dateformat'], array_keys($user->lang['dateformats'])))
118                  {
119                      $dateformat_options .= ' selected="selected"';
120                      $s_custom = true;
121                  }
122                  $dateformat_options .= '>' . $user->lang['CUSTOM_DATEFORMAT'] . '</option>';
123   
124                  $template->assign_vars(array(
125                      'ERROR'                => (sizeof($error)) ? implode('<br />', $error) : '',
126   
127                      'S_NOTIFY_EMAIL'    => ($data['notifymethod'] == NOTIFY_EMAIL) ? true : false,
128                      'S_NOTIFY_IM'        => ($data['notifymethod'] == NOTIFY_IM) ? true : false,
129                      'S_NOTIFY_BOTH'        => ($data['notifymethod'] == NOTIFY_BOTH) ? true : false,
130                      'S_VIEW_EMAIL'        => $data['viewemail'],
131                      'S_MASS_EMAIL'        => $data['massemail'],
132                      'S_ALLOW_PM'        => $data['allowpm'],
133                      'S_HIDE_ONLINE'        => $data['hideonline'],
134                      'S_NOTIFY_PM'        => $data['notifypm'],
135                      'S_POPUP_PM'        => $data['popuppm'],
136                      'S_DST'                => $data['dst'],
137   
138                      'DATE_FORMAT'            => $data['dateformat'],
139                      'A_DATE_FORMAT'            => addslashes($data['dateformat']),
140                      'S_DATEFORMAT_OPTIONS'    => $dateformat_options,
141                      'S_CUSTOM_DATEFORMAT'    => $s_custom,
142                      'DEFAULT_DATEFORMAT'    => $config['default_dateformat'],
143                      'A_DEFAULT_DATEFORMAT'    => addslashes($config['default_dateformat']),
144   
145                      'S_LANG_OPTIONS'        => language_select($data['lang']),
146                      'S_STYLE_OPTIONS'        => ($config['override_user_style']) ? '' : style_select($data['style']),
147                      'S_TZ_OPTIONS'            => tz_select($data['tz'], true),
148                      'S_CAN_HIDE_ONLINE'        => ($auth->acl_get('u_hideonline')) ? true : false,
149                      'S_SELECT_NOTIFY'        => ($config['jab_enable'] && $user->data['user_jabber'] && @extension_loaded('xml')) ? true : false)
150                  );
151   
152              break;
153   
154              case 'view':
155   
156                  add_form_key('ucp_prefs_view');
157   
158                  $data = array(
159                      'topic_sk'        => request_var('topic_sk', (!empty($user->data['user_topic_sortby_type'])) ? $user->data['user_topic_sortby_type'] : 't'),
160                      'topic_sd'        => request_var('topic_sd', (!empty($user->data['user_topic_sortby_dir'])) ? $user->data['user_topic_sortby_dir'] : 'd'),
161                      'topic_st'        => request_var('topic_st', (!empty($user->data['user_topic_show_days'])) ? $user->data['user_topic_show_days'] : 0),
162   
163                      'post_sk'        => request_var('post_sk', (!empty($user->data['user_post_sortby_type'])) ? $user->data['user_post_sortby_type'] : 't'),
164                      'post_sd'        => request_var('post_sd', (!empty($user->data['user_post_sortby_dir'])) ? $user->data['user_post_sortby_dir'] : 'a'),
165                      'post_st'        => request_var('post_st', (!empty($user->data['user_post_show_days'])) ? $user->data['user_post_show_days'] : 0),
166   
167                      'images'        => request_var('images', (bool) $user->optionget('viewimg')),
168                      'flash'            => request_var('flash', (bool) $user->optionget('viewflash')),
169                      'smilies'        => request_var('smilies', (bool) $user->optionget('viewsmilies')),
170                      'sigs'            => request_var('sigs', (bool) $user->optionget('viewsigs')),
171                      'avatars'        => request_var('avatars', (bool) $user->optionget('viewavatars')),
172                      'wordcensor'    => request_var('wordcensor', (bool) $user->optionget('viewcensors')),
173                  );
174   
175                  if ($submit)
176                  {
177                      $error = validate_data($data, array(
178                          'topic_sk'    => array('string', false, 1, 1),
179                          'topic_sd'    => array('string', false, 1, 1),
180                          'post_sk'    => array('string', false, 1, 1),
181                          'post_sd'    => array('string', false, 1, 1),
182                      ));
183   
184                      if (!check_form_key('ucp_prefs_view'))
185                      {
186                          $error[] = 'FORM_INVALID';
187                      }
188   
189                      if (!sizeof($error))
190                      {
191                          $user->optionset('viewimg', $data['images']);
192                          $user->optionset('viewflash', $data['flash']);
193                          $user->optionset('viewsmilies', $data['smilies']);
194                          $user->optionset('viewsigs', $data['sigs']);
195                          $user->optionset('viewavatars', $data['avatars']);
196   
197                          if ($auth->acl_get('u_chgcensors'))
198                          {
199                              $user->optionset('viewcensors', $data['wordcensor']);
200                          }
201   
202                          $sql_ary = array(
203                              'user_options'                => $user->data['user_options'],
204                              'user_topic_sortby_type'    => $data['topic_sk'],
205                              'user_post_sortby_type'        => $data['post_sk'],
206                              'user_topic_sortby_dir'        => $data['topic_sd'],
207                              'user_post_sortby_dir'        => $data['post_sd'],
208   
209                              'user_topic_show_days'    => $data['topic_st'],
210                              'user_post_show_days'    => $data['post_st'],
211                          );
212   
213                          $sql = 'UPDATE ' . USERS_TABLE . '
214                              SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
215                              WHERE user_id = ' . $user->data['user_id'];
216                          $db->sql_query($sql);
217   
218                          meta_refresh(3, $this->u_action);
219                          $message = $user->lang['PREFERENCES_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
220                          trigger_error($message);
221                      }
222   
223                      // Replace "error" strings with their real, localised form
224                      $error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
225                  }
226   
227                  $sort_dir_text = array('a' => $user->lang['ASCENDING'], 'd' => $user->lang['DESCENDING']);
228   
229                  // Topic ordering options
230                  $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']);
231   
232                  $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']);
233                  $sort_by_topic_sql = array('a' => 't.topic_first_poster_name', 't' => 't.topic_last_post_time', 'r' => 't.topic_replies', 's' => 't.topic_title', 'v' => 't.topic_views');
234   
235                  // Post ordering options
236                  $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']);
237   
238                  $sort_by_post_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 's' => $user->lang['SUBJECT']);
239                  $sort_by_post_sql = array('a' => 'u.username_clean', 't' => 'p.post_id', 's' => 'p.post_subject');
240   
241                  $_options = array('topic', 'post');
242                  foreach ($_options as $sort_option)
243                  {
244                      ${'s_limit_' . $sort_option . '_days'} = '<select name="' . $sort_option . '_st">';
245                      foreach (${'limit_' . $sort_option . '_days'} as $day => $text)
246                      {
247                          $selected = ($data[$sort_option . '_st'] == $day) ? ' selected="selected"' : '';
248                          ${'s_limit_' . $sort_option . '_days'} .= '<option value="' . $day . '"' . $selected . '>' . $text . '</option>';
249                      }
250                      ${'s_limit_' . $sort_option . '_days'} .= '</select>';
251   
252                      ${'s_sort_' . $sort_option . '_key'} = '<select name="' . $sort_option . '_sk">';
253                      foreach (${'sort_by_' . $sort_option . '_text'} as $key => $text)
254                      {
255                          $selected = ($data[$sort_option . '_sk'] == $key) ? ' selected="selected"' : '';
256                          ${'s_sort_' . $sort_option . '_key'} .= '<option value="' . $key . '"' . $selected . '>' . $text . '</option>';
257                      }
258                      ${'s_sort_' . $sort_option . '_key'} .= '</select>';
259   
260                      ${'s_sort_' . $sort_option . '_dir'} = '<select name="' . $sort_option . '_sd">';
261                      foreach ($sort_dir_text as $key => $value)
262                      {
263                          $selected = ($data[$sort_option . '_sd'] == $key) ? ' selected="selected"' : '';
264                          ${'s_sort_' . $sort_option . '_dir'} .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>';
265                      }
266                      ${'s_sort_' . $sort_option . '_dir'} .= '</select>';
267                  }
268   
269                  $template->assign_vars(array(
270                      'ERROR'                => (sizeof($error)) ? implode('<br />', $error) : '',
271   
272                      'S_IMAGES'            => $data['images'],
273                      'S_FLASH'            => $data['flash'],
274                      'S_SMILIES'            => $data['smilies'],
275                      'S_SIGS'            => $data['sigs'],
276                      'S_AVATARS'            => $data['avatars'],
277                      'S_DISABLE_CENSORS'    => $data['wordcensor'],
278   
279                      'S_CHANGE_CENSORS'        => ($auth->acl_get('u_chgcensors')) ? true : false,
280   
281                      'S_TOPIC_SORT_DAYS'        => $s_limit_topic_days,
282                      'S_TOPIC_SORT_KEY'        => $s_sort_topic_key,
283                      'S_TOPIC_SORT_DIR'        => $s_sort_topic_dir,
284                      'S_POST_SORT_DAYS'        => $s_limit_post_days,
285                      'S_POST_SORT_KEY'        => $s_sort_post_key,
286                      'S_POST_SORT_DIR'        => $s_sort_post_dir)
287                  );
288   
289              break;
290   
291              case 'post':
292   
293                  $data = array(
294                      'bbcode'    => request_var('bbcode', $user->optionget('bbcode')),
295                      'smilies'    => request_var('smilies', $user->optionget('smilies')),
296                      'sig'        => request_var('sig', $user->optionget('attachsig')),
297                      'notify'    => request_var('notify', $user->data['user_notify']),
298                  );
299                  add_form_key('ucp_prefs_post');
300   
301                  if ($submit)
302                  {
303                      if (check_form_key('ucp_prefs_post'))
304                      {
305                          $user->optionset('bbcode', $data['bbcode']);
306                          $user->optionset('smilies', $data['smilies']);
307                          $user->optionset('attachsig', $data['sig']);
308   
309                          $sql_ary = array(
310                              'user_options'    => $user->data['user_options'],
311                              'user_notify'    => $data['notify'],
312                          );
313   
314                          $sql = 'UPDATE ' . USERS_TABLE . '
315                              SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
316                              WHERE user_id = ' . $user->data['user_id'];
317                          $db->sql_query($sql);
318   
319                          $msg = $user->lang['PREFERENCES_UPDATED'];
320                      }
321                      else
322                      {
323                          $msg = $user->lang['FORM_INVALID'];
324                      }
325                      meta_refresh(3, $this->u_action);
326                      $message = $msg . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
327                      trigger_error($message);
328                  }
329   
330                  $template->assign_vars(array(
331                      'S_BBCODE'    => $data['bbcode'],
332                      'S_SMILIES'    => $data['smilies'],
333                      'S_SIG'        => $data['sig'],
334                      'S_NOTIFY'    => $data['notify'])
335                  );
336              break;
337          }
338   
339          $template->assign_vars(array(
340              'L_TITLE'            => $user->lang['UCP_PREFS_' . strtoupper($mode)],
341   
342              'S_HIDDEN_FIELDS'    => $s_hidden_fields,
343              'S_UCP_ACTION'        => $this->u_action)
344          );
345   
346          $this->tpl_name = 'ucp_prefs_' . $mode;
347          $this->page_title = 'UCP_PREFS_' . strtoupper($mode);
348      }
349  }
350   
351  ?>