File: /var/www/vhosts/creativefellows.nl/fvr.creativefellows.nl/src/Domain/Page/Data/PageData.php
<?php
namespace App\Domain\Page\Data;
use App\Domain\Data;
final class PageData extends Data
{
//private $entryData;
private $fields = [];
protected $base_url = "/";
protected $active = false;
protected $default_grid = "view.page.php";
protected $view_folder = "/../../../../views/";
protected $form;
protected $url = null;
function __construct($data =null)
{
foreach((array) $data as $key => $val)
{
$this->$key = $val;
}
$this->url_original = $this->url;
}
public function setBaseUrl($base_url)
{
$this->base_url = $base_url;
}
public function baseUrl()
{
return $this->base_url;
}
public function templateId()
{
return $this->template_id;
}
public function entryId()
{
return $this->entry_id;
}
public function uniqueId()
{
return $this->unique_id;
}
public function getHtml()
{
return $this->tekst;
}
public function getValue($parameter)
{
return $this->$parameter;
}
public function getUrl()
{
return $this->url;
}
public function setEntry($entryData)
{
$this->entryData = $entryData;
}
public function setField($field)
{
$this->fields[ $field->name() ] = $field;
}
public function getProperty(string $property,$html_tag=null,$element_class=null)
{
return $this->fields[$property]->value($html_tag,$element_class);
}
public function propertyEmpty(string $property)
{
return isset($this->fields[$property]) && $this->fields[$property]->value() ? false : true;
}
public function hasData()
{
return !empty($this->fields) ? true : false;
}
public function fields()
{
return $this->fields;
}
public function setMetaTitle($title)
{
$this->meta_title = $title;
}
public function setMetaDescription($description)
{
$this->meta_description = $description;
}
public function metaTitle()
{
return $this->meta_title;
}
public function metaDescription()
{
return $this->meta_description;
}
public function sectionPageClass($prefix=null)
{
return $prefix."".$this->cssid;
}
public function getTemplateName()
{
return $this->section_view;
}
public function setUrl($url)
{
$this->url = $url;
}
public function setName($name)
{
$this->name = $name;
}
public function name()
{
return $this->name;
}
public function title()
{
$property = array_key_first($this->fields);
return $this->fields[$property]->value();
}
public function nameAsUrl()
{
return strtolower(preg_replace("/ /","-",$this->name));
}
public function url()
{
//return $this->url;// ? $this->url : $this->nameAsUrl();
return $this->url ? $this->url : "download";
}
public function setGrid(string $name)
{
$this->section_view = file_exists(__DIR__ . $this->view_folder . "view.". $name .".php") ? "view.". $name .".php" : $this->default_grid;
}
public function getGrid()
{
return $this->stramien;
}
public function sectionUrl()
{
return $this->section_url;
}
public function urlWithHash()
{
return $this->url()."?id=".$this->uniqueId()."&hash=". $this->getHash();//.(!$this->url."&ty");
}
public function setHashKey($key)
{
$this->hash_key = $key;
}
private function getHash()
{
return hash_hmac('sha256', $this->uniqueId(), $this->hashKey());
}
public function hashKey()
{
return $this->hash_key;
}
public function lastModified()
{
return gmdate('D, d M Y H:i:s ', strtotime($this->last_update) ) . 'GMT';
}
public function dateCreated($format="%e %m %Y")
{
return strftime($format,strtotime($this->date_created));
}
public function urlOriginal()
{
return $this->url_original == "" ? $this->titleAsLink() : $this->url_original;
}
private function titleAsLink(){
return preg_replace("/ /","-",strtolower($this->title()));
}
public function setActive(){
$this->active = true;
}
public function isActive(){
return $this->active;
}
public function setForm($form)
{
$this->form = $form;
}
public function form()
{
return $this->form;
}
}