Files
nhgooi.nl/app/Models/JobOpening.php
T
root 30893eb7a7
Build and Deploy / build (push) Failing after 44s
Changes by CLaude
2026-08-18 09:31:05 -01:00

78 lines
2.2 KiB
PHP
Executable File

<?php
namespace Model;
class JobOpening extends Model {
public $id;
public $title;
public $content;
public $starts;
public $ends;
public $images;
public $url;
public function __construct($data, $images = null, $podcast = null) {
// Convert arrays to objects for consistent handling
if(is_array($data)) {
$data = (object) $data;
}
parent::__construct($data);
// Ensure id is a string, not an array
if(is_array($this->id)) {
$this->id = $this->id[0] ?? '';
}
// Ensure title is a string, not an array
if(is_array($this->title)) {
$this->title = $this->title[0] ?? '';
}
parent::ConvertToDateTime($this->starts);
parent::ConvertToDateTime($this->ends);
$this->keywords = null;
if(isset($data->keywords)) {
if(is_array($data->keywords)) {
$this->keywords = $data->keywords;
} else if(trim((string) $data->keywords)) {
$this->keywords = explode(' ', $data->keywords);
}
}
if($podcast)
{
$this->podcast = new \Model\Podcast($podcast);
} else if(isset($data->podcast) && $data->podcast) {
$this->podcast = new \Model\Podcast($data->podcast);
}
$images = ($images != null) ? $images
: (isset($data->images) ? $data->images : null);
if($images) {
$this->images = [];
foreach($images as $image) {
$this->images[] = new NewsImage($image, '/img/news/');
}
}
$this->url = "/vacatures/{$this->id}/" . parent::url_slug($this->title);
$this->metadata = (new MetaData())
->set('title', $this->title)
->set('description', strip_tags($this->excerpt()))
->set('image', isset($this->images) && count($this->images) ? $this->images[0]->url : null )
->set('audio', isset($this->podcast) ? $this->podcast->url : null)
;
}
public function excerpt() {
$hasImages = count($this->images) > 0;
$maxLength = $hasImages ? 200 : 500;
return '<p class="news-excerpt ' . ($hasImages ? 'short' : 'long') . '">' .
substr($this->content, 0, $maxLength) .
(strlen($this->content) > $maxLength ? '...' : '') .
'</p>';
}
}