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