Example #1
0
 /**
  * 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;
 }