Ejemplo n.º 1
0
 /**
  * Adds a new context to the user session context array.
  *
  * @access public
  * @param string $context The context to add to the user session.
  */
 public function addSessionContext($context)
 {
     if (!$this->xpdo->startSession()) {
         $this->xpdo->log(xPDO::LOG_LEVEL_ERROR, "Attempt to start a session failed", '', __METHOD__, __FILE__, __LINE__);
         return;
     }
     if (!empty($context)) {
         $this->getSessionContexts();
         session_regenerate_id(true);
         $this->getOne('Profile');
         if ($this->Profile && $this->Profile instanceof modUserProfile) {
             $ua =& $this->Profile;
             if ($ua && !isset($this->sessionContexts[$context]) || $this->sessionContexts[$context] != $this->get('id')) {
                 $ua->set('failedlogincount', 0);
                 $ua->set('logincount', $ua->logincount + 1);
                 $ua->set('lastlogin', $ua->thislogin);
                 $ua->set('thislogin', time());
                 $ua->set('sessionid', session_id());
                 $ua->save();
             }
         }
         $this->sessionContexts[$context] = $this->get('id');
         $_SESSION['modx.user.contextTokens'] = $this->sessionContexts;
         if (!isset($_SESSION["modx.{$context}.user.token"])) {
             $_SESSION["modx.{$context}.user.token"] = $this->generateToken($context);
         }
     } else {
         $this->xpdo->log(xPDO::LOG_LEVEL_ERROR, "Attempt to login to a context with an empty key", '', __METHOD__, __FILE__, __LINE__);
     }
 }