/** * Cleans up the expired tokens after writing */ protected function onAfterWrite() { parent::onAfterWrite(); //Clean up the expired tokens $expiredTokens = KapostPreviewToken::get()->filter('Created:LessThan', date('Y-m-d H:i:s', strtotime('-' . KapostService::config()->preview_token_expiry . ' minutes'))); if ($expiredTokens->count() > 0) { foreach ($expiredTokens as $token) { $token->delete(); } } }
/** * Handles rendering of the preview for an object * @return {string} Response to send to the object */ public function preview() { $auth = $this->request->getVar('auth'); $token = KapostPreviewToken::get()->filter('Code', Convert::raw2sql($auth))->first(); //Verify the token exists and hasn't expired yet if (!empty($token) && $token !== false && $token->exists() && time() - strtotime($token->Created) < self::config()->preview_token_expiry * 60 && $token->KapostRefID == $this->urlParams['ID']) { $kapostObj = KapostObject::get()->filter('KapostRefID', Convert::raw2sql($this->urlParams['ID']))->sort('"Created" DESC')->first(); if (!empty($kapostObj) && $kapostObj !== false && $kapostObj->exists()) { $previewController = $kapostObj->renderPreview(); $this->extend('updatePreviewDisplay', $kapostObj, $previewController); return $previewController; } } //Token expired or object not found if (class_exists('ErrorPage')) { $response = ErrorPage::response_for(404); if (!empty($response)) { return $response; } } return parent::httpError(404); }