/classes/Video.php
https://github.com/fracmak/mythweb · PHP · 188 lines · 174 code · 10 blank · 4 comment · 12 complexity · 9cf141fbc3039d1e1280fc1539849997 MD5 · raw file
- <?php
- class Video {
- var $intid;
- var $plot;
- var $category;
- var $rating;
- var $title;
- var $subtitle;
- var $season;
- var $episode;
- var $director;
- var $inetref;
- var $year;
- var $userrating;
- var $length;
- var $showlevel;
- var $filename;
- var $cover_file;
- var $cover_url;
- var $cover_scaled_width = video_img_width;
- var $cover_scaled_height = video_img_height;
- var $childid;
- var $url;
- var $browse;
- var $genres;
- function Video($intid) {
- $this->__construct($intid);
- }
- function __construct($intid) {
- global $db;
- global $mythvideo_dir;
- // Video storage directories
- $video_dirs = $db->query_list('
- SELECT dirname
- FROM storagegroup
- WHERE groupname="Coverart"
- ');
- $video = $db->query_assoc('
- SELECT *
- FROM videometadata
- WHERE intid = ?',
- $intid);
- $this->intid = $intid;
- $this->plot = $video['plot'];
- $this->category = $video['category'];
- $this->rating = $video['rating'];
- $this->title = $video['title'];
- $this->subtitle = $video['subtitle'];
- $this->season = $video['season'];
- $this->episode = $video['episode'];
- $this->director = $video['director'];
- $this->inetref = $video['inetref'];
- $this->year = $video['year'] ? $video['year'] : t('Unknown');
- $this->userrating = $video['userrating'] ? $video['userrating'] : t('Unknown');
- $this->length = $video['length'];
- $this->showlevel = $video['showlevel'];
- $this->filename = $video['filename'];
- $this->cover_file = $video['coverfile'];
- $this->browse = $video['browse'];
- // And the artwork URL
- $this->cover_url = '';
- if ($this->cover_file && $this->cover_file != 'No Cover') {
- $exists = false;
- foreach ($video_dirs as $dir) {
- $path = preg_replace('#/+#', '/', "$dir/$this->cover_file");
- if (file_exists($path) && is_executable(dirname($path))) {
- $exists = true;
- break;
- }
- }
- if ($exists) {
- $this->cover_url = 'pl/coverart/'.$this->cover_file;
- $this->cover_file = $path;
- list($width, $height) = @getimagesize($this->cover_file);
- if ($width > 0 && $height > 0) {
- $wscale = video_img_width / $width;
- $hscale = video_img_height / $height;
- $scale = $wscale < $hscale ? $wscale : $hscale;
- $this->cover_scaled_width = floor($width * $scale);
- $this->cover_scaled_height = floor($height * $scale);
- }
- }
- }
- $this->childid = $video['childid'];
- // Figure out the URL
- $this->url = '#';
- if (file_exists('data/video/'))
- $this->url = implode('/', array_map('rawurlencode',
- array_map('utf8tolocal',
- explode('/',
- 'data/video/' . preg_replace('#^'.$mythvideo_dir.'/?#', '', $this->filename)
- ))));
- $genre = $db->query('SELECT idgenre
- FROM videometadatagenre
- WHERE idvideo = ?',
- $this->intid
- );
- while( $id = $genre->fetch_col()) {
- $this->genres[] = $id;
- }
- $genre->finish();
- }
- // This function returns metadata preped for 'ajax' requests to update
- function metadata() {
- global $Category_String;
- return array( 'intid' => $this->intid,
- 'img' => '<img width="'.$this->cover_scaled_width.'" height="'.$this->cover_scaled_height.'" alt="'.t('Missing Cover').'"'
- .(($_SESSION["show_video_covers"] && file_exists($this->cover_url)) ? ' src="data/video_covers/'.basename($this->cover_file).'"' : '')
- .'>',
- 'title' => '<a href="'.$this->url.'">'.$this->title.'</a>',
- 'subtitle' => $this->subtitle,
- 'season' => $this->season,
- 'episode' => $this->episode,
- 'playtime' => nice_length($this->length * 60),
- 'category' => strlen($Category_String[$this->category]) ? $Category_String[$this->category] : t('Uncategorized'),
- 'imdb' => ($this->inetref != '00000000') ? '<a href="http://www.imdb.com/Title?'.$this->inetref.'">'.$this->inetref.'</a>' : '',
- 'plot' => $this->plot,
- 'rating' => $this->rating,
- 'director' => $this->director,
- 'inetref' => $this->inetref,
- 'year' => $this->year,
- 'userrating' => $this->userrating,
- 'length' => $this->length,
- 'showlevel' => $this->showlevel
- );
- }
- function save() {
- global $db;
- $db->query('UPDATE videometadata
- SET videometadata.plot = ?,
- videometadata.category = ?,
- videometadata.rating = ?,
- videometadata.title = ?,
- videometadata.subtitle = ?,
- videometadata.season = ?,
- videometadata.episode = ?,
- videometadata.director = ?,
- videometadata.inetref = ?,
- videometadata.year = ?,
- videometadata.userrating = ?,
- videometadata.length = ?,
- videometadata.showlevel = ?,
- videometadata.filename = ?,
- videometadata.coverfile = ?,
- videometadata.browse = ?
- WHERE videometadata.intid = ?',
- $this->plot,
- $this->category,
- $this->rating,
- $this->title,
- $this->subtitle,
- $this->season,
- $this->episode,
- $this->director,
- $this->inetref,
- $this->year,
- $this->userrating,
- $this->length,
- $this->showlevel,
- $this->filename,
- ( @filesize($this->cover_file) > 0 ? $this->cover_file : 'No Cover' ),
- $this->browse,
- $this->intid
- );
- $db->query('DELETE FROM videometadatagenre
- WHERE videometadatagenre.idvideo = ?',
- $this->intid
- );
- if (count($this->genres) > 0)
- foreach ($this->genres as $genre)
- $db->query('INSERT INTO videometadatagenre ( idvideo, idgenre )
- VALUES ( ?, ? )',
- $this->intid,
- $genre
- );
- }
- }
- ?>