aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/user.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/phpbb/user.php')
-rw-r--r--phpBB/phpbb/user.php68
1 files changed, 42 insertions, 26 deletions
diff --git a/phpBB/phpbb/user.php b/phpBB/phpbb/user.php
index 36120798e5..18b7a3d096 100644
--- a/phpBB/phpbb/user.php
+++ b/phpBB/phpbb/user.php
@@ -7,13 +7,7 @@
*
*/
-/**
-* @ignore
-*/
-if (!defined('IN_PHPBB'))
-{
- exit;
-}
+namespace phpbb;
/**
* Base user class
@@ -23,7 +17,7 @@ if (!defined('IN_PHPBB'))
*
* @package phpBB3
*/
-class phpbb_user extends phpbb_session
+class user extends \phpbb\session
{
var $lang = array();
var $help = array();
@@ -42,7 +36,7 @@ class phpbb_user extends phpbb_session
var $img_array = array();
// Able to add new options (up to id 31)
- var $keyoptions = array('viewimg' => 0, 'viewflash' => 1, 'viewsmilies' => 2, 'viewsigs' => 3, 'viewavatars' => 4, 'viewcensors' => 5, 'attachsig' => 6, 'bbcode' => 8, 'smilies' => 9, 'popuppm' => 10, 'sig_bbcode' => 15, 'sig_smilies' => 16, 'sig_links' => 17);
+ var $keyoptions = array('viewimg' => 0, 'viewflash' => 1, 'viewsmilies' => 2, 'viewsigs' => 3, 'viewavatars' => 4, 'viewcensors' => 5, 'attachsig' => 6, 'bbcode' => 8, 'smilies' => 9, 'sig_bbcode' => 15, 'sig_smilies' => 16, 'sig_links' => 17);
/**
* Constructor to set the lang path
@@ -149,9 +143,17 @@ class phpbb_user extends phpbb_session
* that are absolutely needed globally using this
* event. Use local events otherwise.
* @var mixed style_id Style we are going to display
- * @since 3.1-A1
+ * @since 3.1.0-a1
*/
- $vars = array('user_data', 'user_lang_name', 'user_date_format', 'user_timezone', 'lang_set', 'lang_set_ext', 'style_id');
+ $vars = array(
+ 'user_data',
+ 'user_lang_name',
+ 'user_date_format',
+ 'user_timezone',
+ 'lang_set',
+ 'lang_set_ext',
+ 'style_id',
+ );
extract($phpbb_dispatcher->trigger_event('core.user_setup', compact($vars)));
$this->data = $user_data;
@@ -160,12 +162,12 @@ class phpbb_user extends phpbb_session
try
{
- $this->timezone = new DateTimeZone($user_timezone);
+ $this->timezone = new \DateTimeZone($user_timezone);
}
- catch (Exception $e)
+ catch (\Exception $e)
{
// If the timezone the user has selected is invalid, we fall back to UTC.
- $this->timezone = new DateTimeZone('UTC');
+ $this->timezone = new \DateTimeZone('UTC');
}
// We include common language file here to not load it every time a custom language file is included
@@ -189,7 +191,7 @@ class phpbb_user extends phpbb_session
unset($lang_set_ext);
$style_request = request_var('style', 0);
- if ($style_request && $auth->acl_get('a_styles') && !defined('ADMIN_START'))
+ if ($style_request && (!$config['override_user_style'] || $auth->acl_get('a_styles')) && !defined('ADMIN_START'))
{
global $SID, $_EXTRA_URL;
@@ -210,6 +212,19 @@ class phpbb_user extends phpbb_session
$this->style = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
+ // Fallback to user's standard style
+ if (!$this->style && $style_id != $this->data['user_style'])
+ {
+ $style_id = $this->data['user_style'];
+
+ $sql = 'SELECT *
+ FROM ' . STYLES_TABLE . " s
+ WHERE s.style_id = $style_id";
+ $result = $db->sql_query($sql, 3600);
+ $this->style = $db->sql_fetchrow($result);
+ $db->sql_freeresult($result);
+ }
+
// User has wrong style
if (!$this->style && $style_id == $this->data['user_style'])
{
@@ -341,7 +356,6 @@ class phpbb_user extends phpbb_session
}
}
-
// Does the user need to change their password? If so, redirect to the
// ucp profile reg_details page ... of course do not redirect if we're already in the ucp
if (!defined('IN_ADMIN') && !defined('ADMIN_START') && $config['chg_passforce'] && !empty($this->data['is_registered']) && $auth->acl_get('u_chgpasswd') && $this->data['user_passchg'] < time() - ($config['chg_passforce'] * 86400))
@@ -625,18 +639,20 @@ class phpbb_user extends phpbb_session
else if ($this->lang_name == basename($config['default_lang']))
{
// Fall back to the English Language
+ $reset_lang_name = $this->lang_name;
$this->lang_name = 'en';
$this->set_lang($lang, $help, $lang_file, $use_db, $use_help, $ext_name);
+ $this->lang_name = $reset_lang_name;
}
else if ($this->lang_name == $this->data['user_lang'])
{
// Fall back to the board default language
+ $reset_lang_name = $this->lang_name;
$this->lang_name = basename($config['default_lang']);
$this->set_lang($lang, $help, $lang_file, $use_db, $use_help, $ext_name);
+ $this->lang_name = $reset_lang_name;
}
- // Reset the lang name
- $this->lang_name = (file_exists($lang_path . $this->data['user_lang'] . "/common.$phpEx")) ? $this->data['user_lang'] : basename($config['default_lang']);
return;
}
@@ -671,27 +687,27 @@ class phpbb_user extends phpbb_session
if (!isset($utc))
{
- $utc = new DateTimeZone('UTC');
+ $utc = new \DateTimeZone('UTC');
}
- $time = new phpbb_datetime($this, "@$gmepoch", $utc);
+ $time = new \phpbb\datetime($this, "@$gmepoch", $utc);
$time->setTimezone($this->timezone);
return $time->format($format, $forcedate);
}
/**
- * Create a phpbb_datetime object in the context of the current user
+ * Create a \phpbb\datetime object in the context of the current user
*
* @since 3.1
* @param string $time String in a format accepted by strtotime().
* @param DateTimeZone $timezone Time zone of the time.
- * @return phpbb_datetime Date time object linked to the current users locale
+ * @return \phpbb\datetime Date time object linked to the current users locale
*/
- public function create_datetime($time = 'now', DateTimeZone $timezone = null)
+ public function create_datetime($time = 'now', \DateTimeZone $timezone = null)
{
$timezone = $timezone ?: $this->timezone;
- return new phpbb_datetime($this, $time, $timezone);
+ return new \phpbb\datetime($this, $time, $timezone);
}
/**
@@ -702,10 +718,10 @@ class phpbb_user extends phpbb_session
* @param DateTimeZone $timezone Timezone of the date/time, falls back to timezone of current user
* @return int Returns the unix timestamp
*/
- public function get_timestamp_from_format($format, $time, DateTimeZone $timezone = null)
+ public function get_timestamp_from_format($format, $time, \DateTimeZone $timezone = null)
{
$timezone = $timezone ?: $this->timezone;
- $date = DateTime::createFromFormat($format, $time, $timezone);
+ $date = \DateTime::createFromFormat($format, $time, $timezone);
return ($date !== false) ? $date->format('U') : false;
}