public function getBaseInformation()
 {
     $query = new Elios_Service_Thetvdb_QueryBuilder();
     $query->select("Episode");
     $query->from("/api/" . Elios_Service_Thetvdb_QueryBuilder::APIKEY . "/episodes/" . $this->thetvdb_id . "/" . $this->language . ".xml");
     $episode = $query->execute();
     foreach ($episode as $ep) {
         $this->build($ep);
     }
     return true;
 }
 /**
  * 
  * Return a collection of Elios_Service_Thetvdb_Serie
  * @param string $name
  * @param string $lang language shortcode
  */
 public function findByName($name, $lang = "en")
 {
     $query = new Elios_Service_Thetvdb_QueryBuilder();
     $query->select("Series");
     $query->from("/api/GetSeries.php");
     $query->where(array("seriesname" => $name, "language" => $lang));
     $series = $query->execute();
     foreach ($series as $e) {
         $thetvdb_Serie = new Elios_Service_Thetvdb_Serie($e);
         $this->_collection[] = $thetvdb_Serie;
     }
     return $this->_collection;
 }
Example #3
0
 public function getBaseInformation()
 {
     $query = new Elios_Service_Thetvdb_QueryBuilder();
     $query->select("*");
     $query->from("/api/" . Elios_Service_Thetvdb_QueryBuilder::APIKEY . "/series/" . $this->thetvdb_id . "/all/" . $this->language . ".zip", Elios_Service_Thetvdb_QueryBuilder::ZIPMASK);
     $data = $query->execute();
     $XmlReader = new Elios_Xml_Reader();
     $dir = $data['dir'];
     unset($data['dir']);
     if (is_array($data)) {
         foreach ($data as $k => $d) {
             //@todo handle actors file
             if (trim($k) == $this->language . ".xml") {
                 $XmlReader->loadXml($d);
                 $episodes = $XmlReader->getElements("Episode");
                 //episodes
                 foreach ($episodes as $e) {
                     $thetvdb_Episode = new Elios_Service_Thetvdb_Episode($e);
                     $this->_epiodes_collection[] = $thetvdb_Episode;
                 }
                 //serie
                 $series = $XmlReader->getElements("Series");
                 foreach ($series as $s) {
                     $this->build($s);
                 }
             } elseif (trim($k) == "banners.xml") {
                 $XmlReader->loadXml($d);
                 $banners = $XmlReader->getElements("Banner");
                 //banners
                 foreach ($banners as $b) {
                     $thetvdb_Banner = new Elios_Service_Thetvdb_Banner($b);
                     $this->_banners_collection[] = $thetvdb_Banner;
                 }
             }
             unlink($d);
         }
         rmdir($dir);
         return true;
     } else {
         $this->_epiodes_collection = null;
         return false;
     }
 }
 /**
  * 
  * Returns Mixed: xml document with loaded elements/ZIP file
  * @param Elios_Service_Thetvdb_QueryBuilder $query
  */
 public function executeQuery($query)
 {
     //@todo check user rights
     if (strpos($query->getQueryAsString(), '.zip')) {
         //put zip file in cache folder
         $dirname = md5(rand(1, time()));
         mkdir(dirname(__FILE__) . '/cache/' . $dirname, 0770);
         $file = fopen(dirname(__FILE__) . '/cache/' . $dirname . '/file.zip', 'a+');
         fwrite($file, file_get_contents($query->getQueryAsString()));
         fclose($file);
         $zip = new ZipArchive();
         if ($zip->open(dirname(__FILE__) . '/cache/' . $dirname . '/file.zip')) {
             $zip->extractTo(dirname(__FILE__) . '/cache/' . $dirname);
             $files = array();
             for ($i = 0; $i < $zip->numFiles; $i++) {
                 $c = $zip->statIndex($i);
                 $files[] = basename($c['name']);
             }
             $zip->close();
             $XmlReader = new Elios_Xml_Reader();
             $xmlFiles = array();
             $xmlFiles['dir'] = dirname(__FILE__) . '/cache/' . $dirname;
             foreach ($files as $f) {
                 if ($query->select == '*') {
                     $xmlFiles[$f] = dirname(__FILE__) . '/cache/' . $dirname . '/' . $f;
                 } else {
                     //@todo
                 }
             }
             unlink(dirname(__FILE__) . '/cache/' . $dirname . '/file.zip');
             return $xmlFiles;
         } else {
             //@todo throw exeception
             return false;
         }
     } else {
         $XmlReader = new Elios_Xml_Reader();
         $XmlReader->loadXml($query->getQueryAsString());
         //print_r($XmlReader->getXml());
         if ($query->select == '*') {
             return $XmlReader;
         } else {
             return $XmlReader->getElements($query->select);
         }
     }
 }
 /**
  * return all updates for the specified timeFrame.
  * episodes are excluded with param $timeFrame set to "all"
  * @see http://thetvdb.com/wiki/index.php/API:Update_Records
  * @param $timeFrame : day, week, month, all
  * @return array
  */
 public function updateRecords($timeFrame = 'day')
 {
     $query = new Elios_Service_Thetvdb_QueryBuilder();
     $query->select("Data");
     $query->from("/api/" . Elios_Service_Thetvdb_QueryBuilder::APIKEY . "/updates/updates_" . $timeFrame . ".xml");
     $query->where(array());
     $items = $query->execute();
     $data = array();
     $data['series'] = array();
     $data['episodes'] = array();
     $data['banners'] = array();
     $data['time'] = null;
     foreach ($items as $e) {
         if ($e->hasAttributes()) {
             $attributes = $e->attributes;
             if (!is_null($attributes)) {
                 foreach ($attributes as $index => $attr) {
                     if ($attr->name == 'time') {
                         $data['time'] = $attr->value;
                     }
                 }
             }
         }
         foreach ($e->childNodes as $node) {
             switch ($node->nodeName) {
                 case "Banner":
                     $banner = array();
                     foreach ($node->childNodes as $subNode) {
                         switch ($subNode->nodeName) {
                             case "time":
                                 $banner['time'] = trim($subNode->nodeValue);
                                 break;
                             case "Series":
                                 $banner['serie_id'] = trim($subNode->nodeValue);
                                 break;
                             case "format":
                                 $banner['format'] = trim($subNode->nodeValue);
                                 break;
                             case "language":
                                 $banner['language'] = trim($subNode->nodeValue);
                                 break;
                             case "path":
                                 $banner['path'] = trim($subNode->nodeValue);
                                 break;
                             case "type":
                                 $banner['type'] = trim($subNode->nodeValue);
                                 break;
                             default:
                                 break;
                         }
                     }
                     $data['banners'][] = $banner;
                     break;
                 case "Series":
                     $serie = array();
                     foreach ($node->childNodes as $subNode) {
                         switch ($subNode->nodeName) {
                             case "time":
                                 $serie['time'] = trim($subNode->nodeValue);
                                 break;
                             case "id":
                                 $serie['id'] = trim($subNode->nodeValue);
                                 break;
                             default:
                                 break;
                         }
                     }
                     $data['series'][] = $serie;
                     break;
                 case "Episode":
                     $episode = array();
                     foreach ($node->childNodes as $subNode) {
                         switch ($subNode->nodeName) {
                             case "time":
                                 $episode['time'] = trim($subNode->nodeValue);
                                 break;
                             case "id":
                                 $episode['id'] = trim($subNode->nodeValue);
                                 break;
                             case "Series":
                                 $episode['serie_id'] = trim($subNode->nodeValue);
                                 break;
                             default:
                                 break;
                         }
                     }
                     $data['episodes'][] = $episode;
                     break;
                 default:
                     break;
             }
         }
     }
     return $data;
 }