/** * Return the PageRevision object. * * @return PageRevision */ public function getPageRevision() { return PageRevisionQuery::create()->findPk($this->pageRevisionId); }
/** * 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); }
/** * 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()); } }
/** * 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()); } }
/** * 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; }