示例#1
0
 /**
  * Starts or resumes a session
  *
  * @return mixed If a session was resumed, the number of seconds it has been inactive previously. If a new session was started: TRUE
  */
 protected function startOrResume()
 {
     session_start();
     $this->sessionId = session_id();
     $this->started = TRUE;
     $previousInactivityInSeconds = TRUE;
     if ($this->hasKey('TYPO3_FLOW3_Session_LastActivity')) {
         $previousInactivityInSeconds = time() - $this->getData('TYPO3_FLOW3_Session_LastActivity');
     }
     $this->putData('TYPO3_FLOW3_Session_LastActivity', time());
     if ($this->hasKey('TYPO3_FLOW3_Object_ObjectManager') === TRUE) {
         $sessionObjects = $this->getData('TYPO3_FLOW3_Object_ObjectManager');
         if (is_array($sessionObjects)) {
             foreach ($sessionObjects as $object) {
                 if ($object instanceof \TYPO3\FLOW3\Object\Proxy\ProxyInterface) {
                     $objectName = $this->objectManager->getObjectNameByClassName(get_class($object));
                     if ($this->objectManager->getScope($objectName) === ObjectConfiguration::SCOPE_SESSION) {
                         $this->objectManager->setInstance($objectName, $object);
                         $this->lazyLoadingAspect->registerSessionInstance($objectName, $object);
                         $object->__wakeup();
                     }
                 }
             }
         } else {
             // Fallback for some malformed session data, if it is no array but something else.
             // In this case, we reset all session objects (graceful degradation).
             $this->putData('TYPO3_FLOW3_Object_ObjectManager', array());
         }
     }
     return $previousInactivityInSeconds;
 }