Example #1
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);
         }
     }
 }