openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

TemplatePubAction.class.php (1736B)


      1 <?php
      2 namespace cms\action\template;
      3 use cms\action\Method;
      4 use cms\action\TemplateAction;
      5 use cms\generator\PageContext;
      6 use cms\generator\PageGenerator;
      7 use cms\generator\Producer;
      8 use cms\generator\Publisher;
      9 use cms\generator\PublishOrder;
     10 use cms\model\Permission;
     11 use cms\model\Page;
     12 use cms\model\Project;
     13 use language\Messages;
     14 use util\exception\PublisherException;
     15 use util\Session;
     16 
     17 
     18 class TemplatePubAction extends TemplateAction implements Method {
     19     public function view() {
     20 
     21     }
     22     public function post() {
     23 
     24     	$project = Project::create( $this->template->projectid );
     25 
     26     	$languageIds = $project->getLanguageIds();
     27     	$modelIds    = $project->getModelIds();
     28 
     29 		$objectIds = $this->template->getDependentObjectIds();
     30 
     31 		Session::close();
     32 
     33 		$publisher = new Publisher( $this->template->projectid );
     34 
     35 		foreach( $objectIds as $pageId ) {
     36 
     37 			$page = new Page( $pageId );
     38 			$page->load();
     39 			$page->setPublishedTimestamp();
     40 
     41 			foreach( $modelIds as $modelId ) {
     42 				foreach( $languageIds as $languageId ) {
     43 					$pageContext = new PageContext( $pageId, Producer::SCHEME_PUBLIC );
     44 					$pageContext->modelId    = $modelId;
     45 					$pageContext->languageId = $languageId;
     46 
     47 					$pageGenerator = new PageGenerator( $pageContext );
     48 
     49 					$publisher->addOrderForPublishing( new PublishOrder( $pageGenerator->getCache()->load()->getFilename(),$pageGenerator->getPublicFilename(), $page->lastchangeDate ) );
     50 				}
     51 			}
     52 		}
     53 
     54 		try {
     55 			$publisher->publish();
     56 
     57 			$this->addNoticeFor( $this->template,Messages::PUBLISHED,[],
     58 				implode("\n",$publisher->getDestinationFilenames() ) );
     59 		} catch( PublisherException $e ) {
     60 			$this->addErrorFor( $this->template,Messages::PUBLISHED_ERROR,[],$e->getMessage() );
     61 		}
     62     }
     63 }