70 lines
1.9 KiB
PHP
70 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace Model;
|
|
|
|
require "NewsImage.php";
|
|
|
|
class Podcast extends Model {
|
|
public $id;
|
|
public $title;
|
|
public $content;
|
|
protected $soundfilename;
|
|
public $created;
|
|
public $program;
|
|
public $url;
|
|
public $auth;
|
|
public $download;
|
|
public $image;
|
|
private $key;
|
|
|
|
public function __construct($data) {
|
|
parent::__construct($data);
|
|
parent::ConvertToDateTime($this->created);
|
|
|
|
$this->url = $this->id . '/' . parent::url_slug($this->title);
|
|
if($this->soundfilename) {
|
|
// Only generate when not constructing from a JSON object
|
|
$this->key = sha1($this->id . ':' . date('Y-m-d') . ':' . $this->soundfilename);
|
|
$this->auth = $this->key;
|
|
}
|
|
|
|
if(isset($data->program)) {
|
|
$this->program = null;
|
|
if(is_object($data->program)) {
|
|
$this->program = new \Model\Program($data->program);
|
|
} elseif($data->program) {
|
|
$this->program = new \Model\Program(['id' => $data->program, 'name' => $data->program_name, 'description' => $data->program_description]);
|
|
}
|
|
}
|
|
|
|
if(isset($data->imagefile)) {
|
|
$imagedata = new \stdClass();
|
|
$imagedata->id = $this->id;
|
|
$imagedata->file = $data->imagefile;
|
|
$imagedata->title = $data->imagecaption;
|
|
$this->image = new NewsImage($imagedata, '/img/podcast/');
|
|
}
|
|
}
|
|
|
|
public function titleWithoutProgram() {
|
|
if(!$this->program) { return $this->title; }
|
|
return trim(str_replace($this->program->name, '', $this->title), "- \t\n\r\0\x0B");
|
|
}
|
|
|
|
public function isValidAuth($key) {
|
|
return ($key == $this->key);
|
|
}
|
|
|
|
public function getSoundfile() {
|
|
return '/var/audio/podcast/' . $this->soundfilename;
|
|
}
|
|
|
|
public function excerpt() {
|
|
$maxLength = 500;
|
|
return '<p class="news-excerpt long">' .
|
|
substr($this->content, 0, $maxLength) .
|
|
(strlen($this->content) > $maxLength ? '...' : '') .
|
|
'</p>';
|
|
}
|
|
}
|