You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
265 lines
7.4 KiB
265 lines
7.4 KiB
<?php |
|
|
|
/** |
|
* Flickr |
|
* |
|
* with help of the API this class delivers all kind of Images from flickr |
|
* |
|
* @package socialstreams |
|
* @subpackage socialstreams/flickr |
|
* @author ThemePunch <info@themepunch.com> |
|
*/ |
|
|
|
class TP_flickr { |
|
|
|
/** |
|
* API key |
|
* |
|
* @since 1.0.0 |
|
* @access private |
|
* @var string $api_key flickr API key |
|
*/ |
|
private $api_key; |
|
|
|
/** |
|
* API params |
|
* |
|
* @since 1.0.0 |
|
* @access private |
|
* @var array $api_param_defaults Basic params to call with API |
|
*/ |
|
private $api_param_defaults; |
|
|
|
/** |
|
* Basic URL |
|
* |
|
* @since 1.0.0 |
|
* @access private |
|
* @var string $url Url to fetch user from |
|
*/ |
|
private $flickr_url; |
|
|
|
/** |
|
* Initialize the class and set its properties. |
|
* |
|
* @since 1.0.0 |
|
* @param string $api_key flickr API key. |
|
*/ |
|
public function __construct($api_key) { |
|
$this->api_key = $api_key; |
|
$this->api_param_defaults = array( |
|
'api_key' => $this->api_key, |
|
'format' => 'json', |
|
'nojsoncallback' => 1, |
|
); |
|
} |
|
|
|
/** |
|
* Calls Flicker API with set of params, returns json |
|
* |
|
* @since 1.0.0 |
|
* @param array $params Parameter build for API request |
|
*/ |
|
private function call_flickr_api($params){ |
|
//build url |
|
$encoded_params = array(); |
|
foreach ($params as $k => $v){ |
|
$encoded_params[] = urlencode($k).'='.urlencode($v); |
|
} |
|
|
|
//call the API and decode the response |
|
$url = "https://api.flickr.com/services/rest/?".implode('&', $encoded_params); |
|
$rsp = json_decode(file_get_contents($url)); |
|
return $rsp; |
|
} |
|
|
|
/** |
|
* Get User ID from its URL |
|
* |
|
* @since 1.0.0 |
|
* @param string $user_url URL of the Gallery |
|
*/ |
|
public function get_user_from_url($user_url){ |
|
//gallery params |
|
$user_params = $this->api_param_defaults + array( |
|
'method' => 'flickr.urls.lookupUser', |
|
'url' => $user_url, |
|
); |
|
|
|
//set User Url |
|
$this->flickr_url = $user_url; |
|
|
|
//get gallery info |
|
$user_info = $this->call_flickr_api($user_params); |
|
return $user_info->user->id; |
|
} |
|
|
|
/** |
|
* Get Group ID from its URL |
|
* |
|
* @since 1.0.0 |
|
* @param string $group_url URL of the Gallery |
|
*/ |
|
public function get_group_from_url($group_url){ |
|
//gallery params |
|
$group_params = $this->api_param_defaults + array( |
|
'method' => 'flickr.urls.lookupGroup', |
|
'url' => $group_url, |
|
); |
|
|
|
//set User Url |
|
$this->flickr_url = $group_url; |
|
|
|
//get gallery info |
|
$group_info = $this->call_flickr_api($group_params); |
|
return $group_info->group->id; |
|
} |
|
|
|
/** |
|
* Get Public Photos |
|
* |
|
* @since 1.0.0 |
|
* @param string $user_id flicker User id (not name) |
|
* @param int $item_count number of photos to pull |
|
*/ |
|
public function get_public_photos($user_id,$item_count=10){ |
|
//public photos params |
|
$public_photo_params = $this->api_param_defaults + array( |
|
'method' => 'flickr.people.getPublicPhotos', |
|
'user_id' => $user_id, |
|
'extras' => 'description, license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags, o_dims, views, media, path_alias, url_sq, url_t, url_s, url_q, url_m, url_n, url_z, url_c, url_l, url_o', |
|
'per_page'=> $item_count, |
|
'page' => 1 |
|
); |
|
|
|
//get photo list |
|
$public_photos_list = $this->call_flickr_api($public_photo_params); |
|
return $public_photos_list->photos->photo; |
|
} |
|
|
|
/** |
|
* Get Photosets List from User |
|
* |
|
* @since 1.0.0 |
|
* @param string $user_id flicker User id (not name) |
|
* @param int $item_count number of photos to pull |
|
*/ |
|
public function get_photo_sets($user_id,$item_count=10){ |
|
//photoset params |
|
$photo_set_params = $this->api_param_defaults + array( |
|
'method' => 'flickr.photosets.getList', |
|
'user_id' => $user_id, |
|
'per_page'=> $item_count, |
|
'page' => 1 |
|
); |
|
|
|
//get photoset list |
|
$photo_sets_list = $this->call_flickr_api($photo_set_params); |
|
return $photo_sets_list->photosets->photoset; |
|
} |
|
|
|
/** |
|
* Get Photoset Photos |
|
* |
|
* @since 1.0.0 |
|
* @param string $photo_set_id Photoset ID |
|
* @param int $item_count number of photos to pull |
|
*/ |
|
public function get_photo_set_photos($photo_set_id,$item_count=10){ |
|
//photoset photos params |
|
$photo_set_params = $this->api_param_defaults + array( |
|
'method' => 'flickr.photosets.getPhotos', |
|
'photoset_id' => $photo_set_id, |
|
'per_page' => $item_count, |
|
'page' => 1, |
|
'extras' => 'license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags, o_dims, views, media, path_alias, url_sq, url_t, url_s, url_q, url_m, url_n, url_z, url_c, url_l, url_o' |
|
); |
|
|
|
//get photo list |
|
$photo_set_photos = $this->call_flickr_api($photo_set_params); |
|
return $photo_set_photos->photoset->photo; |
|
} |
|
|
|
/** |
|
* Get Groop Pool Photos |
|
* |
|
* @since 1.0.0 |
|
* @param string $group_id Photoset ID |
|
* @param int $item_count number of photos to pull |
|
*/ |
|
public function get_group_photos($group_id,$item_count=10){ |
|
//photoset photos params |
|
$group_pool_params = $this->api_param_defaults + array( |
|
'method' => 'flickr.groups.pools.getPhotos', |
|
'group_id' => $group_id, |
|
'per_page' => $item_count, |
|
'page' => 1, |
|
'extras' => 'license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags, o_dims, views, media, path_alias, url_sq, url_t, url_s, url_q, url_m, url_n, url_z, url_c, url_l, url_o' |
|
); |
|
|
|
//get photo list |
|
$group_pool_photos = $this->call_flickr_api($group_pool_params); |
|
return $group_pool_photos->photos->photo; |
|
} |
|
|
|
/** |
|
* Get Gallery ID from its URL |
|
* |
|
* @since 1.0.0 |
|
* @param string $gallery_url URL of the Gallery |
|
* @param int $item_count number of photos to pull |
|
*/ |
|
public function get_gallery_from_url($gallery_url){ |
|
//gallery params |
|
$gallery_params = $this->api_param_defaults + array( |
|
'method' => 'flickr.urls.lookupGallery', |
|
'url' => $gallery_url, |
|
); |
|
|
|
//get gallery info |
|
$gallery_info = $this->call_flickr_api($gallery_params); |
|
return $gallery_info->gallery->id; |
|
} |
|
|
|
/** |
|
* Get Gallery Photos |
|
* |
|
* @since 1.0.0 |
|
* @param string $gallery_id flicker Gallery id (not name) |
|
* @param int $item_count number of photos to pull |
|
*/ |
|
public function get_gallery_photos($gallery_id,$item_count=10){ |
|
//gallery photos params |
|
$gallery_photo_params = $this->api_param_defaults + array( |
|
'method' => 'flickr.galleries.getPhotos', |
|
'gallery_id' => $gallery_id, |
|
'extras' => 'description, license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags, o_dims, views, media, path_alias, url_sq, url_t, url_s, url_q, url_m, url_n, url_z, url_c, url_l, url_o', |
|
'per_page'=> $item_count, |
|
'page' => 1 |
|
); |
|
|
|
//get photo list |
|
$gallery_photos_list = $this->call_flickr_api($gallery_photo_params); |
|
return $gallery_photos_list->photos->photo; |
|
} |
|
|
|
/** |
|
* Encode the flickr ID for URL (base58) |
|
* |
|
* @since 1.0.0 |
|
* @param string $num flickr photo id |
|
*/ |
|
public static function base_encode($num, $alphabet='123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ') { |
|
$base_count = strlen($alphabet); |
|
$encoded = ''; |
|
while ($num >= $base_count) { |
|
$div = $num/$base_count; |
|
$mod = ($num-($base_count*intval($div))); |
|
$encoded = $alphabet[$mod] . $encoded; |
|
$num = intval($div); |
|
} |
|
if ($num) $encoded = $alphabet[$num] . $encoded; |
|
return $encoded; |
|
} |
|
} |
|
?>
|