/** * Get current user (from session) * @return User */ public static function getUser() { if (!empty(self::$currentUser)) { return self::$currentUser; } $session = new Session(); $id = $session->get('User'); $app = ActiveRecordModel::getApplication(); if (!$id) { $user = self::getAnonymousUser(); } else { $user = User::getInstanceById($id); // set user's prefered locale code $reqLang = $app->getRequest()->get('requestLanguage'); $localeCode = $reqLang ? $reqLang : $app->getLocaleCode(); try { if ($session->get('userLocale') != $localeCode) { $user->load(); $user->locale->set($localeCode); $user->save(); $session->set('userLocale', $localeCode); } if (!$session->isValueSet('UserGroup') || is_null($session->get('UserGroup'))) { $user->load(); $group = $user->userGroup->get() ? $user->userGroup->get()->getID() : 0; $session->set('UserGroup', $group); } $user->userGroup->set(UserGroup::getInstanceByID($session->get('UserGroup'))); } catch (ARNotFoundException $e) { $user = self::getAnonymousUser(); } } if ($app->getSessionHandler()) { $app->getSessionHandler()->setUser($user); } return $user; }