public function pageNotFound() { $content = null; $error404Page = ipContent()->getPageByAlias('error404'); if ($error404Page) { $revision = \Ip\Internal\Revision::getPublishedRevision($error404Page->getId()); $content = \Ip\Internal\Content\Model::generateBlock('main', $revision['revisionId'], 0, 0); } return new \Ip\Response\PageNotFound($content); }
/** * If in management state and the last revision was published, create a new revision. * @ignore */ public function getCurrentRevision() { if ($this->currentRevision !== null) { return $this->currentRevision; } if (!$this->currentPage) { return null; } $revision = null; $pageId = $this->currentPage->getId(); if (ipRequest()->getQuery('_revision') && ipAdminId()) { $revisionId = ipRequest()->getQuery('_revision'); $revision = \Ip\Internal\Revision::getRevision($revisionId); if ($revision['pageId'] != $pageId) { $revision = null; } } if (!$revision && ipIsManagementState()) { $revision = \Ip\Internal\Revision::getLastRevision($pageId); if ($revision['isPublished']) { $duplicatedId = \Ip\Internal\Revision::duplicateRevision($revision['revisionId']); $revision = \Ip\Internal\Revision::getRevision($duplicatedId); } } if (!$revision) { $revision = \Ip\Internal\Revision::getPublishedRevision($this->currentPage->getId()); } $this->currentRevision = $revision; return $this->currentRevision; }
/** * @param int $revisionId * @return bool|string */ public static function isRevisionModified($revisionId = null) { if ($revisionId === null) { $currentRevision = ipContent()->getCurrentRevision(); $revisionId = $currentRevision['revisionId']; } $currentRevision = \Ip\Internal\Revision::getRevision($revisionId); if (!$currentRevision) { return false; } $pageId = $currentRevision['pageId']; $publishedRevision = \Ip\Internal\Revision::getPublishedRevision($pageId); if (!$publishedRevision) { return true; } if ($publishedRevision['revisionId'] == $currentRevision['revisionId']) { return false; } $currentFingerprint = self::revisionFingerprint($currentRevision['revisionId']); $publishedFingerprint = self::revisionFingerprint($publishedRevision['revisionId']); $modified = $currentFingerprint != $publishedFingerprint; return $modified; }
/** * @param int $sourceId * @param int $targetId */ private static function _copyWidgets($sourceId, $targetId) { $oldRevision = \Ip\Internal\Revision::getPublishedRevision($sourceId); \Ip\Internal\Revision::duplicateRevision($oldRevision['revisionId'], $targetId, 1); }