initial_path = $initial_path; $this->options = new AWShortcodesConfigurationOptionCollection; $this->wordpressCompatibility(); $this->registerOptions(); if (function_exists('is_link') && is_link(WP_PLUGIN_DIR.'/'.self::UNIX_NAME)) { $filename = WP_PLUGIN_DIR.'/amazon-widgets-shortcodes/'.basename($initial_path); $i18n_path = PLUGINDIR.'/amazon-widgets-shortcodes/i18n'; $i18n_path_from_plugins = 'amazon-widgets-shortcodes/i18n'; } else { $filename = $initial_path; $i18n_path = PLUGINDIR.'/'.dirname(plugin_basename($initial_path)).'/i18n'; $i18n_path_from_plugins = dirname(plugin_basename($initial_path)).'/i18n'; } $plugin_filepath = preg_replace('#(.+)([^/]+/[^/]+)$#sU', "$2", $filename); /* * Saving */ $this->filename = $filename; $this->i18n_path = $i18n_path; $this->i18n_path_from_plugins = $i18n_path_from_plugins; $this->plugin_basepath = dirname($filename); $this->plugin_filepath = $plugin_filepath; /** * @deprecated */ define('AWS_PLUGIN_BASEPATH', dirname($filename)); apply_filters('awshortcodes_configuration_construct', $this); } /** * Returns the default region used by the plugin * * Similar to the old `get_option('awshortcode_region')` or `AWShortcodeConfiguration::getRegion()` * * @author tparisot * @since 2.0 * @version 1.0 * @return string */ public function getDefaultRegion() { $profiles = $this->getOption('profiles')->getValue(); $profile = $this->getOption('default_profile')->getValue(); if ($profile) { return $profiles[$profile]['region']; } } /** * Returns the default tracking ID used by the plugin * * Similar to the old `get_option('awshortcode_tracking_id')` * * @todo * @author tparisot * @since 2.0 * @version 1.0 * @return string */ public function getDefaultTrackingId() { $profiles = $this->getOption('profiles')->getValue(); $profile = $this->getOption('default_profile')->getValue(); if ($profile) { return $profiles[$profile]['id']; } } /** * Returns the plugin filename, WP compatible * * @author oncletom * @since 2.0 * @version 1.0 * @return string */ public function getFilename() { return $this->filename; } /** * Returns the i18n path, WP compatible * * @author oncletom * @since 2.0 * @version 1.0 * @return string */ public function getI18nPath() { return $this->i18n_path; } /** * Returns the 18n path from plugins dir, WP compatible * * @author oncletom * @since 2.0 * @version 1.0 * @return string */ public function getI18nPathFromPlugins() { return $this->i18n_path_from_plugins; } /** * Returns the plugin initial path given to configuration constructor * * @author oncletom * @since 2.0 * @version 1.0 * @return string */ public function getInitialPath() { return $this->initial_path; } /** * Get an option by its short name * * @author oncletom * @since 2.0 * @version 1.0 * @param string $name * @return AWShortcodesConfigurationOption */ public function getOption($name) { return $this->options->$name; } /** * Easy way to get the whole list of registered options * * @static * @author oncletom * @version 2.1 * @since 1.3 * @return $options Array List of options and meta */ public function getOptions() { return $this->options; } /** * Returns the plugin base path * * Previously it was the constant `AWS_PLUGIN_BASEPATH` * * @author oncletom * @since 2.0 * @version 1.0 * @return string */ public function getPluginBasepath() { return $this->plugin_basepath; } /** * Returns the plugin path, WP compatible * * @author oncletom * @since 2.0 * @version 1.0 * @return string */ public function getPluginFilepath() { return $this->plugin_filepath; } /** * Return a region configuration * * @static * @author oncletom * @version 1.0 * @since 1.3 * @return $region Array Specific region settings * @param $region String[optional] Country code to get settings ; if null, grab the default region */ public static function getRegion($region = null) { if (is_null($region) || !$region) { $region = $this->getOption('region'); } $regions = self::getRegions(); return $regions[$region]; } /** * Returns all region configuration * * @static * @author oncletom * @version 2.2 * @since 1.3 * @return $regions Array */ public static function getRegions() { return array( 'ca' => array( 'lang_iso_code' => 'en_CA', 'marketplace' => 'CA', 'name' => __('Amazon Canada', 'awshortcode'), 'suffix' => '-20', 'tld' => 'ca', 'url' => array( 'affiliate' => 'http://associates.amazon.ca/', 'images' => 'http://ecx.images-amazon.com/images/I/%s', 'product' => 'http://www.amazon.ca/gp/product/%s?ie=UTF8&tag=%s&linkCode=as2&camp=1642&creative=6746&creativeASIN=%1$s', 'site' => 'http://www.amazon.ca/', 'tool-contextlinks' => 'http://cls.assoc-amazon.ca/ca/s/cls.js', 'tool-productpreview' => 'http://www.assoc-amazon.ca/s/link-enhancer?tag=%s&o=15', 'widget-carrousel' => 'http://ws.amazon.ca/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8010%%2F%s&Operation=%s', 'widget-deals' => 'http://ws.amazon.ca/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8009%%2F%s&Operation=%s', 'widget-mp3' => 'http://ws.amazon.ca/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8014%%2F%s&Operation=%s', 'widget-myfavorites' => 'http://ws.amazon.ca/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822/%1$s/%s/8001/%s', 'widget-product' => 'http://rcm-ca.amazon.ca/e/cm?t=%s&o=15&p=8&l=as1&asins=%s&fc1=%s&%s=1&lt1=%s&lc1=%s&bc1=%s&bg1=%s&f=ifr', 'widget-productcloud' => 'http://ws.amazon.ca/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822/%1$s/%s/8006/%s', 'widget-slideshow' => 'http://ws.amazon.ca/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8003%%2F%s&Operation=%s', 'widget-wishlist' => 'http://ws.amazon.ca/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822/%1$s/%s/8004/%s', ), ), 'de' => array( 'lang_iso_code' => 'de_DE', 'marketplace' => 'DE', 'name' => __('Amazon Germany', 'awshortcode'), 'suffix' => '-21', 'url' => array( 'affiliate' => 'http://partnernet.amazon.de/', 'images' => 'http://ecx.images-amazon.com/images/I/%s', 'product' => 'http://www.amazon.de/gp/product/%s?ie=UTF8&tag=%s&linkCode=as2&camp=1642&creative=6746&creativeASIN=%1$s', 'site' => 'http://www.amazon.de/', 'tool-contextlinks' => 'http://cls.assoc-amazon.de/de/s/cls.js', 'tool-productpreview' => 'http://www.assoc-amazon.de/s/link-enhancer?tag=%s&o=15', 'widget-carrousel' => 'http://ws.amazon.de/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8010%%2F%s&Operation=%s', 'widget-deals' => 'http://ws.amazon.de/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8009%%2F%s&Operation=%s', 'widget-mp3' => 'http://ws.amazon.de/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8014%%2F%s&Operation=%s', 'widget-myfavorites' => 'http://ws.amazon.de/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822/%1$s/%s/8001/%s', 'widget-product' => 'http://rcm-de.amazon.de/e/cm?t=%s&o=15&p=8&l=as1&asins=%s&fc1=%s&%s=1&lt1=%s&lc1=%s&bc1=%s&bg1=%s&f=ifr', 'widget-productcloud' => 'http://ws.amazon.de/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822/%1$s/%s/8006/%s', 'widget-slideshow' => 'http://ws.amazon.de/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8003%%2F%s&Operation=%s', 'widget-wishlist' => 'http://ws.amazon.de/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822/%1$s/%s/8004/%s', ), ), 'fr' => array( 'lang_iso_code' => 'fr_FR', 'marketplace' => 'FR', 'name' => __('Amazon France', 'awshortcode'), 'tld' => 'fr', 'suffix' => '-21', 'url' => array( 'affiliate' => 'http://partenaires.amazon.fr/', 'images' => 'http://ecx.images-amazon.com/images/I/%s', 'product' => 'http://www.amazon.fr/gp/product/%s?ie=UTF8&tag=%s&linkCode=as2&camp=1642&creative=6746&creativeASIN=%1$s', 'site' => 'http://www.amazon.fr/', 'tool-contextlinks' => 'http://cls.assoc-amazon.fr/fr/s/cls.js', 'tool-productpreview' => 'http://www.assoc-amazon.fr/s/link-enhancer?tag=%s&o=8', 'widget-carrousel' => 'http://ws.amazon.fr/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8010%%2F%s&Operation=%s', 'widget-deals' => 'http://ws.amazon.fr/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8009%%2F%s&Operation=%s', 'widget-mp3' => 'http://ws.amazon.fr/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8014%%2F%s&Operation=%s', 'widget-myfavorites' => 'http://ws.amazon.fr/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822/%1$s/%s/8001/%s', 'widget-product' => 'http://rcm-fr.amazon.fr/e/cm?t=%s&o=8&p=8&l=as1&asins=%s&fc1=%s&%s=1&lt1=%s&lc1=%s&bc1=%s&bg1=%s&f=ifr', 'widget-productcloud' => 'http://ws.amazon.fr/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822/%1$s/%s/8006/%s', 'widget-slideshow' => 'http://ws.amazon.fr/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8003%%2F%s&Operation=%s', 'widget-wishlist' => 'http://ws.amazon.fr/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822/%1$s/%s/8004/%s', ), ), 'jp' => array( 'lang_iso_code' => 'ja_JP', 'marketplace' => 'JP', 'name' => __('Amazon Japan', 'awshortcode'), 'suffix' => '-22', 'url' => array( 'affiliate' => 'http://affiliate.amazon.co.jp/', 'images' => 'http://ecx.images-amazon.com/images/I/%s', 'product' => 'http://www.amazon.co.jp/gp/product/%s?ie=UTF8&tag=%s&linkCode=as2&camp=1642&creative=6746&creativeASIN=%1$s', 'site' => 'http://www.amazon.co.jp/', 'tool-contextlinks' => '', 'tool-productpreview' => 'http://www.assoc-amazon.jp/s/link-enhancer?tag=%s&o=8', 'widget-carrousel' => 'http://ws.amazon.co.jp/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8010%%2F%s&Operation=%s', 'widget-deals' => 'http://ws.amazon.co.jp/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8009%%2F%s&Operation=%s', 'widget-mp3' => 'http://ws.amazon.co.jp/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8014%%2F%s&Operation=%s', 'widget-myfavorites' => 'http://ws.amazon.co.jp/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822/%1$s/%s/8001/%s', 'widget-product' => 'http://rcm-jp.amazon.co.jp/e/cm?t=%s&o=9&p=8&l=as1&asins=%s&fc1=%s&%s=1&lt1=%s&lc1=%s&bc1=%s&bg1=%s&f=ifr', 'widget-productcloud' => 'http://ws.amazon.co.jp/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822/%1$s/%s/8006/%s', 'widget-slideshow' => 'http://ws.amazon.co.jp/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8003%%2F%s&Operation=%s', 'widget-wishlist' => 'http://ws.amazon.co.jp/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822/%1$s/%s/8004/%s', ), ), 'uk' => array( 'lang_iso_code' => 'en_UK', 'marketplace' => 'UK', 'name' => __('Amazon United Kingdom', 'awshortcode'), 'suffix' => '-21', 'tld' => 'co.uk', 'url' => array( 'affiliate' => 'http://affiliate-program.amazon.co.uk/', 'images' => 'http://ecx.images-amazon.com/images/I/%s', 'product' => 'http://www.amazon.co.uk/gp/product/%s?ie=UTF8&tag=%s&linkCode=as2&camp=1642&creative=6746&creativeASIN=%1$s', 'site' => 'http://www.amazon.co.uk/', 'tool-contextlinks' => 'http://cls.assoc-amazon.co.uk/gb/s/cls.js', 'tool-productpreview' => 'http://www.assoc-amazon.co.uk/s/link-enhancer?tag=%s&o=2', 'widget-carrousel' => 'http://ws.amazon.co.uk/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8010%%2F%s&Operation=%s', 'widget-deals' => 'http://ws.amazon.co.uk/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8009%%2F%s&Operation=%s', 'widget-mp3' => 'http://ws.amazon.co.uk/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8014%%2F%s&Operation=%s', 'widget-myfavorites' => 'http://ws.amazon.co.uk/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822/%1$s/%s/8001/%s', 'widget-product' => 'http://rcm-uk.amazon.co.uk/e/cm?t=%s&o=2&p=8&l=as1&asins=%s&fc1=%s&%s=1&lt1=%s&lc1=%s&bc1=%s&bg1=%s&f=ifr', 'widget-productcloud' => 'http://ws.amazon.co.uk/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822/%1$s/%s/8006/%s', 'widget-slideshow' => 'http://ws.amazon.co.uk/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8003%%2F%s&Operation=%s', 'widget-wishlist' => 'http://ws.amazon.co.uk/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822/%1$s/%s/8004/%s', ), ), 'us' => array( 'lang_iso_code' => 'en_US', 'marketplace' => 'US', 'name' => __('Amazon USA', 'awshortcode'), 'suffix' => '-20', 'tld' => 'com', 'url' => array( 'affiliate' => 'https://affiliate-program.amazon.com/', 'images' => 'http://ecx.images-amazon.com/images/I/%s', 'product' => 'http://www.amazon.com/gp/product/%s?ie=UTF8&tag=%s&linkCode=as2&camp=1642&creative=6746&creativeASIN=%1$s', 'site' => 'http://www.amazon.com/', 'tool-contextlinks' => 'http://cls.assoc-amazon.com/s/cls.js', 'tool-productpreview' => 'http://www.assoc-amazon.com/s/link-enhancer?tag=%s&o=1', 'widget-carrousel' => 'http://ws.amazon.com/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8010%%2F%s&Operation=%s', 'widget-deals' => 'http://ws.amazon.com/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8009%%2F%s&Operation=%s', 'widget-mp3' => 'http://ws.amazon.com/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8014%%2F%s&Operation=%s', 'widget-myfavorites' => 'http://ws.amazon.com/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822/%1$s/%s/8001/%s', 'widget-product' => 'http://rcm.amazon.com/e/cm?t=%s&o=1&p=8&l=as1&asins=%s&fc1=%s&%s=1&lt1=%s&lc1=%s&bc1=%s&bg1=%s&f=ifr', 'widget-productcloud' => 'http://ws.amazon.com/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822/%1$s/%s/8006/%s', 'widget-slideshow' => 'http://ws.amazon.com/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822%%2F%1$s%%2F%s%%2F8003%%2F%s&Operation=%s', 'widget-wishlist' => 'http://ws.amazon.com/widgets/q?ServiceVersion=20070822&MarketPlace=%s&ID=V20070822/%1$s/%s/8004/%s', ), ), ); } /** * Return a specific shortcode configuration * * @static * @author oncletom * @version 1.1 * @since 1.3 * @return $settings Array * @param $shortcode String */ public static function getShortcode($shortcode) { static $shortcodes; if (!is_array($shortcodes)) { $shortcodes = self::getShortcodes(); } return $shortcodes['amazon-'.$shortcode]; } /** * Returns shortcodes configuration * * @static * @version 1.1 * @since 1.3 * @return $shortcodes Array Shortcodes configuration */ public static function getShortcodes() { return array( 'amazon-carrousel' => array( 'class' => 'AWShortcodesWidgetCarrousel', ), 'amazon-deals' => array( 'class' => 'AWShortcodesWidgetDeals', ), 'amazon-mp3' => array( 'class' => 'AWShortcodesWidgetMp3', ), 'amazon-myfavorites' => array( 'class' => 'AWShortcodesWidgetMyFavorites', ), 'amazon-product' => array( 'class' => 'AWShortcodesWidgetProduct', 'default_type' => 'both', 'types' => array( 'both' => __('Image and Text'), 'image' => __('Image only'), 'text' => __('Text only'), ), ), 'amazon-productcloud' => array( 'class' => 'AWShortcodesWidgetProductCloud', ), 'amazon-slideshow' => array( 'class' => 'AWShortcodesWidgetSlideshow', ), 'amazon-wishlist' => array( 'class' => 'AWShortcodesWidgetWishlist', ), ); } /** * Registers the plugins options * * @author oncletom * @since 2.0 * @version 1.0 * @return AWShortcodesConfigurationOptionCollection */ public function registerOptions() { $this->options->add(array( new AWShortcodesConfigurationOption('access_key_id'), new AWShortcodesConfigurationOption('align', array( 'autoload' => true, 'default' => 'center', 'possibleValues' => array( 'left' => __('left', 'awshortcode'), 'center' => __('centered', 'awshortcode'), 'right' => __('right', 'awshortcode') ), )), new AWShortcodesConfigurationOption('context_links', array( 'autoload' => true, 'type' => AWShortcodesConfigurationOption::TYPE_BOOLEAN, )), new AWShortcodesConfigurationOption('default_profile', array( 'autoload' => true, 'default' => 'default', )), new AWShortcodesConfigurationOption('feed', array( 'type' => AWShortcodesConfigurationOption::TYPE_BOOLEAN, )), new AWShortcodesConfigurationOption('inline_documentation', array( 'type' => AWShortcodesConfigurationOption::TYPE_BOOLEAN, )), new AWShortcodesConfigurationOption('product_preview', array( 'autoload' => true, 'type' => AWShortcodesConfigurationOption::TYPE_BOOLEAN, )), new AWShortcodesConfigurationOption('profiles', array( 'autoload' => true, 'type' => AWShortcodesConfigurationOption::TYPE_ARRAY, )), new AWShortcodesConfigurationOption('strict_standards', array( 'autoload' => true, 'type' => AWShortcodesConfigurationOption::TYPE_BOOLEAN, )), new AWShortcodesConfigurationOption('tracking_image', array( 'autoload' => true, 'default' => true, 'type' => AWShortcodesConfigurationOption::TYPE_BOOLEAN, )), new AWShortcodesConfigurationOption('version') )); apply_filters('awshortcodes_register_options', $this->options, $this); } /** * Calculates variables and constants for WP compatibility * * @protected * @author oncletom * @since 2.0 * @version 1.0 */ protected function wordpressCompatibility() { /* * Compatibility with WP 2.5 */ if (!defined('WP_PLUGIN_DIR')) { define('WP_PLUGIN_DIR', ABSPATH.PLUGINDIR); define('WP_PLUGIN_URL', get_bloginfo('url').'/'.PLUGINDIR); } if (!defined('WP_CONTENT_DIR')) { define('WP_CONTENT_DIR', ABSPATH.'wp-content'); } } }