title = $title; $this->url = $url; $this->show = $show; } } class NewsImage extends Model { public $id; public $title; public $url; public function __construct($data, $urlPrefix = '/') { parent::__construct($data); // Deserialisatie van JSON heeft url in data, // lezen uit database heeft file en (als het goed is) urlPrefix if(isset($data->file)) { $this->url = $urlPrefix . $data->file; } } } class NewsItem extends Model { public $id; public $title; public $content; public $published; public $edited; public $keywords; public $source; public $category; public $theme; public $region; public $podcast; public $images; public $video; public $url; public function __construct($data, $images = null) { parent::__construct($data); parent::ConvertToDateTime($this->published); parent::ConvertToDateTime($this->edited); $this->source = $data->source ? new \Model\NewsSource($data->source, $data->source_url, $data->showsource) : null; $this->keywords = trim($data->keywords) ? explode(' ', $data->keywords) : null; $this->podcast = $data->podcast ? $data->podcast : null; if($images = $images ?? $data->images) { $this->images = []; foreach($images as $image) { $this->images[] = new NewsImage($image, '/img/news/'); } } $this->url = "/nieuws/{$this->id}/" . parent::url_slug($this->title); } public function detailsUrl() { return "/{$this->id}/" . urlencode($this->title); } public function excerpt() { $hasImages = count($this->images) > 0; $maxLength = $hasImages ? 200 : 500; return '

' . substr($this->content, 0, $maxLength) . (strlen($this->content) > $maxLength ? '...' : '') . '

'; } }