Example #1
0
 /**
  * prepPageRevisionForDisplay
  *
  * @param Page $page
  * @param null $pageRevisionId
  *
  * @return void|Response
  */
 public function prepPageRevisionForDisplay(Page $page, $pageRevisionId = null)
 {
     //  First Check for a page Revision
     if (!empty($pageRevisionId)) {
         $userCanSeeRevisions = $this->shouldShowRevisions($page->getSite()->getSiteId(), $page->getName(), $page->getPageType());
         if ($userCanSeeRevisions) {
             $revision = $page->getRevisionById($pageRevisionId);
             if (!empty($revision) || $revision instanceof Revision) {
                 $page->setCurrentRevision($revision);
             }
             return;
         } else {
             return $this->redirectToPage($page->getName(), $page->getPageType());
         }
     }
     // Check for staging
     if ($this->rcmIsSiteAdmin($page->getSite())) {
         $revision = $page->getStagedRevision();
         if (!empty($revision) || $revision instanceof Revision) {
             $page->setCurrentRevision($revision);
             return;
         }
     }
     // Finally look for published revision
     $revision = $page->getPublishedRevision();
     if (!empty($revision) || $revision instanceof Revision) {
         $page->setCurrentRevision($revision);
     }
     return;
 }
Example #2
0
File: Page.php Project: reliv/rcm
 /**
  * Copy a page
  *
  * @param SiteEntity $destinationSite Site Entity to copy page to
  * @param PageEntity $pageToCopy      Page Entity to copy
  * @param array      $pageData        Array of data to populate the page entity
  * @param null       $pageRevisionId  Page Revision ID to use for copy.  Defaults to currently published
  * @param bool       $publishNewPage  Publish page instead of setting to staged
  * @param bool       $doFlush         Force flush
  *
  * @return PageEntity
  */
 public function copyPage(SiteEntity $destinationSite, PageEntity $pageToCopy, $pageData, $pageRevisionId = null, $publishNewPage = false, $doFlush = true)
 {
     if (empty($pageData['name'])) {
         throw new InvalidArgumentException('Missing needed information (name) to create page copy.');
     }
     if (empty($pageData['author'])) {
         throw new InvalidArgumentException('Missing needed information (author) to create page copy.');
     }
     // Values cannot be changed
     unset($pageData['pageId']);
     unset($pageData['createdDate']);
     unset($pageData['lastPublished']);
     $pageData['site'] = $destinationSite;
     $clonedPage = clone $pageToCopy;
     $clonedPage->populate($pageData);
     $revisionToUse = $clonedPage->getStagedRevision();
     if (!empty($pageRevisionId)) {
         $sourceRevision = $pageToCopy->getRevisionById($pageRevisionId);
         if (empty($sourceRevision)) {
             throw new PageNotFoundException('Page revision not found.');
         }
         $revisionToUse = clone $sourceRevision;
         $clonedPage->setRevisions([]);
         $clonedPage->addRevision($revisionToUse);
     }
     if (empty($revisionToUse)) {
         throw new RuntimeException('Page revision not found.');
     }
     if ($publishNewPage) {
         $clonedPage->setPublishedRevision($revisionToUse);
     } else {
         $clonedPage->setStagedRevision($revisionToUse);
     }
     $destinationSite->addPage($clonedPage);
     $this->_em->persist($clonedPage);
     if ($doFlush) {
         $this->_em->flush($clonedPage);
     }
     return $clonedPage;
 }