Location: PHPKode > scripts > GroovesharkAPI-PHP > fastest963-GroovesharkAPI-PHP-6fc5e26/gsPlaylist.php
<?php

/**
 * @author Karen Zhu
 * @copyright 2011
 */

class gsPlaylist extends gsAPI{
    
    private $parent;
    private $playlistid;
    private $url;
    private $name;
    private $songs;
    private $tsmodified;
    private $user;
	
	function gsPlaylist(&$parent=null){
	   if (!$parent) {
	       $this->parent = gsAPI::getInstance();
       } else {
            $this->parent = $parent;
       }
	}
    // get all the info for a playlist
    //YOU MUST CAST BACK INTO gsPlaylist USING importPlaylistData
    public static function getPlaylistInfo($playlistID){
		if (!is_numeric($playlistID)){
			return false;
		}
		
		$return = parent::apiCall('getPlaylistInfo',array('playlistID'=>$playlistID));
		if (isset($return['decoded']['result'])) {
			return $return['decoded']['result'];
		} else {
			return false;
        }
	}
    
    function toArray() {
        $array = array();
        if ($this->getPlaylistID()) $array['PlaylistID'] = $this->getPlaylistID();
        if ($this->getName(false)) $array['Name'] = $this->getName(false);
        if ($this->getURL(false)) $array['Url'] = $this->getURL(false);
        if ($this->getSongs(false) !== null) $array['Songs'] = $this->getSongs(false);
        if ($this->getModified()) $array['ModifiedTime'] = $this->getModified();
        if ($this->getUser()) $array['User'] = $this->getUser();
        return $array;
    }
    
    public function setPlaylistID($id) {
        if (!is_numeric($id)){
			return false;
		} else {
            $this->playlistid = $id;
            return $id;
        }
    }
    
    public function getPlaylistID() {
        return $this->playlistid;
    }
    
    public function setName($name) {
        $this->name = $name;
        return $name;
    }
    
    public function getName($fetch=true) {
        if (!empty($this->name) || !$fetch) {
            return $this->name;
        }
        if ($this->checkEmpty($this->playlistid)) {
            $this->importPlaylistData(self::getPlaylistInfo($this->getPlaylistID()));
            return $this->tsmodified;
        }
        return null;
    }
        
    public function setModified($val) {
        if (is_numeric($val)) { //assume its Unix time
            $this->tsmodified = $val;
        } else {
            if (($time = strtotime($val)) === false) {
                return false;
            } else {
                $this->tsmodified = $time;
            }
        }
        return true;
    }
    
    public function getModified() {
        return $this->tsmodified;
        //need to work with skyler on getting last Modified included
        /*if ($this->checkEmpty($this->getPlaylistID())) {
            $this->importPlaylistData(self::getPlaylistInfo($this->getPlaylistID()));
            return $this->tsmodified;
        }
        return null;*/
    }
    
    public function setUser($user) {
        $this->user = $user;
        return true;
    }
    
    public function getUser() { //should we cast as gsUser?
        return $this->user;
    }
    
    private function setURL($url) {
        $this->url = $url;
        return $url;
    }
    
    public function getURL() {
        return self::getPlaylistURLService($this->playlistid);
    }
    
	public static function getPlaylistURLService($playlistID){
		if (!is_numeric($playlistID)){
			return false;
		}		
		
		$return = parent::apiCall('getPlaylistURLFromPlaylistID', array('playlistID' => $playlistID));
		if (isset($return['decoded']['result'])) {
			return $return['decoded']['result'];
		} else {
			return false;
        }
	}
    
    public function setSongs($songs) {
        if (is_array($songs)) {
            $this->songs = $songs;
        }
    }
    
    public function getSongs($fetch=true) {
        if ($this->songs || !$fetch) {
            return $this->songs;
        }
        $this->songs = parent::getPlaylistSongs($this->getPlaylistID());
        return $this->songs;
    }
        
    public function importPlaylistData($data) {
        if (is_array($data)) {
            if (isset($data['PlaylistID'])) {
                $this->setPlaylistID($data['PlaylistID']);
            }
            if (isset($data['Name'])) {
                $this->setName($data['Name']);
            }
            if (isset($data['TSModified'])) {
                $this->setModified($data['TSModified']);
            }
            if (isset($data['ModifiedTime'])) { //gsPlaylist custom field
                $this->setModified($data['ModifiedTime']);
            }
            if (isset($data['Songs'])) { //gsPlaylist custom field
                $this->setSongs($data['Songs']);
            }
            if (isset($data['User'])) { //gsPlaylist custom field
                $this->setUser($data['User']);
            }
            return true;
        } else {
            return false;
        }
    }
    
}

?>
Return current item: GroovesharkAPI-PHP