[image] '); function widget_amazonshowcase_init() { if ( !function_exists('register_sidebar_widget') || !function_exists('register_widget_control') ) return; function widget_amazonshowcase($args, $number = 1) { extract($args); $options = get_option('widget_amazonshowcase'); $title = $options[$number]['title']; $associateId = $options[$number]['associateId']; $locale = $options[$number]['locale']; $asins = $options[$number]['asins']; $imageSizes = $options[$number]['imageSizes']; $itemTemplates = $options[$number]['templates']; echo $before_widget . $before_title . $title . $after_title; $url_parts = parse_url(get_bloginfo('home')); echo '
'; // Query Amazon for item information $amzItems = amzLookup(implode(',',$asins), $associateId, $locale); $amzItemData = array(); foreach ($amzItems->ItemLookupResponse->Items->children() as $amzItem) { if (is_object($amzItem->ASIN)) { $amzItemData[$amzItem->ASIN->CDATA()] = $amzItem; } } $itemCount = 0; foreach ($asins as $asin) { if (!empty($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 = ''; if (is_object($amzItem->ItemAttributes->ProductGroup) && $amzItem->ItemAttributes->ProductGroup->CDATA() == 'Book' && is_object($amzItem->ItemAttributes->Author)) { $itemAuthor = $amzItem->ItemAttributes->Author->CDATA(); } $imgWidth = ''; $imgHeight = ''; $imgSource = ''; if (is_object($amzItem->SmallImage) && $imageSizes[$itemCount] == 'small') { $imgWidth = $amzItem->SmallImage->Width->CDATA(); $imgHeight = $amzItem->SmallImage->Height->CDATA(); $imgSource = $amzItem->SmallImage->URL->CDATA(); } else if (is_object($amzItem->MediumImage)) { $imgWidth = $amzItem->MediumImage->Width->CDATA(); $imgHeight = $amzItem->MediumImage->Height->CDATA(); $imgSource = $amzItem->MediumImage->URL->CDATA(); } // Two purposes: Avoids blank templates and updates legacy versions if (empty($itemTemplates[$itemCount])) { $itemTemplates[$itemCount] = AMZSHCS_DEFAULT_TEMPLATE; } $itemOutput = $itemTemplates[$itemCount]; $itemOutput = str_replace('[image]', ''.$itemTitle.'', $itemOutput); $itemOutput = str_replace('[url]', $itemURL, $itemOutput); $itemOutput = str_replace('[title]', $itemTitle, $itemOutput); $itemOutput = str_replace('[author]', $itemAuthor, $itemOutput); // Output the widget content echo $itemOutput; $itemCount++; } } echo '
'; echo $after_widget; } function widget_amazonshowcase_control($number = 1) { $options = get_option('widget_amazonshowcase'); //echo '
'; print_r($options); exit;

		if (!is_array($options[$number])) {
			$options[$number] = array(
				'title' => '',
				'associateId' => '',
				'locale' => '',
				'asins' => array(),
				'imageSizes'=> array(),
				'templates'=> array()
			);
		}

		if ( $_POST['amzshcs-submit-'.$number] ) {
			$options[$number]['title'] = strip_tags(stripslashes($_POST['amzshcs-title-'.$number]));
			$options[$number]['associateId'] = strip_tags(stripslashes($_POST['amzshcs-associateId-'.$number]));
			$options[$number]['locale'] = strip_tags(stripslashes($_POST['amzshcs-locale-'.$number]));

			$options[$number]['asins'] = array();
			foreach ($_POST['amzshcs-asin-'.$number] as $asin) {
				$options[$number]['asins'][] = trim(strip_tags(stripslashes($asin)));
			}

			$options[$number]['imageSizes'] = array();
			foreach ($_POST['amzshcs-imageSize-'.$number] as $imageSize) {
				$options[$number]['imageSizes'][] = strip_tags(stripslashes($imageSize));
			}

			$options[$number]['templates'] = array();
			foreach ($_POST['amzshcs-template-'.$number] as $itemTemplate) {
				if (!empty($itemTemplate)) {
					$options[$number]['templates'][] = stripslashes($itemTemplate);
				} else {
					$options[$number]['templates'][] = stripslashes(AMZSHCS_DEFAULT_TEMPLATE);
				}
			}

			update_option('widget_amazonshowcase', $options);
		}

		$title = htmlspecialchars($options[$number]['title'], ENT_QUOTES);
		$associateId = htmlspecialchars($options[$number]['associateId'], ENT_QUOTES);
		$locale = htmlspecialchars($options[$number]['locale'], ENT_QUOTES);

		$asins = array();
		foreach ($options[$number]['asins'] as $asin) {
			$asins[] = htmlspecialchars($asin, ENT_QUOTES);
		}

		$imageSizes = array();
		$imageSizeLarge = array();
		foreach ($options[$number]['imageSizes'] as $imageSize) {
			$imageSizes[] = htmlspecialchars($imageSize, ENT_QUOTES);
			$imageSizeLarge[] = $imageSize == 'large' ? 'selected' : '';
		}

		$itemTemplates = array();
		if (count($options[$number]['templates']) > 0) {
			foreach ($options[$number]['templates'] as $itemTemplate) {
				$itemTemplates[] = htmlspecialchars($itemTemplate, ENT_QUOTES);
			}
		} else {
			$itemTemplates = array_fill(0, 10, htmlspecialchars(AMZSHCS_DEFAULT_TEMPLATE, ENT_QUOTES));
		}


		$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-form-fields p { float: left; margin-top: 5px; text-align: right; width: 350px; } #amzshcs-items-table-{$number} { border-collapse: collapse; clear: both; } #amzshcs-items-table-{$number} th { text-align: left; } #amzshcs-items-table-{$number} th, #amzshcs-items-table-{$number} td { border-bottom: 1px solid #ccc; padding: 2px 5px; } #amzshcs-items-table-{$number} th small { font-weight: normal; } .amzshcs-std-input { width: 200px; } .amzshcs-locale-select { width: 200px; } .amzshcs-size-select { width: 100px; } .amzshcs-template-input { width: 400px; }

FORM; for ($i=0; $i<10; $i++) { $count = $i+1; echo << ROW; } echo << FORM; } function widget_amazonshowcase_setup() { $options = $newoptions = get_option('widget_amazonshowcase'); if ( isset($_POST['amazonshowcase-number-submit']) ) { $number = (int) $_POST['amazonshowcase-number']; if ( empty($number) || $number < 1 ) { $number = 1; } else if ( $number > 10 ) { $number = 10; } $newoptions['number'] = $number; } if ( $options != $newoptions ) { $options = $newoptions; update_option('widget_amazonshowcase', $options); widget_amazonshowcase_register($options['number']); } } function widget_amazonshowcase_page() { $options = $newoptions = get_option('widget_amazonshowcase'); ?>

Amazon Showcase Widgets

10 ) { $number = 10; } for ($i = 1; $i <= 10; $i++) { $name = array('Amazon Shwcs. %s', null, $i); register_sidebar_widget($name, $i <= $number ? 'widget_amazonshowcase' : /* unregister */ '', $i); register_widget_control($name, $i <= $number ? 'widget_amazonshowcase_control' : /* unregister */ '', 750, 625, $i); } add_action('sidebar_admin_setup', 'widget_amazonshowcase_setup'); add_action('sidebar_admin_page', 'widget_amazonshowcase_page'); } 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; } $url = $base.'?Service=AWSECommerceService&AWSAccessKeyId=1YNZ339ZCHHAKYFSY702&Operation=ItemLookup&ResponseGroup=Medium' .'&ItemId='.urlencode($asins) .'&AssociateTag='.(empty($associateId) ? 'subversionfor-20' : $associateId); if (function_exists('curl_init')) { if ($_GET['amzshcs-debug']) echo ''; // 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 { if ($_GET['amzshcs-debug']) echo ''; // Send the request and capture the XML returned $xml = file_get_contents($url); } if ($_GET['amzshcs-debug']) echo ''; $impl = new IsterXmlSimpleXMLImpl; return $impl->load_string($xml); } // Delay plugin execution to ensure Dynamic Sidebar has a chance to load first widget_amazonshowcase_register(); } add_action('plugins_loaded', 'widget_amazonshowcase_init'); ?>
Item ASIN (or ISBN-10) Image Size Template (Advanced users only)
Available Tags: [image] [url] [title] [author]
#{$count}