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; if(get_option('amazon_version') != AmazonTools::$version) { AmazonPluginUpdate::go(get_option('amazon_version'), $this->dir . '/plugin-update'); update_option('amazon_version', AmazonTools::$version); } } 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'); } 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.1'); } public function triggerAjaxUpdate() { $this->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) ? $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); $atts['foreach'] = implode(',', $asins); } if(isset($atts['foreach'])) { if(trim($atts['foreach']) == '') return ''; return $this->shortcodeForeach($atts, $content); } if(isset($atts['random'])) { $asins = ($atts['random'] == '' || $atts['random'] == 1) ? explode(',', strip_tags($content)) : explode(',', $atts['random']); $key = array_rand($asins); $this->last_asin = trim($asins[$key]); if($content) { if($atts['random'] != '' && $atts['random'] != 1) return do_shortcode($content); } elseif(!isset($atts['template'])) return do_shortcode($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; return '%' . $asin . '_' . $get . '%'; } return do_shortcode($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(!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(); return $content; } private function getSimilar($asin) { //TODO } } $amazon_locale = 'us'; $amazon_tools = new AmazonTools(); $amazon_buffer = array(); ?>