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