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); } } }