[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]', '

', $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 <<