url = plugins_url('', __FILE__); $this->dir = dirname(__FILE__); $this->css_url = get_option('amazon_global_css'); $this->css_dir = get_option('amazon_global_css_dir'); $this->ajax_update = false; global $amazon_locale; $locale = get_option('amazon_locale'); $amazon_locale = $locale == '' ? 'us' : $locale; $version = get_option('amazon_version'); if($version != '' && $version != AmazonTools::$version) { AmazonPluginUpdate::go($version, $this->dir . '/plugin-update'); update_option('amazon_version', AmazonTools::$version); update_option('amazon_updated', 1); } if(get_option('amazon_updated')) add_action('admin_notices', array($this, 'updateNag')); if(AmazonTools::$is_premium && get_option('amazon_premium_update_url')) { $update_checker = new PluginUpdateChecker( $this->url . '/plugin-info.json.php?url=' . urlencode(get_option('amazon_premium_update_url')), __FILE__, 'amazon-tools-premium' ); //$update_checker->checkForUpdates(); } } public function uninstall() { global $wpdb; $prefix = $wpdb->prefix; $cache = "DROP TABLE IF EXISTS {$prefix}amazon_cache;"; $templates = "DROP TABLE IF EXISTS {$prefix}amazon_templates;"; $fields = "DROP TABLE IF EXISTS {$prefix}amazon_template_fields;"; $lists = "DROP TABLE IF EXISTS {$prefix}amazon_lists;"; $wpdb->query($cache); $wpdb->query($templates); $wpdb->query($fields); $wpdb->query($lists); delete_option('amazon_state'); delete_option('amazon_expire'); delete_option('amazon_error'); delete_option('amazon_update_method'); delete_option('amazon_feed_shortcodes'); if(self::$is_premium) AmazonPremium::uninstall(); } public function install() { global $wpdb; $prefix = $wpdb->prefix; add_option('amazon_state'); ob_start(); $wpdb->show_errors(); $cache = "CREATE TABLE IF NOT EXISTS {$prefix}amazon_cache ( asin CHAR(10) NOT NULL, field VARCHAR(32) NOT NULL, value TEXT, expire INT NOT NULL, PRIMARY KEY(asin, field) );"; $templates = "CREATE TABLE IF NOT EXISTS {$prefix}amazon_templates ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(128), type VARCHAR(15), content TEXT, excerpt TEXT, css TEXT );"; $template_fields = "CREATE TABLE IF NOT EXISTS {$prefix}amazon_template_fields ( template INT, field_name VARCHAR(64), default_value TEXT, type VARCHAR(15), PRIMARY KEY(template, field_name) );"; $lists = "CREATE TABLE IF NOT EXISTS {$prefix}amazon_lists ( name VARCHAR(32), asin VARCHAR(10), PRIMARY KEY(name, asin) );"; if($wpdb->query($cache) !== false && $wpdb->query($templates) !== false && $wpdb->query($template_fields) !== false && $wpdb->query($lists) !== false) { $wpdb->hide_errors(); update_option('amazon_state', 'ok'); } else { $wpdb->hide_errors(); update_option('amazon_state', 'install_failed'); update_option('amazon_error', ob_get_clean()); } if(get_option('amazon_state') == 'ok') { amazon_sample_templates(); } add_option('amazon_expire', 3); //cache expire time, default 3 days add_option('amazon_update_method', 'ajax'); add_option('amazon_install_time', time()); add_option('amazon_widget_shortcodes', 1); add_option('amazon_excerpt_shortcodes', 0); add_option('amazon_locale', 'us'); add_option('amazon_css_version', time()); add_option('amazon_global_css'); add_option('amazon_version', '1.4'); add_option('amazon_stats_last', time() + 86400); add_option('amazon_excerpt_non_single', 1); add_option('amazon_getting_started', 1); add_option('amazon_feed_shortcodes', 0); if(self::$is_premium) AmazonPremium::install(); update_option('amazon_updated', 1); } public function updateNag() { ?>

Check out what's new in Amazon Tools .
You are using the basic version of Amazon Tools.
Upgrade to Amazon Tools Premium and get access to additional features like Revenue Sharing and Auto Linking.
Now on sale for 20% off.

ajax_update = true; } public function enqueueScripts() { wp_enqueue_script('jquery'); if($this->css_url != '') wp_enqueue_style('amazon_global_css', $this->css_url, array(), get_option('amazon_css_version')); } public function ajaxUpdate() { if(!$this->ajax_update) return; $nonce = wp_create_nonce('amazon_update_nonce'); ?> ID, 'amazon_post_template', true); if(!$temp_id) return $content; $template = amazon_get_template($temp_id); $temp_fields = amazon_get_template_fields($template['id']); $fields = array(); foreach($temp_fields as $field) { $key = AmazonTools::$prefix . $field['field_name']; $meta_value = get_post_meta($post->ID, $key, true); //$fields[$field['field_name']] = ($meta_value != '') ? $meta_value : $field['default_value']; $fields[$field['field_name']] = $meta_value; } if($excerpt && trim($template['excerpt']) == '') return $content; $temp_content = ($excerpt || (get_option('amazon_excerpt_non_single') == 1 && !is_singular())) ? $template['excerpt'] : $template['content']; $temp_content = stripslashes($temp_content); foreach($fields as $key => $value) { $temp_content = str_replace('%' . $key . '%', $value, $temp_content); } $css = ($template['css'] == '') ? '' : "\n"; return $css . do_shortcode(str_replace('%content%', $content, $temp_content)); } public function applyTemplateExcerpt($content) { if($content == '') { global $post; $content = $post->post_content; } return $this->applyTemplate($content, true); } public function shortcode($atts, $content = null) { if(isset($atts['similar'])) { $asin = isset($atts['asin']) ? $atts['asin'] : $this->last_asin; $asins = AmazonLib::getSimilar($asin); if(!isset($atts['limit']) && is_numeric($atts['similar'])) $atts['limit'] = $atts['similar']; $atts['foreach'] = @implode(',', $asins); } if(isset($atts['list'])) { $asins = AmazonLib::getProductsByList(trim($atts['list'])); $atts['foreach'] = @implode(',', $asins); } if(isset($atts['random'])) { if($atts['random'] == '') $atts['random'] = -1; if(isset($atts['foreach'])) { $asins = explode(',', $atts['foreach']); $c = (is_numeric($atts['random']) && strlen($atts['random']) < 10 && $atts['random'] != -1) ? $atts['random'] : count($asins); } elseif(is_numeric($atts['random']) && strlen($atts['random']) < 10) //asins are ten digits and can be numeric { $asins = explode(',', strip_tags($content)); $c = (count($asins) < $atts['random'] || $atts['random'] == -1) ? count($asins) : $atts['random']; } else { $asins = explode(',', $atts['random']); $c = isset($atts['limit']) ? $atts['limit'] : 1; } shuffle($asins); $atts['foreach'] = @implode(',', array_slice($asins, 0 , $c)); } if(isset($atts['foreach'])) { if(trim($atts['foreach']) == '') return ''; return $this->shortcodeForeach($atts, $content); } if(isset($atts['setting'])) { $setting = $this->shortcodeSetting($atts['setting']); if($content == null || $setting == '') return $setting; return do_shortcode($content); } if(isset($atts['asin']) && $atts['asin'] != '%asin%') $this->last_asin = $atts['asin']; if(isset($atts['template'])) { if($template = amazon_get_template($atts['template'])) { $temp_content = str_replace('%asin%', $this->last_asin, stripslashes($template['content'])); $css = ($template['css'] == '') ? '' : "\n"; return $css . do_shortcode($temp_content); } return do_shortcode($content); } if(isset($atts['get'])) { global $amazon_buffer; $asin = (string) $this->last_asin; $get = isset($atts['get']) ? $atts['get'] : $content; $amazon_buffer[$asin][] = $get; $wrap_open = ''; $wrap_close = ''; if(isset($atts['length'])) { $wrap_open = '[amazon_format length="' . $atts['length'] . '"]'; $wrap_close = '[/amazon_format]'; } return $wrap_open . '%' . $asin . '_' . $get . '%' . $wrap_close; } if(isset($atts['post'])) { global $post; if(!$post) return do_shortcode($content); if(isset($post->$atts['post'])) return $post->$atts['post']; if($atts['post'] == 'permalink') return get_permalink(); } return do_shortcode($content); } /* This shortcode is used interally to format amazon data */ public function format($atts, $content = null) { if(!$content) return; if(isset($atts['length']) && is_numeric($atts['length'])) { $append = ''; if($atts['length'] < strlen($content)) $append = '…'; $content = substr($content, 0, $atts['length'] - 1) . $append; } return $content; } private function shortcodeForeach($atts, $content) { if($content == '' && !isset($atts['template'])) return ''; if(isset($atts['template']) && $template = amazon_get_template($atts['template'])) { $temp_content = stripslashes($template['content']); $css = ($template['css'] == '') ? '' : "\n"; $content = $css . $temp_content; } $asin = explode(',', $atts['foreach']); if(!is_array($asin) || count($asin) == 0) return ''; //check if there is a limit set if(isset($atts['limit']) && is_numeric($atts['limit'])) { $limit = $atts['limit']; if(count($asin) > $limit) $asin = array_slice($asin, 0, $limit); } $processedContent = ''; foreach($asin as $a) { $this->last_asin = $a; $curr = str_replace('%asin%', $a, $content); $processedContent .= do_shortcode($curr) . "\n"; } return $processedContent; } private function shortcodeSetting($key) { if($key == 'tld') { global $amazon_locale; return AmazonAPI::getTLD($amazon_locale); } elseif($key == 'associate_tag') { return AmazonLib::assocTag(); } elseif(!in_array($key, $this->allowed_settings)) return ''; else return get_option('amazon_' . $key); } public function bufferData($content) { global $amazon_buffer; global $amazon_locale; foreach($amazon_buffer as &$keys) { $keys = array_unique($keys); } //echo '
'; print_r($amazon_buffer); echo '
'; if(count($amazon_buffer) < 1) return $content; $data = amazon_fetch($amazon_buffer, $amazon_locale); foreach($data as $asin => $keys) { foreach($keys as $key => $value) { $search = "%{$asin}_{$key}%"; $content = str_replace($search, $value, $content); } } $amazon_buffer = array(); /* This optimization avoids going through every shortcode again. The only shortcode we need to look for is 'amazon_format'. */ global $shortcode_tags; $t = $shortcode_tags; $shortcode_tags = array('amazon_format' => array($this, 'format')); $content = do_shortcode($content); $shortcode_tags = $t; return $content; } } if(AmazonTools::$is_premium) require_once('premium.php'); $amazon_locale = 'us'; $amazon_tools = new AmazonTools(); $amazon_buffer = array(); $amazon_enable_cache = true; ?>