_db_table = $wpdb->prefix . "amz_servers"; $this->_pluginURL = get_option('siteurl') . '/wp-content/plugins/amz-search'; } function init() { $this->getAdminOptions(); } function addHeaderCode() { echo '' . "\n"; // check for CSS file specific to this theme $template = get_option('template'); if ( $template !== "default" ) { $theme_css = getcwd() . '/wp-content/plugins/amz-search/css/' . $template . '.css'; if ( is_readable( $theme_css ) ) echo '' . "\n"; } } function db_install() { global $wpdb; $table_name = $this->_db_table; if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) { $sql = "CREATE TABLE {$table_name} ( id enum('com','ca','uk','fr','de','jp') NOT NULL default 'com', server enum('amazon.com','amazon.ca','amazon.co.uk','amazon.fr','amazon.de','amazon.co.jp') NOT NULL default 'amazon.com', assoc_server enum('affiliate-program.amazon.com','associates.amazon.ca','affiliate-program.amazon.co.uk','partenaires.amazon.fr','partnernet.amazon.de','affiliate.amazon.co.jp') NOT NULL default 'affiliate-program.amazon.com', default_tag enum('imol-20','imol0a-20','imol-21','imol08-21','imol05-21','imol-22') NOT NULL default 'imol-20', user_tag varchar(32) default NULL, PRIMARY KEY (id), UNIQUE KEY server (server) ) PACK_KEYS=1 "; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); $_DATA[] = "INSERT IGNORE INTO {$table_name} VALUES ('com', 'amazon.com', 'affiliate-program.amazon.com', 'imol-20', '')"; $_DATA[] = "INSERT IGNORE INTO {$table_name} VALUES ('ca', 'amazon.ca', 'associates.amazon.ca', 'imol0a-20', '')"; $_DATA[] = "INSERT IGNORE INTO {$table_name} VALUES ('uk', 'amazon.co.uk', 'affiliate-program.amazon.co.uk', 'imol-21', '')"; $_DATA[] = "INSERT IGNORE INTO {$table_name} VALUES ('fr', 'amazon.fr', 'partenaires.amazon.fr', 'imol08-21', '')"; $_DATA[] = "INSERT IGNORE INTO {$table_name} VALUES ('de', 'amazon.de', 'partnernet.amazon.de', 'imol05-21', '')"; $_DATA[] = "INSERT IGNORE INTO {$table_name} VALUES ('jp', 'amazon.co.jp', 'affiliate.amazon.co.jp', 'imol-22', '')"; foreach ($_DATA as $insert) { $results = $wpdb->query( $insert ); } add_option("AMZ_db_version", $this->_version); } } function getAdminOptions() { $adminOptions = array( 'contribute' => '4', 'default_category' => 'Blended', 'default_search' => 'WordPress', 'default_server' => 'com', 'image_size' => 'Medium', 'search_count' => '0', 'xsl' => $this->_pluginURL . "/xsl/item-search.xsl", ); $savedOptions = get_option($this->_adminOptionsName); $dirty = false; if (!empty($savedOptions)) { foreach ($savedOptions as $key => $option) { if ( $adminOptions[$key] != $option ) { $dirty = true; $adminOptions[$key] = $option; } } } if ( $dirty ) update_option($this->_adminOptionsName, $adminOptions); return $adminOptions; } function printSearchBox() { $this->storeCleanRequestData(); $clean = $this->_cleanData; $display = '
'; echo $display; } function storeCleanRequestData() { $_AMZ_PREFS = $this->getAdminOptions(); // default and default default server if ( !empty( $_REQUEST['a_server'] ) ) $a_server = substr( $_REQUEST['a_server'], 0, 3 ); else $a_server = $_AMZ_PREFS['default_server']; $clean['a_server'] = $this->_validServer( $a_server ); // default and default default category if ( !empty( $_REQUEST['category'] ) ) $category = $_REQUEST['category']; else $category = $_AMZ_PREFS['default_category']; $clean['category'] = $this->_validCategory( $category ); // default and default default keyword $clean['no_keyword'] = true; $keyword = ''; if ( !empty( $_REQUEST['field-keywords'] ) ) { $keyword = $_REQUEST['field-keywords']; $clean['no_keyword'] = false; } $clean['keyword'] = $this->_validKeyword( $keyword ); if ( empty( $clean['keyword'] ) ) { if ( !empty( $_AMZ_PREFS['default_search']) ) $clean['keyword'] = $this->_validKeyword( $_AMZ_PREFS['default_search'] ); if ( empty( $clean['keyword'] ) ) $clean['keyword'] = 'Kahlil Gibran'; $clean['no_keyword'] = true; } // which page of results if ( !empty( $_REQUEST['ItemPage'] ) ) { $ItemPage = $_REQUEST['ItemPage']; settype( $ItemPage, 'integer' ); } else { $ItemPage = 1; } $clean['item_page'] = $ItemPage; if ( $clean['a_server'] == 'com' ) $clean['xml_server'] = 'us'; else $clean['xml_server'] = $clean['a_server']; $this->_cleanData = $clean; } function getSearchResults() { global $wpdb; $_AMZ_PREFS = $this->getAdminOptions(); $clean = $this->_cleanData; // Get the server info $sql = 'SELECT * FROM ' . $this->_db_table . ' WHERE id="' . $clean['a_server'] .'"'; $server_info = $wpdb->get_row($sql, ARRAY_A); $amazon_server = $server_info['server']; $ass_id = $server_info['user_tag']; $flag = $this->_pluginURL . '/images/flag_' . $server_info['id'] . '.gif'; if ( $ass_id == NULL ) { $ass_id = $server_info['default_tag']; } else if ( $_AMZ_PREFS['contribute'] > 0 ) { $_AMZ_PREFS['search_count'] += 1; if ( $_AMZ_PREFS['search_count'] >= $_AMZ_PREFS['contribute'] ) { $ass_id = $server_info['default_tag']; $_AMZ_PREFS['search_count'] = 0; } // Update the search count update_option($this->_adminOptionsName, $_AMZ_PREFS); } $display = 'You did not specify a valid search term, so here is a search for '{$clean['keyword']}'.
";
$amazon_search_url = "http://xml-{$clean['xml_server']}.amznxslt.com/onca/xml?";
// First the amazon vars...
$amazon_search_url .= "Service=AWSECommerceService&SubscriptionId=1M17J4TZNSDYTRSTAZ82";
$amazon_search_url .= "&ResponseGroup=Medium";
$amazon_search_url .= "&AssociateTag=$ass_id";
$amazon_search_url .= "&Operation=ItemSearch";
$amazon_search_url .= "&ItemPage={$clean['item_page']}";
$amazon_search_url .= "&SearchIndex={$clean['category']}";
if ( $clean['category'] != 'Blended' )
{
$amazon_search_url .= "&Sort=salesrank";
}
$amazon_search_url .= "&Keywords=" . urlencode( $clean['keyword'] );
$amazon_search_url .= "&Style={$_AMZ_PREFS['xsl']}";
$amazon_search_url .= "&Version=2007-10-29";
// ...then ours
$amazon_search_url .= "&ServerName=$amazon_server";
$amazon_search_url .= "&a_server={$clean['a_server']}";
$amazon_search_url .= "&Flag=$flag";
$amazon_search_url .= "&ImgSize={$_AMZ_PREFS['image_size']}";
$amazon_search_url .= "&keyword=" . urlencode( urlencode( $clean['keyword'] ) ); // [sic]
// $display .= 'Search URL: ' . $amazon_search_url . '
';
// grab search results from amazon
$ch = curl_init( $amazon_search_url );
curl_setopt( $ch, CURLOPT_HEADER, 0 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
$results = curl_exec( $ch );
if ( $err = curl_error( $ch ) )
{
$display .= $err . '
Settings Updated.