Esempio n. 1
0
 public function remove_from_disk()
 {
     $deleted = true;
     $season_ids = $this->get_seasons();
     foreach ($season_ids as $id) {
         $season = new TVShow_Season($id);
         $deleted = $season->remove_from_disk();
         if (!$deleted) {
             debug_event('tvshow', 'Error when deleting the season `' . $id . '`.', 1);
             break;
         }
     }
     if ($deleted) {
         $sql = "DELETE FROM `tvshow` WHERE `id` = ?";
         $deleted = Dba::write($sql, array($this->id));
         if ($deleted) {
             Art::gc('tvshow', $this->id);
             Userflag::gc('tvshow', $this->id);
             Rating::gc('tvshow', $this->id);
             Shoutbox::gc('tvshow', $this->id);
             Useractivity::gc('tvshow', $this->id);
         }
     }
     return $deleted;
 }
Esempio n. 2
0
 public function get_description()
 {
     if (!empty($this->summary)) {
         return $this->summary;
     }
     $season = new TVShow_Season($this->season);
     return $season->get_description();
 }
Esempio n. 3
0
 public static function library_metadata($params)
 {
     $r = Plex_XML_Data::createLibContainer();
     $n = count($params);
     $litem = null;
     $createMode = $_SERVER['REQUEST_METHOD'] == 'POST';
     $editMode = $_SERVER['REQUEST_METHOD'] == 'PUT';
     if ($n > 0) {
         $key = $params[0];
         $id = Plex_XML_Data::getAmpacheId($key);
         if ($editMode) {
             self::check_access(50);
         }
         if ($n == 1) {
             // Should we check that files still exists here?
             $checkFiles = $_REQUEST['checkFiles'];
             $extra = $_REQUEST['includeExtra'];
             if (Plex_XML_Data::isArtist($key)) {
                 $litem = new Artist($id);
                 $litem->format();
                 if ($editMode) {
                     $dmap = array('title' => 'name', 'summary' => null);
                     $litem->update(self::get_data_from_map($dmap));
                 }
                 Plex_XML_Data::addArtist($r, $litem);
             } elseif (Plex_XML_Data::isAlbum($key)) {
                 $litem = new Album($id);
                 $litem->format();
                 if ($editMode) {
                     $dmap = array('title' => 'name', 'year' => null);
                     $litem->update(self::get_data_from_map($dmap));
                 }
                 Plex_XML_Data::addAlbum($r, $litem);
             } elseif (Plex_XML_Data::isTrack($key)) {
                 $litem = new Song($id);
                 $litem->format();
                 if ($editMode) {
                     $dmap = array('title' => null);
                     $litem->update(self::get_data_from_map($dmap));
                 }
                 Plex_XML_Data::addSong($r, $litem);
             } elseif (Plex_XML_Data::isTVShow($key)) {
                 $litem = new TVShow($id);
                 $litem->format();
                 if ($editMode) {
                     $dmap = array('title' => 'name', 'year' => null, 'summary' => null);
                     $litem->update(self::get_data_from_map($dmap));
                 }
                 Plex_XML_Data::addTVShow($r, $litem);
             } elseif (Plex_XML_Data::isTVShowSeason($key)) {
                 $litem = new TVShow_Season($id);
                 $litem->format();
                 Plex_XML_Data::addTVShowSeason($r, $litem);
             } elseif (Plex_XML_Data::isVideo($key)) {
                 $litem = Video::create_from_id($id);
                 if ($editMode) {
                     $dmap = array('title' => null, 'year' => null, 'originallyAvailableAt' => 'release_date', 'originalTitle' => 'original_name', 'summary' => null);
                     $litem->update(self::get_data_from_map($dmap));
                 }
                 $litem->format();
                 $subtype = strtolower(get_class($litem));
                 if ($subtype == 'tvshow_episode') {
                     Plex_XML_Data::addEpisode($r, $litem, true);
                 } elseif ($subtype == 'movie') {
                     Plex_XML_Data::addMovie($r, $litem, true);
                 }
             } elseif (Plex_XML_Data::isPlaylist($key)) {
                 $litem = new Playlist($id);
                 $litem->format();
                 if ($editMode) {
                     $dmap = array('title' => 'name');
                     $litem->update(self::get_data_from_map($dmap));
                 }
                 Plex_XML_Data::addPlaylist($r, $litem);
             }
         } else {
             $subact = $params[1];
             if ($subact == "children") {
                 if (Plex_XML_Data::isArtist($key)) {
                     $litem = new Artist($id);
                     $litem->format();
                     Plex_XML_Data::setArtistRoot($r, $litem);
                 } else {
                     if (Plex_XML_Data::isAlbum($key)) {
                         $litem = new Album($id);
                         $litem->format();
                         Plex_XML_Data::setAlbumRoot($r, $litem);
                     } else {
                         if (Plex_XML_Data::isTVShow($key)) {
                             $litem = new TVShow($id);
                             $litem->format();
                             Plex_XML_Data::setTVShowRoot($r, $litem);
                         } else {
                             if (Plex_XML_Data::isTVShowSeason($key)) {
                                 $litem = new TVShow_Season($id);
                                 $litem->format();
                                 Plex_XML_Data::setTVShowSeasonRoot($r, $litem);
                             }
                         }
                     }
                 }
             } elseif ($subact == "thumbs" || $subact == "posters" || $subact == "arts" || $subact == 'backgrounds') {
                 $kind = Plex_XML_Data::getPhotoKind($subact);
                 if ($createMode) {
                     // Upload art
                     $litem = Plex_XML_Data::createLibraryItem($key);
                     if ($litem != null) {
                         $uri = Plex_XML_Data::getMetadataUri($key) . '/' . Plex_XML_Data::getPhotoPlexKind($kind) . '/' . $key;
                         if (is_a($litem, 'video')) {
                             $type = 'video';
                         } else {
                             $type = get_class($litem);
                         }
                         $art = new Art($litem->id, $type, $kind);
                         $raw = file_get_contents("php://input");
                         $art->insert($raw);
                         header('Content-Type: text/html');
                         echo $uri;
                         exit;
                     }
                 }
                 Plex_XML_Data::addPhotos($r, $key, $kind);
             } elseif ($subact == "thumb" || $subact == "poster" || $subact == "art" || $subact == "background") {
                 if ($n == 3) {
                     $kind = Plex_XML_Data::getPhotoKind($subact);
                     // Ignore art id as we can only have 1 thumb
                     $art = null;
                     if (Plex_XML_Data::isArtist($key)) {
                         $art = new Art($id, "artist", $kind);
                     } else {
                         if (Plex_XML_Data::isAlbum($key)) {
                             $art = new Art($id, "album", $kind);
                         } else {
                             if (Plex_XML_Data::isTrack($key)) {
                                 $art = new Art($id, "song", $kind);
                             } else {
                                 if (Plex_XML_Data::isTVShow($key)) {
                                     $art = new Art($id, "tvshow", $kind);
                                 } else {
                                     if (Plex_XML_Data::isTVShowSeason($key)) {
                                         $art = new Art($id, "tvshow_season", $kind);
                                     } else {
                                         if (Plex_XML_Data::isVideo($key)) {
                                             $art = new Art($id, "video", $kind);
                                         }
                                     }
                                 }
                             }
                         }
                     }
                     if ($art != null) {
                         $art->get_db();
                         ob_clean();
                         if (!isset($size)) {
                             self::setHeader($art->raw_mime);
                             echo $art->raw;
                         } else {
                             $dim = array();
                             $dim['width'] = $size;
                             $dim['height'] = $size;
                             $thumb = $art->get_thumb($dim);
                             self::setHeader($art->thumb_mime);
                             echo $thumb['thumb'];
                         }
                         exit;
                     }
                 }
             }
         }
     }
     if ($litem != null) {
         $catalog_ids = $litem->get_catalogs();
         if (count($catalog_ids) > 0) {
             $catalog = Catalog::create_from_id($catalog_ids[0]);
             Plex_XML_Data::addCatalogIdentity($r, $catalog);
         }
     }
     Plex_XML_Data::setContainerSize($r);
     self::apiOutputXml($r->asXML());
 }
Esempio n. 4
0
            break;
        }
        $tvshow_season_id = scrub_in($_REQUEST['tvshow_season_id']);
        show_confirmation(T_('TVShow Season Deletion'), T_('Are you sure you want to permanently delete this tvshow season?'), AmpConfig::get('web_path') . "/tvshow_seasons.php?action=confirm_delete&tvshow_season_id=" . $tvshow_season_id, 1, 'delete_tvshow_season');
        break;
    case 'confirm_delete':
        if (AmpConfig::get('demo_mode')) {
            break;
        }
        $tvshow_season = new TVShow_Season($_REQUEST['tvshow_season_id']);
        if (!Catalog::can_remove($tvshow_season)) {
            debug_event('tvshow_season', 'Unauthorized to remove the tvshow `.' . $tvshow_season->id . '`.', 1);
            UI::access_denied();
            exit;
        }
        if ($tvshow_season->remove_from_disk()) {
            show_confirmation(T_('TVShow Season Deletion'), T_('TVShow Season has been deleted.'), AmpConfig::get('web_path'));
        } else {
            show_confirmation(T_('TVShow Season Deletion'), T_('Cannot delete this tvshow season.'), AmpConfig::get('web_path'));
        }
        break;
    case 'show':
        $season = new TVShow_Season($_REQUEST['season']);
        $season->format();
        $object_ids = $season->get_episodes();
        $object_type = 'tvshow_episode';
        require_once AmpConfig::get('prefix') . UI::find_template('show_tvshow_season.inc.php');
        break;
}
// end switch
UI::show_footer();
Esempio n. 5
0
 public static function setTVShowSeasonRoot(SimpleXMLElement $xml, TVShow_Season $season)
 {
     $tvshow = new TVShow($season->tvshow);
     $tvshow->format();
     $id = self::getTVShowSeasonId($season->id);
     $xml->addAttribute('key', $id);
     $xml->addAttribute('allowSync', '1');
     $xml->addAttribute('nocache', '1');
     $xml->addAttribute('parentIndex', '1');
     // ??
     $xml->addAttribute('parentTitle', '');
     $xml->addAttribute('grandparentStudio', '');
     $xml->addAttribute('grandparentTitle', $tvshow->f_name);
     $xml->addAttribute('title1', $tvshow->f_name);
     $xml->addAttribute('title2', $season->f_name);
     $xml->addAttribute('viewGroup', 'episode');
     $xml->addAttribute('viewMode', '65592');
     $xml->addAttribute('thumb', self::getMetadataUri($id) . '/thumb/' . $id);
     $xml->addAttribute('art', self::getMetadataUri($id) . '/art/' . $id);
     //$xml->addAttribute('banner', self::getMetadataUri($id) . '/banner/' . $id);
     $episodes = $season->get_episodes();
     foreach ($episodes as $episode_id) {
         $episode = new TVShow_Episode($episode_id);
         $episode->format();
         self::addEpisode($xml, $episode);
     }
 }
Esempio n. 6
0
 public static function _videoChilds($prmPath, $prmQuery, $start, $count)
 {
     $mediaItems = array();
     $maxCount = 0;
     $queryData = array();
     parse_str($prmQuery, $queryData);
     $parent = 'amp://video' . $prmPath;
     $pathreq = explode('/', $prmPath);
     if ($pathreq[0] == '' && count($pathreq) > 0) {
         array_shift($pathreq);
     }
     switch ($pathreq[0]) {
         case 'tvshows':
             switch (count($pathreq)) {
                 case 1:
                     // Get tvshow list
                     $tvshows = Catalog::get_tvshows();
                     list($maxCount, $tvshows) = self::_slice($tvshows, $start, $count);
                     foreach ($tvshows as $tvshow) {
                         $tvshow->format();
                         $mediaItems[] = self::_itemTVShow($tvshow, $parent);
                     }
                     break;
                 case 2:
                     // Get season list
                     $tvshow = new TVShow($pathreq[1]);
                     if ($tvshow->id) {
                         $season_ids = $tvshow->get_seasons();
                         list($maxCount, $season_ids) = self::_slice($season_ids, $start, $count);
                         foreach ($season_ids as $season_id) {
                             $season = new TVShow_Season($season_id);
                             $season->format();
                             $mediaItems[] = self::_itemTVShowSeason($season, $parent);
                         }
                     }
                     break;
                 case 3:
                     // Get episode list
                     $season = new TVShow_Season($pathreq[2]);
                     if ($season->id) {
                         $episode_ids = $season->get_episodes();
                         list($maxCount, $episode_ids) = self::_slice($episode_ids, $start, $count);
                         foreach ($episode_ids as $episode_id) {
                             $video = new Video($episode_id);
                             $video->format();
                             $mediaItems[] = self::_itemVideo($video, $parent);
                         }
                     }
                     break;
             }
             break;
         case 'clips':
             switch (count($pathreq)) {
                 case 1:
                     // Get clips list
                     $videos = Catalog::get_videos(null, 'clip');
                     list($maxCount, $videos) = self::_slice($videos, $start, $count);
                     foreach ($videos as $video) {
                         $video->format();
                         $mediaItems[] = self::_itemVideo($video, $parent);
                     }
                     break;
             }
             break;
         case 'movies':
             switch (count($pathreq)) {
                 case 1:
                     // Get clips list
                     $videos = Catalog::get_videos(null, 'movie');
                     list($maxCount, $videos) = self::_slice($videos, $start, $count);
                     foreach ($videos as $video) {
                         $video->format();
                         $mediaItems[] = self::_itemVideo($video, $parent);
                     }
                     break;
             }
             break;
         case 'personal_videos':
             switch (count($pathreq)) {
                 case 1:
                     // Get clips list
                     $videos = Catalog::get_videos(null, 'personal_video');
                     list($maxCount, $videos) = self::_slice($videos, $start, $count);
                     foreach ($videos as $video) {
                         $video->format();
                         $mediaItems[] = self::_itemVideo($video, $parent);
                     }
                     break;
             }
             break;
         default:
             $mediaItems[] = self::_videoMetadata('clips');
             $mediaItems[] = self::_videoMetadata('tvshows');
             $mediaItems[] = self::_videoMetadata('movies');
             $mediaItems[] = self::_videoMetadata('personal_videos');
             break;
     }
     if ($maxCount == 0) {
         $maxCount = count($mediaItems);
     }
     return array($maxCount, $mediaItems);
 }
Esempio n. 7
0
 /**
  * gc
  *
  * Cleans up the inherited object tables
  */
 public static function gc()
 {
     Movie::gc();
     TVShow_Episode::gc();
     TVShow_Season::gc();
     TVShow::gc();
     Personal_Video::gc();
     Clip::gc();
 }