Esempio n. 1
0
 /**
  * Return the PageRevision object.
  *
  * @return PageRevision
  */
 public function getPageRevision()
 {
     return PageRevisionQuery::create()->findPk($this->pageRevisionId);
 }
Esempio n. 2
0
 /**
  * Set publish date for revision.
  */
 public function showSetPublishDate()
 {
     $pageRevision = PageRevisionQuery::create()->findPk(json_decode($_GET['item']));
     if (!$pageRevision) {
         throw new Exception('PageRevision not found');
     }
     if (!self::getPagePermission($pageRevision->getPage(), PageAccessPeer::PERM_PUBLISH)) {
         throw new Exception('You do not have permission to publish this page.');
     }
     if (!$this->app['autoPublish']) {
         $this->addMessage('Auto publishing is not enabled, for this functionality to work you must enable it in <a href="' . url('', array('module' => 'Curry_Backend_System')) . '">System</a>.', self::MSG_WARNING, false);
     }
     $form = Curry_Backend_PageHelper::getPublishDateForm($pageRevision);
     if (isPost('pid_setpublishdate') && $form->isValid($_POST)) {
         $values = $form->getValues();
         if ($values['publish_date'] == '' && $values['publish_time'] == '') {
             $pageRevision->setPublishDate(null);
         } else {
             $pageRevision->setPublishDate($values['publish_date'] . ' ' . $values['publish_time']);
         }
         $pageRevision->keepUpdateDateUnchanged();
         $pageRevision->save();
         $this->createModelUpdateEvent('PageRevision', $pageRevision->getPrimaryKey(), 'update');
     }
     $this->addMainContent($form);
 }
Esempio n. 3
0
 /**
  * Do automatic publishing of pages.
  */
 public function autoPublish()
 {
     $cacheName = __CLASS__ . '_' . 'AutoPublish';
     if (($nextPublish = Curry_Core::$cache->load($cacheName)) === false) {
         trace_notice('Doing auto-publish');
         $revisions = PageRevisionQuery::create()->filterByPublishDate(null, Criteria::ISNOTNULL)->orderByPublishDate()->find();
         $nextPublish = time() + 86400;
         foreach ($revisions as $revision) {
             if ($revision->getPublishDate('U') <= time()) {
                 // publish revision
                 $page = $revision->getPage();
                 trace_notice('Publishing page: ' . $page->getUrl());
                 $page->setActivePageRevision($revision);
                 $revision->setPublishedDate(time());
                 $revision->setPublishDate(null);
                 $page->save();
                 $revision->save();
             } else {
                 $nextPublish = $revision->getPublishDate('U');
                 break;
             }
         }
         $revisions->clearIterator();
         trace_notice('Next publish is in ' . ($nextPublish - time()) . ' seconds.');
         Curry_Core::$cache->save(true, $cacheName, array(), $nextPublish - time());
     }
 }
Esempio n. 4
0
 /**
  * Do automatic publishing of pages.
  * @todo rewrite this so it stores the time of next publish in the cache instead of using ttl
  */
 public function autoPublish()
 {
     $cacheName = strtr(__CLASS__, '\\', '_') . '_' . 'AutoPublish';
     if (($nextPublish = $this->cache->load($cacheName)) === false) {
         $this->logger->notice('Doing auto-publish');
         /** @var \PropelObjectCollection|\PageRevision[] $revisions */
         $revisions = \PageRevisionQuery::create()->filterByPublishDate(time(), \Criteria::LESS_EQUAL)->orderByPublishDate()->find();
         $nextPublish = time() + 86400;
         foreach ($revisions as $revision) {
             if ($revision->getPublishDate('U') <= time()) {
                 // publish revision
                 $page = $revision->getPage();
                 $this->logger->notice('Publishing page: ' . $page->getUrl());
                 $page->setActivePageRevision($revision);
                 $revision->setPublishedDate(time());
                 $revision->setPublishDate(null);
                 $page->save();
                 $revision->save();
             } else {
                 $nextPublish = $revision->getPublishDate('U');
                 break;
             }
         }
         $revisions->clearIterator();
         $this->logger->info('Next publish is in ' . ($nextPublish - time()) . ' seconds.');
         $this->cache->save(true, $cacheName, array(), $nextPublish - time());
     }
 }
Esempio n. 5
0
 /**
  * Save new revision.
  *
  * @param Page $page
  * @param array $values
  * @return PageRevision
  */
 public static function saveNewRevision(Page $page, array $values)
 {
     if ($values['copy_revision_id']) {
         $copyRevision = PageRevisionQuery::create()->findPk($values['copy_revision_id']);
         if (!$copyRevision) {
             throw new Exception("PageRevision not found.");
         }
         $pageRevision = $copyRevision->duplicate();
     } else {
         $pageRevision = new PageRevision();
         $pageRevision->setPage($page);
     }
     $pageRevision->setDescription($values['description']);
     $pageRevision->save();
     if ($values['set_working']) {
         $page->setWorkingPageRevision($pageRevision);
         $page->save();
     }
     return $pageRevision;
 }