/**
* Resumes an existing session, if any.
*
* @return integer If a session was resumed, the inactivity of since the last request is returned
* @api
*/
public function resume()
{
if ($this->started === false && $this->canBeResumed()) {
$this->sessionIdentifier = $this->sessionCookie->getValue();
$this->response->setCookie($this->sessionCookie);
$this->started = true;
$sessionObjects = $this->storageCache->get($this->storageIdentifier . md5('TYPO3_Flow_Object_ObjectManager'));
if (is_array($sessionObjects)) {
foreach ($sessionObjects as $object) {
if ($object instanceof ProxyInterface) {
$objectName = $this->objectManager->getObjectNameByClassName(get_class($object));
if ($this->objectManager->getScope($objectName) === ObjectConfiguration::SCOPE_SESSION) {
$this->objectManager->setInstance($objectName, $object);
$this->objectManager->get(Aspect\LazyLoadingAspect::class)->registerSessionInstance($objectName, $object);
}
}
}
} 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->storageCache->set($this->storageIdentifier . md5('TYPO3_Flow_Object_ObjectManager'), [], [$this->storageIdentifier], 0);
}
$lastActivitySecondsAgo = $this->now - $this->lastActivityTimestamp;
$this->lastActivityTimestamp = $this->now;
return $lastActivitySecondsAgo;
}
}