/** * Performs a query based on the parameters * supplied in the ReleaseFilter object. Returns * an array of possible matches with scores, as * returned by the musicBrainz XML web service. * Note that these types of queries only return some * information, and not all the information available * about a particular release is available using * this type of query. You will need to get the * MusicBrainz id (mbid) and perform a lookup with * getRelease to return complete information about * a release. * * @return array * @param phpBrainz_ReleaseFilter * */ public function findRelease(phpBrainz_ReleaseFilter $releaseFilterObj) { if (sizeof($releaseFilterObj->createParameters()) < 1) { throw new Exception('The release filter object needs at least 1 argument to create a query.'); } $queryStr = RELEASE_URL . "?type=xml"; $args = $releaseFilterObj->createParameters(); foreach ($args as $key => $value) { $args[$key] = utf8_encode($value); } $queryStr .= "&" . http_build_query($args); $xml = simplexml_load_file($queryStr); if ($xml === false) { throw new Exception("Unable to load XML file. URL: " . $queryStr); } if (empty($xml->{'release-list'})) { return array(); } $releases = array(); foreach ($xml->{'release-list'}->release as $release) { $releaseObj = $this->parseReleaseXML($release); $releases[] = $releaseObj; } return $releases; }
/** * Performs a query based on the parameters * supplied in the ReleaseFilter object. Returns * an array of possible matches with scores, as * returned by the musicBrainz XML web service. * Note that these types of queries only return some * information, and not all the information available * about a particular release is available using * this type of query. You will need to get the * MusicBrainz id (mbid) and perform a lookup with * getRelease to return complete information about * a release. * * @return array * @param phpBrainz_ReleaseFilter * */ public function findRelease(phpBrainz_ReleaseFilter $releaseFilterObj) { if (sizeof($releaseFilterObj->createParameters()) < 1) { die(print "The release filter object needs \n\t at least 1 argument to create a query."); } $queryStr = RELEASE_URL . "?type=xml"; $args = $releaseFilterObj->createParameters(); foreach ($args as $key => $value) { $queryStr .= "&" . $key . "=" . urlencode(utf8_encode($value)); } $xml = simplexml_load_file($queryStr); $releases = array(); foreach ($xml->{'release-list'}->release as $release) { $releaseObj = $this->parseReleaseXML($release); $releases[] = $releaseObj; } return $releases; }