[ Index ]

PHP Cross Reference of phpBB 3.0 Beta 3

title

Body

[close]

/includes/ucp/ -> ucp_prefs.php (source)

   1  <?php
   2  /** 
   3  *
   4  * @package ucp
   5  * @version $Id: ucp_prefs.php,v 1.41 2006/11/04 17:19:00 acydburn Exp $
   6  * @copyright (c) 2005 phpBB Group 
   7  * @license http://opensource.org/licenses/gpl-license.php GNU Public License 
   8  *
   9  */
  10  
  11  /**
  12  * ucp_prefs
  13  * Changing user preferences
  14  * @package ucp
  15  */
  16  class ucp_prefs
  17  {
  18      var $u_action;
  19  
  20  	function main($id, $mode)
  21      {
  22          global $config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx;
  23  
  24          $submit = (isset($_POST['submit'])) ? true : false;
  25          $error = $data = array();
  26          $s_hidden_fields = '';
  27  
  28          switch ($mode)
  29          {
  30              case 'personal':
  31  
  32                  $data = array(
  33                      'notifymethod'    => request_var('notifymethod', $user->data['user_notify_type']),
  34                      'dateformat'    => request_var('dateformat', $user->data['user_dateformat']),
  35                      'lang'            => request_var('lang', $user->data['user_lang']),
  36                      'style'            => request_var('style', (int) $user->data['user_style']),
  37                      'tz'            => request_var('tz', (float) $user->data['user_timezone']),
  38  
  39                      'dst'            => request_var('dst', (bool) $user->data['user_dst']),
  40                      'viewemail'        => request_var('viewemail', (bool) $user->data['user_allow_viewemail']),
  41                      'massemail'        => request_var('massemail', (bool) $user->data['user_allow_massemail']),
  42                      'hideonline'    => request_var('hideonline', (bool) !$user->data['user_allow_viewonline']),
  43                      'notifypm'        => request_var('notifypm', (bool) $user->data['user_notify_pm']),
  44                      'popuppm'        => request_var('popuppm', (bool) $user->optionget('popuppm')),
  45                      'allowpm'        => request_var('allowpm', (bool) $user->data['user_allow_pm']),
  46                  );
  47  
  48                  if ($submit)
  49                  {
  50                      $data['style'] = ($config['override_user_style']) ? $config['default_style'] : $data['style'];
  51  
  52                      $error = validate_data($data, array(
  53                          'dateformat'    => array('string', false, 3, 30),
  54                          'lang'            => array('match', false, '#^[a-z0-9_\-]{2,}$#i'),
  55                          'tz'            => array('num', false, -14, 14),
  56                      ));
  57  
  58                      if (!sizeof($error))
  59                      {
  60                          $user->optionset('popuppm', $data['popuppm']);
  61  
  62                          $sql_ary = array(
  63                              'user_allow_pm'            => $data['allowpm'],
  64                              'user_allow_viewemail'    => $data['viewemail'],
  65                              'user_allow_massemail'    => $data['massemail'],
  66                              'user_allow_viewonline'    => ($auth->acl_get('u_hideonline')) ? !$data['hideonline'] : $user->data['user_allow_viewonline'],
  67                              'user_notify_type'        => $data['notifymethod'],
  68                              'user_notify_pm'        => $data['notifypm'],
  69                              'user_options'            => $user->data['user_options'],
  70  
  71                              'user_dst'                => $data['dst'],
  72                              'user_dateformat'        => $data['dateformat'],
  73                              'user_lang'                => $data['lang'],
  74                              'user_timezone'            => $data['tz'],
  75                              'user_style'            => $data['style'],
  76                          );
  77  
  78                          $sql = 'UPDATE ' . USERS_TABLE . '
  79                              SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
  80                              WHERE user_id = ' . $user->data['user_id'];
  81                          $db->sql_query($sql);
  82  
  83                          meta_refresh(3, $this->u_action);
  84                          $message = $user->lang['PREFERENCES_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
  85                          trigger_error($message);
  86                      }
  87  
  88                      // Replace "error" strings with their real, localised form
  89                      $error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
  90                  }
  91  
  92                  $dateformat_options = '';
  93  
  94                  foreach ($user->lang['dateformats'] as $format => $null)
  95                  {
  96                      $dateformat_options .= '<option value="' . $format . '"' . (($format == $data['dateformat']) ? ' selected="selected"' : '') . '>';
  97                      $dateformat_options .= $user->format_date(time(), $format, true) . ((strpos($format, '|') !== false) ? ' [' . $user->lang['RELATIVE_DAYS'] . ']' : '');
  98                      $dateformat_options .= '</option>';
  99                  }
 100  
 101                  $s_custom = false;
 102  
 103                  $dateformat_options .= '<option value="custom"';
 104                  if (!in_array($data['dateformat'], array_keys($user->lang['dateformats'])))
 105                  {
 106                      $dateformat_options .= ' selected="selected"';
 107                      $s_custom = true;
 108                  }
 109                  $dateformat_options .= '>' . $user->lang['CUSTOM_DATEFORMAT'] . '</option>';
 110  
 111                  $template->assign_vars(array(
 112                      'ERROR'                => (sizeof($error)) ? implode('<br />', $error) : '',
 113  
 114                      'S_NOTIFY_EMAIL'    => ($data['notifymethod'] == NOTIFY_EMAIL) ? true : false,
 115                      'S_NOTIFY_IM'        => ($data['notifymethod'] == NOTIFY_IM) ? true : false,
 116                      'S_NOTIFY_BOTH'        => ($data['notifymethod'] == NOTIFY_BOTH) ? true : false,
 117                      'S_VIEW_EMAIL'        => $data['viewemail'],
 118                      'S_MASS_EMAIL'        => $data['massemail'],
 119                      'S_ALLOW_PM'        => $data['allowpm'],
 120                      'S_HIDE_ONLINE'        => $data['hideonline'],
 121                      'S_NOTIFY_PM'        => $data['notifypm'],
 122                      'S_POPUP_PM'        => $data['popuppm'],
 123                      'S_DST'                => $data['dst'],
 124  
 125                      'DATE_FORMAT'            => $data['dateformat'],
 126                      'S_DATEFORMAT_OPTIONS'    => $dateformat_options,
 127                      'S_CUSTOM_DATEFORMAT'    => $s_custom,
 128                      'DEFAULT_DATEFORMAT'    => $config['default_dateformat'],
 129                      'A_DEFAULT_DATEFORMAT'    => addslashes($config['default_dateformat']),
 130  
 131                      'S_LANG_OPTIONS'    => language_select($data['lang']),
 132                      'S_STYLE_OPTIONS'    => ($config['override_user_style']) ? '' : style_select($data['style']),
 133                      'S_TZ_OPTIONS'        => tz_select($data['tz']),
 134                      'S_CAN_HIDE_ONLINE'    => ($auth->acl_get('u_hideonline')) ? true : false,
 135                      'S_SELECT_NOTIFY'    => ($config['jab_enable'] && $user->data['user_jabber'] && @extension_loaded('xml')) ? true : false)
 136                  );
 137  
 138              break;
 139  
 140              case 'view':
 141  
 142                  $data = array(
 143                      'topic_sk'        => (!empty($user->data['user_topic_sortby_type'])) ? $user->data['user_topic_sortby_type'] : 't',
 144                      'topic_sd'        => (!empty($user->data['user_topic_sortby_dir'])) ? $user->data['user_topic_sortby_dir'] : 'd',
 145                      'topic_st'        => (!empty($user->data['user_topic_show_days'])) ? $user->data['user_topic_show_days'] : 0,
 146  
 147                      'post_sk'        => (!empty($user->data['user_post_sortby_type'])) ? $user->data['user_post_sortby_type'] : 't',
 148                      'post_sd'        => (!empty($user->data['user_post_sortby_dir'])) ? $user->data['user_post_sortby_dir'] : 'a',
 149                      'post_st'        => (!empty($user->data['user_post_show_days'])) ? $user->data['user_post_show_days'] : 0,
 150  
 151                      'images'        => request_var('images', (bool) $user->optionget('viewimg')),
 152                      'flash'            => request_var('flash', (bool) $user->optionget('viewflash')),
 153                      'smilies'        => request_var('smilies', (bool) $user->optionget('viewsmilies')),
 154                      'sigs'            => request_var('sigs', (bool) $user->optionget('viewsigs')),
 155                      'avatars'        => request_var('avatars', (bool) $user->optionget('viewavatars')),
 156                      'wordcensor'    => request_var('wordcensor', (bool) $user->optionget('viewcensors')),
 157                  );
 158  
 159                  if ($submit)
 160                  {
 161                      $error = validate_data($data, array(
 162                          'topic_sk'    => array('string', false, 1, 1),
 163                          'topic_sd'    => array('string', false, 1, 1),
 164                          'post_sk'    => array('string', false, 1, 1),
 165                          'post_sd'    => array('string', false, 1, 1),
 166                      ));
 167  
 168                      if (!sizeof($error))
 169                      {
 170                          $user->optionset('viewimg', $data['images']);
 171                          $user->optionset('viewflash', $data['flash']);
 172                          $user->optionset('viewsmilies', $data['smilies']);
 173                          $user->optionset('viewsigs', $data['sigs']);
 174                          $user->optionset('viewavatars', $data['avatars']);
 175  
 176                          if ($auth->acl_get('u_chgcensors'))
 177                          {
 178                              $user->optionset('viewcensors', $data['wordcensor']);
 179                          }
 180  
 181                          $sql_ary = array(
 182                              'user_options'                => $user->data['user_options'],
 183                              'user_topic_sortby_type'    => $data['topic_sk'],
 184                              'user_post_sortby_type'        => $data['post_sk'],
 185                              'user_topic_sortby_dir'        => $data['topic_sd'],
 186                              'user_post_sortby_dir'        => $data['post_sd'],
 187  
 188                              'user_topic_show_days'    => $data['topic_st'],
 189                              'user_post_show_days'    => $data['post_st'],
 190                          );
 191  
 192                          $sql = 'UPDATE ' . USERS_TABLE . '
 193                              SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
 194                              WHERE user_id = ' . $user->data['user_id'];
 195                          $db->sql_query($sql);
 196  
 197                          meta_refresh(3, $this->u_action);
 198                          $message = $user->lang['PREFERENCES_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
 199                          trigger_error($message);
 200                      }
 201  
 202                      // Replace "error" strings with their real, localised form
 203                      $error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
 204                  }
 205  
 206                  $sort_dir_text = array('a' => $user->lang['ASCENDING'], 'd' => $user->lang['DESCENDING']);
 207  
 208                  // Topic ordering options
 209                  $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']);
 210  
 211                  $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']);
 212                  $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');
 213  
 214                  // Post ordering options
 215                  $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']);
 216  
 217                  $sort_by_post_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 's' => $user->lang['SUBJECT']);
 218                  $sort_by_post_sql = array('a' => 'u.username', 't' => 'p.post_id', 's' => 'p.post_subject');
 219  
 220                  $_options = array('topic', 'post');
 221                  foreach ($_options as $sort_option)
 222                  {
 223                      ${'s_limit_' . $sort_option . '_days'} = '<select name="' . $sort_option . '_st">';
 224                      foreach (${'limit_' . $sort_option . '_days'} as $day => $text)
 225                      {
 226                          $selected = ($data[$sort_option . '_st'] == $day) ? ' selected="selected"' : '';
 227                          ${'s_limit_' . $sort_option . '_days'} .= '<option value="' . $day . '"' . $selected . '>' . $text . '</option>';
 228                      }
 229                      ${'s_limit_' . $sort_option . '_days'} .= '</select>';
 230  
 231                      ${'s_sort_' . $sort_option . '_key'} = '<select name="' . $sort_option . '_sk">';
 232                      foreach (${'sort_by_' . $sort_option . '_text'} as $key => $text)
 233                      {
 234                          $selected = ($data[$sort_option . '_sk'] == $key) ? ' selected="selected"' : '';
 235                          ${'s_sort_' . $sort_option . '_key'} .= '<option value="' . $key . '"' . $selected . '>' . $text . '</option>';
 236                      }
 237                      ${'s_sort_' . $sort_option . '_key'} .= '</select>';
 238  
 239                      ${'s_sort_' . $sort_option . '_dir'} = '<select name="' . $sort_option . '_sd">';
 240                      foreach ($sort_dir_text as $key => $value)
 241                      {
 242                          $selected = ($data[$sort_option . '_sd'] == $key) ? ' selected="selected"' : '';
 243                          ${'s_sort_' . $sort_option . '_dir'} .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>';
 244                      }
 245                      ${'s_sort_' . $sort_option . '_dir'} .= '</select>';
 246                  }
 247  
 248                  $template->assign_vars(array(
 249                      'ERROR'                => (sizeof($error)) ? implode('<br />', $error) : '',
 250  
 251                      'S_IMAGES'            => $data['images'],
 252                      'S_FLASH'            => $data['flash'],
 253                      'S_SMILIES'            => $data['smilies'],
 254                      'S_SIGS'            => $data['sigs'],
 255                      'S_AVATARS'            => $data['avatars'],
 256                      'S_DISABLE_CENSORS'    => $data['wordcensor'],
 257  
 258                      'S_CHANGE_CENSORS'        => ($auth->acl_get('u_chgcensors')) ? true : false,
 259  
 260                      'S_TOPIC_SORT_DAYS'        => $s_limit_topic_days,
 261                      'S_TOPIC_SORT_KEY'        => $s_sort_topic_key,
 262                      'S_TOPIC_SORT_DIR'        => $s_sort_topic_dir,
 263                      'S_POST_SORT_DAYS'        => $s_limit_post_days,
 264                      'S_POST_SORT_KEY'        => $s_sort_post_key,
 265                      'S_POST_SORT_DIR'        => $s_sort_post_dir)
 266                  );
 267  
 268              break;
 269  
 270              case 'post':
 271  
 272                  $data = array(
 273                      'bbcode'    => request_var('bbcode', $user->optionget('bbcode')),
 274                      'smilies'    => request_var('smilies', $user->optionget('smilies')),
 275                      'sig'        => request_var('sig', $user->optionget('attachsig')),
 276                      'notify'    => request_var('notify', $user->data['user_notify']),
 277                  );
 278  
 279                  if ($submit)
 280                  {
 281                      $user->optionset('bbcode', $data['bbcode']);
 282                      $user->optionset('smilies', $data['smilies']);
 283                      $user->optionset('attachsig', $data['sig']);
 284  
 285                      $sql_ary = array(
 286                          'user_options'    => $user->data['user_options'],
 287                          'user_notify'    => $data['notify'],
 288                      );
 289  
 290                      $sql = 'UPDATE ' . USERS_TABLE . '
 291                          SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
 292                          WHERE user_id = ' . $user->data['user_id'];
 293                      $db->sql_query($sql);
 294  
 295                      meta_refresh(3, $this->u_action);
 296                      $message = $user->lang['PREFERENCES_UPDATED'] . '<br /><br />' . sprintf($user->lang['RETURN_UCP'], '<a href="' . $this->u_action . '">', '</a>');
 297                      trigger_error($message);
 298                  }
 299  
 300                  $template->assign_vars(array(
 301                      'S_BBCODE'    => $data['bbcode'],
 302                      'S_SMILIES'    => $data['smilies'],
 303                      'S_SIG'        => $data['sig'],
 304                      'S_NOTIFY'    => $data['notify'])
 305                  );
 306              break;
 307          }
 308  
 309          $template->assign_vars(array(
 310              'L_TITLE'            => $user->lang['UCP_PREFS_' . strtoupper($mode)],
 311  
 312              'S_HIDDEN_FIELDS'    => $s_hidden_fields,
 313              'S_UCP_ACTION'        => $this->u_action)
 314          );
 315  
 316          $this->tpl_name = 'ucp_prefs_' . $mode;
 317          $this->page_title = 'UCP_PREFS_' . strtoupper($mode);
 318      }
 319  }
 320  
 321  ?>


Generated: Wed Nov 22 00:35:05 2006 Cross-referenced by PHPXref 0.6