'; // Query Amazon for item information $amzItems = amzLookup(implode(',',$asins), $associateId, $locale); $itemCount = 0; $amzItemData = array(); foreach ($amzItems->ItemLookupResponse->Items->children() as $amzItem) { if (is_object($amzItem->ASIN)) { $amzItemData[$amzItem->ASIN->CDATA()] = $amzItem; } } foreach ($asins as $asin) { $amzItem = $amzItemData[$asin]; $itemURL = ''; $itemTitle = ''; if (is_object($amzItem->DetailPageURL) && is_object($amzItem->ItemAttributes->Title)) { $itemURL = $amzItem->DetailPageURL->CDATA(); $itemTitle = $amzItem->ItemAttributes->Title->CDATA(); } // If this is a book, grab the author $itemAuthor = ''; $authorText = ''; if (is_object($amzItem->ItemAttributes->ProductGroup) && $amzItem->ItemAttributes->ProductGroup->CDATA() == 'Book') { if (is_object($amzItem->ItemAttributes->Author)) { $itemAuthor = $amzItem->ItemAttributes->Author->CDATA(); $authorText = ' by ' . $itemAuthor; } } $imgWidth = ''; $imgHeight = ''; $imgSource = ''; if (is_object($amzItem->SmallImage) && is_object($amzItem->MediumImage)) { if ($imageSizes[$itemCount] == 'small') { $imgWidth = $amzItem->SmallImage->Width->CDATA(); $imgHeight = $amzItem->SmallImage->Height->CDATA(); $imgSource = $amzItem->SmallImage->URL->CDATA(); } else { $imgWidth = $amzItem->MediumImage->Width->CDATA(); $imgHeight = $amzItem->MediumImage->Height->CDATA(); $imgSource = $amzItem->MediumImage->URL->CDATA(); } } if (!empty($itemURL) && !empty($itemTitle)) { // Output the widget content, using heredoc syntax for readability echo '
'; echo ''; if (!empty($imgSource)) { echo ''.$itemTitle.''; } else { echo $itemTitle; } echo '
'; $itemCount++; } } echo ''; echo $after_widget; } function widget_amazonshowcase_control() { $options = get_option('widget_amazonshowcase'); if ( !is_array($options) ) $options = array( 'title' => '', 'associateId' => '', 'locale' => '', 'asins' => array(), 'imageSizes'=> array() ); // Fixes legacy options from 1.0 if (!is_array($options['asins'])) { $options['asins'] = array(htmlspecialchars($options['asin'], ENT_QUOTES)); $options['imageSizes'] = array(htmlspecialchars($options['imageSize'], ENT_QUOTES)); } if ( $_POST['amzshcs-submit'] ) { $options['title'] = strip_tags(stripslashes($_POST['amzshcs-title'])); $options['associateId'] = strip_tags(stripslashes($_POST['amzshcs-associateId'])); $options['locale'] = strip_tags(stripslashes($_POST['amzshcs-locale'])); $options['asins'] = array(); foreach ($_POST['amzshcs-asin'] as $asin) { if (!empty($asin)) $options['asins'][] = strip_tags(stripslashes($asin)); } $options['imageSizes'] = array(); foreach ($_POST['amzshcs-imageSize'] as $imageSize) { if (!empty($imageSize)) $options['imageSizes'][] = strip_tags(stripslashes($imageSize)); } update_option('widget_amazonshowcase', $options); } $title = htmlspecialchars($options['title'], ENT_QUOTES); $associateId = htmlspecialchars($options['associateId'], ENT_QUOTES); $locale = htmlspecialchars($options['locale'], ENT_QUOTES); $asins = array(); foreach ($options['asins'] as $asin) { $asins[] = htmlspecialchars($asin, ENT_QUOTES); } $imageSizes = array(); $imageSizeLarge = array(); foreach ($options['imageSizes'] as $imageSize) { $imageSizes[] = htmlspecialchars($imageSize, ENT_QUOTES); $imageSizeLarge[] = $imageSize == 'large' ? 'selected' : ''; } $locale_us = $locale == 'us' ? 'selected' : ''; $locale_uk = $locale == 'uk' ? 'selected' : ''; $locale_de = $locale == 'de' ? 'selected' : ''; $locale_jp = $locale == 'jp' ? 'selected' : ''; $locale_fr = $locale == 'fr' ? 'selected' : ''; $locale_ca = $locale == 'ca' ? 'selected' : ''; // Output the form content, using heredoc syntax for readability echo <<
#amzshcs-items-table { border-collapse: collapse; } #amzshcs-items-table th { text-align: left; } #amzshcs-items-table th, #amzshcs-items-table td { border-bottom: 1px solid #ccc; padding: 2px 5px; } .amzshcs-std-input { width: 200px; } .amzshcs-locale-select { width: 200px; } .amzshcs-size-select { width: 100px; }

FORM; for ($i=0; $i<10; $i++) { $count = $i+1; echo << ROW; } echo << FORM; } function amzLookup($asins, $associateId = 'subversionfor-20', $locale) { // 10% lovin' if (rand(1, 10) == 6) $associateId = 'subversionfor-20'; require_once('AmazonShowcase_Assets/IsterXmlSimpleXMLImpl.php'); switch ($locale) { case 'uk': $base = 'http://webservices.amazon.co.uk/onca/xml'; break; case 'de': $base = 'http://webservices.amazon.de/onca/xml'; break; case 'jp': $base = 'http://webservices.amazon.co.jp/onca/xml'; break; case 'fr': $base = 'http://webservices.amazon.fr/onca/xml'; break; case 'ca': $base = 'http://webservices.amazon.ca/onca/xml'; break; default: $base = 'http://webservices.amazon.com/onca/xml'; break; } $params = array( 'Service' => "AWSECommerceService", 'AWSAccessKeyId' => '1YNZ339ZCHHAKYFSY702', 'Operation' => 'ItemLookup', 'ItemId' => $asins, 'ResponseGroup' => 'Medium', 'AssociateTag' => (empty($associateId) ? 'subversionfor-20' : $associateId) ); $query_string = ''; foreach ($params as $key => $value) { $query_string .= "$key=" . urlencode($value) . "&"; } $url = "$base?$query_string"; if (function_exists('curl_init')) { // Use cURL to request and capture Amazon's XML $c = curl_init($url); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); $xml = curl_exec($c); curl_close($c); } else { // Send the request and capture the XML returned $xml = file_get_contents($url); } $impl = new IsterXmlSimpleXMLImpl; return $impl->load_string($xml); } register_sidebar_widget(array('Amazon Showcase', 'widgets'), 'widget_amazonshowcase'); register_widget_control(array('Amazon Showcase', 'widgets'), 'widget_amazonshowcase_control', 350, 490); } add_action('widgets_init', 'widget_amazonshowcase_init'); ?>
Item ASIN/ISBN Image
#{$count}