diff --git a/e107_handlers/e107_class.php b/e107_handlers/e107_class.php index 956ed2c77..e35028900 100644 --- a/e107_handlers/e107_class.php +++ b/e107_handlers/e107_class.php @@ -149,6 +149,7 @@ class e107 'e_file' => '{e_HANDLER}file_class.php', 'e_form' => '{e_HANDLER}form_handler.php', 'e_jshelper' => '{e_HANDLER}js_helper.php', + 'e_media' => '{e_HANDLER}media_class.php', 'e_menu' => '{e_HANDLER}menu_class.php', 'e_model' => '{e_HANDLER}model_class.php', 'e_news_item' => '{e_HANDLER}news_class.php', @@ -157,6 +158,9 @@ class e107 'e_parse' => '{e_HANDLER}e_parse_class.php', 'e_ranks' => '{e_HANDLER}e_ranks_class.php', 'e_upgrade' => '{e_HANDLER}e_upgrade_class.php', + 'e_user_model' => '{e_HANDLER}user_model.php', + 'e_user' => '{e_HANDLER}user_model.php', + 'e_current_user' => '{e_HANDLER}user_model.php', 'e_userperms' => '{e_HANDLER}user_handler.php', 'e_validator' => '{e_HANDLER}validator_class.php', 'e_vars' => '{e_HANDLER}e_parse_class.php', @@ -168,7 +172,6 @@ class e107 'themeHandler' => '{e_HANDLER}theme_handler.php', 'user_class' => '{e_HANDLER}userclass_class.php', 'xmlClass' => '{e_HANDLER}xml_class.php', - 'e_media' => '{e_HANDLER}media_class.php', ); /** @@ -885,7 +888,7 @@ class e107 } /** - * Retrieve user class singleton object + * Retrieve userclass singleton object * * @return user_class */ @@ -894,6 +897,45 @@ class e107 return self::getSingleton('user_class', true); } + /** + * Retrieve [e_current_user] current or [e_user] target (cached) user model object. + * + * @param boolean $current true - current user; false - target user (previously cached) + * @return e_current_user|e_user + */ + public static function getUser($current = true) + { + if($current) + { + return self::getSingleton('e_current_user', true); + } + return e107::getRegistry('targets/core/user'); + } + + /** + * Load user data + * + * @param integer|array $user + * @return e_user + */ + public static function loadUser($user = array()) + { + if(is_numeric($user_id)) + { + return $this->getObject('e_user', array(), true)->load($user); + } + return $this->getObject('e_user', $user, true); + } + + /** + * Retrieve user-session singleton object + * + * @return UserHandler + */ + public static function getSession() + { + return self::getSingleton('UserHandler', true); + } /** * Retrieve redirection singleton object @@ -905,7 +947,6 @@ class e107 return self::getSingleton('redirection', true); } - /** * Retrieve sitelinks singleton object * @@ -947,16 +988,6 @@ class e107 return self::getSingleton('e107_event', true); } - /** - * Retrieve user-session singleton object - * - * @return e107_event - */ - public static function getSession() - { - return self::getSingleton('UserHandler', true); - } - /** * Retrieve array storage singleton object * diff --git a/e107_handlers/model_class.php b/e107_handlers/model_class.php index 5ae0414c9..dd912e341 100644 --- a/e107_handlers/model_class.php +++ b/e107_handlers/model_class.php @@ -859,7 +859,7 @@ class e_model /** * Generic load data from DB * @param boolean $force - * @return e_admin + * @return e_model */ public function load($id, $force = false) { diff --git a/e107_handlers/user_model.php b/e107_handlers/user_model.php new file mode 100644 index 000000000..3a542596f --- /dev/null +++ b/e107_handlers/user_model.php @@ -0,0 +1,111 @@ +get($field, $default); + } + + /** + * Set User value + * @param string $field + * @param mixed $value + * @return e_user_model + */ + public function setValue($field, $value) + { + $field = 'user_'.$field; + $this->set($field, $value, false); + return $this; + } + + /** + * Set current object as a target + * @return e_user_model + */ + public function setAsTarget() + { + e107::setRegistry('targets/core/user', $this); + return $this; + } + + /** + * Clear registered target + * @return e_user_model + */ + public function clearTarget() + { + e107::setRegistry('targets/core/user', null); + return $this; + } + + /** + * @see e_model#load($id, $force) + */ + public function load($user_id = 0, $force = false) + { + parent::load($user_id, $force); + } +} + + +// TODO Current user model is under construction +class e_current_user extends e_user_model +{ + +} + +// TODO - add some more useful methods, sc_* methods +class e_user extends e_user_model +{ + +} \ No newline at end of file