/** * Extract album information from a SimpleXMLElement object. * * @param SimpleXMLElement $album * @param string $id * @return Album */ private function extractAlbumInfo(SimpleXMLElement $album, $id = null) { $artistUse = $album->artist; if (is_array($album->artist) || isset($album->artist[0])) { $artistUse = $album->artist[0]; } $artist = $this->extractArtistInfo($artistUse); $albumId = $album->attributes(); $albumURI = (string) $albumId['href']; if ($id != null && isset($id)) { $albumURI = $id; } $currentAlbum = new Album($albumURI, (string) $album->name, (string) $album->released, $artist, (double) $album->popularity); $territories = explode(' ', (string) $album->availability->territories); $currentAlbum->setTerritories($territories); $tracks = array(); if (isset($album->tracks->track)) { foreach ($album->tracks->track as $track) { $tracks[] = $this->extractTrackInfo($track, clone $currentAlbum); } } $currentAlbum->setTracks($tracks); return $currentAlbum; }
function getAlbumByTitle($q) { $albums = array(); $sql = "SELECT * FROM Album WHERE Title like :q OR Artist like :q "; $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $result = $this->db->prepare($sql); $result->execute(array(":q" => '%' . $q . '%')); $data = $result->fetchAll(PDO::FETCH_OBJ); foreach ($data as $unAlbum) { $album = new Album(); $album->init($unAlbum->IDAlbum, $unAlbum->Title, $unAlbum->Cover, $unAlbum->Artist); $album->setTracks($this->getAlbumTracks($unAlbum->IDAlbum)); array_push($albums, $album); } return $albums; }