openrat-cms

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

DslPageContext.class.php (1794B)


      1 <?php
      2 
      3 namespace cms\generator\dsl;
      4 
      5 use cms\generator\PageContext;
      6 use cms\model\BaseObject;
      7 use cms\model\Language;
      8 use cms\model\Model;
      9 use dsl\context\BaseScriptableObject;
     10 use dsl\DslRuntimeException;
     11 
     12 class DslPageContext  extends BaseScriptableObject
     13 {
     14 	private $pageContext;
     15 
     16 	/**
     17 	 * DslPageContext constructor.
     18 	 * @param $pageContext PageContext
     19 	 */
     20 	public function __construct( $pageContext ) {
     21 
     22 		$this->pageContext = clone $pageContext; // the original must no be changed
     23 
     24 		$this->language = ( new Language( $pageContext->languageId ) )->load()->getName();
     25 		$this->model    = ( new Model   ( $pageContext->modelId    ) )->load()->getName();
     26 	}
     27 
     28 
     29 	/**
     30 	 * Language name.
     31 	 * @var string
     32 	 */
     33 	public $language;
     34 
     35 
     36 	/**
     37 	 * Model name.
     38 	 * @var string
     39 	 */
     40 	public $model;
     41 
     42 
     43 	protected function getProject() {
     44 		return (new BaseObject($this->pageContext->sourceObjectId))->load()->getProject();
     45 	}
     46 
     47 	public function setLanguage( $name ) {
     48 		if   ( $languageId = array_search( $name,$this->getProject()->getLanguages() ) )
     49 			$this->pageContext->languageId = $languageId;
     50 		else
     51 			throw new DslRuntimeException("language with name '".$this->language."' does not exist.");
     52 
     53 	}
     54 
     55 
     56 	public function setModel( $name ) {
     57 		if   ( $modelId = array_search( $name,$this->getProject()->getModels() ) )
     58 			$this->pageContext->modelId    = $modelId;
     59 		else
     60 			throw new DslRuntimeException("model with name '".$this->model."' does not exist.");
     61 	}
     62 
     63 
     64 	/**
     65 	 * Creates a link to an object.
     66 	 *
     67 	 * @param $object DslObject
     68 	 */
     69 	public function linkTo( $object ) {
     70 
     71 		$from = (new BaseObject( $this->pageContext->sourceObjectId ))->load();
     72 		$to   = (new BaseObject( $object->id                        ))->load();
     73 		return $this->pageContext->getLinkScheme()->linkToObject( $from, $to );
     74 	}
     75 
     76 }