amazon_appip_truncate( $text, $charlen ); } public function do_shortcode($atts, $content = ''){ global $amazonhiddenmsg,$amazonerrormsg,$apippopennewwindow,$apippnewwindowhtml,$post; $thenewret = array(); $defaults = array( 'asin' => '', 'locale' => APIAP_LOCALE, 'partner_id' => APIAP_ASSOC_ID, 'private_key' => APIAP_SECRET_KEY, 'public_key' => APIAP_PUB_KEY, 'fields' => '', 'field' => '', 'listprice' => 1, 'used_price' => 1, 'replace_title' => '', 'template' => 'default', 'msg_instock' => 'In Stock', 'msg_outofstock'=> 'Out of Stock', 'target' => '_blank', 'button_url' => '', 'button' => '', 'container' => apply_filters('amazon-elements-container','div'), 'container_class' => apply_filters('amazon-elements-container-class','amazon-element-wrapper'), 'labels' => '', 'use_carturl' => false, 'list_price' => null, //added only as a secondary use of $listprice 'show_list' => null, //added only as a secondary use of $listprice 'show_used' => null, //added only as a secondary use of $used_price 'usedprice' => null, //added only as a secondary use of $used_price 'charlen' => 0 , // if greater than 0 will concat text fileds 'button_use_carturl' => false, ); extract( shortcode_atts( $defaults, $atts ) ); $listprice = (isset($list_price) && $list_price != null ) ? $list_price : $listprice; $listprice = (isset($show_list) && $show_list != null ) ? $show_list : $listprice; $used_price = (isset($usedprice) && $usedprice != null ) ? $usedprice : $used_price; $used_price = (isset($show_used) && $show_used != null ) ? $show_used : $used_price; $use_carturl = (isset($use_carturl) && ( (int) $use_carturl == 1 || $use_carturl == true ) ) ? true : false; $button_use_carturl = (isset($button_use_carturl) && ( (int) $button_use_carturl == 1 || $button_use_carturl == true ) ) ? true : false; $wrap = str_replace(array('<','>'), array('',''),$container); $charlen = isset($atts['charlen']) && (int)$atts['charlen'] > 0 ? (int)$atts['charlen'] : 0; $new_button_arr = amazon_product_get_new_button_array($locale); if($labels != ''){ $labelstemp = explode(',',$labels); unset($labels); foreach($labelstemp as $lab){ $keytemp = explode('::',$lab); if(isset($keytemp[0]) && isset($keytemp[1])){ $labels[$keytemp[0]][] = apply_filters('appip_label_text_'.str_replace(' ','-',strtolower($keytemp[1])), $keytemp[1] /*value*/, $keytemp[0] /*field*/, 'amazon-element' ); } } }else{ $labels = array(); } if($button_url != ''){ $buttonstemp = explode(',',$button_url); unset($button_url); foreach($buttonstemp as $buttona){ if(!empty($buttona)){ $button_url[] = $buttona; } } }else{ $button_url = array(); } if( $field == '' && $fields != '' ){$field = $fields;} if( $target != '' ){$target = ' target="'.$target.'" ';} $appip_text_lgimage = apply_filters('appip_text_lgimage', __( "See larger image", 'amazon-product-in-a-post-plugin' )); if ( $asin != ''){ $inCache = amazon_product_check_in_cache($asin); $ASIN = ( is_array( $asin ) && !empty( $asin ) )? implode(',',$asin) : $asin; //valid ASIN or ASINs $asinR = explode(",",$ASIN); /* New Button functionality */ if($button != ''){ $buttonstemp = explode(',', $button ); unset($button); if( count($buttonstemp) === 1 && count($asinR) > 1){ foreach($asinR as $kba => $kbv ){ $button[] = $buttonstemp[0]; } }else{ foreach($buttonstemp as $buttona){ if(!empty($buttona)){ $button[] = $buttona; } } } }else{ $button = array(); } /* END New Button functionality */ $errors = ''; if($inCache) $pxmlNew = amazon_plugin_aws_signed_request($locale, array("Operation" => "ItemLookup","ItemId" => $ASIN,"ResponseGroup" => "Large","IdType" => "ASIN","AssociateTag" => $partner_id,"RequestBy" => 'amazon-elements' ), APIAP_PUB_KEY, APIAP_SECRET_KEY, true); else $pxmlNew = amazon_plugin_aws_signed_request($locale, array("Operation" => "ItemLookup","ItemId" => $ASIN,"ResponseGroup" => "Large","IdType" => "ASIN","AssociateTag" => $partner_id,"RequestBy" => 'amazon-elements' ), APIAP_PUB_KEY, APIAP_SECRET_KEY); $totalResult1 = array(); $totalResult2 = array(); $errorsArr = array(); if( is_array( $pxmlNew ) && !empty( $pxmlNew ) ){ $pxmle = array(); foreach($pxmlNew as $pxmlkey => $pxml ){ if(!is_array($pxml)){ $pxmle = $pxml; }else{ $r1 = appip_plugin_FormatASINResult( $pxml , 0, $asinR); if(is_array($r1) && !empty($r1)){ foreach($r1 as $ritem){ $totalResult1[] = $ritem; } } $r2 = appip_plugin_FormatASINResult( $pxml, 1, $asinR ); if(is_array($r2) && !empty($r2)){ foreach($r2 as $ritem2){ $totalResult2[] = $ritem2; } } } } } $resultarr = array(); if(!empty($pxmle)){ $pxml = $pxmle; echo '
'; return false; }else{ $resultarr1 = isset($totalResult1) && !empty($totalResult1) ? $totalResult1 : array(); //appip_plugin_FormatASINResult( $pxml ); $resultarr2 = isset($totalResult2) && !empty($totalResult2) ? $totalResult2 : array(); //appip_plugin_FormatASINResult( $pxml, 1 ); if(is_array($resultarr1) && !empty($resultarr1)){ foreach($resultarr1 as $key1 => $result1): $mainAArr = (array) $result1; $otherArr = (array) $resultarr2[$key1]; $resultarr[$key1] = (array) array_merge($mainAArr,$otherArr); ksort($resultarr[$key1]); endforeach; } $arr_position = 0; if(is_array($resultarr)): $retarr = array(); $newErr = ''; $usSSL = amazon_check_SSL_on(); $region = APIAP_LOCALE; foreach($resultarr as $key => $result): $currasin = isset($result['ASIN']) ? $result['ASIN'] : ''; if(isset($result['NoData']) && $result['NoData'] == '1' ): echo '<'.$wrap.' style="display:none;" class="appip-errors">APPIP ERROR:nodata['.str_replace(']-->',']->',implode("\n",$result['Error'])).''.$wrap.'>'; elseif( !isset($result['ASIN']) || empty( $result['ASIN'] ) || $result['ASIN'] == 'Array' ): echo '<'.$wrap.' style="display:none;" class="appip-errors">APPIP ERROR:nodata[ ('.$key.') NO DATA '.$wrap.'>'; else: $linkURL = ($use_carturl) ? str_replace(array('##REGION##','##AFFID##','##SUBSCRIBEID##'),array($locale,$partner_id,APIAP_PUB_KEY),$result['CartURL'] ) : $result['URL']; $btnlinkURL = ($button_use_carturl) ? str_replace(array('##REGION##','##AFFID##','##SUBSCRIBEID##'),array($locale,$partner_id,APIAP_PUB_KEY),$result['CartURL'] ) : $result['URL']; $nofollow = ' rel="nofollow"'; $nofollow = apply_filters('appip_template_add_nofollow',$nofollow,$result); $buttonURL = apply_filters('appip_amazon_button_url',plugins_url('/images/generic-buy-button.png',dirname(__FILE__)),'generic-buy-button.png',$region); if($result['Errors'] != '' ) $newErr = '<'.$wrap.' style="display:none;" class="appip-errors">HIDDEN APIP ERROR(S): '.$result['Errors'].''.$wrap.'>'; $fielda = is_array($field) ? $field : explode(',',str_replace(' ','',$field)); foreach($fielda as $fieldarr){ switch(strtolower($fieldarr)){ case 'title_clean': $retarr[$currasin][$fieldarr] = $this->appip_do_charlen(maybe_convert_encoding($result["Title"]), $charlen); break; case 'author_clean': $retarr[$currasin][$fieldarr] = $this->appip_do_charlen(maybe_convert_encoding($result["Author"]), $charlen); break; case 'desc_clean': case 'description_clean': if(is_array($result["ItemDesc"])){ $desc = preg_replace('/^\s*\/\/\s*\z/','$1', $result["ItemDesc"][0] ); $retarr[$currasin][$fieldarr] = $this->appip_do_charlen(maybe_convert_encoding($desc['Content']), $charlen); } break; case 'price_clean': case 'new-price_clean': case 'new price_clean': if("Kindle Edition" == $result["Binding"]){ $retarr[$currasin][$fieldarr] = 'Check Amazon for Pricing [Digital Only - Kindle]'; }else{ if( $result["LowestNewPrice"] == 'Too low to display' ){ $newPrice = 'Check Amazon For Pricing'; }else{ $newPrice = $result["LowestNewPrice"]; } if($result["TotalNew"]>0){ $retarr[$currasin][$fieldarr] = maybe_convert_encoding($newPrice).' - '.$msg_instock; }else{ $retarr[$currasin][$fieldarr] = maybe_convert_encoding($newPrice).' - '.$msg_instock; } } break; case 'image_clean': case 'med-image_clean': //$retarr[$currasin][$fieldarr] = awsImageGrabberURL($currasin,"M"); if(isset($result['MediumImage'])) $retarr[$currasin][$fieldarr] = checkSSLImages_url($result['MediumImage']); else // need an image and small is always present if Medium is not $retarr[$currasin][$fieldarr] = checkSSLImages_url($result['SmallImage']); break; case 'sm-image_clean': //$retarr[$currasin][$fieldarr] = $usSSL ? plugin_aws_prodinpost_filter_text($result['SmallImage']) : $result['SmallImage']; $retarr[$currasin][$fieldarr] = checkSSLImages_url($result['SmallImage']); break; case 'lg-image_clean': $retarr[$currasin][$fieldarr] = checkSSLImages_url($result['LargeImage']); break; case 'full-image_clean': //$retarr[$currasin][$fieldarr] = $usSSL ? plugin_aws_prodinpost_filter_text($result['LargeImage']) :$result['LargeImage'] ; if( isset($result['HiResImage']) ) // if there is a hires image by chance, give that $retarr[$currasin][$fieldarr] = checkSSLImages_url($result['HiResImage']); else // otherwise return largest we have $retarr[$currasin][$fieldarr] = checkSSLImages_url($result['LargeImage']); break; case 'large-image-link_clean': //if( awsImageGrabberURL($currasin,"P") != '') //$retarr[$currasin][$fieldarr] = awsImageURLModify($result['LargeImage'],"P"); if( isset($result['HiResImage']) ) // if there is a hires image by chance, give that $retarr[$currasin][$fieldarr] = checkSSLImages_url($result['HiResImage']); else // otherwise return largest we have $retarr[$currasin][$fieldarr] = checkSSLImages_url($result['LargeImage']); break; case 'features_clean': $retarr[$currasin][$fieldarr] = maybe_convert_encoding($result["Feature"]); break; case 'link_clean': $retarr[$currasin][$fieldarr] = $linkURL; break; case 'button_clean': if(isset($button_url[$arr_position])) $retarr[$currasin][$fieldarr] = $button_url[$arr_position]; else $buttonURL = apply_filters('appip_amazon_button_url',plugins_url('/images/generic-buy-button.png',dirname(__FILE__)),'generic-buy-button.png',$region); $retarr[$currasin][$fieldarr] =$buttonURL; break; case 'customerreviews_clean': $retarr[$currasin][$fieldarr] = $result['CustomerReviews']; break; case 'author': $retarr[$currasin][$fieldarr] = $this->appip_do_charlen($result['Author'], $charlen); break; case 'title': $result["Title"] = $this->appip_do_charlen($result["Title"], $charlen); if(!isset($labels['title-wrap'][$arr_position]) && !isset($labels['title'][$arr_position])){ $labels['title'][$arr_position] = '<'.$wrap.' class="appip-title">'. maybe_convert_encoding($result["Title"]).''.$wrap.'>'; }elseif(!isset($labels['title-wrap'][$arr_position]) && isset($labels['title'][$arr_position])){ $labels['title'][$arr_position] = '<'.$wrap.' class="appip-title">'.$labels['title'][$arr_position].''.$wrap.'>'; }elseif(isset($labels['title-wrap'][$arr_position]) && isset($labels['title'][$arr_position])){ $labels['title'][$arr_position] = "<{$labels['title-wrap'][$arr_position]} class='appip-title'>{$labels['title'][$arr_position]}{$labels['title-wrap'][$arr_position]}>"; }elseif(isset($labels['title-wrap'][$arr_position]) && !isset($labels['title'][$arr_position])){ $labels['title'][$arr_position] = '<'.$labels['title-wrap'][$arr_position].' class="appip-title">'. maybe_convert_encoding($result["Title"]).''.$labels['title-wrap'][$arr_position].'>'; }else{ $labels['title'][$arr_position] = '<'.$wrap.' class="appip-title">'. maybe_convert_encoding($result["Title"]).''.$wrap.'>'; } $retarr[$currasin][$fieldarr] = $labels['title'][$arr_position]; break; case 'desc': case 'description': $labels['desc'][$arr_position] = isset($labels['desc'][$arr_position]) ? $labels['desc'][$arr_position] : ''; if(isset($labels['desc'])){ $labels['desc'][$arr_position] = ''.$labels['desc'][$arr_position].' '; }elseif(isset($labels['description'][$arr_position])){ $labels['desc'][$arr_position] = ''.$labels['description'][$arr_position].' '; }else{ $labels['desc'][$arr_position] = ''; } if(is_array($result["ItemDesc"])){ //$desc = $this->appip_do_charlen(preg_replace('/^\s*\/\/\s*\z/','$1', $result["ItemDesc"][0] ), $charlen); $desc = preg_replace('/^\s*\/\/\s*\z/','$1', $result["ItemDesc"][0] ); $retarr[$currasin][$fieldarr] = maybe_convert_encoding($labels['desc'][$arr_position].$desc['Content']); } break; case 'gallery': if(!isset($labels['gallery'][$arr_position])){$labels['gallery'][$arr_position] = "Additional Images:";}else{$labels['gallery'][$arr_position] = ''.$labels[$fieldarr][$arr_position].' '.$wrap.'>';} if($result['AddlImages']!=''){ $retarr[$currasin][$fieldarr] = '<'.$wrap.' class="amazon-image-wrapper">'.$labels['gallery'][$arr_position].'