option_defaults();
$uid = apply_filters( $this->hook, empty($pinterest_options['pinterest_user_id']) ? 'uid' : $pinterest_options['pinterest_user_id'], $pinterest_options );
$uid = @ereg_replace('[[:cntrl:]]', '', $uid ); // remove ASCII's control characters
$board = apply_filters( $this->hook, empty($pinterest_options['pinterest_user_board']) ? 'board' : $pinterest_options['pinterest_user_board'], $pinterest_options );
$board = @ereg_replace('[[:cntrl:]]', '', $board ); // remove ASCII's control characters
$key = 'pinterest-'.$this->vers.'-'.$pinterest_options['pinterest_source'].'-'.$uid.'-'.$board.'-link-'.$pinterest_options['pinterest_display_link'].'-'.$pinterest_options['pinterest_display_link_style'].'-'.$pinterest_options['pinterest_photo_number'].'-'.$pinterest_options['pinterest_photo_size'];
$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
switch ($pinterest_options['pinterest_photo_size']) {
case 75:
$size_id = '_t.';
break;
case 192:
$size_id = '_b.';
break;
case 554:
$size_id = '_c.';
break;
case 600:
$size_id = '_f.';
break;
case 930:
$size_id = '.';
break;
}
///////////////////////////////////////////////////
/// If nothing found, try using xml and rss_200 ///
///////////////////////////////////////////////////
if ( function_exists('simplexml_load_file') ) {
$pinterest_uid = apply_filters( $this->hook, empty($pinterest_options['pinterest_user_id']) ? '' : $pinterest_options['pinterest_user_id'], $pinterest_options );
switch ($pinterest_options['pinterest_source']) {
case 'user':
$request = 'http://pinterest.com/'.$pinterest_uid.'/feed.rss';
break;
case 'board':
$pinterest_board = apply_filters( $this->hook, empty($pinterest_options['pinterest_user_board']) ? '' : $pinterest_options['pinterest_user_board'], $pinterest_options );
$request = 'http://pinterest.com/'.$pinterest_uid.'/'.$pinterest_board.'/rss';
break;
}
$_pinteresturl = @urlencode( $request ); // just for compatibility
$_pinterest_xml = @simplexml_load_file( $_pinteresturl,"SimpleXMLElement",LIBXML_NOCDATA); // @ is shut-up operator
if($_pinterest_xml===false){
$hidden .= '';
$continue = false;
}else{
$title = $_pinterest_xml->channel->title;
$link = $_pinterest_xml->channel->link;
if(!$_pinterest_xml && !$_pinterest_xml->channel){
$hidden .= '';
$continue = false;
}else{
$s = 0; // simple counter
foreach( $_pinterest_xml->channel->item as $p ) { // This will prevent empty images from being added to linkurl.
if( $s<$pinterest_options['pinterest_photo_number'] ){
// list of link urls
$linkurl[$s] = (string) $p->link; // ->i is equivalent of ['i'] for objects
if($linkurl[$s]){
$content = (string) $p->description;
// 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 pinterest;
// preg_replace is bad at skipping lines so we'll start with preg_match
// i sets letters in upper or lower case,
@preg_match( "/img(.*?)>/i", $content , $matches ); // First, get image from feed.
// Next, strip away everything surrounding the source url.
// . means any expression, and + means repeat previous
$photourl_current = @preg_replace(array('/(.*)src="/i','/"(.*)/') , '',$matches[ 0 ]);
//echo $photourl_current;
// Finally, change the size. [] specifies single character and \w is any word character
$photourl[$s] = @preg_replace('/[_]\w[.]/', $size_id, $photourl_current );
$originalurl[$s] = @preg_replace('/[_]\w[.]/', '.', $photourl_current );
$photocap[$s] = (string) $p->title;
}
$s++;
}
else{
break;
}
}
if(!empty($linkurl) && !empty($photourl)){
if( $pinterest_options['pinterest_display_link'] ) {
$linkStyle = $pinterest_options['pinterest_display_link_style'];
if ($linkStyle == 'large') {
$user_link .= '
';
} elseif ($linkStyle == 'medium') {
$user_link .= '';
} elseif ($linkStyle == 'small') {
$user_link .= '';
} elseif ($linkStyle == 'tiny') {
$user_link .= '';
} elseif ($linkStyle == 'text') {
$user_link .= '';
} else {
$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('APTFPINbyTAP_specialarraysearch')){
function APTFPINbyTAP_specialarraysearch($array, $find){
foreach ($array as $key=>$value){
if( is_string($key) && $key==$find){
return $value;
}
elseif(is_array($value)){
$results = APTFPINbyTAP_specialarraysearch($value, $find);
}
elseif(is_object($value)){
$sub = $array->$key;
$results = APTFPINbyTAP_specialarraysearch($sub, $find);
}
// If found, return
if(!empty($results)){return $results;}
}
return $results;
}
}
$pinterest_uid = apply_filters( $this->hook, empty($pinterest_options['pinterest_user_id']) ? '' : $pinterest_options['pinterest_user_id'], $pinterest_options );
switch ($pinterest_options['pinterest_source']) {
case 'user':
$request = 'http://pinterest.com/'.$pinterest_uid.'/feed.rss';
break;
case 'board':
$pinterest_board = apply_filters( $this->hook, empty($pinterest_options['pinterest_user_board']) ? '' : $pinterest_options['pinterest_user_board'], $pinterest_options );
$request = 'http://pinterest.com/'.$pinterest_uid.'/'.$pinterest_board.'/rss';
break;
}
include_once(ABSPATH . WPINC . '/feed.php');
if( !function_exists('return_noCache') ){
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();
$title = @APTFPINbyTAP_specialarraysearch($rss,'title');
$title = $title['0']['data'];
$link = @APTFPINbyTAP_specialarraysearch($rss,'link');
$link = $link['0']['data'];
$rss_data = @APTFPINbyTAP_specialarraysearch($rss,'item');
$s = 0; // simple counter
if ($rss_data != NULL ){ // Check again
foreach ( $rss_data as $item ) {
if( $s<$pinterest_options['pinterest_photo_number'] ){
$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 pinterest;
// 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("/';
$user_link .= '
';
$user_link .= '';
} elseif ($linkStyle == 'medium') {
$user_link .= '';
} elseif ($linkStyle == 'small') {
$user_link .= '';
} elseif ($linkStyle == 'tiny') {
$user_link .= '';
} elseif ($linkStyle == 'text') {
$user_link .= '';
} else {
$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 Pinterest ID must be wrong ///
///////////////////////////////////////////////////////////////////////
if( false == $continue ) {
if($feed_found ){
$message .= '- Pinterest feed was successfully retrieved, but no photos found.';
}else{
$message .= '- Pinterest 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['pinterest_photo_number'] != count($linkurl)){$options['pinterest_photo_number']=count($linkurl);}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////// Begin the Content /////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$output .= '';
// Align photos
$output .= '
';
$shadow = ($options['style_shadow']?'AlpinePhotoTiles-img-shadow':'AlpinePhotoTiles-img-noshadow');
$border = ($options['style_border']?'AlpinePhotoTiles-img-border':'AlpinePhotoTiles-img-noborder');
$curves = ($options['style_curve_corners']?'AlpinePhotoTiles-img-corners':'AlpinePhotoTiles-img-nocorners');
$highlight = ($options['style_highlight']?'AlpinePhotoTiles-img-highlight':'AlpinePhotoTiles-img-nohighlight');
for($i = 0;$i<$options['pinterest_photo_number'];$i++){
$output .= '
";
}
if( !$options['widget_disable_credit_link'] ){
$by_link = '
';
$output .= $by_link;
}
// Close vertical-parent
$output .= '
';
if($userlink){
$output .= '
'.$userlink.'
'; // Only breakline if floating
}
// Close container
$output .= '
';
$output .= '';
$highlight = $this->get_option("general_highlight_color");
$highlight = ($highlight?$highlight:'#64a2d8');
if( $options['style_shadow'] || $options['style_border'] || $options['style_highlight'] ){
$output .= '';
}
if( $options['pinterest_image_link_option'] == "fancybox" ){
$output .= '';
}
return $output;
}
/**
* Function for printing cascade style
*
* @ Since 0.0.1
*/
function display_cascade($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['pinterest_photo_number'] != count($linkurl)){$options['pinterest_photo_number']= count($linkurl);}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////// Begin the Content /////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$output .= '';
// Align photos
$output .= '
';
$shadow = ($options['style_shadow']?'AlpinePhotoTiles-img-shadow':'AlpinePhotoTiles-img-noshadow');
$border = ($options['style_border']?'AlpinePhotoTiles-img-border':'AlpinePhotoTiles-img-noborder');
$curves = ($options['style_curve_corners']?'AlpinePhotoTiles-img-corners':'AlpinePhotoTiles-img-nocorners');
$highlight = ($options['style_highlight']?'AlpinePhotoTiles-img-highlight':'AlpinePhotoTiles-img-nohighlight');
for($col = 0; $col<$options['style_column_number'];$col++){
$output .= '
';
$output .= '
';
for($i = $col;$i<$options['pinterest_photo_number'];$i+=$options['style_column_number']){
$output .= '
';
}
$output .= '
';
}
$output .= '
';
if( !$options['widget_disable_credit_link'] ){
$by_link = '
';
$output .= $by_link;
}
// Close cascade-parent
$output .= '
';
$output .= '
';
if($userlink){
if($options['widget_alignment'] == 'center'){ // Optional: Set text alignment (left/right) or center
$output .= '
';
}
else{
$output .= '
'.$userlink.''; // Only breakline if floating
}
}
// Close container
$output .= '
';
$output .= '
';
$highlight = $this->get_option("general_highlight_color");
$highlight = ($highlight?$highlight:'#64a2d8');
if( $options['style_shadow'] || $options['style_border'] || $options['style_highlight'] ){
$output .= '';
}
if( $options['pinterest_image_link_option'] == "fancybox" ){
$output .= '';
}
return $output;
}
/**
* Function for printing and initializing JS styles
*
* @ Since 0.0.1
*/
function display_hidden($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['pinterest_photo_number'] != count($linkurl)){$options['pinterest_photo_number']=count($linkurl);}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////// Begin the Content /////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$output .= '
';
// Align photos
$output .= '
';
$output .= '
';
if( !$options['widget_disable_credit_link'] ){
$by_link = '
';
$output .= $by_link;
}
// Close vertical-parent
$output .= '
';
if($userlink){
if($options['widget_alignment'] == 'center'){ // Optional: Set text alignment (left/right) or center
$output .= '
';
}
else{
$output .= '
'.$userlink.''; // Only breakline if floating
}
}
// Close container
$output .= '
';
$disable = $this->get_option("general_loader");
$highlight = $this->get_option("general_highlight_color");
$highlight = ($highlight?$highlight:'#64a2d8');
$output .= '';
return $output;
}
}
?>