public function getValidationResult($queue) { global $cookieExpiration; $key = $this->generateKey($queue->getCustomerId(), $queue->getEventId()); if (isset($_COOKIE[$key])) { try { $values = $_COOKIE[$key]; $queueId = $values["QueueId"]; $originalUrl = $values["OriginalUrl"]; $placeInQueue = KnownUserFactory::decryptPlaceInQueue($values["PlaceInQueue"]); $redirectType = $values["RedirectType"]; $timeStamp = $values["TimeStamp"]; $actualHash = $values["Hash"]; $expires = $values["Expires"]; if (!is_numeric($expires)) { return null; } $expirationTime = intval($expires); if ($expirationTime < time()) { return null; } $expectedHash = $this->generateHash($queueId, $originalUrl, $placeInQueue, $redirectType, $timeStamp, $expirationTime); if ($actualHash != $expectedHash) { return null; } if ($redirectType != RedirectType::Idle) { $newExpirationTime = time() + $cookieExpiration; $newHash = $this->generateHash($queueId, $originalUrl, $placeInQueue, $redirectType, $timeStamp, $newExpirationTime); $this->writeCookie($queue, $queueId, $originalUrl, $placeInQueue, $redirectType, $timeStamp, $newHash, $newExpirationTime); } $parsedTimeStamp = new \DateTime("now", new \DateTimeZone("UTC")); $parsedTimeStamp->setTimestamp(intval($timeStamp)); return new AcceptedConfirmedResult($queue, new Md5KnownUser($queueId, $placeInQueue, $parsedTimeStamp, $queue->getCustomerId(), $queue->getEventId(), $redirectType, $originalUrl), false); } catch (InvalidKnownUserUrlException $e) { return null; } } return $result; }