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')); } 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;"; $wpdb->query($cache); $wpdb->query($templates); $wpdb->query($fields); delete_option('amazon_state'); delete_option('amazon_expire'); delete_option('amazon_error'); delete_option('amazon_update_method'); 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) );"; if($wpdb->query($cache) !== false && $wpdb->query($templates) !== false && $wpdb->query($template_fields) !== 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_allow_stats', 1); add_option('amazon_excerpt_non_single', 1); if(self::$is_premium) AmazonPremium::install(); update_option('amazon_updated', 1); } public function updateNag() { ?>

Check out what's new in Amazon Tools .
Amazon Tools Premium is available.

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['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(); ?>