option_defaults(); $uid = apply_filters( $this->hook, empty($flickr_options['flickr_user_id']) ? 'uid' : $flickr_options['flickr_user_id'], $flickr_options ); $uid = @ereg_replace('[[:cntrl:]]', '', $uid ); // remove ASCII's control characters $groupid = apply_filters( $this->hook, empty($flickr_options['flickr_group_id']) ? 'groupid' : $flickr_options['flickr_group_id'], $flickr_options ); $groupid = @ereg_replace('[[:cntrl:]]', '', $groupid ); // remove ASCII's control characters $set = apply_filters( $this->hook, empty($flickr_options['flickr_set_id']) ? 'set' : $flickr_options['flickr_set_id'], $flickr_options ); $set = @ereg_replace('[[:cntrl:]]', '', $set ); // remove ASCII's control characters $tags = apply_filters( $this->hook, empty($flickr_options['flickr_tags']) ? 'tags' : $flickr_options['flickr_tags'], $flickr_options ); $tags = @ereg_replace('[[:cntrl:]]', '', $tags ); // remove ASCII's control characters $key = 'flickr-'.$this->vers.'-'.$flickr_options['flickr_source'].'-'.$uid.'-'.$groupid.'-'.$set.'-'.$tags.'-'.$flickr_options['flickr_photo_number'].'-'.$flickr_options['flickr_photo_size'].'-'.$flickr_options['flickr_display_link'].'-'.$flickr_options['flickr_display_link_text']; $disablecache = $this->get_option( 'cache_disable' ); if ( !$disablecache ) { if( $this->cacheExists($key) ) { $results = $this->getCache($key); $results = @unserialize($results); if( count($results) ){ $results['hidden'] .= ''; return $results; } } } $message = ''; $hidden = ''; $continue = false; $feed_found = false; $linkurl = array(); $photocap = array(); $photourl = array(); // Determine image size id $size_id = '.'; // Default is 500 switch ($flickr_options['flickr_photo_size']) { case 75: $size_id = 'url_sq'; break; case 100: $size_id = 'url_t'; break; case 240: $size_id = 'url_s'; break; case 320: $size_id = 'url_n'; break; case 500: $size_id = 'url_m'; break; case 640: $size_id = 'url_z'; break; } // Retrieve content using wp_remote_get and PHP_serial if ( function_exists('unserialize') ) { // @ is shut-up operator // For reference: http://www.flickr.com/services/feeds/ $flickr_uid = apply_filters( $this->hook, empty($flickr_options['flickr_user_id']) ? 'uid' : $flickr_options['flickr_user_id'], $flickr_options ); switch ($flickr_options['flickr_source']) { case 'user': $request = 'http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=68b8278a33237f1f369cbbf3c9a9f45c&per_page='.$flickr_options['flickr_photo_number'].'&format=php_serial&privacy_filter=1&user_id='. $flickr_uid .'&page=1&extras=description,url_sq,url_t,url_s,url_m,url_n,url_z'; break; case 'favorites': $request = 'http://api.flickr.com/services/rest/?method=flickr.favorites.getPublicList&api_key=68b8278a33237f1f369cbbf3c9a9f45c&per_page='.$flickr_options['flickr_photo_number'].'&format=php_serial&privacy_filter=1&user_id='. $flickr_uid .'&page=1&extras=description,url_sq,url_t,url_s,url_m,url_n,url_z'; break; case 'group': $flickr_groupid = apply_filters( $this->hook, empty($flickr_options['flickr_group_id']) ? '' : $flickr_options['flickr_group_id'], $flickr_options ); $request = 'http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=68b8278a33237f1f369cbbf3c9a9f45c&per_page='.$flickr_options['flickr_photo_number'].'&format=php_serial&privacy_filter=1&group_id='. $flickr_groupid .'&page=1&extras=description,url_sq,url_t,url_s,url_m,url_n,url_z'; break; case 'set': $flickr_set = apply_filters( $this->hook, empty($flickr_options['flickr_set_id']) ? '' : $flickr_options['flickr_set_id'], $flickr_options ); $request = 'http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&api_key=68b8278a33237f1f369cbbf3c9a9f45c&per_page='.$flickr_options['flickr_photo_number'].'&format=php_serial&privacy_filter=1&photoset_id='. $flickr_set .'&page=1&extras=url_sq,url_t,url_s,url_m,url_o'; break; case 'community': $flickr_tags = apply_filters( $this->hook, empty($flickr_options['flickr_tags']) ? '' : $flickr_options['flickr_tags'], $flickr_options ); $request = 'http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=68b8278a33237f1f369cbbf3c9a9f45c&per_page='.$flickr_options['flickr_photo_number'].'&format=php_serial&privacy_filter=1&tags='. $flickr_tags .'&page=1&extras=description,url_sq,url_t,url_s,url_m,url_n,url_z'; break; } $_flickr_php = array(); $response = wp_remote_get($request, array( 'method' => 'GET', 'timeout' => 20, ) ); if( is_wp_error( $response ) || !isset($response['body']) ) { $hidden .= ''; }else{ $_flickr_php = @unserialize($response['body']); } if(empty($_flickr_php)){ $hidden .= ''; $continue = false; }else{ $content = $_flickr_php['photos']; $photos = $_flickr_php['photos']['photo']; // Check for photosets if( 'set' == $flickr_options['flickr_source']) { $content = $_flickr_php['photoset']; $photos = $_flickr_php['photoset']['photo']; } // Check actual number of photos found if( count($photos) < $flickr_options['flickr_photo_number'] ){ $flickr_options['flickr_photo_number']=count($photos);} for ($i=0;$i<$flickr_options['flickr_photo_number'];$i++) { $linkurl[$i] = 'http://www.flickr.com/photos/'.($photos[$i]['owner']?$photos[$i]['owner']:$flickr_uid).'/'.$photos[$i]['id'].'/'; $photourl[$i] = $photos[$i][$size_id]; $originalurl[$i] = $photos[$i]['url_m']; if( !$photourl[$i] ){ $photourl[$i] = $originalurl[$i]; } // Incase size didn't exist $photocap[$i] = $photos[$i]['title']; $photocap[$i] = str_replace('"','',$photocap[$i]); } if(!empty($linkurl) && !empty($photourl)){ if( 'community' != $flickr_options['flickr_source'] && $flickr_options['flickr_display_link'] && $flickr_options['flickr_display_link_text']) { switch ($flickr_options['flickr_source']) { case 'user': $link = 'http://www.flickr.com/photos/'.$flickr_uid.'/'; break; case 'favorites': $link = 'http://www.flickr.com/photos/'.$flickr_uid.'/favorites/'; break; case 'group': $link = 'http://www.flickr.com/groups/'.$flickr_groupid.'/'; break; case 'set': if($content['owner'] && $content['id']){ $link = 'http://www.flickr.com/photos/'.$content['owner'].'/sets/'.$content['id'].'/'; } break; } if($link){ $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( $this->hook, empty($flickr_options['flickr_user_id']) ? 'uid' : $flickr_options['flickr_user_id'], $flickr_options ); switch ($flickr_options['flickr_source']) { case 'user': $request = 'http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=68b8278a33237f1f369cbbf3c9a9f45c&per_page='.$flickr_options['flickr_photo_number'].'&format=rest&privacy_filter=1&user_id='. $flickr_uid .'&page=1&extras=description,url_sq,url_t,url_s,url_m,url_n,url_z'; break; case 'favorites': $request = 'http://api.flickr.com/services/rest/?method=flickr.favorites.getPublicList&api_key=68b8278a33237f1f369cbbf3c9a9f45c&per_page='.$flickr_options['flickr_photo_number'].'&format=rest&privacy_filter=1&user_id='. $flickr_uid .'&page=1&extras=description,url_sq,url_t,url_s,url_m,url_n,url_z'; break; case 'group': $flickr_groupid = apply_filters( $this->hook, empty($flickr_options['flickr_group_id']) ? '' : $flickr_options['flickr_group_id'], $flickr_options ); $request = 'http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=68b8278a33237f1f369cbbf3c9a9f45c&per_page='.$flickr_options['flickr_photo_number'].'&format=rest&privacy_filter=1&group_id='. $flickr_groupid .'&page=1&extras=description,url_sq,url_t,url_s,url_m,url_n,url_z'; break; case 'set': $flickr_set = apply_filters( $this->hook, empty($flickr_options['flickr_set_id']) ? '' : $flickr_options['flickr_set_id'], $flickr_options ); $request = 'http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&api_key=68b8278a33237f1f369cbbf3c9a9f45c&per_page='.$flickr_options['flickr_photo_number'].'&format=rest&privacy_filter=1&photoset_id='. $flickr_set .'&page=1&extras=url_sq,url_t,url_s,url_m,url_o'; break; case 'community': $flickr_tags = apply_filters( $this->hook, empty($flickr_options['flickr_tags']) ? '' : $flickr_options['flickr_tags'], $flickr_options ); $request = 'http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=68b8278a33237f1f369cbbf3c9a9f45c&per_page='.$flickr_options['flickr_photo_number'].'&format=rest&privacy_filter=1&tags='. $flickr_tags .'&page=1&extras=description,url_sq,url_t,url_s,url_m,url_n,url_z'; break; } $_flickrurl = @urlencode( $request ); // just for compatibility $_flickr_xml = @simplexml_load_file( $_flickrurl,"SimpleXMLElement",LIBXML_NOCDATA); // @ is shut-up operator if( $_flickr_xml===false || !$_flickr_xml || (!$_flickr_xml->photos && !$_flickr_xml->photoset) ){ $hidden .= ''; $continue = false; }else{ $content = $_flickr_xml->photos; $photos = $content->photo; // Check for photosets if( 'set' == $flickr_options['flickr_source']) { $content = $_flickr_xml->photoset; $photos = $content->photo; } $attributes = $content->attributes(); // Check actual number of photos found if( count($photos) < $flickr_options['flickr_photo_number'] ){ $flickr_options['flickr_photo_number']=count($photos);} for ($i=0;$i<$flickr_options['flickr_photo_number'];$i++) { $current_attr = $photos[$i]->attributes(); $linkurl[$i] = 'http://www.flickr.com/photos/'.(string)($current_attr['owner']?$current_attr['owner']:$flickr_uid).'/'.(string)$current_attr['id'].'/'; $photourl[$i] = (string)$current_attr[$size_id]; $originalurl[$i] = (string)$current_attr['url_m']; if( !$photourl[$i] ){ $photourl[$i] = $originalurl[$i]; } // Incase size didn't exist $photocap[$i] = (string)$current_attr['title']; $photocap[$i] = str_replace('"','',$photocap[$i]); } if(!empty($linkurl) && !empty($photourl)){ if( 'community' != $flickr_options['flickr_source'] && $flickr_options['flickr_display_link'] && $flickr_options['flickr_display_link_text']) { switch ($flickr_options['flickr_source']) { case 'user': $link = 'http://www.flickr.com/photos/'.$flickr_uid.'/'; break; case 'favorites': $link = 'http://www.flickr.com/photos/'.$flickr_uid.'/favorites/'; break; case 'group': $link = 'http://www.flickr.com/groups/'.$flickr_groupid.'/'; break; case 'set': // NOTE the use of attributes... if($attributes['owner'] && $attributes['id']){ $link = 'http://www.flickr.com/photos/'.$attributes['owner'].'/sets/'.$attributes['id'].'/'; } break; } if($link){ $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 && function_exists('file_get_contents')) { // Try simple file_get_contents function $flickr_uid = apply_filters( $this->hook, empty($flickr_options['flickr_user_id']) ? 'uid' : $flickr_options['flickr_user_id'], $flickr_options ); switch ($flickr_options['flickr_source']) { case 'user': $request = 'http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=68b8278a33237f1f369cbbf3c9a9f45c&per_page='.$flickr_options['flickr_photo_number'].'&format=php_serial&privacy_filter=1&user_id='. $flickr_uid .'&page=1&extras=description,url_sq,url_t,url_s,url_m,url_n,url_z'; break; case 'favorites': $request = 'http://api.flickr.com/services/rest/?method=flickr.favorites.getPublicList&api_key=68b8278a33237f1f369cbbf3c9a9f45c&per_page='.$flickr_options['flickr_photo_number'].'&format=php_serial&privacy_filter=1&user_id='. $flickr_uid .'&page=1&extras=description,url_sq,url_t,url_s,url_m,url_n,url_z'; break; case 'group': $flickr_groupid = apply_filters( $this->hook, empty($flickr_options['flickr_group_id']) ? '' : $flickr_options['flickr_group_id'], $flickr_options ); $request = 'http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=68b8278a33237f1f369cbbf3c9a9f45c&per_page='.$flickr_options['flickr_photo_number'].'&format=php_serial&privacy_filter=1&group_id='. $flickr_groupid .'&page=1&extras=description,url_sq,url_t,url_s,url_m,url_n,url_z'; break; case 'set': $flickr_set = apply_filters( $this->hook, empty($flickr_options['flickr_set_id']) ? '' : $flickr_options['flickr_set_id'], $flickr_options ); $request = 'http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&api_key=68b8278a33237f1f369cbbf3c9a9f45c&per_page='.$flickr_options['flickr_photo_number'].'&format=php_serial&privacy_filter=1&photoset_id='. $flickr_set .'&page=1&extras=url_sq,url_t,url_s,url_m,url_o'; break; case 'community': $flickr_tags = apply_filters( $this->hook, empty($flickr_options['flickr_tags']) ? '' : $flickr_options['flickr_tags'], $flickr_options ); $request = 'http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=68b8278a33237f1f369cbbf3c9a9f45c&per_page='.$flickr_options['flickr_photo_number'].'&format=php_serial&privacy_filter=1&tags='. $flickr_tags .'&page=1&extras=description,url_sq,url_t,url_s,url_m,url_n,url_z'; break; } $_flickrurl = @file_get_contents($request); $_flickr_php = @unserialize($_flickrurl); if(empty($_flickr_php)){ $hidden .= ''; $continue = false; }else{ $content = $_flickr_php['photos']; $photos = $_flickr_php['photos']['photo']; // Check for photosets if( 'set' == $flickr_options['flickr_source']) { $content = $_flickr_php['photoset']; $photos = $_flickr_php['photoset']['photo']; } // Check actual number of photos found if( count($photos) < $flickr_options['flickr_photo_number'] ){ $flickr_options['flickr_photo_number']=count($photos);} for ($i=0;$i<$flickr_options['flickr_photo_number'];$i++) { $linkurl[$i] = 'http://www.flickr.com/photos/'.($photos[$i]['owner']?$photos[$i]['owner']:$flickr_uid).'/'.$photos[$i]['id'].'/'; $photourl[$i] = $photos[$i][$size_id]; $originalurl[$i] = $photos[$i]['url_m']; if( !$photourl[$i] ){ $photourl[$i] = $originalurl[$i]; } // Incase size didn't exist $photocap[$i] = $photos[$i]['title']; $photocap[$i] = str_replace('"','',$photocap[$i]); } if(!empty($linkurl) && !empty($photourl)){ if( 'community' != $flickr_options['flickr_source'] && $flickr_options['flickr_display_link'] && $flickr_options['flickr_display_link_text']) { switch ($flickr_options['flickr_source']) { case 'user': $link = 'http://www.flickr.com/photos/'.$flickr_uid.'/'; break; case 'favorites': $link = 'http://www.flickr.com/photos/'.$flickr_uid.'/favorites/'; break; case 'group': $link = 'http://www.flickr.com/groups/'.$flickr_groupid.'/'; break; case 'set': if($content['owner'] && $content['id']){ $link = 'http://www.flickr.com/photos/'.$content['owner'].'/sets/'.$content['id'].'/'; } break; } if($link){ $user_link = ''; } } // If content successfully fetched, generate output... $continue = true; $hidden .= ''; }else{ $hidden .= ''; $continue = false; $feed_found = true; } } } /////////////////////////////////////////////////////////////////////// //// 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'=>$user_link,'image_captions'=>$photocap,'image_urls'=>$photourl,'image_perms'=>$linkurl,'image_originals'=>$originalurl); if( true == $continue && !$disablecache ){ $cache_results = $results; if(!is_serialized( $cache_results )) { $cache_results = maybe_serialize( $cache_results ); } $this->putCache($key, $cache_results); $cachetime = $this->get_option( 'cache_time' ); if( $cachetime && is_numeric($cachetime) ){ $this->setExpiryInterval( $cachetime*60*60 ); } } return $results; } /** * Function for printing vertical style * * @ Since 0.0.1 */ function display_vertical($id, $options, $source_results){ $linkurl = $source_results['image_perms']; $photocap = $source_results['image_captions']; $photourl = $source_results['image_urls']; $userlink = $source_results['user_link']; $originalurl = $source_results['image_originals']; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////// Check Content ///////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if($options['flickr_photo_number'] != count($linkurl)){$options['flickr_photo_number']=count($linkurl);} ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////// Begin the Content ///////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// $output .= '