/** * Extract Album informations from object * @access public * @static * @param \stdClass $album Object represent Album * @return Album */ public static function extractInfos($album) { // create Album instance $albumItem = new self(); // update informations $albumItem->setUri((string) isset($album->href) ? $album->href : ''); $albumItem->setName((string) isset($album->name) ? $album->name : ''); // is popularity available ? if (isset($album->popularity)) { // update popularity $albumItem->setPopularity((double) $album->popularity); } // is released date available ? if (isset($album->released)) { // update released dates $albumItem->setReleased((string) $album->released); } // is teritories availabality available ? if (isset($album->availability) && isset($album->availability->territories)) { // update territories availability $albumItem->setTerritories(explode(' ', $album->availability->territories)); } // is artists available (from search service) ? if (isset($album->artists) && is_array($album->artists)) { // setup artists container $artists = array(); // iterate artists foreach ($album->artists as $artist) { // create Artist and store on container $artists[] = Artist::extractInfos($artist); } // set artists of album $albumItem->setArtists($artists); } // is artists available (from lookup service) ? if (isset($album->{'artist-id'}) && isset($album->artist)) { // create and store principal artist $albumItem->setArtist(Artist::build($album->{'artist-id'}, $album->artist)); } // is tracks available ? if (isset($album->tracks) && is_array($album->tracks)) { // setup tracks container $tracks = array(); // iterate external ids foreach ($album->tracks as $track) { // create Track and store on container $tracks[] = Track::extractInfos($track); } // set albums tracks $albumItem->setTracks($tracks); } // is external ids available ? if (isset($album->{'external-ids'}) && is_array($album->{'external-ids'})) { // setup external ids container $externalIds = array(); // iterate external ids foreach ($album->{'external-ids'} as $externalId) { // create ExternalId and store on container $externalIds[] = ExternalId::extractInfos($externalId); } // set external ids of album $albumItem->setExternalIds($externalIds); } // return album instance return $albumItem; }
/** * Extract Track informations from object * @access public * @static * @param \stdClass $track Object represent Track * @return Track */ public static function extractInfos($track) { // create Track instance $trackItem = new self(); // update informations $trackItem->setUri((string) $track->href); $trackItem->setName((string) $track->name); // is popularity available ? if (isset($track->popularity)) { // update popularity $trackItem->setPopularity((double) $track->popularity); } // is disc number available ? if (isset($track->{'disc-number'})) { // update disc number $trackItem->setDiscNumber($track->{'disc-number'}); } // is track number available ? if (isset($track->{'track-number'})) { // update track number $trackItem->setTrackNumber($track->{'track-number'}); } // is track length available ? if (isset($track->length)) { // update track length $trackItem->setLength($track->length); } // is track albul available ? if (isset($track->album)) { // update track album $trackItem->setAlbum(Album::extractInfos($track->album)); } // is artists available ? if (isset($track->artists) && is_array($track->artists)) { // setup artists container $artists = array(); // iterate artists foreach ($track->artists as $artist) { // create Artist and store on container $artists[] = Artist::extractInfos($artist); } // set artists of track $trackItem->setArtists($artists); } // is external ids available ? if (isset($track->{'external-ids'}) && is_array($track->{'external-ids'})) { // setup external ids container $externalIds = array(); // iterate external ids foreach ($track->{'external-ids'} as $externalId) { // create ExternalId and store on container $externalIds[] = ExternalId::extractInfos($externalId); } // set external ids of track $trackItem->setExternalIds($externalIds); } // is teritories availabality available ? if (isset($track->availability) && isset($track->availability->territories)) { // update territories availability $trackItem->setTerritories(explode(' ', $track->availability->territories)); } // on retourne l'instance de la piste return $trackItem; }