setCacheDir( APTFFbyTAP_CACHE );
if( $cache->exists($key) ) {
$results = $cache->get($key);
$results = @unserialize($results);
if( count($results) ){
$results['hidden'] .= '';
return $results;
}
}
$message = '';
$hidden = '';
$continue = false;
$feed_found = false;
$APTFFbyTAP_linkurl = array();
$APTFFbyTAP_photocap = array();
$APTFFbyTAP_photourl = array();
// Determine image size id
$APTFFbyTAP_size_id = '.'; // Default is 500
switch ($flickr_options['flickr_photo_size']) {
case 75:
$APTFFbyTAP_size_id = '_s.';
break;
case 100:
$APTFFbyTAP_size_id = '_t.';
break;
case 240:
$APTFFbyTAP_size_id = '_m.';
break;
case 500:
$APTFFbyTAP_size_id = '.';
break;
case 640:
$APTFFbyTAP_size_id = '_z.';
break;
}
// Retrieve content using curl_init and PHP_serial
if ( curl_init() ) {
// @ is shut-up operator
// For reference: http://www.flickr.com/services/feeds/
$flickr_uid = apply_filters( APTFFbyTAP_HOOK, empty($flickr_options['flickr_user_id']) ? '' : $flickr_options['flickr_user_id'], $flickr_options );
switch ($flickr_options['flickr_source']) {
case 'user':
$request = 'http://api.flickr.com/services/feeds/photos_public.gne?id='. $flickr_uid .'&lang=en-us&format=php_serial';
break;
case 'favorites':
$request = 'http://api.flickr.com/services/feeds/photos_faves.gne?nsid='. $flickr_uid .'&lang=en-us&format=php_serial';
break;
case 'group':
$flickr_groupid = apply_filters( APTFFbyTAP_HOOK, empty($flickr_options['flickr_group_id']) ? '' : $flickr_options['flickr_group_id'], $flickr_options );
$request = 'http://api.flickr.com/services/feeds/groups_pool.gne?id='. $flickr_groupid .'&lang=en-us&format=php_serial';
break;
case 'set':
$APTFFbyTAP_flickr_set = apply_filters( APTFFbyTAP_HOOK, empty($flickr_options['flickr_set_id']) ? '' : $flickr_options['flickr_set_id'], $flickr_options );
$request = 'http://api.flickr.com/services/feeds/photoset.gne?set=' . $APTFFbyTAP_flickr_set . '&nsid='. $flickr_uid .'&lang=en-us&format=php_serial';
break;
case 'community':
$APTFFbyTAP_flickr_tags = apply_filters( APTFFbyTAP_HOOK, empty($flickr_options['flickr_tags']) ? '' : $flickr_options['flickr_tags'], $flickr_options );
$request = 'http://api.flickr.com/services/feeds/photos_public.gne?tags='. $APTFFbyTAP_flickr_tags .'&lang=en-us&format=php_serial';
break;
}
$ci = @curl_init();
@curl_setopt($ci, CURLOPT_URL, $request);
@curl_setopt($ci, CURLOPT_RETURNTRANSFER, 1);
$_flickrurl = @curl_exec($ci);
@curl_close($ci);
$_flickr_php = @unserialize($_flickrurl);
if(empty($_flickr_php)){
$hidden .= '';
$continue = false;
}else{
$APTFFbyTAP_title = $_flickr_php['title'];
$APTFFbyTAP_link = $_flickr_php['url'];
$APTFFbyTAP_content = $_flickr_php['items'];
for ($i=0;$i<$flickr_options['flickr_photo_number'];$i++) {
if($APTFFbyTAP_content[$i]['url']){ // Check if anything is there
$APTFFbyTAP_linkurl[$i] = $APTFFbyTAP_content[$i]['url'];
$APTFFbyTAP_photocap[$i] = $APTFFbyTAP_content[$i]['title']; // retrieve image title
// retrieve image url from feed and set new image size
$APTFFbyTAP_photourl[$i] = @str_replace('_m.', $APTFFbyTAP_size_id, $APTFFbyTAP_content[$i]['m_url'] );
$APTFFbyTAP_originalurl[$i] = @str_replace('_m.', '.', $APTFFbyTAP_content[$i]['m_url'] );
}
}
if(!empty($APTFFbyTAP_linkurl) && !empty($APTFFbyTAP_photourl)){
if( $flickr_options['flickr_display_link'] ) {
$APTFFbyTAP_user_link = '
';
}
// If content successfully fetched, generate output...
$continue = true;
$hidden .= '';
}else{
$hidden .= '';
$continue = false;
$feed_found = true;
}
}
}
///////////////////////////////////////////////////
/// If nothing found, try using xml and rss_200 ///
///////////////////////////////////////////////////
if ( $continue == false && function_exists('simplexml_load_file') ) {
$flickr_uid = apply_filters( APTFFbyTAP_HOOK, empty($flickr_options['flickr_user_id']) ? '' : $flickr_options['flickr_user_id'], $flickr_options );
switch ($flickr_options['flickr_source']) {
case 'user':
$request = 'http://api.flickr.com/services/feeds/photos_public.gne?id='. $flickr_uid .'&lang=en-us&format=rss_200';
break;
case 'favorites':
$request = 'http://api.flickr.com/services/feeds/photos_faves.gne?nsid='. $flickr_uid .'&lang=en-us&format=rss_200';
break;
case 'group':
$flickr_groupid = apply_filters( APTFFbyTAP_HOOK, empty($flickr_options['flickr_group_id']) ? '' : $flickr_options['flickr_group_id'], $flickr_options );
$request = 'http://api.flickr.com/services/feeds/groups_pool.gne?id='. $flickr_groupid .'&lang=en-us&format=rss_200';
break;
case 'set':
$APTFFbyTAP_flickr_set = apply_filters( APTFFbyTAP_HOOK, empty($flickr_options['flickr_set_id']) ? '' : $flickr_options['flickr_set_id'], $flickr_options );
$request = 'http://api.flickr.com/services/feeds/photoset.gne?set=' . $APTFFbyTAP_flickr_set . '&nsid='. $flickr_uid .'&lang=en-us&format=rss_200';
break;
case 'community':
$APTFFbyTAP_flickr_tags = apply_filters( APTFFbyTAP_HOOK, empty($flickr_options['flickr_tags']) ? '' : $flickr_options['flickr_tags'], $flickr_options );
$request = 'http://api.flickr.com/services/feeds/photos_public.gne?tags='. $APTFFbyTAP_flickr_tags .'&lang=en-us&format=rss_200';
break;
}
$_flickrurl = @urlencode( $request ); // just for compatibility
$_flickr_xml = @simplexml_load_file( $_flickrurl,"SimpleXMLElement",LIBXML_NOCDATA); // @ is shut-up operator
if($_flickr_xml===false){
$hidden .= '';
$continue = false;
}else{
$APTFFbyTAP_title = $_flickr_xml->channel->title;
$APTFFbyTAP_link = $_flickr_xml->channel->link;
if(!$_flickr_xml && !$_flickr_xml->channel){
$hidden .= '';
$continue = false;
}else{
$s = 0; // simple counter
foreach( $_flickr_xml->channel->item as $p ) { // This will prevent empty images from being added to APTFFbyTAP_linkurl.
if( $s<$flickr_options['flickr_photo_number'] ){
// list of link urls
$APTFFbyTAP_linkurl[$s] = (string) $p->link; // ->i is equivalent of ['i'] for objects
if($APTFFbyTAP_linkurl[$s]){
// For Reference: regex references and http://php.net/manual/en/function.preg-match.php
// Using the RSS feed will require some manipulation to get the image url from flickr;
// preg_replace is bad at skipping lines so we'll start with preg_match
// i sets letters in upper or lower case,
@preg_match( "/
/i", $p->description, $matches ); // First, get image from feed.
// Next, strip away everything surrounding the source url.
// . means any expression, and + means repeat previous
$APTFFbyTAP_photourl_current = @preg_replace(array('/(.+)src="/i','/"(.+)/') , '',$matches[ 0 ]);
// Finally, change the size. [] specifies single character and \w is any word character
$APTFFbyTAP_photourl[$s] = @preg_replace('/[_]\w[.]/', $APTFFbyTAP_size_id, $APTFFbyTAP_photourl_current );
$APTFFbyTAP_originalurl[$s] = @preg_replace('/[_]\w[.]/', '.', $APTFFbyTAP_photourl_current );
$APTFFbyTAP_photocap[$s] = (string) $p->title;
}
$s++;
}
else{
break;
}
}
if(!empty($APTFFbyTAP_linkurl) && !empty($APTFFbyTAP_photourl)){
if( $flickr_options['flickr_display_link'] ) {
$APTFFbyTAP_user_link = '';
}
// If content successfully fetched, generate output...
$continue = true;
$hidden .= '';
}else{
$hidden .= '';
$continue = false;
$feed_found = true;
}
}
}
}
////////////////////////////////////////////////////////
//// If still nothing found, try using RSS ///
////////////////////////////////////////////////////////
if( $continue == false ) {
// RSS may actually be safest approach since it does not require PHP server extensions,
// but I had to build my own method for parsing SimplePie Object so I will keep it as the last option.
if(!function_exists(APTFFbyTAP_specialarraysearch)){
function APTFFbyTAP_specialarraysearch($array, $find){
foreach ($array as $key=>$value){
if( is_string($key) && $key==$find){
return $value;
}
elseif(is_array($value)){
$results = APTFFbyTAP_specialarraysearch($value, $find);
}
elseif(is_object($value)){
$sub = $array->$key;
$results = APTFFbyTAP_specialarraysearch($sub, $find);
}
// If found, return
if(!empty($results)){return $results;}
}
return $results;
}
}
$flickr_uid = apply_filters( APTFFbyTAP_HOOK, empty($flickr_options['flickr_user_id']) ? '' : $flickr_options['flickr_user_id'], $flickr_options );
switch ($flickr_options['flickr_source']) {
case 'user':
$request = 'http://api.flickr.com/services/feeds/photos_public.gne?id='. $flickr_uid .'&lang=en-us&format=rss_200';
break;
case 'favorites':
$request = 'http://api.flickr.com/services/feeds/photos_faves.gne?nsid='. $flickr_uid .'&lang=en-us&format=rss_200';
break;
case 'group':
$flickr_groupid = apply_filters( APTFFbyTAP_HOOK, empty($flickr_options['flickr_group_id']) ? '' : $flickr_options['flickr_group_id'], $flickr_options );
$request = 'http://api.flickr.com/services/feeds/groups_pool.gne?id='. $flickr_groupid .'&lang=en-us&format=rss_200';
break;
case 'set':
$APTFFbyTAP_flickr_set = apply_filters( APTFFbyTAP_HOOK, empty($flickr_options['flickr_set_id']) ? '' : $flickr_options['flickr_set_id'], $flickr_options );
$request = 'http://api.flickr.com/services/feeds/photoset.gne?set=' . $APTFFbyTAP_flickr_set . '&nsid='. $flickr_uid .'&lang=en-us&format=rss_200';
break;
case 'community':
$APTFFbyTAP_flickr_tags = apply_filters( APTFFbyTAP_HOOK, empty($flickr_options['flickr_tags']) ? '' : $flickr_options['flickr_tags'], $flickr_options );
$request = 'http://api.flickr.com/services/feeds/photos_public.gne?tags='. $APTFFbyTAP_flickr_tags .'&lang=en-us&format=rss_200';
break;
}
include_once(ABSPATH . WPINC . '/feed.php');
function return_noCache( $seconds ){
// change the default feed cache recreation period to 30 seconds
return 30;
}
add_filter( 'wp_feed_cache_transient_lifetime' , 'return_noCache' );
$rss = @fetch_feed( $request );
remove_filter( 'wp_feed_cache_transient_lifetime' , 'return_noCache' );
if (!is_wp_error( $rss ) && $rss != NULL ){ // Check that the object is created correctly
// Bulldoze through the feed to find the items
$results = array();
$APTFFbyTAP_title = @APTFFbyTAP_specialarraysearch($rss,'title');
$APTFFbyTAP_title = $APTFFbyTAP_title['0']['data'];
$APTFFbyTAP_link = @APTFFbyTAP_specialarraysearch($rss,'link');
$APTFFbyTAP_link = $APTFFbyTAP_link['0']['data'];
$rss_data = @APTFFbyTAP_specialarraysearch($rss,'item');
$s = 0; // simple counter
if ($rss_data != NULL ){ // Check again
foreach ( $rss_data as $item ) {
if( $s<$flickr_options['flickr_photo_number'] ){
$APTFFbyTAP_linkurl[$s] = $item['child']['']['link']['0']['data'];
$content = $item['child']['']['description']['0']['data'];
if($content){
// For Reference: regex references and http://php.net/manual/en/function.preg-match.php
// Using the RSS feed will require some manipulation to get the image url from flickr;
// preg_replace is bad at skipping lines so we'll start with preg_match
// i sets letters in upper or lower case, s sets . to anything
@preg_match("/';
$APTFFbyTAP_user_link .='';
$APTFFbyTAP_user_link .= $APTFFbyTAP_title;
$APTFFbyTAP_user_link .= '';
}
// If content successfully fetched, generate output...
$continue = true;
$hidden .= '';
}else{
$hidden .= '';
$continue = false;
$feed_found = true;
}
}
else{
$hidden .= '';
$continue = false;
}
}
///////////////////////////////////////////////////////////////////////
//// If STILL!!! nothing found, report that Flickr ID must be wrong ///
///////////////////////////////////////////////////////////////////////
if( false == $continue ) {
if($feed_found ){
$message .= '- Flickr feed was successfully retrieved, but no photos found.';
}else{
$message .= '- Flickr feed not found. Please recheck your ID.';
}
}
$results = array('continue'=>$continue,'message'=>$message,'hidden'=>$hidden,'user_link'=>$APTFFbyTAP_user_link,'image_captions'=>$APTFFbyTAP_photocap,'image_urls'=>$APTFFbyTAP_photourl,'image_perms'=>$APTFFbyTAP_linkurl,'image_originals'=>$APTFFbyTAP_originalurl);
if( true == $continue ){
$cache_results = $results;
if(!is_serialized( $cache_results )) { $cache_results = maybe_serialize( $cache_results ); }
$cache->put($key, $cache_results);
}
return $results;
}
?>