Version Description
- New: Multiple keyword search.
- New: REST API for module data.
- New: Feed module: Support for XML format.
- New: Feed module: Deeplink.
- New: Feed module: Feed encoding option.
- New: Feed module: JSON feed format.
- New: Module shortcodes: sort parameter.
- New: Offer modules: Default currency option.
- New: Shortcode parameters: add_query_arg.
- Improvement: Locale filter for block shortcodes.
- Improvement: Feed modules: Feeds will be updated twice a day.
- Improvement: Feed modules: Update by page view.
- Improvement: Offer modules: Domain editing capability.
- Improvement: Alt tag for featured images.
- Fix: AMP styles.
- Fix: Feed modules: WooCommerce sync.
- Fix: Feed modules: Stock status.
- Fix: Fixed theoretical security issue (XSS) in admin dashboard.
Download this release
Release Info
Developer | keywordrush |
Plugin | Content Egg |
Version | 5.3.0 |
Comparing to | |
See all releases |
Code changes from version 5.2.1 to 5.3.0
- application/BlockShortcode.php +10 -8
- application/DataRestController.php +147 -0
- application/EggShortcode.php +18 -2
- application/Installer.php +3 -2
- application/LocalRedirect.php +5 -3
- application/ModuleViewer.php +14 -7
- application/Plugin.php +9 -6
- application/WooIntegrator.php +4 -2
- application/admin/AutoblogController.php +18 -2
- application/admin/EggMetabox.php +11 -4
- application/admin/GeneralConfig.php +1 -1
- application/admin/PluginAdmin.php +13 -7
- application/admin/ProductTable.php +6 -4
- application/admin/ToolsController.php +2 -2
- application/admin/views/_metabox_autoblog.php +3 -3
- application/admin/views/_metabox_search_results.php +2 -1
- application/admin/views/autoblog_edit.php +2 -2
- application/admin/views/autoblog_index.php +1 -1
- application/admin/views/import_export.php +1 -1
- application/admin/views/module_settings.php +1 -1
- application/admin/views/product_index.php +2 -2
- application/components/AffiliateFeedParserModule.php +199 -7
- application/components/AffiliateFeedParserModuleConfig.php +9 -4
- application/components/Config.php +32 -19
- application/components/ContentManager.php +40 -7
- application/components/FeaturedImage.php +6 -2
- application/components/LinkHandler.php +16 -3
- application/components/ModuleApi.php +3 -3
- application/components/ParserModule.php +47 -2
- application/components/ParserModuleConfig.php +2 -0
- application/components/ReviewNotice.php +100 -0
- application/helpers/CurrencyHelper.php +38 -3
- application/helpers/TemplateHelper.php +45 -27
- application/helpers/TextHelper.php +22 -23
- application/libs/RestClient.php +9 -3
- application/libs/bing/BingSearch.php +0 -2
- application/libs/bing/CognitiveSearch.php +4 -5
- application/libs/rss/RssParser.php +1 -0
- application/models/AutoblogModel.php +2 -2
- application/models/PriceHistoryModel.php +8 -1
- application/models/ProductModel.php +13 -7
- application/modules/AE/AEConfig.php +2 -2
- application/modules/Amazon/templates/data_compare.php +1 -1
- application/modules/Amazon/views/search_panel.php +1 -1
- application/modules/CjLinks/CjLinksConfig.php +2 -1
- application/modules/Feed/FeedConfig.php +18 -5
- application/modules/Feed/FeedModule.php +22 -17
- application/modules/Offer/OfferConfig.php +9 -0
- application/modules/Offer/OfferModule.php +14 -11
- application/modules/Offer/views/metabox_module.php +7 -2
- application/templates/blocks/item_row.php +1 -1
- application/templates/blocks/list_row.php +8 -8
- application/templates/blocks/list_row_no_price.php +1 -1
- application/templates/blocks/price_history.php +2 -2
- application/templates/data_grid.php +11 -2
- application/templates/data_item.php +1 -1
- application/templates/data_item_simple.php +1 -1
- application/templates/data_list.php +2 -2
- application/vendor/XmlStringStreamer/LICENSE +21 -0
- application/vendor/XmlStringStreamer/Parser/StringWalker.php +276 -0
- application/vendor/XmlStringStreamer/Parser/UniqueNode.php +293 -0
- application/vendor/XmlStringStreamer/ParserInterface.php +41 -0
- application/vendor/XmlStringStreamer/Stream/File.php +75 -0
- application/vendor/XmlStringStreamer/Stream/Stdin.php +9 -0
- application/vendor/XmlStringStreamer/StreamInterface.php +43 -0
- application/vendor/XmlStringStreamer/XmlStringStreamer.php +84 -0
- content-egg.php +3 -3
- languages/content-egg.pot +434 -216
- languages/tpl/content-egg-tpl.pot +35 -26
- readme.txt +55 -3
- res/app/vendor/angular.min.js +1 -1
- res/css/products.css +1 -1
- templates/block_offers_list.php +2 -3
- templates/block_offers_list_groups.php +1 -1
- templates/block_offers_logo.php +17 -17
- templates/block_price_comparison_card.php +1 -1
- templates/block_text_links.php +1 -1
- templates/block_top_listing.php +12 -7
application/BlockShortcode.php
CHANGED
@@ -54,7 +54,9 @@ class BlockShortcode {
|
|
54 |
'product' => '',
|
55 |
'hide' => '',
|
56 |
'show' => '',
|
57 |
-
'btn_text' => ''
|
|
|
|
|
58 |
);
|
59 |
|
60 |
$allowed_atts = \apply_filters('cegg_block_shortcode_atts', $allowed_atts);
|
@@ -71,6 +73,8 @@ class BlockShortcode {
|
|
71 |
$a['hide'] = TemplateHelper::hideParamPrepare($a['hide']);
|
72 |
$a['show'] = strtolower(TextHelper::clear($a['show']));
|
73 |
$a['btn_text'] = \wp_strip_all_tags($a['btn_text'], true);
|
|
|
|
|
74 |
|
75 |
if ($a['group'] && !$a['groups'])
|
76 |
$a['groups'] = $a['group'];
|
@@ -80,8 +84,10 @@ class BlockShortcode {
|
|
80 |
$a['products'] = $a['product'];
|
81 |
if ($a['products'])
|
82 |
$a['products'] = TextHelper::getArrayFromCommaList($a['products']);
|
|
|
|
|
83 |
|
84 |
-
$allowed_sort = array('price');
|
85 |
$allowed_order = array('asc', 'desc');
|
86 |
$a['sort'] = strtolower($a['sort']);
|
87 |
$a['order'] = strtolower($a['order']);
|
@@ -89,6 +95,8 @@ class BlockShortcode {
|
|
89 |
$a['sort'] = '';
|
90 |
if (!in_array($a['order'], $allowed_order))
|
91 |
$a['order'] = '';
|
|
|
|
|
92 |
|
93 |
if ($a['modules'])
|
94 |
{
|
@@ -145,21 +153,15 @@ class BlockShortcode {
|
|
145 |
}
|
146 |
|
147 |
if ($headers && !empty($headers['shortcoded']))
|
148 |
-
{
|
149 |
-
// convert string to boolean
|
150 |
$a['shortcoded'] = filter_var($headers['shortcoded'], FILTER_VALIDATE_BOOLEAN);
|
151 |
-
}
|
152 |
|
153 |
-
// Module IDs from shortcode param. Validated.
|
154 |
if ($a['modules'])
|
155 |
$module_ids = $a['modules'];
|
156 |
else
|
157 |
$module_ids = ModuleManager::getInstance()->getParserModulesIdList(true);
|
158 |
|
159 |
if ($supported_module_ids)
|
160 |
-
{
|
161 |
$module_ids = array_intersect($module_ids, $supported_module_ids);
|
162 |
-
}
|
163 |
|
164 |
return ModuleViewer::getInstance()->viewBlockData($module_ids, $post_id, $a, $content);
|
165 |
}
|
54 |
'product' => '',
|
55 |
'hide' => '',
|
56 |
'show' => '',
|
57 |
+
'btn_text' => '',
|
58 |
+
'locale' => '',
|
59 |
+
'add_query_arg' => '',
|
60 |
);
|
61 |
|
62 |
$allowed_atts = \apply_filters('cegg_block_shortcode_atts', $allowed_atts);
|
73 |
$a['hide'] = TemplateHelper::hideParamPrepare($a['hide']);
|
74 |
$a['show'] = strtolower(TextHelper::clear($a['show']));
|
75 |
$a['btn_text'] = \wp_strip_all_tags($a['btn_text'], true);
|
76 |
+
$a['add_query_arg'] = \sanitize_text_field(\wp_strip_all_tags($a['add_query_arg'], true));
|
77 |
+
$a['locale'] = TextHelper::clear($a['locale']);
|
78 |
|
79 |
if ($a['group'] && !$a['groups'])
|
80 |
$a['groups'] = $a['group'];
|
84 |
$a['products'] = $a['product'];
|
85 |
if ($a['products'])
|
86 |
$a['products'] = TextHelper::getArrayFromCommaList($a['products']);
|
87 |
+
if ($a['add_query_arg'])
|
88 |
+
parse_str($a['add_query_arg'], $a['add_query_arg']);
|
89 |
|
90 |
+
$allowed_sort = array('price', 'discount', 'reverse');
|
91 |
$allowed_order = array('asc', 'desc');
|
92 |
$a['sort'] = strtolower($a['sort']);
|
93 |
$a['order'] = strtolower($a['order']);
|
95 |
$a['sort'] = '';
|
96 |
if (!in_array($a['order'], $allowed_order))
|
97 |
$a['order'] = '';
|
98 |
+
if ($a['sort'] == 'discount' && !$a['order'])
|
99 |
+
$a['order'] = 'desc';
|
100 |
|
101 |
if ($a['modules'])
|
102 |
{
|
153 |
}
|
154 |
|
155 |
if ($headers && !empty($headers['shortcoded']))
|
|
|
|
|
156 |
$a['shortcoded'] = filter_var($headers['shortcoded'], FILTER_VALIDATE_BOOLEAN);
|
|
|
157 |
|
|
|
158 |
if ($a['modules'])
|
159 |
$module_ids = $a['modules'];
|
160 |
else
|
161 |
$module_ids = ModuleManager::getInstance()->getParserModulesIdList(true);
|
162 |
|
163 |
if ($supported_module_ids)
|
|
|
164 |
$module_ids = array_intersect($module_ids, $supported_module_ids);
|
|
|
165 |
|
166 |
return ModuleViewer::getInstance()->viewBlockData($module_ids, $post_id, $a, $content);
|
167 |
}
|
application/DataRestController.php
ADDED
@@ -0,0 +1,147 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace ContentEgg\application;
|
4 |
+
|
5 |
+
use ContentEgg\application\admin\GeneralConfig;
|
6 |
+
use ContentEgg\application\components\ModuleManager;
|
7 |
+
use ContentEgg\application\ModuleViewer;
|
8 |
+
use ContentEgg\application\helpers\TextHelper;
|
9 |
+
use ContentEgg\application\WooIntegrator;
|
10 |
+
|
11 |
+
defined('\ABSPATH') || exit;
|
12 |
+
|
13 |
+
/**
|
14 |
+
* DataRestController class file
|
15 |
+
*
|
16 |
+
* @author keywordrush.com <support@keywordrush.com>
|
17 |
+
* @link https://www.keywordrush.com
|
18 |
+
* @copyright Copyright © 2021 keywordrush.com
|
19 |
+
*/
|
20 |
+
class DataRestController extends \WP_REST_Controller {
|
21 |
+
|
22 |
+
protected $namespace = 'cegg/v1/data';
|
23 |
+
|
24 |
+
const VERSION = 1;
|
25 |
+
const BASE = 'data';
|
26 |
+
|
27 |
+
private static $instance = null;
|
28 |
+
|
29 |
+
public static function getInstance()
|
30 |
+
{
|
31 |
+
if (self::$instance == null)
|
32 |
+
self::$instance = new self;
|
33 |
+
|
34 |
+
return self::$instance;
|
35 |
+
}
|
36 |
+
|
37 |
+
private function __construct()
|
38 |
+
{
|
39 |
+
|
40 |
+
}
|
41 |
+
|
42 |
+
public function init()
|
43 |
+
{
|
44 |
+
\add_action('rest_api_init', array($this, 'register_routes'));
|
45 |
+
}
|
46 |
+
|
47 |
+
public function register_routes()
|
48 |
+
{
|
49 |
+
\register_rest_route(
|
50 |
+
$this->namespace,
|
51 |
+
'/' . $this->rest_base . '/(?P<post_id>[\d]+)',
|
52 |
+
array(
|
53 |
+
array(
|
54 |
+
'methods' => \WP_REST_Server::READABLE,
|
55 |
+
'callback' => array($this, 'get_items'),
|
56 |
+
'permission_callback' => '__return_true',
|
57 |
+
'args' => array(
|
58 |
+
'module_id' => array(
|
59 |
+
'description' => __('Module ID.', 'woocommerce'),
|
60 |
+
'type' => 'string',
|
61 |
+
),
|
62 |
+
'module_type' => array(
|
63 |
+
'description' => __('Module type.', 'woocommerce'),
|
64 |
+
'type' => 'string',
|
65 |
+
),
|
66 |
+
'extra' => array(
|
67 |
+
'description' => __('Return extra.', 'woocommerce'),
|
68 |
+
'type' => 'boolean',
|
69 |
+
),
|
70 |
+
'synced' => array(
|
71 |
+
'description' => __('Return a synced product only.', 'woocommerce'),
|
72 |
+
'type' => 'boolean',
|
73 |
+
),
|
74 |
+
),
|
75 |
+
),
|
76 |
+
'schema' => array($this, 'get_public_item_schema'),
|
77 |
+
)
|
78 |
+
);
|
79 |
+
}
|
80 |
+
|
81 |
+
public function get_items($request, $module_type = '')
|
82 |
+
{
|
83 |
+
$post_id = (int) $request['post_id'];
|
84 |
+
if (!isset($request['extra']))
|
85 |
+
$return_extra = false;
|
86 |
+
else
|
87 |
+
$return_extra = (bool) $request['extra'];
|
88 |
+
|
89 |
+
if (!isset($request['synced']))
|
90 |
+
$return_synced = false;
|
91 |
+
else
|
92 |
+
$return_synced = (bool) $request['synced'];
|
93 |
+
|
94 |
+
if (\get_post_status($post_id) !== 'publish')
|
95 |
+
return new \WP_Error('cegg_rest_post_invalid_id', 'Invalid post ID.', array('status' => 404));
|
96 |
+
|
97 |
+
if (!in_array(\get_post_type($post_id), GeneralConfig::getInstance()->option('post_types')))
|
98 |
+
return new \WP_Error('cegg_rest_post_invalid_id', 'Invalid post type.', array('status' => 404));
|
99 |
+
|
100 |
+
$data = array();
|
101 |
+
|
102 |
+
$module_ids = ModuleManager::getInstance()->getParserModulesIdList(true);
|
103 |
+
|
104 |
+
if ($return_synced)
|
105 |
+
{
|
106 |
+
$mdata = WooIntegrator::getSyncItem($post_id);
|
107 |
+
|
108 |
+
if (!$mdata || !isset($mdata['module_id']) || !in_array($mdata['module_id'], $module_ids))
|
109 |
+
return array();
|
110 |
+
|
111 |
+
$data[$mdata['module_id']] = array($mdata['unique_id'] => $mdata);
|
112 |
+
} else
|
113 |
+
{
|
114 |
+
if (!empty($request['module_id']))
|
115 |
+
$module_ids = array_intersect($module_ids, TextHelper::getArrayFromCommaList($request['module_id']));
|
116 |
+
|
117 |
+
if (!empty($request['module_type']))
|
118 |
+
$module_type = TextHelper::getArrayFromCommaList(strtoupper($request['module_type']));
|
119 |
+
else
|
120 |
+
$module_type = array();
|
121 |
+
|
122 |
+
if ($module_type)
|
123 |
+
$module_ids = array_intersect($module_ids, ModuleManager::getInstance()->getParserModuleIdsByTypes($module_type, true));
|
124 |
+
|
125 |
+
foreach ($module_ids as $module_id)
|
126 |
+
{
|
127 |
+
if ($mdata = ModuleViewer::getInstance()->getData($module_id, $post_id))
|
128 |
+
$data[$module_id] = $mdata;
|
129 |
+
}
|
130 |
+
}
|
131 |
+
|
132 |
+
if (!$return_extra)
|
133 |
+
{
|
134 |
+
foreach ($data as $module_id => $mdata)
|
135 |
+
{
|
136 |
+
foreach ($mdata as $unique_id => $d)
|
137 |
+
{
|
138 |
+
$d['extra'] = array();
|
139 |
+
$data[$module_id][$unique_id] = $d;
|
140 |
+
}
|
141 |
+
}
|
142 |
+
}
|
143 |
+
|
144 |
+
return \rest_ensure_response($data);
|
145 |
+
}
|
146 |
+
|
147 |
+
}
|
application/EggShortcode.php
CHANGED
@@ -57,6 +57,9 @@ class EggShortcode {
|
|
57 |
'product' => '',
|
58 |
'hide' => '',
|
59 |
'btn_text' => '',
|
|
|
|
|
|
|
60 |
);
|
61 |
|
62 |
$allowed_atts = \apply_filters('cegg_module_shortcode_atts', $allowed_atts);
|
@@ -75,7 +78,8 @@ class EggShortcode {
|
|
75 |
$a['groups'] = \sanitize_text_field($a['groups']);
|
76 |
$a['group'] = \sanitize_text_field($a['group']);
|
77 |
$a['hide'] = TemplateHelper::hideParamPrepare($a['hide']);
|
78 |
-
$a['btn_text'] = wp_strip_all_tags($a['btn_text'], true);
|
|
|
79 |
if ($a['group'] && !$a['groups'])
|
80 |
$a['groups'] = $a['group'];
|
81 |
if ($a['groups'])
|
@@ -84,7 +88,19 @@ class EggShortcode {
|
|
84 |
$a['products'] = $a['product'];
|
85 |
if ($a['products'])
|
86 |
$a['products'] = TextHelper::getArrayFromCommaList($a['products']);
|
87 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
if ($a['template'] && $a['module'])
|
89 |
{
|
90 |
$a['template'] = ModuleTemplateManager::getInstance($a['module'])->prepareShortcodeTempate($a['template']);
|
57 |
'product' => '',
|
58 |
'hide' => '',
|
59 |
'btn_text' => '',
|
60 |
+
'add_query_arg' => '',
|
61 |
+
'sort' => '',
|
62 |
+
'order' => '',
|
63 |
);
|
64 |
|
65 |
$allowed_atts = \apply_filters('cegg_module_shortcode_atts', $allowed_atts);
|
78 |
$a['groups'] = \sanitize_text_field($a['groups']);
|
79 |
$a['group'] = \sanitize_text_field($a['group']);
|
80 |
$a['hide'] = TemplateHelper::hideParamPrepare($a['hide']);
|
81 |
+
$a['btn_text'] = \wp_strip_all_tags($a['btn_text'], true);
|
82 |
+
$a['add_query_arg'] = \sanitize_text_field(\wp_strip_all_tags($a['add_query_arg'], true));
|
83 |
if ($a['group'] && !$a['groups'])
|
84 |
$a['groups'] = $a['group'];
|
85 |
if ($a['groups'])
|
88 |
$a['products'] = $a['product'];
|
89 |
if ($a['products'])
|
90 |
$a['products'] = TextHelper::getArrayFromCommaList($a['products']);
|
91 |
+
if ($a['add_query_arg'])
|
92 |
+
parse_str($a['add_query_arg'], $a['add_query_arg']);
|
93 |
+
$allowed_sort = array('price', 'discount', 'reverse');
|
94 |
+
$allowed_order = array('asc', 'desc');
|
95 |
+
$a['sort'] = strtolower($a['sort']);
|
96 |
+
$a['order'] = strtolower($a['order']);
|
97 |
+
if (!in_array($a['sort'], $allowed_sort))
|
98 |
+
$a['sort'] = '';
|
99 |
+
if (!in_array($a['order'], $allowed_order))
|
100 |
+
$a['order'] = '';
|
101 |
+
if ($a['sort'] == 'discount' && !$a['order'])
|
102 |
+
$a['order'] = 'desc';
|
103 |
+
|
104 |
if ($a['template'] && $a['module'])
|
105 |
{
|
106 |
$a['template'] = ModuleTemplateManager::getInstance($a['module'])->prepareShortcodeTempate($a['template']);
|
application/Installer.php
CHANGED
@@ -52,10 +52,11 @@ class Installer {
|
|
52 |
self::requirements();
|
53 |
|
54 |
ModuleUpdateScheduler::addScheduleEvent();
|
55 |
-
if (AutoblogModel::isActiveAutoblogs())
|
56 |
-
AutoblogScheduler::addScheduleEvent();
|
57 |
\add_option(Plugin::slug . '_do_activation_redirect', true);
|
|
|
58 |
self::upgradeTables();
|
|
|
|
|
59 |
}
|
60 |
|
61 |
public static function deactivate()
|
52 |
self::requirements();
|
53 |
|
54 |
ModuleUpdateScheduler::addScheduleEvent();
|
|
|
|
|
55 |
\add_option(Plugin::slug . '_do_activation_redirect', true);
|
56 |
+
\add_option(Plugin::slug . '_first_activation_date', time());
|
57 |
self::upgradeTables();
|
58 |
+
if (AutoblogModel::isActiveAutoblogs())
|
59 |
+
AutoblogScheduler::addScheduleEvent();
|
60 |
}
|
61 |
|
62 |
public static function deactivate()
|
application/LocalRedirect.php
CHANGED
@@ -14,8 +14,8 @@ use ContentEgg\application\admin\GeneralConfig;
|
|
14 |
* LocalRedirect class file
|
15 |
*
|
16 |
* @author keywordrush.com <support@keywordrush.com>
|
17 |
-
* @link
|
18 |
-
* @copyright Copyright ©
|
19 |
*/
|
20 |
class LocalRedirect {
|
21 |
|
@@ -67,7 +67,9 @@ class LocalRedirect {
|
|
67 |
if (!$url)
|
68 |
return;
|
69 |
|
70 |
-
\
|
|
|
|
|
71 |
exit;
|
72 |
}
|
73 |
|
14 |
* LocalRedirect class file
|
15 |
*
|
16 |
* @author keywordrush.com <support@keywordrush.com>
|
17 |
+
* @link https://www.keywordrush.com
|
18 |
+
* @copyright Copyright © 2022 keywordrush.com
|
19 |
*/
|
20 |
class LocalRedirect {
|
21 |
|
67 |
if (!$url)
|
68 |
return;
|
69 |
|
70 |
+
$code = (int) \apply_filters('cegg_local_redirect_code', 301);
|
71 |
+
|
72 |
+
\wp_redirect(esc_url_raw($url), $code);
|
73 |
exit;
|
74 |
}
|
75 |
|
application/ModuleViewer.php
CHANGED
@@ -12,13 +12,14 @@ use ContentEgg\application\helpers\ArrayHelper;
|
|
12 |
use ContentEgg\application\components\BlockTemplateManager;
|
13 |
use ContentEgg\application\admin\GeneralConfig;
|
14 |
use ContentEgg\application\components\ContentProduct;
|
|
|
15 |
|
16 |
/**
|
17 |
* ModuleViewer class file
|
18 |
*
|
19 |
* @author keywordrush.com <support@keywordrush.com>
|
20 |
* @link http://www.keywordrush.com
|
21 |
-
* @copyright Copyright ©
|
22 |
*/
|
23 |
class ModuleViewer {
|
24 |
|
@@ -84,11 +85,6 @@ class ModuleViewer {
|
|
84 |
else
|
85 |
$post_id = -1;
|
86 |
|
87 |
-
/*
|
88 |
-
if (!is_single() && !is_page)
|
89 |
-
return $content;
|
90 |
-
*
|
91 |
-
*/
|
92 |
$top_modules_priorities = array();
|
93 |
$bottom_modules_priorities = array();
|
94 |
foreach (ModuleManager::getInstance()->getModules(true) as $module_id => $module)
|
@@ -168,6 +164,15 @@ class ModuleViewer {
|
|
168 |
}
|
169 |
}
|
170 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
|
172 |
$module = ModuleManager::factory($module_id);
|
173 |
$keyword = \get_post_meta($post_id, ContentManager::META_PREFIX_KEYWORD . $module->getId(), true);
|
@@ -218,7 +223,7 @@ class ModuleViewer {
|
|
218 |
$disable_features = $params['disable_features'];
|
219 |
else
|
220 |
$disable_features = 0;
|
221 |
-
|
222 |
if (isset($params['btn_text']))
|
223 |
$btn_text = $params['btn_text'];
|
224 |
else
|
@@ -281,6 +286,8 @@ class ModuleViewer {
|
|
281 |
if (!isset($params['shortcoded']) || (bool) $params['shortcoded'])
|
282 |
Shortcoded::getInstance($post_id)->setShortcodedModule($module_id);
|
283 |
}
|
|
|
|
|
284 |
if (!$data)
|
285 |
return;
|
286 |
|
12 |
use ContentEgg\application\components\BlockTemplateManager;
|
13 |
use ContentEgg\application\admin\GeneralConfig;
|
14 |
use ContentEgg\application\components\ContentProduct;
|
15 |
+
use ContentEgg\application\helpers\TemplateHelper;
|
16 |
|
17 |
/**
|
18 |
* ModuleViewer class file
|
19 |
*
|
20 |
* @author keywordrush.com <support@keywordrush.com>
|
21 |
* @link http://www.keywordrush.com
|
22 |
+
* @copyright Copyright © 2021 keywordrush.com
|
23 |
*/
|
24 |
class ModuleViewer {
|
25 |
|
85 |
else
|
86 |
$post_id = -1;
|
87 |
|
|
|
|
|
|
|
|
|
|
|
88 |
$top_modules_priorities = array();
|
89 |
$bottom_modules_priorities = array();
|
90 |
foreach (ModuleManager::getInstance()->getModules(true) as $module_id => $module)
|
164 |
}
|
165 |
}
|
166 |
}
|
167 |
+
|
168 |
+
// sort
|
169 |
+
if (!empty($params['sort']))
|
170 |
+
{
|
171 |
+
if ($params['sort'] == 'reverse')
|
172 |
+
$data = array_reverse ($data);
|
173 |
+
elseif ($params['sort'] == 'price' || $params['sort'] == 'discount')
|
174 |
+
$data = TemplateHelper::sortByPrice($data, $params['order'], $params['sort']);
|
175 |
+
}
|
176 |
|
177 |
$module = ModuleManager::factory($module_id);
|
178 |
$keyword = \get_post_meta($post_id, ContentManager::META_PREFIX_KEYWORD . $module->getId(), true);
|
223 |
$disable_features = $params['disable_features'];
|
224 |
else
|
225 |
$disable_features = 0;
|
226 |
+
|
227 |
if (isset($params['btn_text']))
|
228 |
$btn_text = $params['btn_text'];
|
229 |
else
|
286 |
if (!isset($params['shortcoded']) || (bool) $params['shortcoded'])
|
287 |
Shortcoded::getInstance($post_id)->setShortcodedModule($module_id);
|
288 |
}
|
289 |
+
|
290 |
+
|
291 |
if (!$data)
|
292 |
return;
|
293 |
|
application/Plugin.php
CHANGED
@@ -13,12 +13,12 @@ use ContentEgg\application\components\ExternalFeaturedImage;
|
|
13 |
*
|
14 |
* @author keywordrush.com <support@keywordrush.com>
|
15 |
* @link https://www.keywordrush.com
|
16 |
-
* @copyright Copyright ©
|
17 |
*/
|
18 |
class Plugin {
|
19 |
|
20 |
-
const version = '5.
|
21 |
-
const db_version =
|
22 |
const wp_requires = '4.6.1';
|
23 |
const slug = 'content-egg';
|
24 |
const short_slug = 'cegg';
|
@@ -29,7 +29,6 @@ class Plugin {
|
|
29 |
const website = 'https://www.keywordrush.com';
|
30 |
const supportUri = 'https://www.keywordrush.com/contact';
|
31 |
const panelUri = 'https://www.keywordrush.com/panel';
|
32 |
-
|
33 |
|
34 |
private static $instance = null;
|
35 |
private static $is_pro = null;
|
@@ -65,6 +64,9 @@ class Plugin {
|
|
65 |
ModuleUpdateScheduler::initAction();
|
66 |
WooIntegrator::initAction();
|
67 |
ExternalFeaturedImage::initAction();
|
|
|
|
|
|
|
68 |
new ProductSearchWidget;
|
69 |
new PriceMoversWidget;
|
70 |
}
|
@@ -146,7 +148,7 @@ class Plugin {
|
|
146 |
|
147 |
public static function isActivated()
|
148 |
{
|
149 |
-
if (self::isPro() && \ContentEgg\application\admin\LicConfig::getInstance()->option('license_key'))
|
150 |
return true;
|
151 |
else
|
152 |
return false;
|
@@ -220,7 +222,8 @@ class Plugin {
|
|
220 |
|
221 |
public function registerAmpStyles()
|
222 |
{
|
223 |
-
echo '.egg-container table td{padding:0} .egg-container .btn,.egg-container .cegg-price{white-space:nowrap;font-weight:700}.cegg-couponcode,.cegg-gridbox a{text-decoration:none}.egg-container .cegg-gridbox{box-shadow:0 8px 16px -6px #eee;border:1px solid #ddd;margin-bottom:25px;padding:20px}.egg-container .egg-listcontainer .row-products>div{margin-bottom:12px}.egg-container .btn{display:inline-block;padding:7px 14px;margin-bottom:0;font-size:14px;line-height:1.42857143;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.egg-container .btn-danger{color:#fff;background-color:#5cb85c;border-color:#4cae4c;text-decoration:none}.egg-container .panel-default{border:1px solid #ddd;padding:20px}.cegg-price-alert-wrap,.cegg-price-tracker-item div[id$=chart]{display:none}.cegg-price-tracker-panel .btn{margin-bottom:6px}.egg-container .cegg-no-top-margin{margin-top:0}.egg-container .cegg-mb5{margin-bottom:5px}.egg-container .cegg-mb10{margin-bottom:10px}.egg-container .cegg-mb15{margin-bottom:15px}.egg-container .cegg-mb20{margin-bottom:20px}.egg-container .cegg-mb25{margin-bottom:25px}.egg-container .cegg-mb30{margin-bottom:30px}.egg-container .cegg-mb35{margin-bottom:35px}.egg-container .cegg-lineh-20{line-height:20px}.egg-container .cegg-mr10{margin-right:10px}.egg-container .cegg-mr5{margin-right:5px}.egg-container .btn.cegg-btn-big{padding:13px 60px;line-height:1;font-size:20px;font-weight:700}.cegg-couponcode{text-align:center;background:#efffda;padding:8px;display:block;border:2px dashed #5cb85c;margin-bottom:12px}.cegg-bordered-box{border:2px solid #ededed;padding:25px}.cegg-price-tracker-item .cegg-price{font-size:22px;font-weight:700}.egg-list-coupons .btn{font-size:16px;font-weight:700;display:block}.cegg-listlogo-title{line-height:18px;font-size:15px}.cegg-list-withlogos .cegg-price,.egg-listcontainer .cegg-price{font-weight:700;font-size:20px;color:#5aaf0b}.egg-container .cegg-list-withlogos .btn{font-weight:700;font-size:15px;padding:8px 16px}.cegg-price-row strike{opacity:.42;font-size:90%}.cegg-list-logo-title{font-weight:700;font-size:17px}.egg-container .cegg-btn-grid .btn{display:block;margin-bottom:10px}#cegg_market .cegg-image-container img{max-height:350px}.cegg-review-block{padding:20px;border:1px solid #eee}.cegg-line-hr{clear:both;border-top:1px solid #eee;height:1px}.amp-wp-article-content .cegg-btn-row amp-img,.amp-wp-article-content .cegg-desc-cell amp-img,.amp-wp-article-content .cegg-price-tracker-panel .cegg-mb5 amp-img,.amp-wp-article-content .producttitle amp-img{display:inline-block;margin:0 4px 0 0;vertical-align:middle}.egg-container .cegg-promotion{top:25px;left:0;position:absolute;z-index:10}.egg-container .cegg-discount{background-color:#eb5e58;border-radius:0 4px 4px 0;color:#fff;display:inline-block;font-size:16px;padding:3px 5px}.cegg-thumb{position:relative}
|
|
|
224 |
}
|
225 |
|
226 |
}
|
13 |
*
|
14 |
* @author keywordrush.com <support@keywordrush.com>
|
15 |
* @link https://www.keywordrush.com
|
16 |
+
* @copyright Copyright © 2022 keywordrush.com
|
17 |
*/
|
18 |
class Plugin {
|
19 |
|
20 |
+
const version = '5.3.0';
|
21 |
+
const db_version = 54;
|
22 |
const wp_requires = '4.6.1';
|
23 |
const slug = 'content-egg';
|
24 |
const short_slug = 'cegg';
|
29 |
const website = 'https://www.keywordrush.com';
|
30 |
const supportUri = 'https://www.keywordrush.com/contact';
|
31 |
const panelUri = 'https://www.keywordrush.com/panel';
|
|
|
32 |
|
33 |
private static $instance = null;
|
34 |
private static $is_pro = null;
|
64 |
ModuleUpdateScheduler::initAction();
|
65 |
WooIntegrator::initAction();
|
66 |
ExternalFeaturedImage::initAction();
|
67 |
+
if (!self::isFree())
|
68 |
+
DataRestController::getInstance()->init();
|
69 |
+
|
70 |
new ProductSearchWidget;
|
71 |
new PriceMoversWidget;
|
72 |
}
|
148 |
|
149 |
public static function isActivated()
|
150 |
{
|
151 |
+
if (self::isPro() && \ContentEgg\application\admin\LicConfig::getInstance()->option('license_key', false))
|
152 |
return true;
|
153 |
else
|
154 |
return false;
|
222 |
|
223 |
public function registerAmpStyles()
|
224 |
{
|
225 |
+
echo '.egg-container table td{padding:0} .egg-container .btn,.egg-container .cegg-price{white-space:nowrap;font-weight:700}.cegg-couponcode,.cegg-gridbox a{text-decoration:none}.egg-container .cegg-gridbox{box-shadow:0 8px 16px -6px #eee;border:1px solid #ddd;margin-bottom:25px;padding:20px}.egg-container .egg-listcontainer .row-products>div{margin-bottom:12px}.egg-container .btn{display:inline-block;padding:7px 14px;margin-bottom:0;font-size:14px;line-height:1.42857143;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.egg-container .btn-danger{color:#fff;background-color:#5cb85c;border-color:#4cae4c;text-decoration:none}.egg-container .panel-default{border:1px solid #ddd;padding:20px}.cegg-price-alert-wrap,.cegg-price-tracker-item div[id$=chart]{display:none}.cegg-price-tracker-panel .btn{margin-bottom:6px}.egg-container .cegg-no-top-margin{margin-top:0}.egg-container .cegg-mb5{margin-bottom:5px}.egg-container .cegg-mb10{margin-bottom:10px}.egg-container .cegg-mb15{margin-bottom:15px}.egg-container .cegg-mb20{margin-bottom:20px}.egg-container .cegg-mb25{margin-bottom:25px}.egg-container .cegg-mb30{margin-bottom:30px}.egg-container .cegg-mb35{margin-bottom:35px}.egg-container .cegg-lineh-20{line-height:20px}.egg-container .cegg-mr10{margin-right:10px}.egg-container .cegg-mr5{margin-right:5px}.egg-container .btn.cegg-btn-big{padding:13px 60px;line-height:1;font-size:20px;font-weight:700}.cegg-couponcode{text-align:center;background:#efffda;padding:8px;display:block;border:2px dashed #5cb85c;margin-bottom:12px}.cegg-bordered-box{border:2px solid #ededed;padding:25px}.cegg-price-tracker-item .cegg-price{font-size:22px;font-weight:700}.egg-list-coupons .btn{font-size:16px;font-weight:700;display:block}.cegg-listlogo-title{line-height:18px;font-size:15px}.cegg-list-withlogos .cegg-price,.egg-listcontainer .cegg-price{font-weight:700;font-size:20px;color:#5aaf0b}.egg-container .cegg-list-withlogos .btn{font-weight:700;font-size:15px;padding:8px 16px}.cegg-price-row strike{opacity:.42;font-size:90%}.cegg-list-logo-title{font-weight:700;font-size:17px}.egg-container .cegg-btn-grid .btn{display:block;margin-bottom:10px}#cegg_market .cegg-image-container img{max-height:350px}.cegg-review-block{padding:20px;border:1px solid #eee}.cegg-line-hr{clear:both;border-top:1px solid #eee;height:1px}.amp-wp-article-content .cegg-btn-row amp-img,.amp-wp-article-content .cegg-desc-cell amp-img,.amp-wp-article-content .cegg-price-tracker-panel .cegg-mb5 amp-img,.amp-wp-article-content .producttitle amp-img{display:inline-block;margin:0 4px 0 0;vertical-align:middle}.egg-container .cegg-promotion{top:25px;left:0;position:absolute;z-index:10}.egg-container .cegg-discount{background-color:#eb5e58;border-radius:0 4px 4px 0;color:#fff;display:inline-block;font-size:16px;padding:3px 5px}.cegg-thumb{position:relative}'
|
226 |
+
. '@media (max-width: 767px) {body .egg-container .hidden-xs {display: none;} body .egg-container .visible-xs {display: block;}} body .egg-container .visible-xs {display: none;}';
|
227 |
}
|
228 |
|
229 |
}
|
application/WooIntegrator.php
CHANGED
@@ -146,7 +146,9 @@ class WooIntegrator {
|
|
146 |
$product->set_regular_price($item['price'] * $currency_rate);
|
147 |
} else
|
148 |
{
|
149 |
-
|
|
|
|
|
150 |
if (!\apply_filters('cegg_dont_touch_sale_price', false))
|
151 |
$product->set_sale_price($item['price'] * $currency_rate);
|
152 |
}
|
@@ -260,7 +262,7 @@ class WooIntegrator {
|
|
260 |
// Register the taxonomy now so that the import works!
|
261 |
if (!\taxonomy_exists($taxonomy))
|
262 |
{
|
263 |
-
$taxonomy = TextHelper::truncate($taxonomy, 32, '');
|
264 |
\register_taxonomy(
|
265 |
$taxonomy, apply_filters('woocommerce_taxonomy_objects_' . $taxonomy, array('product')), apply_filters('woocommerce_taxonomy_args_' . $taxonomy, array(
|
266 |
'hierarchical' => true,
|
146 |
$product->set_regular_price($item['price'] * $currency_rate);
|
147 |
} else
|
148 |
{
|
149 |
+
if (!\apply_filters('cegg_dont_touch_retail_price', false))
|
150 |
+
$product->set_regular_price($item['priceOld'] * $currency_rate);
|
151 |
+
|
152 |
if (!\apply_filters('cegg_dont_touch_sale_price', false))
|
153 |
$product->set_sale_price($item['price'] * $currency_rate);
|
154 |
}
|
262 |
// Register the taxonomy now so that the import works!
|
263 |
if (!\taxonomy_exists($taxonomy))
|
264 |
{
|
265 |
+
$taxonomy = TextHelper::truncate($taxonomy, 32, '', 'UTF-8', true);
|
266 |
\register_taxonomy(
|
267 |
$taxonomy, apply_filters('woocommerce_taxonomy_objects_' . $taxonomy, array('product')), apply_filters('woocommerce_taxonomy_args_' . $taxonomy, array(
|
268 |
'hierarchical' => true,
|
application/admin/AutoblogController.php
CHANGED
@@ -134,7 +134,7 @@ class AutoblogController {
|
|
134 |
{
|
135 |
$item = array();
|
136 |
$item['id'] = (int) $_POST['item']['id'];
|
137 |
-
$item['name'] = trim(
|
138 |
$item['status'] = absint($_POST['item']['status']);
|
139 |
$item['keywords_per_run'] = absint($_POST['item']['keywords_per_run']);
|
140 |
$item['run_frequency'] = absint($_POST['item']['run_frequency']);
|
@@ -240,7 +240,7 @@ class AutoblogController {
|
|
240 |
}
|
241 |
|
242 |
private function createAutoblog($item)
|
243 |
-
{
|
244 |
$item['keywords'] = TextHelper::prepareKeywords($item['keywords']);
|
245 |
|
246 |
// save
|
@@ -371,4 +371,20 @@ class AutoblogController {
|
|
371 |
PluginAdmin::getInstance()->render('_metabox_autoblog', array('item' => $item, 'batch' => $batch));
|
372 |
}
|
373 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
374 |
}
|
134 |
{
|
135 |
$item = array();
|
136 |
$item['id'] = (int) $_POST['item']['id'];
|
137 |
+
$item['name'] = trim(\sanitize_text_field($_POST['item']['name']));
|
138 |
$item['status'] = absint($_POST['item']['status']);
|
139 |
$item['keywords_per_run'] = absint($_POST['item']['keywords_per_run']);
|
140 |
$item['run_frequency'] = absint($_POST['item']['run_frequency']);
|
240 |
}
|
241 |
|
242 |
private function createAutoblog($item)
|
243 |
+
{
|
244 |
$item['keywords'] = TextHelper::prepareKeywords($item['keywords']);
|
245 |
|
246 |
// save
|
371 |
PluginAdmin::getInstance()->render('_metabox_autoblog', array('item' => $item, 'batch' => $batch));
|
372 |
}
|
373 |
|
374 |
+
|
375 |
+
private static function createTable()
|
376 |
+
{
|
377 |
+
$models = array('AutoblogModel');
|
378 |
+
$sql = '';
|
379 |
+
foreach ($models as $model)
|
380 |
+
{
|
381 |
+
$m = "\\ContentEgg\\application\\models\\" . $model;
|
382 |
+
$sql .= $m::model()->getDump();
|
383 |
+
$sql .= "\r\n";
|
384 |
+
}
|
385 |
+
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
|
386 |
+
|
387 |
+
dbDelta($sql);
|
388 |
+
}
|
389 |
+
|
390 |
}
|
application/admin/EggMetabox.php
CHANGED
@@ -11,14 +11,15 @@ use ContentEgg\application\components\ContentManager;
|
|
11 |
use ContentEgg\application\components\ContentProduct;
|
12 |
use ContentEgg\application\components\ContentCoupon;
|
13 |
use ContentEgg\application\components\ExtraData;
|
|
|
14 |
use ContentEgg\application\Plugin;
|
15 |
|
16 |
/**
|
17 |
* EggMetabox class file
|
18 |
*
|
19 |
* @author keywordrush.com <support@keywordrush.com>
|
20 |
-
* @link
|
21 |
-
* @copyright Copyright ©
|
22 |
*/
|
23 |
class EggMetabox {
|
24 |
|
@@ -26,6 +27,9 @@ class EggMetabox {
|
|
26 |
|
27 |
public function __construct()
|
28 |
{
|
|
|
|
|
|
|
29 |
\add_action('add_meta_boxes', array($this, 'addMetabox'));
|
30 |
\add_action('save_post', array($this, 'saveMeta'));
|
31 |
}
|
@@ -76,7 +80,11 @@ class EggMetabox {
|
|
76 |
|
77 |
PluginAdmin::render('metabox_general');
|
78 |
|
79 |
-
|
|
|
|
|
|
|
|
|
80 |
{
|
81 |
$module->enqueueScripts();
|
82 |
$module->renderMetaboxModule();
|
@@ -152,7 +160,6 @@ class EggMetabox {
|
|
152 |
|
153 |
// blank Coupon
|
154 |
$coupon = new ContentCoupon;
|
155 |
-
//$content->extra = new ExtraDataC;
|
156 |
$this->addAppParam('contentCoupon', $coupon);
|
157 |
}
|
158 |
|
11 |
use ContentEgg\application\components\ContentProduct;
|
12 |
use ContentEgg\application\components\ContentCoupon;
|
13 |
use ContentEgg\application\components\ExtraData;
|
14 |
+
use ContentEgg\application\components\LManager;
|
15 |
use ContentEgg\application\Plugin;
|
16 |
|
17 |
/**
|
18 |
* EggMetabox class file
|
19 |
*
|
20 |
* @author keywordrush.com <support@keywordrush.com>
|
21 |
+
* @link https://www.keywordrush.com
|
22 |
+
* @copyright Copyright © 2021 keywordrush.com
|
23 |
*/
|
24 |
class EggMetabox {
|
25 |
|
27 |
|
28 |
public function __construct()
|
29 |
{
|
30 |
+
if (Plugin::isActivated() && LManager::isNulled())
|
31 |
+
return;
|
32 |
+
|
33 |
\add_action('add_meta_boxes', array($this, 'addMetabox'));
|
34 |
\add_action('save_post', array($this, 'saveMeta'));
|
35 |
}
|
80 |
|
81 |
PluginAdmin::render('metabox_general');
|
82 |
|
83 |
+
$modules = ModuleManager::getInstance()->getModules(true);
|
84 |
+
$module_ids = \apply_filters('content_egg_metabox_modules', array_keys($modules));
|
85 |
+
$modules = array_intersect_key($modules, array_flip($module_ids));
|
86 |
+
|
87 |
+
foreach ($modules as $module)
|
88 |
{
|
89 |
$module->enqueueScripts();
|
90 |
$module->renderMetaboxModule();
|
160 |
|
161 |
// blank Coupon
|
162 |
$coupon = new ContentCoupon;
|
|
|
163 |
$this->addAppParam('contentCoupon', $coupon);
|
164 |
}
|
165 |
|
application/admin/GeneralConfig.php
CHANGED
@@ -297,7 +297,7 @@ class GeneralConfig extends Config {
|
|
297 |
'absint',
|
298 |
array(
|
299 |
'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
|
300 |
-
'arg' =>
|
301 |
'message' => sprintf(__('The field "%s" can\'t be more than %d.', 'content-egg'), __('Price history', 'content-egg'), 365),
|
302 |
),
|
303 |
),
|
297 |
'absint',
|
298 |
array(
|
299 |
'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
|
300 |
+
'arg' => 1875,
|
301 |
'message' => sprintf(__('The field "%s" can\'t be more than %d.', 'content-egg'), __('Price history', 'content-egg'), 365),
|
302 |
),
|
303 |
),
|
application/admin/PluginAdmin.php
CHANGED
@@ -10,6 +10,7 @@ use ContentEgg\application\admin\GeneralConfig;
|
|
10 |
use ContentEgg\application\components\ModuleManager;
|
11 |
use ContentEgg\application\components\ModuleApi;
|
12 |
use ContentEgg\application\components\LManager;
|
|
|
13 |
use ContentEgg\application\components\FeaturedImage;
|
14 |
use ContentEgg\application\ModuleUpdateScheduler;
|
15 |
|
@@ -45,11 +46,14 @@ class PluginAdmin {
|
|
45 |
{
|
46 |
\add_filter('plugin_row_meta', array($this, 'add_plugin_row_meta'), 10, 2);
|
47 |
}
|
48 |
-
|
49 |
AdminNotice::getInstance()->adminInit();
|
50 |
if (!Plugin::isFree())
|
51 |
LManager::getInstance()->adminInit();
|
52 |
-
|
|
|
|
|
|
|
53 |
if (Plugin::isFree() || (Plugin::isPro() && Plugin::isActivated()) || Plugin::isEnvato())
|
54 |
{
|
55 |
GeneralConfig::getInstance()->adminInit();
|
@@ -64,19 +68,22 @@ class PluginAdmin {
|
|
64 |
new ToolsController;
|
65 |
new ImportExportController;
|
66 |
AeIntegrationConfig::getInstance()->adminInit();
|
67 |
-
ModuleUpdateScheduler::addScheduleEvent();
|
68 |
}
|
69 |
|
70 |
if (Plugin::isEnvato() && !Plugin::isActivated() && !\get_option(Plugin::slug . '_env_install'))
|
71 |
EnvatoConfig::getInstance()->adminInit();
|
72 |
elseif (Plugin::isPro())
|
73 |
LicConfig::getInstance()->adminInit();
|
74 |
-
|
75 |
if (Plugin::isPro() && Plugin::isActivated())
|
76 |
{
|
77 |
new \ContentEgg\application\Autoupdate(Plugin::version(), plugin_basename(\ContentEgg\PLUGIN_FILE), Plugin::getApiBase(), Plugin::slug);
|
78 |
}
|
79 |
-
|
|
|
|
|
|
|
80 |
}
|
81 |
|
82 |
function admin_load_scripts()
|
@@ -94,9 +101,8 @@ class PluginAdmin {
|
|
94 |
'are_you_shure' => __('Are you sure?', 'content-egg'),
|
95 |
'sitelang' => GeneralConfig::getInstance()->option('lang'),
|
96 |
));
|
97 |
-
|
98 |
-
\wp_enqueue_style('contentegg-admin', \ContentEgg\PLUGIN_RES . '/css/admin.css', null, '' . Plugin::version());
|
99 |
|
|
|
100 |
}
|
101 |
|
102 |
public function add_plugin_row_meta(array $links, $file)
|
10 |
use ContentEgg\application\components\ModuleManager;
|
11 |
use ContentEgg\application\components\ModuleApi;
|
12 |
use ContentEgg\application\components\LManager;
|
13 |
+
use ContentEgg\application\components\ReviewNotice;
|
14 |
use ContentEgg\application\components\FeaturedImage;
|
15 |
use ContentEgg\application\ModuleUpdateScheduler;
|
16 |
|
46 |
{
|
47 |
\add_filter('plugin_row_meta', array($this, 'add_plugin_row_meta'), 10, 2);
|
48 |
}
|
49 |
+
|
50 |
AdminNotice::getInstance()->adminInit();
|
51 |
if (!Plugin::isFree())
|
52 |
LManager::getInstance()->adminInit();
|
53 |
+
|
54 |
+
if (Plugin::isFree())
|
55 |
+
ReviewNotice::getInstance()->adminInit();
|
56 |
+
|
57 |
if (Plugin::isFree() || (Plugin::isPro() && Plugin::isActivated()) || Plugin::isEnvato())
|
58 |
{
|
59 |
GeneralConfig::getInstance()->adminInit();
|
68 |
new ToolsController;
|
69 |
new ImportExportController;
|
70 |
AeIntegrationConfig::getInstance()->adminInit();
|
71 |
+
ModuleUpdateScheduler::addScheduleEvent();
|
72 |
}
|
73 |
|
74 |
if (Plugin::isEnvato() && !Plugin::isActivated() && !\get_option(Plugin::slug . '_env_install'))
|
75 |
EnvatoConfig::getInstance()->adminInit();
|
76 |
elseif (Plugin::isPro())
|
77 |
LicConfig::getInstance()->adminInit();
|
78 |
+
|
79 |
if (Plugin::isPro() && Plugin::isActivated())
|
80 |
{
|
81 |
new \ContentEgg\application\Autoupdate(Plugin::version(), plugin_basename(\ContentEgg\PLUGIN_FILE), Plugin::getApiBase(), Plugin::slug);
|
82 |
}
|
83 |
+
|
84 |
+
|
85 |
+
//$module = ModuleManager::factory('Feed__2');
|
86 |
+
//$module->importProducts('http://localhost:8888/feed-test.xml');
|
87 |
}
|
88 |
|
89 |
function admin_load_scripts()
|
101 |
'are_you_shure' => __('Are you sure?', 'content-egg'),
|
102 |
'sitelang' => GeneralConfig::getInstance()->option('lang'),
|
103 |
));
|
|
|
|
|
104 |
|
105 |
+
\wp_enqueue_style('contentegg-admin', \ContentEgg\PLUGIN_RES . '/css/admin.css', null, '' . Plugin::version());
|
106 |
}
|
107 |
|
108 |
public function add_plugin_row_meta(array $links, $file)
|
application/admin/ProductTable.php
CHANGED
@@ -14,8 +14,8 @@ use ContentEgg\application\components\ModuleManager;
|
|
14 |
* ProductTable class file
|
15 |
*
|
16 |
* @author keywordrush.com <support@keywordrush.com>
|
17 |
-
* @link
|
18 |
-
* @copyright Copyright ©
|
19 |
*/
|
20 |
class ProductTable extends MyListTable {
|
21 |
|
@@ -57,6 +57,8 @@ class ProductTable extends MyListTable {
|
|
57 |
$edit_link = \get_edit_post_link($item['post_id']) . '#' . $item['module_id'] . '-' . $item['unique_id'];
|
58 |
$actions = array(
|
59 |
'post_id' => sprintf(__('Post ID: %d', 'content-egg'), $item['post_id']),
|
|
|
|
|
60 |
'edit' => sprintf('<a href="%s">%s</a>', \esc_url($edit_link), __('Edit', 'content-egg')),
|
61 |
);
|
62 |
if ($item['url'])
|
@@ -199,7 +201,7 @@ class ProductTable extends MyListTable {
|
|
199 |
|
200 |
if (isset($_GET['module_id']) && $_GET['module_id'] !== '')
|
201 |
{
|
202 |
-
$module_id = TextHelper::clear(\wp_unslash($_GET['module_id']));
|
203 |
if (ModuleManager::getInstance()->moduleExists($module_id))
|
204 |
{
|
205 |
if ($where)
|
@@ -223,7 +225,7 @@ class ProductTable extends MyListTable {
|
|
223 |
foreach ($statuses as $status_id => $status_name)
|
224 |
{
|
225 |
$total = ProductModel::model()->count('stock_status = ' . (int) $status_id);
|
226 |
-
$class = (isset($_REQUEST['stock_status']) && $_REQUEST['stock_status'] !== '' && (
|
227 |
$status_links[$status_id] = '<a href="' . $admin_url . '&stock_status=' . (int) $status_id . '"' . $class . '>' . \esc_html($status_name);
|
228 |
$status_links[$status_id] .= sprintf(' <span class="count">(%s)</span></a>', \number_format_i18n($total));
|
229 |
}
|
14 |
* ProductTable class file
|
15 |
*
|
16 |
* @author keywordrush.com <support@keywordrush.com>
|
17 |
+
* @link https://www.keywordrush.com
|
18 |
+
* @copyright Copyright © 2021 keywordrush.com
|
19 |
*/
|
20 |
class ProductTable extends MyListTable {
|
21 |
|
57 |
$edit_link = \get_edit_post_link($item['post_id']) . '#' . $item['module_id'] . '-' . $item['unique_id'];
|
58 |
$actions = array(
|
59 |
'post_id' => sprintf(__('Post ID: %d', 'content-egg'), $item['post_id']),
|
60 |
+
'view' => sprintf('<a href="%s">%s</a>', \get_post_permalink($item['post_id']), __('View', 'content-egg')),
|
61 |
+
|
62 |
'edit' => sprintf('<a href="%s">%s</a>', \esc_url($edit_link), __('Edit', 'content-egg')),
|
63 |
);
|
64 |
if ($item['url'])
|
201 |
|
202 |
if (isset($_GET['module_id']) && $_GET['module_id'] !== '')
|
203 |
{
|
204 |
+
$module_id = TextHelper::clear(\sanitize_text_field(\wp_unslash($_GET['module_id'])));
|
205 |
if (ModuleManager::getInstance()->moduleExists($module_id))
|
206 |
{
|
207 |
if ($where)
|
225 |
foreach ($statuses as $status_id => $status_name)
|
226 |
{
|
227 |
$total = ProductModel::model()->count('stock_status = ' . (int) $status_id);
|
228 |
+
$class = (isset($_REQUEST['stock_status']) && $_REQUEST['stock_status'] !== '' && \sanitize_text_field($_REQUEST['stock_status']) == $status_id) ? ' class="current"' : '';
|
229 |
$status_links[$status_id] = '<a href="' . $admin_url . '&stock_status=' . (int) $status_id . '"' . $class . '>' . \esc_html($status_name);
|
230 |
$status_links[$status_id] .= sprintf(' <span class="count">(%s)</span></a>', \number_format_i18n($total));
|
231 |
}
|
application/admin/ToolsController.php
CHANGED
@@ -98,7 +98,7 @@ class ToolsController {
|
|
98 |
die('You do not have permission to view this page.');
|
99 |
|
100 |
if (isset($_GET['module']))
|
101 |
-
$module_id = TextHelper::clear($_GET['module']);
|
102 |
else
|
103 |
die('Module param can not be empty.');
|
104 |
|
@@ -143,7 +143,7 @@ class ToolsController {
|
|
143 |
die('You do not have permission to view this page.');
|
144 |
|
145 |
if (isset($_GET['module']))
|
146 |
-
$module_id = TextHelper::clear($_GET['module']);
|
147 |
else
|
148 |
die('Module param can not be empty.');
|
149 |
|
98 |
die('You do not have permission to view this page.');
|
99 |
|
100 |
if (isset($_GET['module']))
|
101 |
+
$module_id = TextHelper::clear(\sanitize_text_field($_GET['module']));
|
102 |
else
|
103 |
die('Module param can not be empty.');
|
104 |
|
143 |
die('You do not have permission to view this page.');
|
144 |
|
145 |
if (isset($_GET['module']))
|
146 |
+
$module_id = TextHelper::clear(\sanitize_text_field($_GET['module']));
|
147 |
else
|
148 |
die('Module param can not be empty.');
|
149 |
|
application/admin/views/_metabox_autoblog.php
CHANGED
@@ -81,8 +81,8 @@ use ContentEgg\application\helpers\AdminHelper;
|
|
81 |
?>
|
82 |
</ul>
|
83 |
<div id="fragment-1">
|
84 |
-
|
85 |
-
|
86 |
<div id="sug_btn_group" class="btn-group" data-toggle="buttons-radio" style="margin-bottom: 10px;">
|
87 |
<input id="sug_google" name="sug_radio" value="sug_google" type="radio" checked="checked"><label for="sug_google">Google</label>
|
88 |
<input id="sug_amazon" name="sug_radio" value="sug_amazon" type="radio"><label for="sug_amazon">Amazon</label>
|
@@ -330,7 +330,7 @@ use ContentEgg\application\helpers\AdminHelper;
|
|
330 |
<td>
|
331 |
<?php
|
332 |
\wp_dropdown_users(array('name' => 'item[user_id]',
|
333 |
-
'
|
334 |
?>
|
335 |
<p class="description"><?php _e('This user will be author of posts.', 'content-egg'); ?></p>
|
336 |
</td>
|
81 |
?>
|
82 |
</ul>
|
83 |
<div id="fragment-1">
|
84 |
+
|
85 |
+
|
86 |
<div id="sug_btn_group" class="btn-group" data-toggle="buttons-radio" style="margin-bottom: 10px;">
|
87 |
<input id="sug_google" name="sug_radio" value="sug_google" type="radio" checked="checked"><label for="sug_google">Google</label>
|
88 |
<input id="sug_amazon" name="sug_radio" value="sug_amazon" type="radio"><label for="sug_amazon">Amazon</label>
|
330 |
<td>
|
331 |
<?php
|
332 |
\wp_dropdown_users(array('name' => 'item[user_id]',
|
333 |
+
'capability' => array('edit_posts'), 'id' => 'user_id', 'selected' => $item['user_id']));
|
334 |
?>
|
335 |
<p class="description"><?php _e('This user will be author of posts.', 'content-egg'); ?></p>
|
336 |
</td>
|
application/admin/views/_metabox_search_results.php
CHANGED
@@ -13,10 +13,11 @@
|
|
13 |
<span ng-show="result.domain" class="text-muted"> <img src="https://www.google.com/s2/favicons?domain={{result.domain}}"> {{result.domain}}</span>
|
14 |
<span ng-show="result.features.length"> <small class="text-muted"><?php _e('Attributes:', 'content-egg'); ?> {{result.features.length}}</small></span>
|
15 |
<span ng-show="result.ean"> <small class="text-muted"><?php _e('EAN:', 'content-egg'); ?> {{result.ean}}</small></span>
|
16 |
-
<?php if ($module_id == 'Amazon'): ?>
|
17 |
<span class="text-muted">
|
18 |
<br>
|
19 |
<small class="text-primary" ng-show="result.extra.IsPrimeEligible">PRIME</small>
|
|
|
20 |
<small class="text-success" ng-show="result.extra.IsEligibleForSuperSaverShipping">Free Shipping<span ng-show="result.extra.IsAmazonFulfilled"> by Amazon</span></small>
|
21 |
</span>
|
22 |
<?php endif; ?>
|
13 |
<span ng-show="result.domain" class="text-muted"> <img src="https://www.google.com/s2/favicons?domain={{result.domain}}"> {{result.domain}}</span>
|
14 |
<span ng-show="result.features.length"> <small class="text-muted"><?php _e('Attributes:', 'content-egg'); ?> {{result.features.length}}</small></span>
|
15 |
<span ng-show="result.ean"> <small class="text-muted"><?php _e('EAN:', 'content-egg'); ?> {{result.ean}}</small></span>
|
16 |
+
<?php if ($module_id == 'Amazon' || $module_id == 'AmazonNoApi' || $module_id == 'Ebay2'): ?>
|
17 |
<span class="text-muted">
|
18 |
<br>
|
19 |
<small class="text-primary" ng-show="result.extra.IsPrimeEligible">PRIME</small>
|
20 |
+
<small class="text-primary" ng-show="result.extra.priorityListing">Priority listing</small>
|
21 |
<small class="text-success" ng-show="result.extra.IsEligibleForSuperSaverShipping">Free Shipping<span ng-show="result.extra.IsAmazonFulfilled"> by Amazon</span></small>
|
22 |
</span>
|
23 |
<?php endif; ?>
|
application/admin/views/autoblog_edit.php
CHANGED
@@ -30,8 +30,8 @@
|
|
30 |
</p>
|
31 |
</div>
|
32 |
<form action="<?php echo add_query_arg('noheader', 'true'); ?>" id="form" method="POST"<?php if ($batch) echo ' enctype="multipart/form-data" accept-charset="utf-8"'; ?>>
|
33 |
-
<input type="hidden" name="nonce" value="<?php echo $nonce; ?>"/>
|
34 |
-
<input type="hidden" name="item[id]" value="<?php echo $item['id']; ?>"/>
|
35 |
<div class="metabox-holder" id="poststuff">
|
36 |
<div id="post-body">
|
37 |
<div id="post-body-content">
|
30 |
</p>
|
31 |
</div>
|
32 |
<form action="<?php echo add_query_arg('noheader', 'true'); ?>" id="form" method="POST"<?php if ($batch) echo ' enctype="multipart/form-data" accept-charset="utf-8"'; ?>>
|
33 |
+
<input type="hidden" name="nonce" value="<?php echo \esc_attr($nonce); ?>"/>
|
34 |
+
<input type="hidden" name="item[id]" value="<?php echo \esc_attr($item['id']); ?>"/>
|
35 |
<div class="metabox-holder" id="poststuff">
|
36 |
<div id="post-body">
|
37 |
<div id="post-body-content">
|
application/admin/views/autoblog_index.php
CHANGED
@@ -47,7 +47,7 @@ if ($table->current_action() == 'run')
|
|
47 |
</div>
|
48 |
|
49 |
<form id="eggs-table" method="GET">
|
50 |
-
<input type="hidden" name="page" value="
|
51 |
<?php $table->display() ?>
|
52 |
</form>
|
53 |
</div>
|
47 |
</div>
|
48 |
|
49 |
<form id="eggs-table" method="GET">
|
50 |
+
<input type="hidden" name="page" value="content-egg-autoblog"/>
|
51 |
<?php $table->display() ?>
|
52 |
</form>
|
53 |
</div>
|
application/admin/views/import_export.php
CHANGED
@@ -28,7 +28,7 @@
|
|
28 |
<h3><?php _e('Load settings', 'content-egg'); ?></h3>
|
29 |
<p><?php _e('Copy settings from another site and click on "Import".', 'content-egg'); ?></p>
|
30 |
<form id="form" method="POST">
|
31 |
-
<input type="hidden" name="nonce" value="<?php echo $nonce; ?>"/>
|
32 |
<textarea name="import_str" rows="8" cols="70"></textarea>
|
33 |
<p><input type="submit" value="<?php _e('Import', 'content-egg'); ?>" id="config_submit" class="button-primary" name="submit"></p>
|
34 |
</form>
|
28 |
<h3><?php _e('Load settings', 'content-egg'); ?></h3>
|
29 |
<p><?php _e('Copy settings from another site and click on "Import".', 'content-egg'); ?></p>
|
30 |
<form id="form" method="POST">
|
31 |
+
<input type="hidden" name="nonce" value="<?php echo \esc_attr($nonce); ?>"/>
|
32 |
<textarea name="import_str" rows="8" cols="70"></textarea>
|
33 |
<p><input type="submit" value="<?php _e('Import', 'content-egg'); ?>" id="config_submit" class="button-primary" name="submit"></p>
|
34 |
</form>
|
application/admin/views/module_settings.php
CHANGED
@@ -107,7 +107,7 @@
|
|
107 |
<br />
|
108 |
<div><a target="_blank" class="page-title-action" href="<?php echo \get_admin_url(\get_current_blog_id(), 'admin.php?page=content-egg-tools&action=feed-export&field=ean&module=' . urlencode($module->getId())); ?>"><?php _e('Export product EANs', 'content-egg') ?></a></div>
|
109 |
<br />
|
110 |
-
<div><a target="_blank" class="page-title-action" href="<?php echo \get_admin_url(\get_current_blog_id(), 'admin.php?page=content-egg-tools&action=feed-export&field=ean_dublicate&module=' . urlencode($module->getId())); ?>"><?php _e('Export
|
111 |
<?php endif; ?>
|
112 |
|
113 |
<?php endif; ?>
|
107 |
<br />
|
108 |
<div><a target="_blank" class="page-title-action" href="<?php echo \get_admin_url(\get_current_blog_id(), 'admin.php?page=content-egg-tools&action=feed-export&field=ean&module=' . urlencode($module->getId())); ?>"><?php _e('Export product EANs', 'content-egg') ?></a></div>
|
109 |
<br />
|
110 |
+
<div><a target="_blank" class="page-title-action" href="<?php echo \get_admin_url(\get_current_blog_id(), 'admin.php?page=content-egg-tools&action=feed-export&field=ean_dublicate&module=' . urlencode($module->getId())); ?>"><?php _e('Export duplicate EANs', 'content-egg') ?></a></div>
|
111 |
<?php endif; ?>
|
112 |
|
113 |
<?php endif; ?>
|
application/admin/views/product_index.php
CHANGED
@@ -33,9 +33,9 @@ $message = '';
|
|
33 |
|
34 |
|
35 |
<form id="cegg-products-table" method="GET">
|
36 |
-
<input type="hidden" name="page" value="
|
37 |
<?php if (isset($_REQUEST['stock_status'])): ?>
|
38 |
-
<input type="hidden" name="stock_status" value="<?php echo \esc_attr($_REQUEST['stock_status']); ?>"/>
|
39 |
<?php endif; ?>
|
40 |
<?php $table->views(); ?>
|
41 |
<?php $table->search_box(__('Search products', 'content-egg'), 'key'); ?>
|
33 |
|
34 |
|
35 |
<form id="cegg-products-table" method="GET">
|
36 |
+
<input type="hidden" name="page" value="content-egg-product"/>
|
37 |
<?php if (isset($_REQUEST['stock_status'])): ?>
|
38 |
+
<input type="hidden" name="stock_status" value="<?php echo \esc_attr(\sanitize_text_field($_REQUEST['stock_status'])); ?>"/>
|
39 |
<?php endif; ?>
|
40 |
<?php $table->views(); ?>
|
41 |
<?php $table->search_box(__('Search products', 'content-egg'), 'key'); ?>
|
application/components/AffiliateFeedParserModule.php
CHANGED
@@ -13,14 +13,14 @@ use ContentEgg\application\helpers\TextHelper;
|
|
13 |
*
|
14 |
* @author keywordrush.com <support@keywordrush.com>
|
15 |
* @link https://www.keywordrush.com
|
16 |
-
* @copyright Copyright ©
|
17 |
*/
|
18 |
abstract class AffiliateFeedParserModule extends AffiliateParserModule {
|
19 |
|
20 |
const TRANSIENT_LAST_IMPORT_DATE = 'cegg_products_last_import_';
|
21 |
-
const PRODUCTS_TTL =
|
22 |
const MULTIPLE_INSERT_ROWS = 50;
|
23 |
-
const IMPORT_TIME_LIMT =
|
24 |
const DATAFEED_DIR_NAME = 'cegg-datafeeds';
|
25 |
const TRANSIENT_LAST_IMPORT_ERROR = 'cegg_last_import_error_';
|
26 |
|
@@ -139,10 +139,15 @@ abstract class AffiliateFeedParserModule extends AffiliateParserModule {
|
|
139 |
return false;
|
140 |
}
|
141 |
|
|
|
|
|
|
|
|
|
|
|
142 |
public function isImportTime()
|
143 |
{
|
144 |
$last_export = $this->getLastImportDate();
|
145 |
-
if (!$last_export || (time() - $last_export > self::
|
146 |
return true;
|
147 |
else
|
148 |
return false;
|
@@ -226,6 +231,17 @@ abstract class AffiliateFeedParserModule extends AffiliateParserModule {
|
|
226 |
}
|
227 |
|
228 |
protected function processFeed($file)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
229 |
{
|
230 |
$encoding = $this->config('encoding', 'UTF-8');
|
231 |
|
@@ -242,14 +258,21 @@ abstract class AffiliateFeedParserModule extends AffiliateParserModule {
|
|
242 |
$data = array_map('utf8_encode', $data);
|
243 |
|
244 |
if (!$fields)
|
245 |
-
{
|
246 |
-
// remove bom
|
247 |
$data = str_replace("\xEF\xBB\xBF", '', $data);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
248 |
$fields = $data;
|
249 |
continue;
|
250 |
}
|
|
|
251 |
if (count($fields) != count($data))
|
252 |
continue;
|
|
|
253 |
$data = array_combine($fields, $data);
|
254 |
|
255 |
try
|
@@ -257,6 +280,8 @@ abstract class AffiliateFeedParserModule extends AffiliateParserModule {
|
|
257 |
$product = $this->feedProductPrepare($data);
|
258 |
} catch (\Exception $e)
|
259 |
{
|
|
|
|
|
260 |
$this->setLastImportError($e->getMessage());
|
261 |
fclose($handle);
|
262 |
return;
|
@@ -267,8 +292,10 @@ abstract class AffiliateFeedParserModule extends AffiliateParserModule {
|
|
267 |
|
268 |
if (!empty($product['ean']))
|
269 |
$product['ean'] = TextHelper::fixEan($product['ean']);
|
|
|
270 |
if ($in_stock_only && $product['stock_status'] == ContentProduct::STOCK_STATUS_OUT_OF_STOCK)
|
271 |
continue;
|
|
|
272 |
$products[] = $product;
|
273 |
$i++;
|
274 |
if ($i % static::MULTIPLE_INSERT_ROWS == 0)
|
@@ -279,8 +306,164 @@ abstract class AffiliateFeedParserModule extends AffiliateParserModule {
|
|
279 |
}
|
280 |
if ($products)
|
281 |
$this->product_model->multipleInsert($products, static::MULTIPLE_INSERT_ROWS);
|
|
|
282 |
|
283 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
284 |
}
|
285 |
|
286 |
public function getLastImportDateReadable()
|
@@ -412,4 +595,13 @@ abstract class AffiliateFeedParserModule extends AffiliateParserModule {
|
|
412 |
}
|
413 |
}
|
414 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
415 |
}
|
13 |
*
|
14 |
* @author keywordrush.com <support@keywordrush.com>
|
15 |
* @link https://www.keywordrush.com
|
16 |
+
* @copyright Copyright © 2022 keywordrush.com
|
17 |
*/
|
18 |
abstract class AffiliateFeedParserModule extends AffiliateParserModule {
|
19 |
|
20 |
const TRANSIENT_LAST_IMPORT_DATE = 'cegg_products_last_import_';
|
21 |
+
const PRODUCTS_TTL = 43200;
|
22 |
const MULTIPLE_INSERT_ROWS = 50;
|
23 |
+
const IMPORT_TIME_LIMT = 600;
|
24 |
const DATAFEED_DIR_NAME = 'cegg-datafeeds';
|
25 |
const TRANSIENT_LAST_IMPORT_ERROR = 'cegg_last_import_error_';
|
26 |
|
139 |
return false;
|
140 |
}
|
141 |
|
142 |
+
public static function getProductsTtl()
|
143 |
+
{
|
144 |
+
return \apply_filters('cegg_feed_products_ttl', self::PRODUCTS_TTL);
|
145 |
+
}
|
146 |
+
|
147 |
public function isImportTime()
|
148 |
{
|
149 |
$last_export = $this->getLastImportDate();
|
150 |
+
if (!$last_export || (time() - $last_export > self::getProductsTtl()))
|
151 |
return true;
|
152 |
else
|
153 |
return false;
|
231 |
}
|
232 |
|
233 |
protected function processFeed($file)
|
234 |
+
{
|
235 |
+
$format = $this->config('feed_format', 'csv');
|
236 |
+
if ($format == 'xml')
|
237 |
+
$this->processFeedXml($file);
|
238 |
+
elseif ($format == 'json')
|
239 |
+
$this->processFeedJson($file);
|
240 |
+
else
|
241 |
+
$this->processFeedCsv($file);
|
242 |
+
}
|
243 |
+
|
244 |
+
protected function processFeedCsv($file)
|
245 |
{
|
246 |
$encoding = $this->config('encoding', 'UTF-8');
|
247 |
|
258 |
$data = array_map('utf8_encode', $data);
|
259 |
|
260 |
if (!$fields)
|
|
|
|
|
261 |
$data = str_replace("\xEF\xBB\xBF", '', $data);
|
262 |
+
|
263 |
+
$data = array_map(function($item) {
|
264 |
+
return trim($item, ' \'"');
|
265 |
+
}, $data);
|
266 |
+
|
267 |
+
if (!$fields)
|
268 |
+
{
|
269 |
$fields = $data;
|
270 |
continue;
|
271 |
}
|
272 |
+
|
273 |
if (count($fields) != count($data))
|
274 |
continue;
|
275 |
+
|
276 |
$data = array_combine($fields, $data);
|
277 |
|
278 |
try
|
280 |
$product = $this->feedProductPrepare($data);
|
281 |
} catch (\Exception $e)
|
282 |
{
|
283 |
+
if ($i > 10)
|
284 |
+
continue;
|
285 |
$this->setLastImportError($e->getMessage());
|
286 |
fclose($handle);
|
287 |
return;
|
292 |
|
293 |
if (!empty($product['ean']))
|
294 |
$product['ean'] = TextHelper::fixEan($product['ean']);
|
295 |
+
|
296 |
if ($in_stock_only && $product['stock_status'] == ContentProduct::STOCK_STATUS_OUT_OF_STOCK)
|
297 |
continue;
|
298 |
+
|
299 |
$products[] = $product;
|
300 |
$i++;
|
301 |
if ($i % static::MULTIPLE_INSERT_ROWS == 0)
|
306 |
}
|
307 |
if ($products)
|
308 |
$this->product_model->multipleInsert($products, static::MULTIPLE_INSERT_ROWS);
|
309 |
+
}
|
310 |
|
311 |
+
protected function processFeedXml($file)
|
312 |
+
{
|
313 |
+
$uniqueNode = $this->getProductNode();
|
314 |
+
if (!$uniqueNode)
|
315 |
+
$uniqueNode = 'offer';
|
316 |
+
|
317 |
+
$streamer = \ContentEgg\application\vendor\XmlStringStreamer\XmlStringStreamer::createUniqueNodeParser($file, array('uniqueNode' => $uniqueNode));
|
318 |
+
$in_stock_only = $this->config('in_stock', false);
|
319 |
+
$i = 0;
|
320 |
+
$products = array();
|
321 |
+
|
322 |
+
libxml_use_internal_errors(true);
|
323 |
+
|
324 |
+
$encoding = $this->config('encoding', 'UTF-8');
|
325 |
+
|
326 |
+
while ($node_string = $streamer->getNode())
|
327 |
+
{
|
328 |
+
if ($encoding != 'UTF-8')
|
329 |
+
$node_string = iconv($encoding, 'UTF-8//TRANSLIT//IGNORE', $node_string);
|
330 |
+
|
331 |
+
$node = simplexml_load_string($node_string);
|
332 |
+
if ($node === false)
|
333 |
+
{
|
334 |
+
$err_mess = 'Cannot load xml source.';
|
335 |
+
|
336 |
+
if ($error = libxml_get_last_error())
|
337 |
+
$err_mess .= $error->message;
|
338 |
+
|
339 |
+
$this->setLastImportError($err_mess);
|
340 |
+
|
341 |
+
return;
|
342 |
+
}
|
343 |
+
|
344 |
+
$data = $this->mapXmlData($node);
|
345 |
+
|
346 |
+
try
|
347 |
+
{
|
348 |
+
$product = $this->feedProductPrepare($data);
|
349 |
+
} catch (\Exception $e)
|
350 |
+
{
|
351 |
+
if ($i > 10)
|
352 |
+
continue;
|
353 |
+
|
354 |
+
$this->setLastImportError($e->getMessage());
|
355 |
+
return;
|
356 |
+
}
|
357 |
+
|
358 |
+
if (!$product)
|
359 |
+
continue;
|
360 |
+
|
361 |
+
if (!empty($product['ean']))
|
362 |
+
$product['ean'] = TextHelper::fixEan($product['ean']);
|
363 |
+
|
364 |
+
if ($in_stock_only && $product['stock_status'] == ContentProduct::STOCK_STATUS_OUT_OF_STOCK)
|
365 |
+
continue;
|
366 |
+
|
367 |
+
$products[] = $product;
|
368 |
+
$i++;
|
369 |
+
if ($i % static::MULTIPLE_INSERT_ROWS == 0)
|
370 |
+
{
|
371 |
+
$this->product_model->multipleInsert($products, static::MULTIPLE_INSERT_ROWS);
|
372 |
+
$products = array();
|
373 |
+
}
|
374 |
+
}
|
375 |
+
|
376 |
+
if ($i == 0)
|
377 |
+
$this->setLastImportError('Product node not found.');
|
378 |
+
|
379 |
+
if ($products)
|
380 |
+
$this->product_model->multipleInsert($products, static::MULTIPLE_INSERT_ROWS);
|
381 |
+
}
|
382 |
+
|
383 |
+
protected function processFeedJson($file)
|
384 |
+
{
|
385 |
+
$encoding = $this->config('encoding', 'UTF-8');
|
386 |
+
$in_stock_only = $this->config('in_stock', false);
|
387 |
+
|
388 |
+
$json = file_get_contents($file);
|
389 |
+
$json_arr = json_decode($json, true);
|
390 |
+
|
391 |
+
if (!$json_arr)
|
392 |
+
{
|
393 |
+
$this->setLastImportError(trim('Cannot decode JSON source. ' . json_last_error_msg()));
|
394 |
+
return;
|
395 |
+
}
|
396 |
+
|
397 |
+
$node = $this->getProductNode();
|
398 |
+
|
399 |
+
if (!$node && is_array($json_arr))
|
400 |
+
{
|
401 |
+
$node = 'offer';
|
402 |
+
$json_arr = array($node => $json_arr);
|
403 |
+
}
|
404 |
+
|
405 |
+
if (!isset($json_arr[$node]) || !is_array($json_arr[$node]))
|
406 |
+
{
|
407 |
+
$this->setLastImportError('The product node "' . \esc_html($node) . '" does not exist.');
|
408 |
+
return;
|
409 |
+
}
|
410 |
+
|
411 |
+
$i = 0;
|
412 |
+
foreach ($json_arr[$node] as $data)
|
413 |
+
{
|
414 |
+
if ($encoding == 'ISO-8859-1')
|
415 |
+
$data = array_map('utf8_encode', $data);
|
416 |
+
|
417 |
+
try
|
418 |
+
{
|
419 |
+
$product = $this->feedProductPrepare($data);
|
420 |
+
} catch (\Exception $e)
|
421 |
+
{
|
422 |
+
if ($i > 10)
|
423 |
+
continue;
|
424 |
+
$this->setLastImportError($e->getMessage());
|
425 |
+
return;
|
426 |
+
}
|
427 |
+
|
428 |
+
if (!$product)
|
429 |
+
continue;
|
430 |
+
|
431 |
+
if (!empty($product['ean']))
|
432 |
+
$product['ean'] = TextHelper::fixEan($product['ean']);
|
433 |
+
|
434 |
+
if ($in_stock_only && $product['stock_status'] == ContentProduct::STOCK_STATUS_OUT_OF_STOCK)
|
435 |
+
continue;
|
436 |
+
|
437 |
+
$products[] = $product;
|
438 |
+
$i++;
|
439 |
+
if ($i % static::MULTIPLE_INSERT_ROWS == 0)
|
440 |
+
{
|
441 |
+
$this->product_model->multipleInsert($products, static::MULTIPLE_INSERT_ROWS);
|
442 |
+
$products = array();
|
443 |
+
}
|
444 |
+
$i++;
|
445 |
+
}
|
446 |
+
if ($products)
|
447 |
+
$this->product_model->multipleInsert($products, static::MULTIPLE_INSERT_ROWS);
|
448 |
+
}
|
449 |
+
|
450 |
+
protected function mapXmlData($node)
|
451 |
+
{
|
452 |
+
$data = array();
|
453 |
+
$mapping = $this->config('mapping');
|
454 |
+
$fields = array_values($mapping);
|
455 |
+
$attributes = $node->attributes();
|
456 |
+
foreach ($fields as $field)
|
457 |
+
{
|
458 |
+
if (isset($attributes[$field]))
|
459 |
+
$data[$field] = (string) $attributes[$field];
|
460 |
+
elseif (isset($node->{$field}))
|
461 |
+
$data[$field] = (string) $node->{$field};
|
462 |
+
else
|
463 |
+
continue;
|
464 |
+
}
|
465 |
+
|
466 |
+
return $data;
|
467 |
}
|
468 |
|
469 |
public function getLastImportDateReadable()
|
595 |
}
|
596 |
}
|
597 |
|
598 |
+
public function getProductNode()
|
599 |
+
{
|
600 |
+
$mapping = $this->config('mapping');
|
601 |
+
if (!empty($mapping['product node']))
|
602 |
+
return $mapping['product node'];
|
603 |
+
else
|
604 |
+
return false;
|
605 |
+
}
|
606 |
+
|
607 |
}
|
application/components/AffiliateFeedParserModuleConfig.php
CHANGED
@@ -9,7 +9,7 @@ defined('\ABSPATH') || exit;
|
|
9 |
*
|
10 |
* @author keywordrush.com <support@keywordrush.com>
|
11 |
* @link https://www.keywordrush.com
|
12 |
-
* @copyright Copyright ©
|
13 |
*/
|
14 |
abstract class AffiliateFeedParserModuleConfig extends AffiliateParserModuleConfig {
|
15 |
|
@@ -61,8 +61,13 @@ abstract class AffiliateFeedParserModuleConfig extends AffiliateParserModuleConf
|
|
61 |
'default' => false,
|
62 |
'section' => 'default',
|
63 |
)));
|
64 |
-
|
65 |
-
$options['update_mode']['dropdown_options'] = array(
|
|
|
|
|
|
|
|
|
|
|
66 |
$options['update_mode']['default'] = 'cron';
|
67 |
$options['update_mode']['validator'][] = array(
|
68 |
'call' => array($this, 'emptyLastImportDate'),
|
@@ -78,7 +83,7 @@ abstract class AffiliateFeedParserModuleConfig extends AffiliateParserModuleConf
|
|
78 |
|
79 |
// download feed in background
|
80 |
$hook = 'cegg_' . $this->getModuleId() . '_init_products';
|
81 |
-
|
82 |
if ($this->option('is_active') && !\wp_next_scheduled($hook))
|
83 |
{
|
84 |
\wp_schedule_single_event(time() + 1, $hook, array('module_id' => $this->getModuleId()));
|
9 |
*
|
10 |
* @author keywordrush.com <support@keywordrush.com>
|
11 |
* @link https://www.keywordrush.com
|
12 |
+
* @copyright Copyright © 2022 keywordrush.com
|
13 |
*/
|
14 |
abstract class AffiliateFeedParserModuleConfig extends AffiliateParserModuleConfig {
|
15 |
|
61 |
'default' => false,
|
62 |
'section' => 'default',
|
63 |
)));
|
64 |
+
|
65 |
+
$options['update_mode']['dropdown_options'] = array(
|
66 |
+
'cron' => __('Cron', 'content-egg') . ' (' . __('recommended', 'content-egg') . ')',
|
67 |
+
'visit' => __('Page view', 'content-egg'),
|
68 |
+
'visit_cron' => __('Page view + Cron', 'content-egg'),
|
69 |
+
);
|
70 |
+
|
71 |
$options['update_mode']['default'] = 'cron';
|
72 |
$options['update_mode']['validator'][] = array(
|
73 |
'call' => array($this, 'emptyLastImportDate'),
|
83 |
|
84 |
// download feed in background
|
85 |
$hook = 'cegg_' . $this->getModuleId() . '_init_products';
|
86 |
+
|
87 |
if ($this->option('is_active') && !\wp_next_scheduled($hook))
|
88 |
{
|
89 |
\wp_schedule_single_event(time() + 1, $hook, array('module_id' => $this->getModuleId()));
|
application/components/Config.php
CHANGED
@@ -8,8 +8,8 @@ defined('\ABSPATH') || exit;
|
|
8 |
* Config class file
|
9 |
*
|
10 |
* @author keywordrush.com <support@keywordrush.com>
|
11 |
-
* @link
|
12 |
-
* @copyright Copyright ©
|
13 |
*/
|
14 |
abstract class Config {
|
15 |
|
@@ -48,8 +48,11 @@ abstract class Config {
|
|
48 |
$this->page_slug = $this->page_slug();
|
49 |
}
|
50 |
|
51 |
-
public function option($opt_name)
|
52 |
{
|
|
|
|
|
|
|
53 |
return $this->get_current($opt_name);
|
54 |
}
|
55 |
|
@@ -140,7 +143,7 @@ abstract class Config {
|
|
140 |
$params['render_after'] = $field['render_after'];
|
141 |
if (empty($field['section']))
|
142 |
$field['section'] = 'default';
|
143 |
-
|
144 |
// section
|
145 |
if (!isset($sections[$field['section']]))
|
146 |
{
|
@@ -234,23 +237,33 @@ abstract class Config {
|
|
234 |
|
235 |
public function render_checkbox_list($args)
|
236 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
237 |
echo '<div class="cegg-checkboxgroup">';
|
238 |
-
|
|
|
239 |
{
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
|
|
|
|
|
|
254 |
}
|
255 |
echo '</div>';
|
256 |
if ($args['description'])
|
8 |
* Config class file
|
9 |
*
|
10 |
* @author keywordrush.com <support@keywordrush.com>
|
11 |
+
* @link https://www.keywordrush.com
|
12 |
+
* @copyright Copyright © 2022 keywordrush.com
|
13 |
*/
|
14 |
abstract class Config {
|
15 |
|
48 |
$this->page_slug = $this->page_slug();
|
49 |
}
|
50 |
|
51 |
+
public function option($opt_name, $default = null)
|
52 |
{
|
53 |
+
if ($default !== null && !$this->option_exists($opt_name))
|
54 |
+
return $default;
|
55 |
+
|
56 |
return $this->get_current($opt_name);
|
57 |
}
|
58 |
|
143 |
$params['render_after'] = $field['render_after'];
|
144 |
if (empty($field['section']))
|
145 |
$field['section'] = 'default';
|
146 |
+
|
147 |
// section
|
148 |
if (!isset($sections[$field['section']]))
|
149 |
{
|
237 |
|
238 |
public function render_checkbox_list($args)
|
239 |
{
|
240 |
+
if (empty($args['checkbox_options']))
|
241 |
+
{
|
242 |
+
echo '-';
|
243 |
+
return;
|
244 |
+
}
|
245 |
+
|
246 |
echo '<div class="cegg-checkboxgroup">';
|
247 |
+
|
248 |
+
if ($args['checkbox_options'] && is_array($args['checkbox_options']))
|
249 |
{
|
250 |
+
foreach ($args['checkbox_options'] as $value => $name)
|
251 |
+
{
|
252 |
+
if (in_array($value, $args['value']))
|
253 |
+
$checked = ' checked="checked" ';
|
254 |
+
else
|
255 |
+
$checked = '';
|
256 |
+
|
257 |
+
echo '<div class="cegg-checkbox">';
|
258 |
+
echo '<label for="' . esc_attr($args['label_for'] . '-' . $value) . '">';
|
259 |
+
echo '<input type="checkbox" name="' . esc_attr($args['option_name']) . '['
|
260 |
+
. esc_attr($args['name']) . '][' . esc_attr($value) . ']" id="'
|
261 |
+
. esc_attr($args['label_for'] . '-' . $value), '"'
|
262 |
+
. $checked . ' value="' . esc_attr($value) . '" />';
|
263 |
+
echo esc_html($name);
|
264 |
+
echo '</label>';
|
265 |
+
echo '</div>';
|
266 |
+
}
|
267 |
}
|
268 |
echo '</div>';
|
269 |
if ($args['description'])
|
application/components/ContentManager.php
CHANGED
@@ -180,7 +180,11 @@ class ContentManager {
|
|
180 |
|
181 |
public static function isDataExists($post_id, $module_id)
|
182 |
{
|
183 |
-
|
|
|
|
|
|
|
|
|
184 |
}
|
185 |
|
186 |
public static function getData($post_id, $module_id)
|
@@ -234,12 +238,23 @@ class ContentManager {
|
|
234 |
}
|
235 |
}
|
236 |
|
237 |
-
// locale
|
238 |
if (!empty($params['locale']))
|
239 |
{
|
|
|
|
|
|
|
240 |
foreach ($data as $key => $d)
|
241 |
{
|
242 |
-
if (isset($d['extra']['locale'])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
243 |
unset($data[$key]);
|
244 |
}
|
245 |
}
|
@@ -265,6 +280,16 @@ class ContentManager {
|
|
265 |
}
|
266 |
}
|
267 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
268 |
return $data;
|
269 |
}
|
270 |
|
@@ -336,10 +361,18 @@ class ContentManager {
|
|
336 |
public static function getProductbyUniqueId($unique_id, $module_id, $post_id, $params = array())
|
337 |
{
|
338 |
$data = self::getViewData($module_id, $post_id, $params);
|
339 |
-
if (
|
340 |
-
return $data[$unique_id];
|
341 |
-
else
|
342 |
return null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
343 |
}
|
344 |
|
345 |
public static function updateByKeyword($post_id, $module_id)
|
@@ -361,7 +394,7 @@ class ContentManager {
|
|
361 |
|
362 |
try
|
363 |
{
|
364 |
-
$data = $module->
|
365 |
|
366 |
// nodata!
|
367 |
if (!$data)
|
180 |
|
181 |
public static function isDataExists($post_id, $module_id)
|
182 |
{
|
183 |
+
if (\get_post_meta($post_id, ContentManager::META_PREFIX_DATA . $module_id, true))
|
184 |
+
return true;
|
185 |
+
else
|
186 |
+
return false;
|
187 |
+
//return (bool) \get_post_meta($post_id, self::META_PREFIX_LAST_BYKEYWORD_UPDATE . $module_id, true);
|
188 |
}
|
189 |
|
190 |
public static function getData($post_id, $module_id)
|
238 |
}
|
239 |
}
|
240 |
|
241 |
+
// locale filter
|
242 |
if (!empty($params['locale']))
|
243 |
{
|
244 |
+
if (strstr($module_id, 'Amazon') && $params['locale'] == 'GB')
|
245 |
+
$params['locale'] = 'UK';
|
246 |
+
|
247 |
foreach ($data as $key => $d)
|
248 |
{
|
249 |
+
if (!isset($d['extra']['locale']))
|
250 |
+
continue;
|
251 |
+
|
252 |
+
$product_locale = $d['extra']['locale'];
|
253 |
+
|
254 |
+
if ($module_id == 'Ebay2')
|
255 |
+
$product_locale = str_replace('EBAY_', '', $product_locale);
|
256 |
+
|
257 |
+
if (strtolower($product_locale) != strtolower($params['locale']))
|
258 |
unset($data[$key]);
|
259 |
}
|
260 |
}
|
280 |
}
|
281 |
}
|
282 |
|
283 |
+
// add_query_arg
|
284 |
+
if (!empty($params['add_query_arg']))
|
285 |
+
{
|
286 |
+
foreach ($data as $key => $d)
|
287 |
+
{
|
288 |
+
if (isset($d['url']))
|
289 |
+
$data[$key]['url'] = \add_query_arg($params['add_query_arg'], $data[$key]['url']);
|
290 |
+
}
|
291 |
+
}
|
292 |
+
|
293 |
return $data;
|
294 |
}
|
295 |
|
361 |
public static function getProductbyUniqueId($unique_id, $module_id, $post_id, $params = array())
|
362 |
{
|
363 |
$data = self::getViewData($module_id, $post_id, $params);
|
364 |
+
if (!$data)
|
|
|
|
|
365 |
return null;
|
366 |
+
|
367 |
+
if (isset($data[$unique_id]))
|
368 |
+
return $data[$unique_id];
|
369 |
+
|
370 |
+
foreach ($data as $id => $d)
|
371 |
+
{
|
372 |
+
if ($unique_id == TextHelper::clearId($id))
|
373 |
+
return $data[$id];
|
374 |
+
}
|
375 |
+
return null;
|
376 |
}
|
377 |
|
378 |
public static function updateByKeyword($post_id, $module_id)
|
394 |
|
395 |
try
|
396 |
{
|
397 |
+
$data = $module->doMultipleRequests($keyword, $updateParams, true);
|
398 |
|
399 |
// nodata!
|
400 |
if (!$data)
|
application/components/FeaturedImage.php
CHANGED
@@ -14,8 +14,8 @@ use ContentEgg\application\components\ExternalFeaturedImage;
|
|
14 |
* FeaturedImage class file
|
15 |
*
|
16 |
* @author keywordrush.com <support@keywordrush.com>
|
17 |
-
* @link
|
18 |
-
* @copyright Copyright ©
|
19 |
*/
|
20 |
class FeaturedImage {
|
21 |
|
@@ -144,6 +144,7 @@ class FeaturedImage {
|
|
144 |
{
|
145 |
require_once(ABSPATH . 'wp-admin/includes/image.php');
|
146 |
|
|
|
147 |
$filetype = \wp_check_filetype(basename($img_file), null);
|
148 |
$attachment = array(
|
149 |
'guid' => $img_file,
|
@@ -155,6 +156,9 @@ class FeaturedImage {
|
|
155 |
$attach_id = \wp_insert_attachment($attachment, $img_file, $post_id);
|
156 |
$attach_data = \wp_generate_attachment_metadata($attach_id, $img_file);
|
157 |
\wp_update_attachment_metadata($attach_id, $attach_data);
|
|
|
|
|
|
|
158 |
return \set_post_thumbnail($post_id, $attach_id);
|
159 |
}
|
160 |
|
14 |
* FeaturedImage class file
|
15 |
*
|
16 |
* @author keywordrush.com <support@keywordrush.com>
|
17 |
+
* @link https://www.keywordrush.com
|
18 |
+
* @copyright Copyright © 2022 keywordrush.com
|
19 |
*/
|
20 |
class FeaturedImage {
|
21 |
|
144 |
{
|
145 |
require_once(ABSPATH . 'wp-admin/includes/image.php');
|
146 |
|
147 |
+
$title = \sanitize_text_field($title);
|
148 |
$filetype = \wp_check_filetype(basename($img_file), null);
|
149 |
$attachment = array(
|
150 |
'guid' => $img_file,
|
156 |
$attach_id = \wp_insert_attachment($attachment, $img_file, $post_id);
|
157 |
$attach_data = \wp_generate_attachment_metadata($attach_id, $img_file);
|
158 |
\wp_update_attachment_metadata($attach_id, $attach_data);
|
159 |
+
if ($title)
|
160 |
+
\update_post_meta($attach_id, '_wp_attachment_image_alt', $title);
|
161 |
+
|
162 |
return \set_post_thumbnail($post_id, $attach_id);
|
163 |
}
|
164 |
|
application/components/LinkHandler.php
CHANGED
@@ -255,7 +255,8 @@ class LinkHandler {
|
|
255 |
* This token expires in 12 hours! Therefore you need to set your script to update your feed at least
|
256 |
* once each 11 hours , in order to guarantee the correct click tracking!
|
257 |
*/
|
258 |
-
|
|
|
259 |
return $item['url'];
|
260 |
|
261 |
$regex = trim($regex);
|
@@ -263,12 +264,24 @@ class LinkHandler {
|
|
263 |
if (count($parts) != 2)
|
264 |
return $url;
|
265 |
|
|
|
266 |
$path = parse_url($url, PHP_URL_PATH);
|
267 |
$path = trim($path, "/");
|
268 |
$path = preg_replace('/\.aspx$/', '', $path);
|
269 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
270 |
$partnerId = rtrim($parts[1], ']');
|
271 |
-
$api_url = 'https://quickshop.shoppydoo.it/' . urlencode($partnerId) . '/' . urlencode($
|
272 |
|
273 |
$response = \wp_remote_get($api_url);
|
274 |
if (\is_wp_error($response))
|
255 |
* This token expires in 12 hours! Therefore you need to set your script to update your feed at least
|
256 |
* once each 11 hours , in order to guarantee the correct click tracking!
|
257 |
*/
|
258 |
+
|
259 |
+
if (strstr($item['url'], 'splash?impression') && time() - $item['last_update'] < 111 * 3600)
|
260 |
return $item['url'];
|
261 |
|
262 |
$regex = trim($regex);
|
264 |
if (count($parts) != 2)
|
265 |
return $url;
|
266 |
|
267 |
+
/*
|
268 |
$path = parse_url($url, PHP_URL_PATH);
|
269 |
$path = trim($path, "/");
|
270 |
$path = preg_replace('/\.aspx$/', '', $path);
|
271 |
+
$path = explode('/', $path);
|
272 |
+
$path = end($path);
|
273 |
+
$path = explode('-', $path);
|
274 |
+
$path = end($path);
|
275 |
+
$keyword = $path;
|
276 |
+
*
|
277 |
+
*/
|
278 |
+
|
279 |
+
$keyword = $item['title'];
|
280 |
+
$keyword = strtolower($keyword);
|
281 |
+
$keyword = str_replace(' ', '_', $keyword);
|
282 |
+
|
283 |
$partnerId = rtrim($parts[1], ']');
|
284 |
+
$api_url = 'https://quickshop.shoppydoo.it/' . urlencode($partnerId) . '/' . urlencode($keyword) . '.aspx?format=json&sort=price';
|
285 |
|
286 |
$response = \wp_remote_get($api_url);
|
287 |
if (\is_wp_error($response))
|
application/components/ModuleApi.php
CHANGED
@@ -13,8 +13,8 @@ use ContentEgg\application\helpers\InputHelper;
|
|
13 |
* ModuleApi class file
|
14 |
*
|
15 |
* @author keywordrush.com <support@keywordrush.com>
|
16 |
-
* @link
|
17 |
-
* @copyright Copyright ©
|
18 |
*/
|
19 |
class ModuleApi {
|
20 |
|
@@ -65,7 +65,7 @@ class ModuleApi {
|
|
65 |
|
66 |
try
|
67 |
{
|
68 |
-
$data = $parser->
|
69 |
foreach ($data as $key => $item)
|
70 |
{
|
71 |
if (!$item->unique_id)
|
13 |
* ModuleApi class file
|
14 |
*
|
15 |
* @author keywordrush.com <support@keywordrush.com>
|
16 |
+
* @link https://www.keywordrush.com
|
17 |
+
* @copyright Copyright © 2022 keywordrush.com
|
18 |
*/
|
19 |
class ModuleApi {
|
20 |
|
65 |
|
66 |
try
|
67 |
{
|
68 |
+
$data = $parser->doMultipleRequests($keyword, $query);
|
69 |
foreach ($data as $key => $item)
|
70 |
{
|
71 |
if (!$item->unique_id)
|
application/components/ParserModule.php
CHANGED
@@ -15,7 +15,7 @@ use ContentEgg\application\Plugin;
|
|
15 |
*
|
16 |
* @author keywordrush.com <support@keywordrush.com>
|
17 |
* @link https://www.keywordrush.com
|
18 |
-
* @copyright Copyright ©
|
19 |
*/
|
20 |
abstract class ParserModule extends Module {
|
21 |
|
@@ -168,5 +168,50 @@ abstract class ParserModule extends Module {
|
|
168 |
else
|
169 |
return false;
|
170 |
}
|
171 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
172 |
}
|
15 |
*
|
16 |
* @author keywordrush.com <support@keywordrush.com>
|
17 |
* @link https://www.keywordrush.com
|
18 |
+
* @copyright Copyright © 2022 keywordrush.com
|
19 |
*/
|
20 |
abstract class ParserModule extends Module {
|
21 |
|
168 |
else
|
169 |
return false;
|
170 |
}
|
171 |
+
|
172 |
+
public function doMultipleRequests($keyword, $query_params = array(), $is_autoupdate = false)
|
173 |
+
{
|
174 |
+
if (!\apply_filters('cegg_disable_multiple_keywords', false))
|
175 |
+
$keywords = explode(',', $keyword, 10);
|
176 |
+
else
|
177 |
+
$keywords = array($keyword);
|
178 |
+
|
179 |
+
$keywords = array_map('trim', $keywords);
|
180 |
+
|
181 |
+
$results = array();
|
182 |
+
foreach ($keywords as $i => $keyword)
|
183 |
+
{
|
184 |
+
if ($i && $this->getId() == 'Amazon')
|
185 |
+
sleep (1);
|
186 |
+
|
187 |
+
$results = array_merge($results, $this->doRequest($keyword, $query_params, $is_autoupdate));
|
188 |
+
}
|
189 |
+
|
190 |
+
$results = self::filterDuplicateItems($results);
|
191 |
+
return $results;
|
192 |
+
}
|
193 |
+
|
194 |
+
private static function filterDuplicateItems(array $items)
|
195 |
+
{
|
196 |
+
$results = array();
|
197 |
+
foreach ($items as $item)
|
198 |
+
{
|
199 |
+
$dup = false;
|
200 |
+
foreach ($results as $result)
|
201 |
+
{
|
202 |
+
if ($item->unique_id == $result->unique_id)
|
203 |
+
{
|
204 |
+
$dup = true;
|
205 |
+
break;
|
206 |
+
}
|
207 |
+
}
|
208 |
+
|
209 |
+
if (!$dup)
|
210 |
+
$results[] = $item;
|
211 |
+
|
212 |
+
}
|
213 |
+
|
214 |
+
return $results;
|
215 |
+
}
|
216 |
+
|
217 |
}
|
application/components/ParserModuleConfig.php
CHANGED
@@ -113,6 +113,8 @@ abstract class ParserModuleConfig extends ModuleConfig {
|
|
113 |
{
|
114 |
if (strpos($option['title'], '*'))
|
115 |
$keys[] = $key;
|
|
|
|
|
116 |
}
|
117 |
|
118 |
$res = array();
|
113 |
{
|
114 |
if (strpos($option['title'], '*'))
|
115 |
$keys[] = $key;
|
116 |
+
|
117 |
+
$options[$key]['title'] = str_replace('**', '', $option['title']);
|
118 |
}
|
119 |
|
120 |
$res = array();
|
application/components/ReviewNotice.php
ADDED
@@ -0,0 +1,100 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace ContentEgg\application\components;
|
4 |
+
|
5 |
+
defined('\ABSPATH') || exit;
|
6 |
+
|
7 |
+
use ContentEgg\application\Plugin;
|
8 |
+
use ContentEgg\application\models\ProductModel;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* PluginReview class file
|
12 |
+
*
|
13 |
+
* @author keywordrush.com <support@keywordrush.com>
|
14 |
+
* @link https://www.keywordrush.com
|
15 |
+
* @copyright Copyright © 2022 keywordrush.com
|
16 |
+
*/
|
17 |
+
class ReviewNotice {
|
18 |
+
|
19 |
+
private static $instance = null;
|
20 |
+
|
21 |
+
const MIN_PRODUCTS_TRIGGER = 100;
|
22 |
+
const PRODUC_COUNT_TTL = 86400;
|
23 |
+
|
24 |
+
public static function getInstance()
|
25 |
+
{
|
26 |
+
if (self::$instance == null)
|
27 |
+
self::$instance = new self;
|
28 |
+
|
29 |
+
return self::$instance;
|
30 |
+
}
|
31 |
+
|
32 |
+
public function adminInit()
|
33 |
+
{
|
34 |
+
\add_action('admin_notices', array($this, 'displayNotice'));
|
35 |
+
$this->hideNotice();
|
36 |
+
}
|
37 |
+
|
38 |
+
public function displayNotice()
|
39 |
+
{
|
40 |
+
if (time() < 1649594175)
|
41 |
+
return;
|
42 |
+
|
43 |
+
if (\get_transient('cegg_hide_notice_review_products_trigger'))
|
44 |
+
return;
|
45 |
+
|
46 |
+
$last_sync = ProductModel::model()->getLastSync();
|
47 |
+
if (!$last_sync || time() - $last_sync > self::PRODUC_COUNT_TTL)
|
48 |
+
ProductModel::model()->maybeScanProducts();
|
49 |
+
|
50 |
+
$total = ProductModel::model()->count();
|
51 |
+
if ($total < self::MIN_PRODUCTS_TRIGGER)
|
52 |
+
return;
|
53 |
+
|
54 |
+
$rate_url = 'https://wordpress.org/support/plugin/' . Plugin::getSlug() . '/reviews/?filter=5#new-post';
|
55 |
+
$page_url = \get_admin_url(\get_current_blog_id(), 'admin.php?page=content-egg-product');
|
56 |
+
|
57 |
+
$hide_notice_uri = \add_query_arg(array('cegg_hide_notice' => 'review_products_trigger', '_cegg_notice_nonce' => \wp_create_nonce('hide_notice')), $_SERVER['REQUEST_URI']);
|
58 |
+
|
59 |
+
$this->addInlineCss();
|
60 |
+
echo '<div class="notice notice-success egg-notice"><p>';
|
61 |
+
echo '<img src=" ' . \ContentEgg\PLUGIN_RES . '/img/logo.png' . '" width="40" />';
|
62 |
+
echo '<b>' . sprintf(__('Congrats, you have <a href="%s">%d products</a> added with %s.', 'content-egg'), $page_url, $total, Plugin::getName()) . '</b>';
|
63 |
+
echo '<br>';
|
64 |
+
echo ' ' . __('We would very much appreciate if you could quickly rate the plugin on WP.', 'content-egg');
|
65 |
+
echo ' ' . __('Just to help us spread the word and boost our motivation.', 'content-egg');
|
66 |
+
echo '<br><em> - ' . sprintf(__('Your %s team', 'content-egg'), 'Keywordrush'), '</em>';
|
67 |
+
echo '<br>';
|
68 |
+
echo sprintf('<a style="color:#00a32a;font-weight:bold;" target="_blank" href="%s">★ %s</a>', $rate_url, __('Give it a 5-star rating', 'content-egg'));
|
69 |
+
echo ' | ';
|
70 |
+
echo sprintf('<a href="%s">%s</a>', $hide_notice_uri, '✕ ' . __('Dismiss this notice', 'content-egg'));
|
71 |
+
|
72 |
+
echo '</p></div>';
|
73 |
+
}
|
74 |
+
|
75 |
+
public function hideNotice()
|
76 |
+
{
|
77 |
+
if (!isset($_GET['cegg_hide_notice']))
|
78 |
+
return;
|
79 |
+
|
80 |
+
if (!isset($_GET['_cegg_notice_nonce']) || !\wp_verify_nonce($_GET['_cegg_notice_nonce'], 'hide_notice'))
|
81 |
+
return;
|
82 |
+
|
83 |
+
$notice = \sanitize_text_field($_GET['cegg_hide_notice']);
|
84 |
+
|
85 |
+
if (!in_array($notice, array('review_products_trigger')))
|
86 |
+
return;
|
87 |
+
|
88 |
+
$expiration = 0;
|
89 |
+
\set_transient('cegg_hide_notice_' . $notice, time(), $expiration);
|
90 |
+
|
91 |
+
\wp_redirect(\remove_query_arg(array('cegg_hide_notice', '_cegg_notice_nonce'), \wp_unslash($_SERVER['REQUEST_URI'])));
|
92 |
+
exit;
|
93 |
+
}
|
94 |
+
|
95 |
+
public function addInlineCss()
|
96 |
+
{
|
97 |
+
echo '<style>.egg-notice a.egg-notice-close {position:static;float:right;top:0;right0;padding:0;margin-top:-20px;line-height:1.23076923;text-decoration:none;}.egg-notice a.egg-notice-close::before{position: relative;top: 18px;left: -20px;}.egg-notice img {float:left;width:40px;padding-right:12px;}</style>';
|
98 |
+
}
|
99 |
+
|
100 |
+
}
|
application/helpers/CurrencyHelper.php
CHANGED
@@ -8,8 +8,8 @@ defined('\ABSPATH') || exit;
|
|
8 |
* Currency class file
|
9 |
*
|
10 |
* @author keywordrush.com <support@keywordrush.com>
|
11 |
-
* @link
|
12 |
-
* @copyright Copyright ©
|
13 |
*
|
14 |
*/
|
15 |
class CurrencyHelper {
|
@@ -98,6 +98,8 @@ class CurrencyHelper {
|
|
98 |
'es' => 'right',
|
99 |
'fr' => 'right',
|
100 |
'it' => 'right',
|
|
|
|
|
101 |
),
|
102 |
'thousand_sep' => '.',
|
103 |
'decimal_sep' => ',',
|
@@ -520,7 +522,40 @@ class CurrencyHelper {
|
|
520 |
'num_decimals' => 0,
|
521 |
'name' => 'Swedish Krona',
|
522 |
),
|
523 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
524 |
}
|
525 |
|
526 |
public function setLocale($locale)
|
8 |
* Currency class file
|
9 |
*
|
10 |
* @author keywordrush.com <support@keywordrush.com>
|
11 |
+
* @link https://www.keywordrush.com
|
12 |
+
* @copyright Copyright © 2022 keywordrush.com
|
13 |
*
|
14 |
*/
|
15 |
class CurrencyHelper {
|
98 |
'es' => 'right',
|
99 |
'fr' => 'right',
|
100 |
'it' => 'right',
|
101 |
+
'fi' => 'right',
|
102 |
+
'sk' => 'right',
|
103 |
),
|
104 |
'thousand_sep' => '.',
|
105 |
'decimal_sep' => ',',
|
522 |
'num_decimals' => 0,
|
523 |
'name' => 'Swedish Krona',
|
524 |
),
|
525 |
+
'PHP' => array(
|
526 |
+
'currency_symbol' => '₱',
|
527 |
+
'currency_pos' => 'left',
|
528 |
+
'thousand_sep' => ',',
|
529 |
+
'decimal_sep' => '.',
|
530 |
+
'num_decimals' => 0,
|
531 |
+
'name' => 'Philippine Peso',
|
532 |
+
),
|
533 |
+
'JOD' => array(
|
534 |
+
'currency_symbol' => 'JOD',
|
535 |
+
'currency_pos' => 'right',
|
536 |
+
'thousand_sep' => ',',
|
537 |
+
'decimal_sep' => '.',
|
538 |
+
'num_decimals' => 2,
|
539 |
+
'name' => 'Jordanian Dinar',
|
540 |
+
),
|
541 |
+
'NOK' => array(
|
542 |
+
'currency_symbol' => 'NOK',
|
543 |
+
'currency_pos' => 'left',
|
544 |
+
'thousand_sep' => ',',
|
545 |
+
'decimal_sep' => '.',
|
546 |
+
'num_decimals' => 2,
|
547 |
+
'name' => 'Norske kroner',
|
548 |
+
),
|
549 |
+
'NZD' => array(
|
550 |
+
'currency_symbol' => 'NZ $',
|
551 |
+
'currency_pos' => 'left',
|
552 |
+
'thousand_sep' => ',',
|
553 |
+
'decimal_sep' => '.',
|
554 |
+
'num_decimals' => 2,
|
555 |
+
'name' => 'New Zealand dollar',
|
556 |
+
),
|
557 |
+
|
558 |
+
);
|
559 |
}
|
560 |
|
561 |
public function setLocale($locale)
|
application/helpers/TemplateHelper.php
CHANGED
@@ -12,7 +12,6 @@ use ContentEgg\application\components\ModuleManager;
|
|
12 |
use ContentEgg\application\components\ContentProduct;
|
13 |
use ContentEgg\application\helpers\TextHelper;
|
14 |
use ContentEgg\application\libs\amazon\AmazonLocales;
|
15 |
-
use ContentEgg\application\modules\Amazon\AmazonConfig;
|
16 |
use ContentEgg\application\Translator;
|
17 |
|
18 |
/**
|
@@ -218,10 +217,13 @@ class TemplateHelper {
|
|
218 |
|
219 |
public static function getLastUpdateFormattedAmazon(array $data, $time = true)
|
220 |
{
|
221 |
-
if (
|
|
|
|
|
|
|
|
|
222 |
return false;
|
223 |
|
224 |
-
$item = current($data['Amazon']);
|
225 |
if (empty($item['last_update']))
|
226 |
return false;
|
227 |
|
@@ -566,7 +568,6 @@ class TemplateHelper {
|
|
566 |
if (is_dir($logo_dir))
|
567 |
return $logo_dir;
|
568 |
|
569 |
-
// create
|
570 |
if (\wp_mkdir_p($logo_dir))
|
571 |
return $logo_dir;
|
572 |
else
|
@@ -639,14 +640,14 @@ class TemplateHelper {
|
|
639 |
return ucfirst($merchant);
|
640 |
}
|
641 |
|
642 |
-
public static function sortByPrice(array $data, $order = 'asc')
|
643 |
{
|
644 |
-
if (!$order)
|
645 |
-
$order = 'asc';
|
646 |
-
|
647 |
if (!in_array($order, array('asc', 'desc')))
|
648 |
$order = 'asc';
|
649 |
|
|
|
|
|
|
|
650 |
// convert all prices to one currency
|
651 |
$currency_codes = array();
|
652 |
foreach ($data as $d)
|
@@ -663,21 +664,36 @@ class TemplateHelper {
|
|
663 |
$base_currency = key($currency_codes);
|
664 |
foreach ($data as $key => $d)
|
665 |
{
|
666 |
-
|
667 |
-
|
668 |
-
elseif (!empty($d['currencyCode']) && $d['currencyCode'] != $base_currency)
|
669 |
-
{
|
670 |
$rate = CurrencyHelper::getCurrencyRate($d['currencyCode'], $base_currency);
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
677 |
{
|
678 |
$data[$key]['converted_price'] = 0;
|
679 |
$data[$key]['price'] = 0;
|
|
|
|
|
680 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
681 |
}
|
682 |
|
683 |
// modules priority
|
@@ -697,7 +713,7 @@ class TemplateHelper {
|
|
697 |
|
698 |
// sort by price and priority
|
699 |
usort($data, function($a, $b) use($modules_priority) {
|
700 |
-
|
701 |
if (!$a['price'] && !$b['price'])
|
702 |
return $modules_priority[$a['module_id']] - $modules_priority[$b['module_id']];
|
703 |
|
@@ -721,14 +737,14 @@ class TemplateHelper {
|
|
721 |
});
|
722 |
|
723 |
if ($order == 'desc')
|
724 |
-
array_reverse($data);
|
725 |
|
726 |
return $data;
|
727 |
}
|
728 |
|
729 |
-
public static function sortAllByPrice(array $data, $order = 'asc')
|
730 |
{
|
731 |
-
return TemplateHelper::sortByPrice(self::mergeAll($data), $order);
|
732 |
}
|
733 |
|
734 |
public static function mergeAll(array $data)
|
@@ -1090,16 +1106,18 @@ class TemplateHelper {
|
|
1090 |
$i++;
|
1091 |
}
|
1092 |
|
1093 |
-
$url .= '&AssociateTag=' . self::getAssociateTagForAmazonLocale($locale);
|
1094 |
return $url;
|
1095 |
}
|
1096 |
|
1097 |
-
public static function getAssociateTagForAmazonLocale($locale)
|
1098 |
{
|
1099 |
-
if ($
|
1100 |
-
|
1101 |
else
|
1102 |
-
|
|
|
|
|
1103 |
}
|
1104 |
|
1105 |
public static function __($str)
|
12 |
use ContentEgg\application\components\ContentProduct;
|
13 |
use ContentEgg\application\helpers\TextHelper;
|
14 |
use ContentEgg\application\libs\amazon\AmazonLocales;
|
|
|
15 |
use ContentEgg\application\Translator;
|
16 |
|
17 |
/**
|
217 |
|
218 |
public static function getLastUpdateFormattedAmazon(array $data, $time = true)
|
219 |
{
|
220 |
+
if (isset($data['Amazon']))
|
221 |
+
$item = current($data['Amazon']);
|
222 |
+
elseif (isset($data['AmazonNoApi']))
|
223 |
+
$item = current($data['AmazonNoApi']);
|
224 |
+
else
|
225 |
return false;
|
226 |
|
|
|
227 |
if (empty($item['last_update']))
|
228 |
return false;
|
229 |
|
568 |
if (is_dir($logo_dir))
|
569 |
return $logo_dir;
|
570 |
|
|
|
571 |
if (\wp_mkdir_p($logo_dir))
|
572 |
return $logo_dir;
|
573 |
else
|
640 |
return ucfirst($merchant);
|
641 |
}
|
642 |
|
643 |
+
public static function sortByPrice(array $data, $order = 'asc', $field = 'price')
|
644 |
{
|
|
|
|
|
|
|
645 |
if (!in_array($order, array('asc', 'desc')))
|
646 |
$order = 'asc';
|
647 |
|
648 |
+
if (!in_array($field, array('price', 'discount')))
|
649 |
+
$field = 'price';
|
650 |
+
|
651 |
// convert all prices to one currency
|
652 |
$currency_codes = array();
|
653 |
foreach ($data as $d)
|
664 |
$base_currency = key($currency_codes);
|
665 |
foreach ($data as $key => $d)
|
666 |
{
|
667 |
+
$rate = 1;
|
668 |
+
if (!empty($d['currencyCode']) && $d['currencyCode'] != $base_currency)
|
|
|
|
|
669 |
$rate = CurrencyHelper::getCurrencyRate($d['currencyCode'], $base_currency);
|
670 |
+
if (!$rate)
|
671 |
+
$rate = 1;
|
672 |
+
|
673 |
+
if (isset($d['price']))
|
674 |
+
{
|
675 |
+
if ($field == 'discount')
|
676 |
+
{
|
677 |
+
if (!empty($d['priceOld']))
|
678 |
+
$data[$key]['converted_price'] = (float) ($d['priceOld'] - $d['price']) * $rate;
|
679 |
+
else
|
680 |
+
$data[$key]['converted_price'] = 0.00001;
|
681 |
+
} else
|
682 |
+
$data[$key]['converted_price'] = (float) $d['price'] * $rate;
|
683 |
+
} else
|
684 |
{
|
685 |
$data[$key]['converted_price'] = 0;
|
686 |
$data[$key]['price'] = 0;
|
687 |
+
if ($field == 'discount')
|
688 |
+
$data[$key]['converted_price'] = 99999999999;
|
689 |
}
|
690 |
+
if (isset($d['stock_status']) && $d['stock_status'] == ContentProduct::STOCK_STATUS_OUT_OF_STOCK)
|
691 |
+
{
|
692 |
+
if ($field == 'discount')
|
693 |
+
$data[$key]['converted_price'] = -1;
|
694 |
+
else
|
695 |
+
$data[$key]['converted_price'] = 0;
|
696 |
+
}
|
697 |
}
|
698 |
|
699 |
// modules priority
|
713 |
|
714 |
// sort by price and priority
|
715 |
usort($data, function($a, $b) use($modules_priority) {
|
716 |
+
|
717 |
if (!$a['price'] && !$b['price'])
|
718 |
return $modules_priority[$a['module_id']] - $modules_priority[$b['module_id']];
|
719 |
|
737 |
});
|
738 |
|
739 |
if ($order == 'desc')
|
740 |
+
$data = array_reverse($data);
|
741 |
|
742 |
return $data;
|
743 |
}
|
744 |
|
745 |
+
public static function sortAllByPrice(array $data, $order = 'asc', $field = 'price')
|
746 |
{
|
747 |
+
return TemplateHelper::sortByPrice(self::mergeAll($data), $order, $field);
|
748 |
}
|
749 |
|
750 |
public static function mergeAll(array $data)
|
1106 |
$i++;
|
1107 |
}
|
1108 |
|
1109 |
+
$url .= '&AssociateTag=' . self::getAssociateTagForAmazonLocale($locale, $item['module_id']);
|
1110 |
return $url;
|
1111 |
}
|
1112 |
|
1113 |
+
public static function getAssociateTagForAmazonLocale($locale, $module_id = 'Amazon')
|
1114 |
{
|
1115 |
+
if ($module_id == 'AmazonNoApi')
|
1116 |
+
$module = ModuleManager::factory('AmazonNoApi');
|
1117 |
else
|
1118 |
+
$module = ModuleManager::factory('Amazon');
|
1119 |
+
|
1120 |
+
return $module->getAssociateTagForLocale($locale);
|
1121 |
}
|
1122 |
|
1123 |
public static function __($str)
|
application/helpers/TextHelper.php
CHANGED
@@ -8,8 +8,8 @@ defined('\ABSPATH') || exit;
|
|
8 |
* TextHelper class file
|
9 |
*
|
10 |
* @author keywordrush.com <support@keywordrush.com>
|
11 |
-
* @link
|
12 |
-
* @copyright Copyright ©
|
13 |
*/
|
14 |
class TextHelper {
|
15 |
|
@@ -158,7 +158,7 @@ class TextHelper {
|
|
158 |
{
|
159 |
preg_match_all('/<[\w]+[^>]*>/s', $truncate, $lastTagMatches);
|
160 |
$lastTag = array_pop($lastTagMatches[0]);
|
161 |
-
$spacepos = mb_strrpos($truncate, $lastTag, 'UTF-8') + mb_strlen($lastTag, 'UTF-8');
|
162 |
}
|
163 |
$bits = mb_substr($truncate, $spacepos, null, 'UTF-8');
|
164 |
preg_match_all('/<\/([a-z]+)>/', $bits, $droppedTags, PREG_SET_ORDER);
|
@@ -234,8 +234,7 @@ class TextHelper {
|
|
234 |
public static function clear_utf8($str)
|
235 |
{
|
236 |
$str = str_replace('/', ' ', $str);
|
237 |
-
$str =
|
238 |
-
$str = preg_replace("/[^\pL\s\d\-\.\+_]+/ui", '', $str);
|
239 |
$str = preg_replace("/\s+/ui", ' ', $str);
|
240 |
return $str;
|
241 |
}
|
@@ -496,23 +495,23 @@ class TextHelper {
|
|
496 |
*/
|
497 |
public static function isEan($barcode)
|
498 |
{
|
499 |
-
|
500 |
-
|
501 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
502 |
return false;
|
503 |
-
|
504 |
-
$digits = (string) $barcode;
|
505 |
-
$even_sum = $digits[1] + $digits[3] + $digits[5] +
|
506 |
-
$digits[7] + $digits[9] + $digits[11];
|
507 |
-
$even_sum_three = $even_sum * 3;
|
508 |
-
$odd_sum = $digits[0] + $digits[2] + $digits[4] +
|
509 |
-
$digits[6] + $digits[8] + $digits[10];
|
510 |
-
$total_sum = $even_sum_three + $odd_sum;
|
511 |
-
$next_ten = (ceil($total_sum / 10)) * 10;
|
512 |
-
$check_digit = $next_ten - $total_sum;
|
513 |
-
if ($check_digit == $digits[12])
|
514 |
-
return true;
|
515 |
-
return false;
|
516 |
}
|
517 |
|
518 |
public static function fixEan($barcode)
|
@@ -551,7 +550,7 @@ class TextHelper {
|
|
551 |
|
552 |
public static function ratingPrepare($rating, $min_rating = 1, $max_rating = 5)
|
553 |
{
|
554 |
-
$rating = (
|
555 |
$rating = abs(round($rating));
|
556 |
if ($rating < $min_rating || $rating > $max_rating)
|
557 |
return null;
|
@@ -695,5 +694,5 @@ class TextHelper {
|
|
695 |
|
696 |
return false;
|
697 |
}
|
698 |
-
|
699 |
}
|
8 |
* TextHelper class file
|
9 |
*
|
10 |
* @author keywordrush.com <support@keywordrush.com>
|
11 |
+
* @link https://www.keywordrush.com
|
12 |
+
* @copyright Copyright © 2021 keywordrush.com
|
13 |
*/
|
14 |
class TextHelper {
|
15 |
|
158 |
{
|
159 |
preg_match_all('/<[\w]+[^>]*>/s', $truncate, $lastTagMatches);
|
160 |
$lastTag = array_pop($lastTagMatches[0]);
|
161 |
+
$spacepos = mb_strrpos($truncate, $lastTag, 0, 'UTF-8') + mb_strlen($lastTag, 'UTF-8');
|
162 |
}
|
163 |
$bits = mb_substr($truncate, $spacepos, null, 'UTF-8');
|
164 |
preg_match_all('/<\/([a-z]+)>/', $bits, $droppedTags, PREG_SET_ORDER);
|
234 |
public static function clear_utf8($str)
|
235 |
{
|
236 |
$str = str_replace('/', ' ', $str);
|
237 |
+
$str = preg_replace("/[^\pL\s\d\-\.\+_\,]+/ui", '', $str);
|
|
|
238 |
$str = preg_replace("/\s+/ui", ' ', $str);
|
239 |
return $str;
|
240 |
}
|
495 |
*/
|
496 |
public static function isEan($barcode)
|
497 |
{
|
498 |
+
$barcode = self::fixEan($barcode);
|
499 |
+
|
500 |
+
if (!preg_match("/^[0-9]{13}$/", $barcode))
|
501 |
+
return false;
|
502 |
+
|
503 |
+
$digits = (string) $barcode;
|
504 |
+
$even_sum = $digits[1] + $digits[3] + $digits[5] +
|
505 |
+
$digits[7] + $digits[9] + $digits[11];
|
506 |
+
$even_sum_three = $even_sum * 3;
|
507 |
+
$odd_sum = $digits[0] + $digits[2] + $digits[4] +
|
508 |
+
$digits[6] + $digits[8] + $digits[10];
|
509 |
+
$total_sum = $even_sum_three + $odd_sum;
|
510 |
+
$next_ten = (ceil($total_sum / 10)) * 10;
|
511 |
+
$check_digit = $next_ten - $total_sum;
|
512 |
+
if ($check_digit == $digits[12])
|
513 |
+
return true;
|
514 |
return false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
515 |
}
|
516 |
|
517 |
public static function fixEan($barcode)
|
550 |
|
551 |
public static function ratingPrepare($rating, $min_rating = 1, $max_rating = 5)
|
552 |
{
|
553 |
+
$rating = (float) $rating;
|
554 |
$rating = abs(round($rating));
|
555 |
if ($rating < $min_rating || $rating > $max_rating)
|
556 |
return null;
|
694 |
|
695 |
return false;
|
696 |
}
|
697 |
+
|
698 |
}
|
application/libs/RestClient.php
CHANGED
@@ -8,8 +8,8 @@ use ContentEgg\application\helpers\TextHelper;
|
|
8 |
* RestClient class file
|
9 |
*
|
10 |
* @author keywordrush.com <support@keywordrush.com>
|
11 |
-
* @link
|
12 |
-
* @copyright Copyright ©
|
13 |
*
|
14 |
* Simple Rest Client
|
15 |
* @todo: PUT/DELETE Request
|
@@ -17,6 +17,7 @@ use ContentEgg\application\helpers\TextHelper;
|
|
17 |
class RestClient {
|
18 |
|
19 |
protected static $timeout = 15; //sec
|
|
|
20 |
|
21 |
/**
|
22 |
* Endpoint uri of this web service
|
@@ -82,7 +83,7 @@ class RestClient {
|
|
82 |
'sslverify' => false,
|
83 |
'redirection' => 5,
|
84 |
'timeout' => static::$timeout,
|
85 |
-
'user-agent' =>
|
86 |
);
|
87 |
if ($opts)
|
88 |
$_opts = $opts + $_opts;
|
@@ -118,6 +119,11 @@ class RestClient {
|
|
118 |
{
|
119 |
$this->_custom_header = $headers;
|
120 |
}
|
|
|
|
|
|
|
|
|
|
|
121 |
|
122 |
/**
|
123 |
* Performs an HTTP GET request
|
8 |
* RestClient class file
|
9 |
*
|
10 |
* @author keywordrush.com <support@keywordrush.com>
|
11 |
+
* @link https://www.keywordrush.com
|
12 |
+
* @copyright Copyright © 2021 keywordrush.com
|
13 |
*
|
14 |
* Simple Rest Client
|
15 |
* @todo: PUT/DELETE Request
|
17 |
class RestClient {
|
18 |
|
19 |
protected static $timeout = 15; //sec
|
20 |
+
protected static $useragent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:93.0) Gecko/20100101 Firefox/93.0';
|
21 |
|
22 |
/**
|
23 |
* Endpoint uri of this web service
|
83 |
'sslverify' => false,
|
84 |
'redirection' => 5,
|
85 |
'timeout' => static::$timeout,
|
86 |
+
'user-agent' => static::$useragent,
|
87 |
);
|
88 |
if ($opts)
|
89 |
$_opts = $opts + $_opts;
|
119 |
{
|
120 |
$this->_custom_header = $headers;
|
121 |
}
|
122 |
+
|
123 |
+
public function addCustomHeaders($headers = array())
|
124 |
+
{
|
125 |
+
$this->_custom_header = array_merge($this->_custom_header, $headers);
|
126 |
+
}
|
127 |
|
128 |
/**
|
129 |
* Performs an HTTP GET request
|
application/libs/bing/BingSearch.php
CHANGED
@@ -30,7 +30,6 @@ class BingSearch extends RestClient {
|
|
30 |
* @var array Response Format Types
|
31 |
*/
|
32 |
protected $_responseTypes = array(
|
33 |
-
//'xml', //@todo: требуется доработка
|
34 |
'json'
|
35 |
);
|
36 |
|
@@ -107,7 +106,6 @@ class BingSearch extends RestClient {
|
|
107 |
|
108 |
$add_url = '';
|
109 |
|
110 |
-
// Все параметры (кроме начинающихся с $) заключим в одинарные кавычки
|
111 |
foreach ($_query as $k => $q)
|
112 |
{
|
113 |
if (!strstr($k, '$'))
|
30 |
* @var array Response Format Types
|
31 |
*/
|
32 |
protected $_responseTypes = array(
|
|
|
33 |
'json'
|
34 |
);
|
35 |
|
106 |
|
107 |
$add_url = '';
|
108 |
|
|
|
109 |
foreach ($_query as $k => $q)
|
110 |
{
|
111 |
if (!strstr($k, '$'))
|
application/libs/bing/CognitiveSearch.php
CHANGED
@@ -11,17 +11,16 @@ use ContentEgg\application\libs\RestClient;
|
|
11 |
*
|
12 |
* @author keywordrush.com <support@keywordrush.com>
|
13 |
* @link http://www.keywordrush.com/
|
14 |
-
* @copyright Copyright ©
|
15 |
*
|
16 |
-
* @link: https://
|
17 |
-
* @link: https://msdn.microsoft.com/en-us/library/mt604056.aspx
|
18 |
*
|
19 |
*/
|
20 |
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'RestClient.php';
|
21 |
|
22 |
class CognitiveSearch extends RestClient {
|
23 |
|
24 |
-
const API_URI_BASE = 'https://api.
|
25 |
|
26 |
private $subscription_key = null;
|
27 |
protected $_responseTypes = array(
|
@@ -66,7 +65,7 @@ class CognitiveSearch extends RestClient {
|
|
66 |
public function autosuggest($query, $params = array())
|
67 |
{
|
68 |
$params['q'] = $query;
|
69 |
-
$response = $this->restGet('/
|
70 |
return $this->_decodeResponse($response);
|
71 |
}
|
72 |
|
11 |
*
|
12 |
* @author keywordrush.com <support@keywordrush.com>
|
13 |
* @link http://www.keywordrush.com/
|
14 |
+
* @copyright Copyright © 2021 keywordrush.com
|
15 |
*
|
16 |
+
* @link: https://www.microsoft.com/en-us/bing/apis/bing-image-search-api
|
|
|
17 |
*
|
18 |
*/
|
19 |
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'RestClient.php';
|
20 |
|
21 |
class CognitiveSearch extends RestClient {
|
22 |
|
23 |
+
const API_URI_BASE = 'https://api.bing.microsoft.com/v7.0';
|
24 |
|
25 |
private $subscription_key = null;
|
26 |
protected $_responseTypes = array(
|
65 |
public function autosuggest($query, $params = array())
|
66 |
{
|
67 |
$params['q'] = $query;
|
68 |
+
$response = $this->restGet('/suggestions', $params);
|
69 |
return $this->_decodeResponse($response);
|
70 |
}
|
71 |
|
application/libs/rss/RssParser.php
CHANGED
@@ -47,6 +47,7 @@ class RssParser extends RestClient {
|
|
47 |
$this->setUri($uri);
|
48 |
} else
|
49 |
throw new \Exception('No valid URI scheme was provided. ');
|
|
|
50 |
|
51 |
$path = '';
|
52 |
if (isset($url_parts['path']))
|
47 |
$this->setUri($uri);
|
48 |
} else
|
49 |
throw new \Exception('No valid URI scheme was provided. ');
|
50 |
+
|
51 |
|
52 |
$path = '';
|
53 |
if (isset($url_parts['path']))
|
application/models/AutoblogModel.php
CHANGED
@@ -16,7 +16,7 @@ use ContentEgg\application\admin\GeneralConfig;
|
|
16 |
*
|
17 |
* @author keywordrush.com <support@keywordrush.com>
|
18 |
* @link https://www.keywordrush.com
|
19 |
-
* @copyright Copyright ©
|
20 |
*/
|
21 |
class AutoblogModel extends Model {
|
22 |
|
@@ -259,7 +259,7 @@ class AutoblogModel extends Model {
|
|
259 |
$module = ModuleManager::getInstance()->factory($module_id);
|
260 |
try
|
261 |
{
|
262 |
-
$data = $module->
|
263 |
} catch (\Exception $e)
|
264 |
{
|
265 |
// error
|
16 |
*
|
17 |
* @author keywordrush.com <support@keywordrush.com>
|
18 |
* @link https://www.keywordrush.com
|
19 |
+
* @copyright Copyright © 2022 keywordrush.com
|
20 |
*/
|
21 |
class AutoblogModel extends Model {
|
22 |
|
259 |
$module = ModuleManager::getInstance()->factory($module_id);
|
260 |
try
|
261 |
{
|
262 |
+
$data = $module->doMultipleRequests($module_keywords[$module_id], $autoblog, true);
|
263 |
} catch (\Exception $e)
|
264 |
{
|
265 |
// error
|
application/models/PriceHistoryModel.php
CHANGED
@@ -280,7 +280,14 @@ class PriceHistoryModel extends Model {
|
|
280 |
ORDER BY pchange ' . $order . '
|
281 |
LIMIT ' . $limit;
|
282 |
$results = $this->getDb()->get_results($sql, \ARRAY_A);
|
283 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
284 |
}
|
285 |
|
286 |
}
|
280 |
ORDER BY pchange ' . $order . '
|
281 |
LIMIT ' . $limit;
|
282 |
$results = $this->getDb()->get_results($sql, \ARRAY_A);
|
283 |
+
|
284 |
+
$return = array();
|
285 |
+
foreach ($results as $i => $r)
|
286 |
+
{
|
287 |
+
if (\get_post_status($r['post_id']) == 'publish')
|
288 |
+
$return[] = $r;
|
289 |
+
}
|
290 |
+
return $return;
|
291 |
}
|
292 |
|
293 |
}
|
application/models/ProductModel.php
CHANGED
@@ -67,14 +67,8 @@ class ProductModel extends Model {
|
|
67 |
|
68 |
public function scanProducts()
|
69 |
{
|
70 |
-
$module_ids = array_keys(ModuleManager::getInstance()->getAffiliateParsers(true, true));
|
71 |
-
$meta_keys = array();
|
72 |
-
foreach ($module_ids as $module_id)
|
73 |
-
{
|
74 |
-
$meta_keys[] = "'" . \esc_sql(ContentManager::META_PREFIX_DATA . $module_id) . "'";
|
75 |
-
}
|
76 |
-
|
77 |
$per_page = 100;
|
|
|
78 |
$sql_part = $this->getDb()->postmeta . ' WHERE meta_key IN (' . join(',', $meta_keys) . ') LIMIT ' . $per_page;
|
79 |
$sql = 'SELECT SQL_CALC_FOUND_ROWS * FROM ' . $sql_part;
|
80 |
$products = $this->getDb()->get_results($sql);
|
@@ -88,6 +82,18 @@ class ProductModel extends Model {
|
|
88 |
$this->processProducts($this->getDb()->get_results($sql));
|
89 |
}
|
90 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
|
92 |
public function maybeScanProducts($forced = false)
|
93 |
{
|
67 |
|
68 |
public function scanProducts()
|
69 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
$per_page = 100;
|
71 |
+
$meta_keys = $this->getCeMetaKeys();
|
72 |
$sql_part = $this->getDb()->postmeta . ' WHERE meta_key IN (' . join(',', $meta_keys) . ') LIMIT ' . $per_page;
|
73 |
$sql = 'SELECT SQL_CALC_FOUND_ROWS * FROM ' . $sql_part;
|
74 |
$products = $this->getDb()->get_results($sql);
|
82 |
$this->processProducts($this->getDb()->get_results($sql));
|
83 |
}
|
84 |
}
|
85 |
+
|
86 |
+
private function getCeMetaKeys()
|
87 |
+
{
|
88 |
+
$module_ids = array_keys(ModuleManager::getInstance()->getAffiliateParsers(true, true));
|
89 |
+
$meta_keys = array();
|
90 |
+
foreach ($module_ids as $module_id)
|
91 |
+
{
|
92 |
+
$meta_keys[] = "'" . \esc_sql(ContentManager::META_PREFIX_DATA . $module_id) . "'";
|
93 |
+
}
|
94 |
+
|
95 |
+
return $meta_keys;
|
96 |
+
}
|
97 |
|
98 |
public function maybeScanProducts($forced = false)
|
99 |
{
|
application/modules/AE/AEConfig.php
CHANGED
@@ -10,8 +10,8 @@ use ContentEgg\application\components\AffiliateParserModuleConfig;
|
|
10 |
* AEConfig class file
|
11 |
*
|
12 |
* @author keywordrush.com <support@keywordrush.com>
|
13 |
-
* @link
|
14 |
-
* @copyright Copyright ©
|
15 |
*/
|
16 |
class AEConfig extends AffiliateParserModuleConfig {
|
17 |
|
10 |
* AEConfig class file
|
11 |
*
|
12 |
* @author keywordrush.com <support@keywordrush.com>
|
13 |
+
* @link https://www.keywordrush.com
|
14 |
+
* @copyright Copyright © 2021 keywordrush.com
|
15 |
*/
|
16 |
class AEConfig extends AffiliateParserModuleConfig {
|
17 |
|
application/modules/Amazon/templates/data_compare.php
CHANGED
@@ -211,7 +211,7 @@ $barcodes = array(
|
|
211 |
</div>
|
212 |
<?php foreach ($current_items as $item): ?>
|
213 |
<div class="col-xs-6 col-md-5 text-center">
|
214 |
-
<a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-danger"><?php TemplateHelper::buyNowBtnText(); ?></a>
|
215 |
</div>
|
216 |
<?php endforeach; ?>
|
217 |
</div>
|
211 |
</div>
|
212 |
<?php foreach ($current_items as $item): ?>
|
213 |
<div class="col-xs-6 col-md-5 text-center">
|
214 |
+
<a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-danger"><?php TemplateHelper::buyNowBtnText(true, $item); ?></a>
|
215 |
</div>
|
216 |
<?php endforeach; ?>
|
217 |
</div>
|
application/modules/Amazon/views/search_panel.php
CHANGED
@@ -13,7 +13,7 @@ $search_index = $module->config('search_index');
|
|
13 |
<?php if (count($locales) > 1): ?>
|
14 |
<select class="input-sm col-md-4" ng-model="query_params.Amazon.locale" ng-init="query_params.Amazon.locale = '<?php echo $default_locale; ?>'">
|
15 |
<?php foreach ($locales as $value => $name): ?>
|
16 |
-
<option value="<?php echo $value; ?>"><?php echo $name; ?></option>
|
17 |
<?php endforeach; ?>
|
18 |
</select>
|
19 |
<?php endif; ?>
|
13 |
<?php if (count($locales) > 1): ?>
|
14 |
<select class="input-sm col-md-4" ng-model="query_params.Amazon.locale" ng-init="query_params.Amazon.locale = '<?php echo $default_locale; ?>'">
|
15 |
<?php foreach ($locales as $value => $name): ?>
|
16 |
+
<option value="<?php echo \esc_attr($value); ?>"><?php echo \esc_html($name); ?></option>
|
17 |
<?php endforeach; ?>
|
18 |
</select>
|
19 |
<?php endif; ?>
|
application/modules/CjLinks/CjLinksConfig.php
CHANGED
@@ -82,7 +82,8 @@ class CjLinksConfig extends AffiliateParserModuleConfig {
|
|
82 |
),
|
83 |
'advertiser_ids' => array(
|
84 |
'title' => __('Advertisers', 'content-egg'),
|
85 |
-
'description' => '
|
|
|
86 |
'callback' => array($this, 'render_input'),
|
87 |
'default' => 'joined',
|
88 |
'validator' => array(
|
82 |
),
|
83 |
'advertiser_ids' => array(
|
84 |
'title' => __('Advertisers', 'content-egg'),
|
85 |
+
'description' => __('A comma separated list of Advertiser IDs (CID). Restrict search results based on these IDs', 'content-egg') .
|
86 |
+
' ' . __('or set this option to "joined" (this value restricts the search to advertisers with which you have a relationship).', 'content-egg'),
|
87 |
'callback' => array($this, 'render_input'),
|
88 |
'default' => 'joined',
|
89 |
'validator' => array(
|
application/modules/Feed/FeedConfig.php
CHANGED
@@ -13,7 +13,7 @@ use ContentEgg\application\helpers\TextHelper;
|
|
13 |
*
|
14 |
* @author keywordrush.com <support@keywordrush.com>
|
15 |
* @link https://www.keywordrush.com
|
16 |
-
* @copyright Copyright ©
|
17 |
*/
|
18 |
class FeedConfig extends AffiliateFeedParserModuleConfig {
|
19 |
|
@@ -42,7 +42,7 @@ class FeedConfig extends AffiliateFeedParserModuleConfig {
|
|
42 |
),
|
43 |
'feed_url' => array(
|
44 |
'title' => __('Feed download URL', 'content-egg') . ' <span class="cegg_required">*</span>',
|
45 |
-
'description' => __('CSV format
|
46 |
sprintf(__('Make sure your unzipped feed size is less than %s.', 'content-egg'), \WP_MAX_MEMORY_LIMIT),
|
47 |
'callback' => array($this, 'render_input'),
|
48 |
'default' => '',
|
@@ -60,6 +60,16 @@ class FeedConfig extends AffiliateFeedParserModuleConfig {
|
|
60 |
),
|
61 |
),
|
62 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
'archive_format' => array(
|
64 |
'title' => __('Archive format', 'content-egg') . ' <span class="cegg_required">*</span>',
|
65 |
'callback' => array($this, 'render_dropdown'),
|
@@ -116,8 +126,7 @@ class FeedConfig extends AffiliateFeedParserModuleConfig {
|
|
116 |
'message' => __('Please fill out all required mapping fields.', 'content-egg'),
|
117 |
),
|
118 |
),
|
119 |
-
),
|
120 |
-
|
121 |
'deeplink' => array(
|
122 |
'title' => __('Deeplink', 'content-egg'),
|
123 |
'description' => __('Set this option only if your feed does not contain affiliate links.', 'content-egg'),
|
@@ -139,7 +148,10 @@ class FeedConfig extends AffiliateFeedParserModuleConfig {
|
|
139 |
$value = isset($args['value'][$field_name]) ? $args['value'][$field_name] : '';
|
140 |
|
141 |
$display_name = $field_name;
|
142 |
-
|
|
|
|
|
|
|
143 |
$display_name .= ' ' . __('(required)', 'content-egg');
|
144 |
else
|
145 |
$display_name .= ' ' . __('(optional)', 'content-egg');
|
@@ -171,6 +183,7 @@ class FeedConfig extends AffiliateFeedParserModuleConfig {
|
|
171 |
public static function mappingFields()
|
172 |
{
|
173 |
return array(
|
|
|
174 |
'id' => true,
|
175 |
'title' => true,
|
176 |
'description' => true,
|
13 |
*
|
14 |
* @author keywordrush.com <support@keywordrush.com>
|
15 |
* @link https://www.keywordrush.com
|
16 |
+
* @copyright Copyright © 2022 keywordrush.com
|
17 |
*/
|
18 |
class FeedConfig extends AffiliateFeedParserModuleConfig {
|
19 |
|
42 |
),
|
43 |
'feed_url' => array(
|
44 |
'title' => __('Feed download URL', 'content-egg') . ' <span class="cegg_required">*</span>',
|
45 |
+
'description' => __('CSV or XML format.', 'content-egg') . ' ' .
|
46 |
sprintf(__('Make sure your unzipped feed size is less than %s.', 'content-egg'), \WP_MAX_MEMORY_LIMIT),
|
47 |
'callback' => array($this, 'render_input'),
|
48 |
'default' => '',
|
60 |
),
|
61 |
),
|
62 |
),
|
63 |
+
'feed_format' => array(
|
64 |
+
'title' => __('Feed format', 'content-egg') . ' <span class="cegg_required">*</span>',
|
65 |
+
'callback' => array($this, 'render_dropdown'),
|
66 |
+
'dropdown_options' => array(
|
67 |
+
'csv' => __('CSV', 'content-egg'),
|
68 |
+
'xml' => 'XML',
|
69 |
+
'json' => 'JSON',
|
70 |
+
),
|
71 |
+
'default' => 'csv',
|
72 |
+
),
|
73 |
'archive_format' => array(
|
74 |
'title' => __('Archive format', 'content-egg') . ' <span class="cegg_required">*</span>',
|
75 |
'callback' => array($this, 'render_dropdown'),
|
126 |
'message' => __('Please fill out all required mapping fields.', 'content-egg'),
|
127 |
),
|
128 |
),
|
129 |
+
),
|
|
|
130 |
'deeplink' => array(
|
131 |
'title' => __('Deeplink', 'content-egg'),
|
132 |
'description' => __('Set this option only if your feed does not contain affiliate links.', 'content-egg'),
|
148 |
$value = isset($args['value'][$field_name]) ? $args['value'][$field_name] : '';
|
149 |
|
150 |
$display_name = $field_name;
|
151 |
+
|
152 |
+
if ($field_name == 'product node')
|
153 |
+
$display_name .= ' ' . __('(required for XML/JSON feed only)', 'content-egg');
|
154 |
+
elseif (self::isMappingFieldRequared($field_name))
|
155 |
$display_name .= ' ' . __('(required)', 'content-egg');
|
156 |
else
|
157 |
$display_name .= ' ' . __('(optional)', 'content-egg');
|
183 |
public static function mappingFields()
|
184 |
{
|
185 |
return array(
|
186 |
+
'product node' => false,
|
187 |
'id' => true,
|
188 |
'title' => true,
|
189 |
'description' => true,
|
application/modules/Feed/FeedModule.php
CHANGED
@@ -16,7 +16,7 @@ use ContentEgg\application\components\LinkHandler;
|
|
16 |
*
|
17 |
* @author keywordrush.com <support@keywordrush.com>
|
18 |
* @link https://www.keywordrush.com
|
19 |
-
* @copyright Copyright ©
|
20 |
*/
|
21 |
class FeedModule extends AffiliateFeedParserModule {
|
22 |
|
@@ -35,11 +35,11 @@ class FeedModule extends AffiliateFeedParserModule {
|
|
35 |
{
|
36 |
return '5.2.0';
|
37 |
}
|
38 |
-
|
39 |
public function isFree()
|
40 |
{
|
41 |
return true;
|
42 |
-
}
|
43 |
|
44 |
public function getParserType()
|
45 |
{
|
@@ -90,7 +90,7 @@ class FeedModule extends AffiliateFeedParserModule {
|
|
90 |
|
91 |
return $url;
|
92 |
}
|
93 |
-
|
94 |
protected function feedProductPrepare(array $data)
|
95 |
{
|
96 |
$mapped_data = $this->mapProduct($data);
|
@@ -111,11 +111,12 @@ class FeedModule extends AffiliateFeedParserModule {
|
|
111 |
return false;
|
112 |
|
113 |
if (isset($mapped_data['sale price']) && (float) $mapped_data['sale price'])
|
114 |
-
$product['price'] = (float) $mapped_data['sale price'];
|
115 |
else
|
116 |
-
$product['price'] = (float)
|
117 |
|
118 |
$product['stock_status'] = ContentProduct::STOCK_STATUS_UNKNOWN;
|
|
|
119 |
if (!empty($mapped_data['availability']))
|
120 |
{
|
121 |
$availability = strtolower($mapped_data['availability']);
|
@@ -123,7 +124,7 @@ class FeedModule extends AffiliateFeedParserModule {
|
|
123 |
$product['stock_status'] = ContentProduct::STOCK_STATUS_OUT_OF_STOCK;
|
124 |
else
|
125 |
$product['stock_status'] = ContentProduct::STOCK_STATUS_IN_STOCK;
|
126 |
-
} elseif (
|
127 |
{
|
128 |
if (filter_var($mapped_data['is in stock'], FILTER_VALIDATE_BOOLEAN))
|
129 |
$product['stock_status'] = ContentProduct::STOCK_STATUS_IN_STOCK;
|
@@ -169,7 +170,6 @@ class FeedModule extends AffiliateFeedParserModule {
|
|
169 |
$options['price_max'] = (float) $query_params['price_max'];
|
170 |
|
171 |
$results = $this->product_model->searchByKeyword($keyword, $limit, $options);
|
172 |
-
|
173 |
}
|
174 |
if (!$results)
|
175 |
return array();
|
@@ -189,7 +189,7 @@ class FeedModule extends AffiliateFeedParserModule {
|
|
189 |
unset($items[$key]);
|
190 |
continue;
|
191 |
}
|
192 |
-
|
193 |
$product = $this->product_model->searchById($item['unique_id']);
|
194 |
if (!$product)
|
195 |
{
|
@@ -217,9 +217,9 @@ class FeedModule extends AffiliateFeedParserModule {
|
|
217 |
$items[$key]['price'] = (float) $r['price'];
|
218 |
$items[$key]['priceOld'] = 0;
|
219 |
}
|
220 |
-
|
221 |
if ($deeplink)
|
222 |
-
$items[$key]['url'] = LinkHandler::createAffUrl($items[$key]['orig_url'], $deeplink, $item);
|
223 |
}
|
224 |
|
225 |
return $items;
|
@@ -229,7 +229,7 @@ class FeedModule extends AffiliateFeedParserModule {
|
|
229 |
{
|
230 |
$data = array();
|
231 |
$deeplink = $this->config('deeplink');
|
232 |
-
|
233 |
foreach ($results as $product)
|
234 |
{
|
235 |
if (!$r = unserialize($product['product']))
|
@@ -251,6 +251,11 @@ class FeedModule extends AffiliateFeedParserModule {
|
|
251 |
} else
|
252 |
$content->price = (float) $r['price'];
|
253 |
|
|
|
|
|
|
|
|
|
|
|
254 |
|
255 |
if (isset($r['currency']) && strlen($r['currency']))
|
256 |
$content->currencyCode = $r['currency'];
|
@@ -280,7 +285,7 @@ class FeedModule extends AffiliateFeedParserModule {
|
|
280 |
|
281 |
if ($deeplink)
|
282 |
$content->url = LinkHandler::createAffUrl($content->orig_url, $deeplink, (array) $content);
|
283 |
-
|
284 |
$data[] = $content;
|
285 |
}
|
286 |
return $data;
|
@@ -309,15 +314,15 @@ class FeedModule extends AffiliateFeedParserModule {
|
|
309 |
public function viewDataPrepare($data)
|
310 |
{
|
311 |
if (!$deeplink = $this->config('deeplink'))
|
312 |
-
return $data;
|
313 |
-
|
314 |
foreach ($data as $key => $d)
|
315 |
{
|
316 |
$data[$key]['url'] = LinkHandler::createAffUrl($d['orig_url'], $deeplink, $d);
|
317 |
}
|
318 |
return parent::viewDataPrepare($data);
|
319 |
-
}
|
320 |
-
|
321 |
public function mapProduct(array $data)
|
322 |
{
|
323 |
$mapped_data = array();
|
16 |
*
|
17 |
* @author keywordrush.com <support@keywordrush.com>
|
18 |
* @link https://www.keywordrush.com
|
19 |
+
* @copyright Copyright © 2022 keywordrush.com
|
20 |
*/
|
21 |
class FeedModule extends AffiliateFeedParserModule {
|
22 |
|
35 |
{
|
36 |
return '5.2.0';
|
37 |
}
|
38 |
+
|
39 |
public function isFree()
|
40 |
{
|
41 |
return true;
|
42 |
+
}
|
43 |
|
44 |
public function getParserType()
|
45 |
{
|
90 |
|
91 |
return $url;
|
92 |
}
|
93 |
+
|
94 |
protected function feedProductPrepare(array $data)
|
95 |
{
|
96 |
$mapped_data = $this->mapProduct($data);
|
111 |
return false;
|
112 |
|
113 |
if (isset($mapped_data['sale price']) && (float) $mapped_data['sale price'])
|
114 |
+
$product['price'] = (float) TextHelper::parsePriceAmount($mapped_data['sale price']);
|
115 |
else
|
116 |
+
$product['price'] = (float) TextHelper::parsePriceAmount($mapped_data['price']);
|
117 |
|
118 |
$product['stock_status'] = ContentProduct::STOCK_STATUS_UNKNOWN;
|
119 |
+
|
120 |
if (!empty($mapped_data['availability']))
|
121 |
{
|
122 |
$availability = strtolower($mapped_data['availability']);
|
124 |
$product['stock_status'] = ContentProduct::STOCK_STATUS_OUT_OF_STOCK;
|
125 |
else
|
126 |
$product['stock_status'] = ContentProduct::STOCK_STATUS_IN_STOCK;
|
127 |
+
} elseif (isset($mapped_data['is in stock']) && $mapped_data['is in stock'] !== '')
|
128 |
{
|
129 |
if (filter_var($mapped_data['is in stock'], FILTER_VALIDATE_BOOLEAN))
|
130 |
$product['stock_status'] = ContentProduct::STOCK_STATUS_IN_STOCK;
|
170 |
$options['price_max'] = (float) $query_params['price_max'];
|
171 |
|
172 |
$results = $this->product_model->searchByKeyword($keyword, $limit, $options);
|
|
|
173 |
}
|
174 |
if (!$results)
|
175 |
return array();
|
189 |
unset($items[$key]);
|
190 |
continue;
|
191 |
}
|
192 |
+
|
193 |
$product = $this->product_model->searchById($item['unique_id']);
|
194 |
if (!$product)
|
195 |
{
|
217 |
$items[$key]['price'] = (float) $r['price'];
|
218 |
$items[$key]['priceOld'] = 0;
|
219 |
}
|
220 |
+
|
221 |
if ($deeplink)
|
222 |
+
$items[$key]['url'] = LinkHandler::createAffUrl($items[$key]['orig_url'], $deeplink, $item);
|
223 |
}
|
224 |
|
225 |
return $items;
|
229 |
{
|
230 |
$data = array();
|
231 |
$deeplink = $this->config('deeplink');
|
232 |
+
|
233 |
foreach ($results as $product)
|
234 |
{
|
235 |
if (!$r = unserialize($product['product']))
|
251 |
} else
|
252 |
$content->price = (float) $r['price'];
|
253 |
|
254 |
+
if ($content->price)
|
255 |
+
$content->price = round($content->price, 2);
|
256 |
+
|
257 |
+
if ($content->priceOld)
|
258 |
+
$content->priceOld = round($content->priceOld, 2);
|
259 |
|
260 |
if (isset($r['currency']) && strlen($r['currency']))
|
261 |
$content->currencyCode = $r['currency'];
|
285 |
|
286 |
if ($deeplink)
|
287 |
$content->url = LinkHandler::createAffUrl($content->orig_url, $deeplink, (array) $content);
|
288 |
+
|
289 |
$data[] = $content;
|
290 |
}
|
291 |
return $data;
|
314 |
public function viewDataPrepare($data)
|
315 |
{
|
316 |
if (!$deeplink = $this->config('deeplink'))
|
317 |
+
return parent::viewDataPrepare($data);
|
318 |
+
|
319 |
foreach ($data as $key => $d)
|
320 |
{
|
321 |
$data[$key]['url'] = LinkHandler::createAffUrl($d['orig_url'], $deeplink, $d);
|
322 |
}
|
323 |
return parent::viewDataPrepare($data);
|
324 |
+
}
|
325 |
+
|
326 |
public function mapProduct(array $data)
|
327 |
{
|
328 |
$mapped_data = array();
|
application/modules/Offer/OfferConfig.php
CHANGED
@@ -6,6 +6,7 @@ defined('\ABSPATH') || exit;
|
|
6 |
|
7 |
use ContentEgg\application\components\AffiliateParserModuleConfig;
|
8 |
use ContentEgg\application\helpers\TextHelper;
|
|
|
9 |
|
10 |
/**
|
11 |
* OfferConfig class file
|
@@ -18,6 +19,8 @@ class OfferConfig extends AffiliateParserModuleConfig {
|
|
18 |
|
19 |
public function options()
|
20 |
{
|
|
|
|
|
21 |
$options = array(
|
22 |
'save_img' => array(
|
23 |
'title' => __('Save images', 'content-egg'),
|
@@ -37,6 +40,12 @@ class OfferConfig extends AffiliateParserModuleConfig {
|
|
37 |
),
|
38 |
),
|
39 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
);
|
41 |
$parent = parent::options();
|
42 |
unset($parent['ttl']);
|
6 |
|
7 |
use ContentEgg\application\components\AffiliateParserModuleConfig;
|
8 |
use ContentEgg\application\helpers\TextHelper;
|
9 |
+
use ContentEgg\application\helpers\CurrencyHelper;
|
10 |
|
11 |
/**
|
12 |
* OfferConfig class file
|
19 |
|
20 |
public function options()
|
21 |
{
|
22 |
+
$currencies = CurrencyHelper::getCurrenciesList();
|
23 |
+
|
24 |
$options = array(
|
25 |
'save_img' => array(
|
26 |
'title' => __('Save images', 'content-egg'),
|
40 |
),
|
41 |
),
|
42 |
),
|
43 |
+
'default_currency' => array(
|
44 |
+
'title' => __('Default currency', 'content-egg'),
|
45 |
+
'callback' => array($this, 'render_dropdown'),
|
46 |
+
'dropdown_options' => array_combine($currencies, $currencies),
|
47 |
+
'default' => 'USD',
|
48 |
+
),
|
49 |
);
|
50 |
$parent = parent::options();
|
51 |
unset($parent['ttl']);
|
application/modules/Offer/OfferModule.php
CHANGED
@@ -14,8 +14,8 @@ use ContentEgg\application\components\ContentProduct;
|
|
14 |
* OfferModule class file
|
15 |
*
|
16 |
* @author keywordrush.com <support@keywordrush.com>
|
17 |
-
* @link
|
18 |
-
* @copyright Copyright ©
|
19 |
*/
|
20 |
class OfferModule extends AffiliateParserModule {
|
21 |
|
@@ -70,7 +70,7 @@ class OfferModule extends AffiliateParserModule {
|
|
70 |
$custom = $item['extra']['priceXpath'];
|
71 |
else
|
72 |
$custom = '';
|
73 |
-
|
74 |
if (!isset($item['extra']['priceXpath']))
|
75 |
$item['extra']['priceXpath'] = '';
|
76 |
if (!$priceXpath = $this->getXpath($item['domain'], $item['extra']['priceXpath']))
|
@@ -96,17 +96,17 @@ class OfferModule extends AffiliateParserModule {
|
|
96 |
$items[$key]['extra']['last_error'] = $e->getMessage();
|
97 |
continue;
|
98 |
}
|
99 |
-
|
100 |
if ($items[$key]['stock_status'] == ContentProduct::STOCK_STATUS_OUT_OF_STOCK)
|
101 |
$items[$key]['stock_status'] = ContentProduct::STOCK_STATUS_IN_STOCK;
|
102 |
-
|
103 |
if (!$price)
|
104 |
{
|
105 |
$items[$key]['extra']['last_error'] = 'XPath is unable to find price value.';
|
106 |
continue;
|
107 |
}
|
108 |
-
|
109 |
-
// assign new price
|
110 |
$items[$key]['price'] = (float) TextHelper::parsePriceAmount($price);
|
111 |
}
|
112 |
return $items;
|
@@ -128,10 +128,13 @@ class OfferModule extends AffiliateParserModule {
|
|
128 |
$item['priceOld'] = (float) TextHelper::parsePriceAmount($item['priceOld']);
|
129 |
$item['rating'] = TextHelper::ratingPrepare($item['rating']);
|
130 |
|
131 |
-
if (!$item['
|
132 |
-
|
133 |
-
|
134 |
-
|
|
|
|
|
|
|
135 |
|
136 |
if (!$item['title'])
|
137 |
continue;
|
14 |
* OfferModule class file
|
15 |
*
|
16 |
* @author keywordrush.com <support@keywordrush.com>
|
17 |
+
* @link https://www.keywordrush.com
|
18 |
+
* @copyright Copyright © 2021 keywordrush.com
|
19 |
*/
|
20 |
class OfferModule extends AffiliateParserModule {
|
21 |
|
70 |
$custom = $item['extra']['priceXpath'];
|
71 |
else
|
72 |
$custom = '';
|
73 |
+
|
74 |
if (!isset($item['extra']['priceXpath']))
|
75 |
$item['extra']['priceXpath'] = '';
|
76 |
if (!$priceXpath = $this->getXpath($item['domain'], $item['extra']['priceXpath']))
|
96 |
$items[$key]['extra']['last_error'] = $e->getMessage();
|
97 |
continue;
|
98 |
}
|
99 |
+
|
100 |
if ($items[$key]['stock_status'] == ContentProduct::STOCK_STATUS_OUT_OF_STOCK)
|
101 |
$items[$key]['stock_status'] = ContentProduct::STOCK_STATUS_IN_STOCK;
|
102 |
+
|
103 |
if (!$price)
|
104 |
{
|
105 |
$items[$key]['extra']['last_error'] = 'XPath is unable to find price value.';
|
106 |
continue;
|
107 |
}
|
108 |
+
|
109 |
+
// assign new price
|
110 |
$items[$key]['price'] = (float) TextHelper::parsePriceAmount($price);
|
111 |
}
|
112 |
return $items;
|
128 |
$item['priceOld'] = (float) TextHelper::parsePriceAmount($item['priceOld']);
|
129 |
$item['rating'] = TextHelper::ratingPrepare($item['rating']);
|
130 |
|
131 |
+
if (!$item['domain'])
|
132 |
+
{
|
133 |
+
if (!$item['extra']['deeplink'] && $original_domain = TextHelper::findOriginalDomain($item['orig_url']))
|
134 |
+
$item['domain'] = $original_domain;
|
135 |
+
else
|
136 |
+
$item['domain'] = TextHelper::getHostName($item['orig_url']);
|
137 |
+
}
|
138 |
|
139 |
if (!$item['title'])
|
140 |
continue;
|
application/modules/Offer/views/metabox_module.php
CHANGED
@@ -73,7 +73,11 @@
|
|
73 |
<div class="col-md-6" style="padding:0px;">
|
74 |
<input type="text" placeholder="<?php _e('Product URL', 'content-egg'); ?> (<?php _e('required', 'content-egg'); ?>)" ng-model="data.orig_url" class="form-control" style="margin-bottom: 5px;">
|
75 |
</div>
|
76 |
-
<div class="col-md-
|
|
|
|
|
|
|
|
|
77 |
<input type="text" placeholder="<?php _e('Custom Deeplink', 'content-egg'); ?>" ng-model="data.extra.deeplink" class="form-control" style="margin-bottom: 5px;">
|
78 |
</div>
|
79 |
</div>
|
@@ -94,7 +98,8 @@
|
|
94 |
<input type="text" placeholder="<?php _e('Old Price', 'content-egg'); ?>" ng-model="data.priceOld" class="form-control">
|
95 |
</div>
|
96 |
<div class="col-md-1" style="padding-right:0px;">
|
97 |
-
|
|
|
98 |
<?php foreach (\ContentEgg\application\helpers\CurrencyHelper::getCurrenciesList() as $currency): ?>
|
99 |
<option value="<?php echo \esc_attr($currency); ?>"><?php echo \esc_html($currency); ?></option>
|
100 |
<?php endforeach; ?>
|
73 |
<div class="col-md-6" style="padding:0px;">
|
74 |
<input type="text" placeholder="<?php _e('Product URL', 'content-egg'); ?> (<?php _e('required', 'content-egg'); ?>)" ng-model="data.orig_url" class="form-control" style="margin-bottom: 5px;">
|
75 |
</div>
|
76 |
+
<div class="col-md-2" style="padding-right:0px;">
|
77 |
+
<input type="text" placeholder="<?php _e('Domain', 'content-egg'); ?>" ng-model="data.domain" class="form-control" style="margin-bottom: 5px;">
|
78 |
+
|
79 |
+
</div>
|
80 |
+
<div class="col-md-4" style="padding-right:0px;">
|
81 |
<input type="text" placeholder="<?php _e('Custom Deeplink', 'content-egg'); ?>" ng-model="data.extra.deeplink" class="form-control" style="margin-bottom: 5px;">
|
82 |
</div>
|
83 |
</div>
|
98 |
<input type="text" placeholder="<?php _e('Old Price', 'content-egg'); ?>" ng-model="data.priceOld" class="form-control">
|
99 |
</div>
|
100 |
<div class="col-md-1" style="padding-right:0px;">
|
101 |
+
|
102 |
+
<select class="form-control" ng-model="data.currencyCode" ng-init="data.currencyCode = data.currencyCode || '<?php echo $module->getConfigInstance()->option('default_currency');?>'">
|
103 |
<?php foreach (\ContentEgg\application\helpers\CurrencyHelper::getCurrenciesList() as $currency): ?>
|
104 |
<option value="<?php echo \esc_attr($currency); ?>"><?php echo \esc_html($currency); ?></option>
|
105 |
<?php endforeach; ?>
|
application/templates/blocks/item_row.php
CHANGED
@@ -57,7 +57,7 @@ use ContentEgg\application\helpers\TemplateHelper;
|
|
57 |
<span class="text-muted">
|
58 |
<small>
|
59 |
<?php echo sprintf(TemplateHelper::__('as of %s'), TemplateHelper::getLastUpdateFormatted($module_id, $post_id)); ?>
|
60 |
-
<?php if ($module_id == 'Amazon') TemplateHelper::printAmazonDisclaimer(); ?>
|
61 |
</small>
|
62 |
</span>
|
63 |
</div>
|
57 |
<span class="text-muted">
|
58 |
<small>
|
59 |
<?php echo sprintf(TemplateHelper::__('as of %s'), TemplateHelper::getLastUpdateFormatted($module_id, $post_id)); ?>
|
60 |
+
<?php if ($module_id == 'Amazon' || $module_id == 'AmazonNoApi') TemplateHelper::printAmazonDisclaimer(); ?>
|
61 |
</small>
|
62 |
</span>
|
63 |
</div>
|
application/templates/blocks/list_row.php
CHANGED
@@ -49,14 +49,14 @@ use ContentEgg\application\helpers\TemplateHelper;
|
|
49 |
</div>
|
50 |
<?php endif; ?>
|
51 |
|
52 |
-
<?php if (!empty($amazon_last_updated)): ?>
|
53 |
-
<div class="cegg-font60 cegg-lineheight15">
|
54 |
-
<?php echo sprintf(TemplateHelper::__('as of %s'), $amazon_last_updated); ?>
|
55 |
-
<?php TemplateHelper::printAmazonDisclaimer(); ?>
|
56 |
-
</div>
|
57 |
-
<?php endif; ?>
|
58 |
-
<?php endif; ?>
|
59 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
</div>
|
61 |
</div>
|
62 |
<div class="col-md-2 col-sm-2 col-xs-12 cegg-btn-cell">
|
@@ -71,7 +71,7 @@ use ContentEgg\application\helpers\TemplateHelper;
|
|
71 |
</small>
|
72 |
</div>
|
73 |
<?php endif; ?>
|
74 |
-
|
75 |
|
76 |
</div>
|
77 |
</div>
|
49 |
</div>
|
50 |
<?php endif; ?>
|
51 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
|
53 |
+
<?php endif; ?>
|
54 |
+
<?php if ($item['module_id'] == 'Amazon' || $item['module_id'] == 'AmazonNoApi'): ?>
|
55 |
+
<div class="cegg-font60 cegg-lineheight15">
|
56 |
+
<?php echo sprintf(TemplateHelper::__('as of %s'), TemplateHelper::dateFormatFromGmt($item['last_update'])); ?>
|
57 |
+
<?php TemplateHelper::printAmazonDisclaimer(); ?>
|
58 |
+
</div>
|
59 |
+
<?php endif; ?>
|
60 |
</div>
|
61 |
</div>
|
62 |
<div class="col-md-2 col-sm-2 col-xs-12 cegg-btn-cell">
|
71 |
</small>
|
72 |
</div>
|
73 |
<?php endif; ?>
|
74 |
+
|
75 |
|
76 |
</div>
|
77 |
</div>
|
application/templates/blocks/list_row_no_price.php
CHANGED
@@ -4,7 +4,7 @@ defined('\ABSPATH') || exit;
|
|
4 |
use ContentEgg\application\helpers\TemplateHelper;
|
5 |
?>
|
6 |
|
7 |
-
<div class="row-products row">
|
8 |
<div class="col-md-2 col-sm-2 col-xs-3 cegg-image-cell">
|
9 |
|
10 |
<div class="cegg-position-container2">
|
4 |
use ContentEgg\application\helpers\TemplateHelper;
|
5 |
?>
|
6 |
|
7 |
+
<div class="row-products row" id="my-comparison-block">
|
8 |
<div class="col-md-2 col-sm-2 col-xs-3 cegg-image-cell">
|
9 |
|
10 |
<div class="cegg-position-container2">
|
application/templates/blocks/price_history.php
CHANGED
@@ -42,8 +42,8 @@ use ContentEgg\application\helpers\TemplateHelper;
|
|
42 |
<td><?php echo TemplateHelper::formatDate($price['date']); ?></td>
|
43 |
</tr>
|
44 |
</table>
|
45 |
-
<?php $since = TemplateHelper::priceHistorySinceDate($item['unique_id'], $module_id);
|
46 |
-
<div class='text-right text-muted'><?php echo sprintf(__('Since %s'), TemplateHelper::formatDate($since)); ?></div>
|
47 |
</div>
|
48 |
<div class='col-md-5'>
|
49 |
<h4><?php TemplateHelper::_e('Last price changes'); ?></h4>
|
42 |
<td><?php echo TemplateHelper::formatDate($price['date']); ?></td>
|
43 |
</tr>
|
44 |
</table>
|
45 |
+
<?php $since = TemplateHelper::priceHistorySinceDate($item['unique_id'], $module_id); ?>
|
46 |
+
<div class='text-right text-muted'><?php echo sprintf(TemplateHelper::__('Since %s'), TemplateHelper::formatDate($since)); ?></div>
|
47 |
</div>
|
48 |
<div class='col-md-5'>
|
49 |
<h4><?php TemplateHelper::_e('Last price changes'); ?></h4>
|
application/templates/data_grid.php
CHANGED
@@ -3,7 +3,7 @@ defined('\ABSPATH') || exit;
|
|
3 |
|
4 |
use ContentEgg\application\helpers\TemplateHelper;
|
5 |
|
6 |
-
if (TemplateHelper::isModuleDataExist($items, 'Amazon'))
|
7 |
\wp_enqueue_script('cegg-frontend', \ContentEgg\PLUGIN_RES . '/js/frontend.js', array('jquery'));
|
8 |
|
9 |
|
@@ -36,5 +36,14 @@ $col_size = ceil(12 / $cols);
|
|
36 |
</div>
|
37 |
</div>
|
38 |
|
39 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
</div>
|
3 |
|
4 |
use ContentEgg\application\helpers\TemplateHelper;
|
5 |
|
6 |
+
if (TemplateHelper::isModuleDataExist($items, 'Amazon', 'AmazonNoApi'))
|
7 |
\wp_enqueue_script('cegg-frontend', \ContentEgg\PLUGIN_RES . '/js/frontend.js', array('jquery'));
|
8 |
|
9 |
|
36 |
</div>
|
37 |
</div>
|
38 |
|
39 |
+
<?php if ($module_id == 'Amazon' || $module_id == 'AmazonNoApi'): ?>
|
40 |
+
<div class="row cegg-no-top-margin">
|
41 |
+
<div class="col-md-12 text-right text-muted">
|
42 |
+
<small>
|
43 |
+
<?php echo sprintf(TemplateHelper::__('Last updated on %s'), TemplateHelper::getLastUpdateFormatted($module_id, $post_id)); ?>
|
44 |
+
<?php TemplateHelper::printAmazonDisclaimer(); ?>
|
45 |
+
</small>
|
46 |
+
</div>
|
47 |
+
</div>
|
48 |
+
<?php endif; ?>
|
49 |
</div>
|
application/templates/data_item.php
CHANGED
@@ -3,7 +3,7 @@ defined('\ABSPATH') || exit;
|
|
3 |
|
4 |
use ContentEgg\application\helpers\TemplateHelper;
|
5 |
|
6 |
-
if (TemplateHelper::isModuleDataExist($items, 'Amazon'))
|
7 |
\wp_enqueue_script('cegg-frontend', \ContentEgg\PLUGIN_RES . '/js/frontend.js', array('jquery'));
|
8 |
?>
|
9 |
|
3 |
|
4 |
use ContentEgg\application\helpers\TemplateHelper;
|
5 |
|
6 |
+
if (TemplateHelper::isModuleDataExist($items, 'Amazon', 'AmazonNoApi'))
|
7 |
\wp_enqueue_script('cegg-frontend', \ContentEgg\PLUGIN_RES . '/js/frontend.js', array('jquery'));
|
8 |
?>
|
9 |
|
application/templates/data_item_simple.php
CHANGED
@@ -3,7 +3,7 @@ defined('\ABSPATH') || exit;
|
|
3 |
|
4 |
use ContentEgg\application\helpers\TemplateHelper;
|
5 |
|
6 |
-
if (TemplateHelper::isModuleDataExist($items, 'Amazon'))
|
7 |
\wp_enqueue_script('cegg-frontend', \ContentEgg\PLUGIN_RES . '/js/frontend.js', array('jquery'));
|
8 |
?>
|
9 |
|
3 |
|
4 |
use ContentEgg\application\helpers\TemplateHelper;
|
5 |
|
6 |
+
if (TemplateHelper::isModuleDataExist($items, 'Amazon', 'AmazonNoApi'))
|
7 |
\wp_enqueue_script('cegg-frontend', \ContentEgg\PLUGIN_RES . '/js/frontend.js', array('jquery'));
|
8 |
?>
|
9 |
|
application/templates/data_list.php
CHANGED
@@ -3,7 +3,7 @@ defined('\ABSPATH') || exit;
|
|
3 |
|
4 |
use ContentEgg\application\helpers\TemplateHelper;
|
5 |
|
6 |
-
if (TemplateHelper::isModuleDataExist($items, 'Amazon'))
|
7 |
\wp_enqueue_script('cegg-frontend', \ContentEgg\PLUGIN_RES . '/js/frontend.js', array('jquery'));
|
8 |
|
9 |
\wp_enqueue_script('bootstrap-popover');
|
@@ -21,7 +21,7 @@ if (TemplateHelper::isModuleDataExist($items, 'Amazon'))
|
|
21 |
<?php endforeach; ?>
|
22 |
</div>
|
23 |
|
24 |
-
<?php if ($module_id == 'Amazon'): ?>
|
25 |
<div class="row cegg-no-top-margin">
|
26 |
<div class="col-md-12 text-right text-muted">
|
27 |
<small>
|
3 |
|
4 |
use ContentEgg\application\helpers\TemplateHelper;
|
5 |
|
6 |
+
if (TemplateHelper::isModuleDataExist($items, 'Amazon', 'AmazonNoApi'))
|
7 |
\wp_enqueue_script('cegg-frontend', \ContentEgg\PLUGIN_RES . '/js/frontend.js', array('jquery'));
|
8 |
|
9 |
\wp_enqueue_script('bootstrap-popover');
|
21 |
<?php endforeach; ?>
|
22 |
</div>
|
23 |
|
24 |
+
<?php if ($module_id == 'Amazon' || $module_id == 'AmazonNoApi'): ?>
|
25 |
<div class="row cegg-no-top-margin">
|
26 |
<div class="col-md-12 text-right text-muted">
|
27 |
<small>
|
application/vendor/XmlStringStreamer/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
The MIT License (MIT)
|
2 |
+
|
3 |
+
Copyright (c) 2014 Oskar Thornblad
|
4 |
+
|
5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6 |
+
of this software and associated documentation files (the "Software"), to deal
|
7 |
+
in the Software without restriction, including without limitation the rights
|
8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9 |
+
copies of the Software, and to permit persons to whom the Software is
|
10 |
+
furnished to do so, subject to the following conditions:
|
11 |
+
|
12 |
+
The above copyright notice and this permission notice shall be included in all
|
13 |
+
copies or substantial portions of the Software.
|
14 |
+
|
15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21 |
+
SOFTWARE.
|
application/vendor/XmlStringStreamer/Parser/StringWalker.php
ADDED
@@ -0,0 +1,276 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* Modified version of XmlStringStreamer, edited namespaces only
|
5 |
+
* @author keywordrush.com <support@keywordrush.com>
|
6 |
+
* @copyright Copyright © 2021 keywordrush.com
|
7 |
+
*/
|
8 |
+
|
9 |
+
/**
|
10 |
+
* xml-string-streamer StringWalker parser
|
11 |
+
*
|
12 |
+
* @package xml-string-streamer
|
13 |
+
* @author Oskar Thornblad <oskar.thornblad@gmail.com>
|
14 |
+
*/
|
15 |
+
|
16 |
+
namespace ContentEgg\application\vendor\XmlStringStreamer\Parser;
|
17 |
+
|
18 |
+
use Exception;
|
19 |
+
use ContentEgg\application\vendor\XmlStringStreamer\ParserInterface;
|
20 |
+
use ContentEgg\application\vendor\XmlStringStreamer\StreamInterface;
|
21 |
+
|
22 |
+
/**
|
23 |
+
* The string walker parser builds the XML nodes by fetching one element at a time until a certain depth is re-reached
|
24 |
+
*/
|
25 |
+
class StringWalker implements ParserInterface
|
26 |
+
{
|
27 |
+
/**
|
28 |
+
* Holds the parser configuration
|
29 |
+
* @var array
|
30 |
+
*/
|
31 |
+
protected $options;
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Is this the first run?
|
35 |
+
* @var boolean
|
36 |
+
*/
|
37 |
+
protected $firstRun = true;
|
38 |
+
|
39 |
+
/**
|
40 |
+
* What depth are we currently at?
|
41 |
+
* @var integer
|
42 |
+
*/
|
43 |
+
protected $depth = 0;
|
44 |
+
|
45 |
+
/**
|
46 |
+
* The latest chunk from the stream
|
47 |
+
* @var string
|
48 |
+
*/
|
49 |
+
protected $chunk;
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Last XML node in the making, used for anti-freeze detection
|
53 |
+
* @var null|string
|
54 |
+
*/
|
55 |
+
protected $lastChunk;
|
56 |
+
|
57 |
+
/**
|
58 |
+
* XML node in the making
|
59 |
+
* @var null|string
|
60 |
+
*/
|
61 |
+
protected $shaved = null;
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Whether to capture or not
|
65 |
+
* @var boolean
|
66 |
+
*/
|
67 |
+
protected $capture = false;
|
68 |
+
|
69 |
+
/**
|
70 |
+
* If extractContainer is true, this will grow with the XML captured before and after the specified capture depth
|
71 |
+
* @var string
|
72 |
+
*/
|
73 |
+
protected $containerXml = "";
|
74 |
+
|
75 |
+
/**
|
76 |
+
* Parser contructor
|
77 |
+
* @param array $options An options array
|
78 |
+
*/
|
79 |
+
public function __construct(array $options = array())
|
80 |
+
{
|
81 |
+
$this->options = array_merge(array(
|
82 |
+
"captureDepth" => 2,
|
83 |
+
"expectGT" => false,
|
84 |
+
"tags" => array(
|
85 |
+
array("<?", "?>", 0),
|
86 |
+
array("<!--", "-->", 0),
|
87 |
+
array("<![CDATA[", "]]>", 0),
|
88 |
+
array("<!", ">", 0),
|
89 |
+
array("</", ">", -1),
|
90 |
+
array("<", "/>", 0),
|
91 |
+
array("<", ">", 1),
|
92 |
+
),
|
93 |
+
"tagsWithAllowedGT" => array(
|
94 |
+
array("<!--", "-->"),
|
95 |
+
array("<![CDATA[", "]]>"),
|
96 |
+
),
|
97 |
+
"extractContainer" => false,
|
98 |
+
), $options);
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Shaves off the next element from the chunk
|
103 |
+
* @return string[]|bool Either a shaved off element array(0 => Captured element, 1 => Data from last shaving point up to and including captured element) or false if one could not be obtained
|
104 |
+
*/
|
105 |
+
protected function shave()
|
106 |
+
{
|
107 |
+
preg_match("/<[^>]+>/", $this->chunk, $matches, PREG_OFFSET_CAPTURE);
|
108 |
+
|
109 |
+
if (isset($matches[0], $matches[0][0], $matches[0][1])) {
|
110 |
+
list($captured, $offset) = $matches[0];
|
111 |
+
|
112 |
+
if ($this->options["expectGT"]) {
|
113 |
+
// Some elements support > inside
|
114 |
+
foreach ($this->options["tagsWithAllowedGT"] as $tag) {
|
115 |
+
list($opening, $closing) = $tag;
|
116 |
+
|
117 |
+
if (substr($captured, 0, strlen($opening)) === $opening) {
|
118 |
+
// We have a match, our preg_match may have ended too early
|
119 |
+
// Most often, this isn't the case
|
120 |
+
if (substr($captured, -1 * strlen($closing)) !== $closing) {
|
121 |
+
// In this case, the preg_match ended too early, let's find the real end
|
122 |
+
$position = strpos($this->chunk, $closing);
|
123 |
+
if ($position === false) {
|
124 |
+
// We need more XML!
|
125 |
+
|
126 |
+
return false;
|
127 |
+
}
|
128 |
+
|
129 |
+
// We found the end, modify $captured
|
130 |
+
$captured = substr($this->chunk, $offset, $position + strlen($closing) - $offset);
|
131 |
+
}
|
132 |
+
}
|
133 |
+
}
|
134 |
+
}
|
135 |
+
|
136 |
+
// Data in between
|
137 |
+
$data = substr($this->chunk, 0, $offset);
|
138 |
+
|
139 |
+
// Shave from chunk
|
140 |
+
$this->chunk = substr($this->chunk, $offset + strlen($captured));
|
141 |
+
|
142 |
+
return array($captured, $data . $captured);
|
143 |
+
}
|
144 |
+
|
145 |
+
return false;
|
146 |
+
}
|
147 |
+
|
148 |
+
/**
|
149 |
+
* Extract XML compatible tag head and tail
|
150 |
+
* @param string $element XML element
|
151 |
+
* @return string[] 0 => Opening tag, 1 => Closing tag
|
152 |
+
*/
|
153 |
+
protected function getEdges($element)
|
154 |
+
{
|
155 |
+
// TODO: Performance tuning possible here by not looping
|
156 |
+
|
157 |
+
foreach ($this->options["tags"] as $tag) {
|
158 |
+
list($opening, $closing, $depth) = $tag;
|
159 |
+
|
160 |
+
if (substr($element, 0, strlen($opening)) === $opening
|
161 |
+
&& substr($element, -1 * strlen($closing)) === $closing) {
|
162 |
+
|
163 |
+
return $tag;
|
164 |
+
}
|
165 |
+
}
|
166 |
+
}
|
167 |
+
|
168 |
+
/**
|
169 |
+
* The shave method must be able to request more data even though there isn't any more to fetch from the stream, this method wraps the getChunk call so that it returns true as long as there is XML data left
|
170 |
+
* @param StreamInterface $stream The stream to read from
|
171 |
+
* @return bool Returns whether there is more XML data or not
|
172 |
+
*/
|
173 |
+
protected function prepareChunk(StreamInterface $stream)
|
174 |
+
{
|
175 |
+
if (!$this->firstRun && is_null($this->shaved)) {
|
176 |
+
// We're starting again after a flush
|
177 |
+
$this->shaved = "";
|
178 |
+
|
179 |
+
return true;
|
180 |
+
} else if (is_null($this->shaved)) {
|
181 |
+
$this->shaved = "";
|
182 |
+
}
|
183 |
+
|
184 |
+
$newChunk = $stream->getChunk();
|
185 |
+
|
186 |
+
if ($newChunk !== false) {
|
187 |
+
$this->chunk .= $newChunk;
|
188 |
+
|
189 |
+
return true;
|
190 |
+
} else {
|
191 |
+
if (trim($this->chunk) !== "" && $this->chunk !== $this->lastChunk) {
|
192 |
+
// Update anti-freeze protection chunk
|
193 |
+
$this->lastChunk = $this->chunk;
|
194 |
+
// Continue
|
195 |
+
return true;
|
196 |
+
}
|
197 |
+
}
|
198 |
+
|
199 |
+
return false;
|
200 |
+
}
|
201 |
+
|
202 |
+
/**
|
203 |
+
* Get the extracted container XML, if called before the whole stream is parsed, the XML returned will most likely be invalid due to missing closing tags
|
204 |
+
* @return string XML string
|
205 |
+
* @throws Exception if the extractContainer option isn't true
|
206 |
+
*/
|
207 |
+
public function getExtractedContainer()
|
208 |
+
{
|
209 |
+
if (!$this->options["extractContainer"]) {
|
210 |
+
throw new Exception("This method requires the 'extractContainer' option to be true");
|
211 |
+
}
|
212 |
+
|
213 |
+
return $this->containerXml;
|
214 |
+
}
|
215 |
+
|
216 |
+
/**
|
217 |
+
* Tries to retrieve the next node or returns false
|
218 |
+
* @param StreamInterface $stream The stream to use
|
219 |
+
* @return string|bool The next xml node or false if one could not be retrieved
|
220 |
+
*/
|
221 |
+
public function getNodeFrom(StreamInterface $stream)
|
222 |
+
{
|
223 |
+
// Iterate and append to $this->chunk
|
224 |
+
while ($this->prepareChunk($stream)) {
|
225 |
+
$this->firstRun = false;
|
226 |
+
// Shave off elements
|
227 |
+
while ($shaved = $this->shave()) {
|
228 |
+
list($element, $data) = $shaved;
|
229 |
+
|
230 |
+
// Analyze element
|
231 |
+
list($opening, $closing, $depth) = $this->getEdges($element);
|
232 |
+
|
233 |
+
// Update depth
|
234 |
+
$this->depth += $depth;
|
235 |
+
|
236 |
+
$flush = false;
|
237 |
+
$captureOnce = false;
|
238 |
+
|
239 |
+
// Capture or don't?
|
240 |
+
if ($this->depth === $this->options["captureDepth"] && $depth > 0) {
|
241 |
+
// Yes, we've just entered capture depth, start capturing
|
242 |
+
$this->capture = true;
|
243 |
+
} else if ($this->depth === $this->options["captureDepth"] - 1 && $depth < 0) {
|
244 |
+
// No, we've just exited capture depth, stop capturing and prepare for flush
|
245 |
+
$flush = true;
|
246 |
+
$this->capture = false;
|
247 |
+
|
248 |
+
// ..but include this last node
|
249 |
+
$this->shaved .= $data;
|
250 |
+
} else if ($this->options["extractContainer"] && $this->depth < $this->options["captureDepth"]) {
|
251 |
+
// We're outside of our capture scope, save to the special buffer if extractContainer is true
|
252 |
+
$this->containerXml .= $element;
|
253 |
+
} else if ($depth === 0 && $this->depth + 1 === $this->options["captureDepth"]) {
|
254 |
+
// Self-closing element - capture this element and flush but don't start capturing everything yet
|
255 |
+
$captureOnce = true;
|
256 |
+
$flush = true;
|
257 |
+
}
|
258 |
+
|
259 |
+
// Capture the last retrieved node
|
260 |
+
if ($this->capture || $captureOnce) {
|
261 |
+
$this->shaved .= $data;
|
262 |
+
}
|
263 |
+
|
264 |
+
if ($flush) {
|
265 |
+
// Flush the whole node and start over on the next
|
266 |
+
$flush = $this->shaved;
|
267 |
+
$this->shaved = null;
|
268 |
+
|
269 |
+
return $flush;
|
270 |
+
}
|
271 |
+
}
|
272 |
+
}
|
273 |
+
|
274 |
+
return false;
|
275 |
+
}
|
276 |
+
}
|
application/vendor/XmlStringStreamer/Parser/UniqueNode.php
ADDED
@@ -0,0 +1,293 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* Modified version of XmlStringStreamer, edited namespaces only
|
5 |
+
* @author keywordrush.com <support@keywordrush.com>
|
6 |
+
* @copyright Copyright © 2021 keywordrush.com
|
7 |
+
*/
|
8 |
+
|
9 |
+
/**
|
10 |
+
* xml-string-streamer UniqueNode parser
|
11 |
+
*
|
12 |
+
* @package xml-string-streamer
|
13 |
+
* @author Oskar Thornblad <oskar.thornblad@gmail.com>
|
14 |
+
* @author Roman Voloboev <animir@ya.ru>
|
15 |
+
*/
|
16 |
+
|
17 |
+
namespace ContentEgg\application\vendor\XmlStringStreamer\Parser;
|
18 |
+
|
19 |
+
use Exception;
|
20 |
+
use ContentEgg\application\vendor\XmlStringStreamer\ParserInterface;
|
21 |
+
use ContentEgg\application\vendor\XmlStringStreamer\StreamInterface;
|
22 |
+
|
23 |
+
/**
|
24 |
+
* The unique node parser starts at a given element name and flushes when its corresponding closing tag is found
|
25 |
+
*/
|
26 |
+
class UniqueNode implements ParserInterface
|
27 |
+
{
|
28 |
+
/**
|
29 |
+
* Current working XML blob
|
30 |
+
* @var string
|
31 |
+
*/
|
32 |
+
private $workingBlob = "";
|
33 |
+
|
34 |
+
/**
|
35 |
+
* The flushed node
|
36 |
+
* @var string
|
37 |
+
*/
|
38 |
+
private $flushed = "";
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Start position of the given element in the workingBlob
|
42 |
+
* @var integer
|
43 |
+
*/
|
44 |
+
private $startPos = 0;
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Records how far we've searched in the XML blob so far
|
48 |
+
* @var integer
|
49 |
+
*/
|
50 |
+
private $hasSearchedUntilPos = -1;
|
51 |
+
|
52 |
+
const FIND_OPENING_TAG_ACTION = 0;
|
53 |
+
const FIND_CLOSING_TAG_ACTION = 1;
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Next action to perform
|
57 |
+
* @var integer
|
58 |
+
*/
|
59 |
+
private $nextAction = 0;
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Indicates short closing tag
|
63 |
+
* @var bool
|
64 |
+
*/
|
65 |
+
|
66 |
+
private $shortClosedTagNow = false;
|
67 |
+
|
68 |
+
/**
|
69 |
+
* If extractContainer is true, this will grow with the XML captured before and after the specified capture depth
|
70 |
+
* @var string
|
71 |
+
*/
|
72 |
+
protected $containerXml = "";
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Whether we're found our first capture target or not
|
76 |
+
* @var bool
|
77 |
+
*/
|
78 |
+
protected $preCapture = true;
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Parser constructor
|
82 |
+
* @param array $options An options array
|
83 |
+
* @throws Exception if the required option uniqueNode isn't set
|
84 |
+
*/
|
85 |
+
public function __construct(array $options = array())
|
86 |
+
{
|
87 |
+
$this->options = array_merge(array(
|
88 |
+
"extractContainer" => false,
|
89 |
+
), $options);
|
90 |
+
|
91 |
+
if (!isset($this->options["uniqueNode"])) {
|
92 |
+
throw new Exception("Required option 'uniqueNode' not set");
|
93 |
+
}
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* Search the blob for our unique node's opening tag
|
98 |
+
* @return bool|int Either returns the char position of the opening tag or false
|
99 |
+
*/
|
100 |
+
protected function getOpeningTagPos()
|
101 |
+
{
|
102 |
+
$startPositionInBlob = false;
|
103 |
+
if (preg_match("/<" . preg_quote($this->options["uniqueNode"]) . "(>| )/", $this->workingBlob, $matches, PREG_OFFSET_CAPTURE) === 1) {
|
104 |
+
$startPositionInBlob = $matches[0][1];
|
105 |
+
}
|
106 |
+
|
107 |
+
|
108 |
+
if ($startPositionInBlob === false) {
|
109 |
+
$this->hasSearchedUntilPos = strlen($this->workingBlob) - 1;
|
110 |
+
}
|
111 |
+
|
112 |
+
return $startPositionInBlob;
|
113 |
+
}
|
114 |
+
|
115 |
+
/**
|
116 |
+
* Search short closing tag in $workingBlob before
|
117 |
+
*
|
118 |
+
* @param string $workingBlob
|
119 |
+
* @param int $len
|
120 |
+
* @return bool|int Either returns the char position of the short closing tag or false
|
121 |
+
*/
|
122 |
+
private function checkShortClosingTag($workingBlob, $len) {
|
123 |
+
$resultEndPositionInBlob = false;
|
124 |
+
while ($len = strpos($workingBlob, "/>", $len + 1)) {
|
125 |
+
$subBlob = substr($workingBlob, $this->startPos, $len + strlen("/>") - $this->startPos);
|
126 |
+
$cntOpen = substr_count($subBlob, "<");
|
127 |
+
$cntClose = substr_count($subBlob, "/>");
|
128 |
+
if ($cntOpen === $cntClose && $cntOpen === 1) {
|
129 |
+
$resultEndPositionInBlob = $len + strlen("/>");
|
130 |
+
break; // end while. so $endPositionInBlob correct now
|
131 |
+
}
|
132 |
+
}
|
133 |
+
return $resultEndPositionInBlob;
|
134 |
+
}
|
135 |
+
|
136 |
+
/**
|
137 |
+
* Search the blob for our unique node's closing tag
|
138 |
+
* @return bool|int Either returns the char position of the closing tag or false
|
139 |
+
*/
|
140 |
+
protected function getClosingTagPos()
|
141 |
+
{
|
142 |
+
$endPositionInBlob = strpos($this->workingBlob, "</" . $this->options["uniqueNode"] . ">");
|
143 |
+
if ($endPositionInBlob === false) {
|
144 |
+
|
145 |
+
if (isset($this->options["checkShortClosing"]) && $this->options["checkShortClosing"] === true) {
|
146 |
+
$endPositionInBlob = $this->checkShortClosingTag($this->workingBlob, $this->startPos);
|
147 |
+
}
|
148 |
+
|
149 |
+
if ($endPositionInBlob === false) {
|
150 |
+
$this->hasSearchedUntilPos = strlen($this->workingBlob) - 1;
|
151 |
+
} else {
|
152 |
+
$this->shortClosedTagNow = true;
|
153 |
+
}
|
154 |
+
} else {
|
155 |
+
if (isset($this->options["checkShortClosing"]) && $this->options["checkShortClosing"] === true) {
|
156 |
+
$tmpEndPositionInBlob = $this->checkShortClosingTag(substr($this->workingBlob, 0, $endPositionInBlob), $this->startPos);
|
157 |
+
if ($tmpEndPositionInBlob !== false) {
|
158 |
+
$this->shortClosedTagNow = true;
|
159 |
+
$endPositionInBlob = $tmpEndPositionInBlob;
|
160 |
+
}
|
161 |
+
}
|
162 |
+
}
|
163 |
+
|
164 |
+
return $endPositionInBlob;
|
165 |
+
}
|
166 |
+
|
167 |
+
/**
|
168 |
+
* Set the start position in the workingBlob from where we should start reading when the closing tag is found
|
169 |
+
* @param int $startPositionInBlob Position of starting tag
|
170 |
+
*/
|
171 |
+
protected function startSalvaging($startPositionInBlob)
|
172 |
+
{
|
173 |
+
$this->startPos = $startPositionInBlob;
|
174 |
+
}
|
175 |
+
|
176 |
+
/**
|
177 |
+
* Cut everything from the start position to the end position in the workingBlob (+ tag length) and flush it out for later return in getNodeFrom
|
178 |
+
* @param int $endPositionInBlob Position of the closing tag
|
179 |
+
*/
|
180 |
+
protected function flush($endPositionInBlob) {
|
181 |
+
$endTagLen = $this->shortClosedTagNow ? 0 : strlen("</" . $this->options["uniqueNode"] . ">");
|
182 |
+
$realEndPosition = $endPositionInBlob + $endTagLen;
|
183 |
+
$this->flushed = substr($this->workingBlob, $this->startPos, $realEndPosition - $this->startPos);
|
184 |
+
$this->workingBlob = substr($this->workingBlob, $realEndPosition);
|
185 |
+
$this->hasSearchedUntilPos = 0;
|
186 |
+
$this->shortClosedTagNow = false;
|
187 |
+
}
|
188 |
+
|
189 |
+
/**
|
190 |
+
* Decides whether we're to fetch more chunks from the stream or keep working with what we have.
|
191 |
+
* @param StreamInterface $stream The stream provider
|
192 |
+
* @return bool Keep working?
|
193 |
+
*/
|
194 |
+
protected function prepareChunk(StreamInterface $stream)
|
195 |
+
{
|
196 |
+
if ($this->hasSearchedUntilPos > -1 && $this->hasSearchedUntilPos < (strlen($this->workingBlob) - 1)) {
|
197 |
+
// More work to do
|
198 |
+
return true;
|
199 |
+
}
|
200 |
+
|
201 |
+
$chunk = $stream->getChunk();
|
202 |
+
|
203 |
+
if ($chunk === false) {
|
204 |
+
// EOF
|
205 |
+
if ($this->hasSearchedUntilPos === -1 && strlen($this->workingBlob) > 0) {
|
206 |
+
// EOF, but we haven't even started searching, special case that probably means we're dealing with a file of less size than the stream buffer
|
207 |
+
// Therefore, keep looping
|
208 |
+
return true;
|
209 |
+
}
|
210 |
+
return false;
|
211 |
+
} else {
|
212 |
+
// New chunk fetched
|
213 |
+
|
214 |
+
if ($this->nextAction === self::FIND_OPENING_TAG_ACTION && !$this->options["extractContainer"]) {
|
215 |
+
// Prevent a memory leak if we never find our first node, throw away our old stuff
|
216 |
+
// but keep some letters to not cut off a first node
|
217 |
+
$this->workingBlob = substr($this->workingBlob, -1 * strlen("<" . $this->options["uniqueNode"] . ">")) . $chunk;
|
218 |
+
} else {
|
219 |
+
$this->workingBlob .= $chunk;
|
220 |
+
}
|
221 |
+
|
222 |
+
return true;
|
223 |
+
}
|
224 |
+
}
|
225 |
+
|
226 |
+
/**
|
227 |
+
* Tries to retrieve the next node or returns false
|
228 |
+
* @param StreamInterface $stream The stream to use
|
229 |
+
* @return string|bool The next xml node or false if one could not be retrieved
|
230 |
+
*/
|
231 |
+
public function getNodeFrom(StreamInterface $stream)
|
232 |
+
{
|
233 |
+
while ($this->prepareChunk($stream)) {
|
234 |
+
// What's our next course of action?
|
235 |
+
if ($this->nextAction === self::FIND_OPENING_TAG_ACTION) {
|
236 |
+
// Try to find an opening tag
|
237 |
+
$positionInBlob = $this->getOpeningTagPos();
|
238 |
+
|
239 |
+
if ($positionInBlob !== false) {
|
240 |
+
|
241 |
+
if ($this->options["extractContainer"] && $this->preCapture) {
|
242 |
+
$this->containerXml .= substr($this->workingBlob, 0, $positionInBlob);
|
243 |
+
$this->preCapture = false;
|
244 |
+
}
|
245 |
+
|
246 |
+
|
247 |
+
$this->startSalvaging($positionInBlob);
|
248 |
+
|
249 |
+
// The next course of action will be to find a closing tag
|
250 |
+
$this->nextAction = self::FIND_CLOSING_TAG_ACTION;
|
251 |
+
}
|
252 |
+
}
|
253 |
+
|
254 |
+
if ($this->nextAction === self::FIND_CLOSING_TAG_ACTION) {
|
255 |
+
// Try to find a closing tag
|
256 |
+
$positionInBlob = $this->getClosingTagPos();
|
257 |
+
if ($positionInBlob !== false) {
|
258 |
+
// We found it, we now have a full node to flush out
|
259 |
+
$this->flush($positionInBlob);
|
260 |
+
|
261 |
+
// The next course of action will be to find an opening tag
|
262 |
+
$this->nextAction = self::FIND_OPENING_TAG_ACTION;
|
263 |
+
|
264 |
+
// Get the flushed node and make way for the next node
|
265 |
+
$flushed = $this->flushed;
|
266 |
+
$this->flushed = "";
|
267 |
+
|
268 |
+
return $flushed;
|
269 |
+
}
|
270 |
+
}
|
271 |
+
}
|
272 |
+
|
273 |
+
if ($this->options["extractContainer"]) {
|
274 |
+
$this->containerXml .= $this->workingBlob;
|
275 |
+
}
|
276 |
+
|
277 |
+
return false;
|
278 |
+
}
|
279 |
+
|
280 |
+
/**
|
281 |
+
* Get the extracted container XML, if called before the whole stream is parsed, the XML returned can be invalid due to missing closing tags
|
282 |
+
* @return string XML string
|
283 |
+
* @throws Exception if the extractContainer option isn't true
|
284 |
+
*/
|
285 |
+
public function getExtractedContainer()
|
286 |
+
{
|
287 |
+
if (!$this->options["extractContainer"]) {
|
288 |
+
throw new Exception("This method requires the 'extractContainer' option to be true");
|
289 |
+
}
|
290 |
+
|
291 |
+
return $this->containerXml;
|
292 |
+
}
|
293 |
+
}
|
application/vendor/XmlStringStreamer/ParserInterface.php
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* Modified version of XmlStringStreamer, edited namespaces only
|
5 |
+
* @author keywordrush.com <support@keywordrush.com>
|
6 |
+
* @copyright Copyright © 2021 keywordrush.com
|
7 |
+
*/
|
8 |
+
|
9 |
+
/**
|
10 |
+
* xml-string-streamer Parser interface
|
11 |
+
*
|
12 |
+
* @package xml-string-streamer
|
13 |
+
* @author Oskar Thornblad <oskar.thornblad@gmail.com>
|
14 |
+
*/
|
15 |
+
|
16 |
+
namespace ContentEgg\application\vendor\XmlStringStreamer;
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Interface describing a parser
|
20 |
+
*/
|
21 |
+
interface ParserInterface
|
22 |
+
{
|
23 |
+
/**
|
24 |
+
* Parser contructor
|
25 |
+
* @param array $options An options array decided by the parser implementation
|
26 |
+
*/
|
27 |
+
public function __construct(array $options = array());
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Tries to retrieve the next node or returns false
|
31 |
+
* @param StreamInterface $stream The stream to use
|
32 |
+
* @return string|bool The next xml node or false if one could not be retrieved
|
33 |
+
*/
|
34 |
+
public function getNodeFrom(StreamInterface $stream);
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Get the extracted container XML, if called before the whole stream is parsed, the XML returned can be invalid due to missing closing tags
|
38 |
+
* @return string XML string
|
39 |
+
*/
|
40 |
+
public function getExtractedContainer();
|
41 |
+
}
|
application/vendor/XmlStringStreamer/Stream/File.php
ADDED
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php namespace ContentEgg\application\vendor\XmlStringStreamer\Stream;
|
2 |
+
|
3 |
+
use Exception;
|
4 |
+
use ContentEgg\application\vendor\XmlStringStreamer\StreamInterface;
|
5 |
+
|
6 |
+
class File implements StreamInterface
|
7 |
+
{
|
8 |
+
private $handle;
|
9 |
+
private $readBytes = 0;
|
10 |
+
private $chunkSize;
|
11 |
+
private $chunkCallback;
|
12 |
+
|
13 |
+
public function __construct($mixed, $chunkSize = 16384, $chunkCallback = null)
|
14 |
+
{
|
15 |
+
if (is_string($mixed)) {
|
16 |
+
// Treat as filename
|
17 |
+
if (!file_exists($mixed)) {
|
18 |
+
throw new \Exception("File '$mixed' doesn't exist");
|
19 |
+
}
|
20 |
+
$this->handle = fopen($mixed, "rb");
|
21 |
+
$this->handle;
|
22 |
+
} else if (get_resource_type($mixed) == "stream") {
|
23 |
+
// Treat as file handle
|
24 |
+
$this->handle = $mixed;
|
25 |
+
} else {
|
26 |
+
throw new \Exception("First argument must be either a filename or a file handle");
|
27 |
+
}
|
28 |
+
|
29 |
+
if ($this->handle === false) {
|
30 |
+
throw new \Exception("Couldn't create file handle");
|
31 |
+
}
|
32 |
+
|
33 |
+
$this->chunkSize = $chunkSize;
|
34 |
+
$this->chunkCallback = $chunkCallback;
|
35 |
+
}
|
36 |
+
|
37 |
+
public function __destruct() {
|
38 |
+
if (is_resource($this->handle)) {
|
39 |
+
fclose($this->handle);
|
40 |
+
}
|
41 |
+
}
|
42 |
+
|
43 |
+
public function getChunk()
|
44 |
+
{
|
45 |
+
if (is_resource($this->handle) && !feof($this->handle)) {
|
46 |
+
$buffer = fread($this->handle, $this->chunkSize);
|
47 |
+
$this->readBytes += strlen($buffer);
|
48 |
+
|
49 |
+
if (is_callable($this->chunkCallback)) {
|
50 |
+
call_user_func_array($this->chunkCallback, array($buffer, $this->readBytes));
|
51 |
+
}
|
52 |
+
|
53 |
+
return $buffer;
|
54 |
+
}
|
55 |
+
|
56 |
+
return false;
|
57 |
+
}
|
58 |
+
|
59 |
+
public function isSeekable()
|
60 |
+
{
|
61 |
+
$meta = stream_get_meta_data($this->handle);
|
62 |
+
|
63 |
+
return $meta["seekable"];
|
64 |
+
}
|
65 |
+
|
66 |
+
public function rewind()
|
67 |
+
{
|
68 |
+
if (!$this->isSeekable()) {
|
69 |
+
throw new Exception("Attempted to rewind an unseekable stream");
|
70 |
+
}
|
71 |
+
|
72 |
+
$this->readBytes = 0;
|
73 |
+
rewind($this->handle);
|
74 |
+
}
|
75 |
+
}
|
application/vendor/XmlStringStreamer/Stream/Stdin.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php namespace ContentEgg\application\vendor\XmlStringStreamer\Stream;
|
2 |
+
|
3 |
+
class Stdin extends File
|
4 |
+
{
|
5 |
+
public function __construct($chunkSize = 1024, $chunkCallback = null)
|
6 |
+
{
|
7 |
+
parent::__construct(fopen("php://stdin", "r"), $chunkSize, $chunkCallback);
|
8 |
+
}
|
9 |
+
}
|
application/vendor/XmlStringStreamer/StreamInterface.php
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* Modified version of XmlStringStreamer, edited namespaces only
|
5 |
+
* @author keywordrush.com <support@keywordrush.com>
|
6 |
+
* @copyright Copyright © 2021 keywordrush.com
|
7 |
+
*/
|
8 |
+
|
9 |
+
/**
|
10 |
+
* xml-string-streamer Stream interface
|
11 |
+
*
|
12 |
+
* @package xml-string-streamer
|
13 |
+
* @author Oskar Thornblad <oskar.thornblad@gmail.com>
|
14 |
+
*/
|
15 |
+
|
16 |
+
namespace ContentEgg\application\vendor\XmlStringStreamer;
|
17 |
+
|
18 |
+
use Exception;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Interface describing a stream provider
|
22 |
+
*/
|
23 |
+
interface StreamInterface
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Gets the next chunk form the stream if one is available
|
27 |
+
* @return bool|string The next chunk if available, or false if not available
|
28 |
+
*/
|
29 |
+
public function getChunk();
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Is the stream seekable?
|
33 |
+
* @return bool
|
34 |
+
*/
|
35 |
+
public function isSeekable();
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Rewind the stream
|
39 |
+
* @return void
|
40 |
+
* @throws Exception if the stream isn't seekable
|
41 |
+
*/
|
42 |
+
public function rewind();
|
43 |
+
}
|
application/vendor/XmlStringStreamer/XmlStringStreamer.php
ADDED
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* Modified version of XmlStringStreamer, edited namespaces only
|
5 |
+
* @author keywordrush.com <support@keywordrush.com>
|
6 |
+
* @copyright Copyright © 2021 keywordrush.com
|
7 |
+
*/
|
8 |
+
|
9 |
+
/**
|
10 |
+
* xml-string-streamer base class
|
11 |
+
*
|
12 |
+
* @package xml-string-streamer
|
13 |
+
* @author Oskar Thornblad <oskar.thornblad@gmail.com>
|
14 |
+
*/
|
15 |
+
|
16 |
+
namespace ContentEgg\application\vendor\XmlStringStreamer;
|
17 |
+
|
18 |
+
use ContentEgg\application\vendor\XmlStringStreamer\ParserInterface;
|
19 |
+
use ContentEgg\application\vendor\XmlStringStreamer\StreamInterface;
|
20 |
+
use ContentEgg\application\vendor\XmlStringStreamer\Parser;
|
21 |
+
use ContentEgg\application\vendor\XmlStringStreamer\Stream;
|
22 |
+
|
23 |
+
/**
|
24 |
+
* The base class for the xml-string-streamer
|
25 |
+
*/
|
26 |
+
class XmlStringStreamer
|
27 |
+
{
|
28 |
+
/**
|
29 |
+
* The current parser
|
30 |
+
* @var ParserInterface
|
31 |
+
*/
|
32 |
+
protected $parser;
|
33 |
+
/**
|
34 |
+
* The current stream
|
35 |
+
* @var StreamInterface
|
36 |
+
*/
|
37 |
+
protected $stream;
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Constructs the XML streamer
|
41 |
+
* @param ParserInterface $parser A parser with options set
|
42 |
+
* @param StreamInterface $stream A stream for the parser to use
|
43 |
+
*/
|
44 |
+
public function __construct(ParserInterface $parser, StreamInterface $stream)
|
45 |
+
{
|
46 |
+
$this->parser = $parser;
|
47 |
+
$this->stream = $stream;
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Convenience method for creating a StringWalker parser with a File stream
|
52 |
+
* @param string|resource $file File path or handle
|
53 |
+
* @param array $options Parser configuration
|
54 |
+
* @return XmlStringStreamer A streamer ready for use
|
55 |
+
*/
|
56 |
+
public static function createStringWalkerParser($file, $options = array())
|
57 |
+
{
|
58 |
+
$stream = new Stream\File($file, 16384);
|
59 |
+
$parser = new Parser\StringWalker($options);
|
60 |
+
return new XmlStringStreamer($parser, $stream);
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Convenience method for creating a UniqueNode parser with a File stream
|
65 |
+
* @param string|resource $file File path or handle
|
66 |
+
* @param array $options Parser configuration
|
67 |
+
* @return XmlStringStreamer A streamer ready for use
|
68 |
+
*/
|
69 |
+
public static function createUniqueNodeParser($file, $options = array())
|
70 |
+
{
|
71 |
+
$stream = new Stream\File($file, 16384);
|
72 |
+
$parser = new Parser\UniqueNode($options);
|
73 |
+
return new XmlStringStreamer($parser, $stream);
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Gets the next node from the parser
|
78 |
+
* @return bool|string The xml string or false
|
79 |
+
*/
|
80 |
+
public function getNode()
|
81 |
+
{
|
82 |
+
return $this->parser->getNodeFrom($this->stream);
|
83 |
+
}
|
84 |
+
}
|
content-egg.php
CHANGED
@@ -6,11 +6,11 @@ namespace ContentEgg;
|
|
6 |
Plugin Name: Content Egg
|
7 |
Plugin URI: https://www.keywordrush.com/contentegg
|
8 |
Description: All in one solution for creating affiliate websites.
|
9 |
-
Version: 5.
|
10 |
Author: keywordrush.com
|
11 |
Author URI: https://www.keywordrush.com
|
12 |
Text Domain: content-egg
|
13 |
-
Domain Path: /languages
|
14 |
*/
|
15 |
|
16 |
/*
|
@@ -18,7 +18,7 @@ namespace ContentEgg;
|
|
18 |
*/
|
19 |
|
20 |
defined('\ABSPATH') || die('No direct script access allowed!');
|
21 |
-
|
22 |
define(__NAMESPACE__ . '\NS', __NAMESPACE__ . '\\');
|
23 |
define(NS . 'PLUGIN_PATH', \plugin_dir_path(__FILE__));
|
24 |
define(NS . 'PLUGIN_FILE', __FILE__);
|
6 |
Plugin Name: Content Egg
|
7 |
Plugin URI: https://www.keywordrush.com/contentegg
|
8 |
Description: All in one solution for creating affiliate websites.
|
9 |
+
Version: 5.3.0
|
10 |
Author: keywordrush.com
|
11 |
Author URI: https://www.keywordrush.com
|
12 |
Text Domain: content-egg
|
13 |
+
Domain Path: /languages
|
14 |
*/
|
15 |
|
16 |
/*
|
18 |
*/
|
19 |
|
20 |
defined('\ABSPATH') || die('No direct script access allowed!');
|
21 |
+
|
22 |
define(__NAMESPACE__ . '\NS', __NAMESPACE__ . '\\');
|
23 |
define(NS . 'PLUGIN_PATH', \plugin_dir_path(__FILE__));
|
24 |
define(NS . 'PLUGIN_FILE', __FILE__);
|
languages/content-egg.pot
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the same license as the Content Egg<stripfree> Pro</stripfree> package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Content Egg<stripfree> Pro</stripfree>
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg\n"
|
7 |
-
"POT-Creation-Date: 2021-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -12,11 +12,11 @@ msgstr ""
|
|
12 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
|
15 |
-
#: application/Autoupdate.php:
|
16 |
msgid "New version of %s plugin."
|
17 |
msgstr ""
|
18 |
|
19 |
-
#: application/Autoupdate.php:
|
20 |
msgid ""
|
21 |
"Please <a target=\"_blank\" href=\"%s\">find here</a> the releases notes."
|
22 |
msgstr ""
|
@@ -81,7 +81,7 @@ msgstr ""
|
|
81 |
#: application/PriceMoversWidget.php:99 application/PriceMoversWidget.php:100
|
82 |
#: application/PriceMoversWidget.php:101 application/PriceMoversWidget.php:102
|
83 |
#: application/PriceMoversWidget.php:103 application/PriceMoversWidget.php:104
|
84 |
-
#: application/helpers/TemplateHelper.php:
|
85 |
msgid "%d days ago"
|
86 |
msgstr ""
|
87 |
|
@@ -101,8 +101,8 @@ msgstr ""
|
|
101 |
#: application/WooIntegrator.php:544
|
102 |
#: application/templates/blocks/grid_row.php:43
|
103 |
#: application/templates/blocks/item_row.php:37
|
104 |
-
#: application/templates/blocks/list_row.php:
|
105 |
-
#: application/templates/data_list.php:
|
106 |
#: application/templates/data_price_tracker_alert.php:43
|
107 |
#: templates/block_offers_logo.php:55 templates/block_price_comparison.php:44
|
108 |
msgid "Last updated on %s"
|
@@ -220,7 +220,7 @@ msgstr ""
|
|
220 |
msgid "user guide"
|
221 |
msgstr ""
|
222 |
|
223 |
-
#: application/admin/EggMetabox.php:
|
224 |
msgid "Configure and activate modules of Content Egg plugin"
|
225 |
msgstr ""
|
226 |
|
@@ -265,7 +265,7 @@ msgstr ""
|
|
265 |
msgid "Error."
|
266 |
msgstr ""
|
267 |
|
268 |
-
#: application/admin/GeneralConfig.php:37 application/admin/PluginAdmin.php:
|
269 |
msgid "Settings"
|
270 |
msgstr ""
|
271 |
|
@@ -369,13 +369,13 @@ msgstr ""
|
|
369 |
|
370 |
#: application/admin/GeneralConfig.php:216
|
371 |
#: application/admin/views/_metabox_autoblog.php:415
|
372 |
-
#: application/modules/Aliexpress2/Aliexpress2Config.php:
|
373 |
msgid "Minimum price"
|
374 |
msgstr ""
|
375 |
|
376 |
#: application/admin/GeneralConfig.php:217
|
377 |
#: application/admin/views/_metabox_autoblog.php:416
|
378 |
-
#: application/modules/Aliexpress2/Aliexpress2Config.php:
|
379 |
msgid "Maximum price"
|
380 |
msgstr ""
|
381 |
|
@@ -494,7 +494,7 @@ msgid "How long save price history. 0 - deactivate price history."
|
|
494 |
msgstr ""
|
495 |
|
496 |
#: application/admin/GeneralConfig.php:301
|
497 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
498 |
msgid "The field \"%s\" can't be more than %d."
|
499 |
msgstr ""
|
500 |
|
@@ -651,7 +651,7 @@ msgid "Coupon button text"
|
|
651 |
msgstr ""
|
652 |
|
653 |
#: application/admin/GeneralConfig.php:452
|
654 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
655 |
msgid "Stock status"
|
656 |
msgstr ""
|
657 |
|
@@ -766,18 +766,31 @@ msgstr ""
|
|
766 |
msgid "Translation"
|
767 |
msgstr ""
|
768 |
|
769 |
-
#: application/admin/GeneralConfig.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
770 |
msgid "Domain name"
|
771 |
msgstr ""
|
772 |
|
773 |
-
#: application/admin/GeneralConfig.php:
|
774 |
msgid "Logo URL"
|
775 |
msgstr ""
|
776 |
|
777 |
-
#: application/admin/GeneralConfig.php:
|
778 |
msgid "Translated string"
|
779 |
msgstr ""
|
780 |
|
|
|
|
|
|
|
|
|
781 |
#: application/admin/ImportExportController.php:28
|
782 |
msgid "Import/Export"
|
783 |
msgstr ""
|
@@ -845,7 +858,7 @@ msgstr ""
|
|
845 |
msgid " ago"
|
846 |
msgstr ""
|
847 |
|
848 |
-
#: application/admin/PluginAdmin.php:
|
849 |
msgid "Are you sure?"
|
850 |
msgstr ""
|
851 |
|
@@ -905,7 +918,7 @@ msgid "Go to"
|
|
905 |
msgstr ""
|
906 |
|
907 |
#: application/admin/ProductTable.php:79
|
908 |
-
#: application/models/ProductModel.php:
|
909 |
#: application/modules/Awin/AwinConfig.php:66
|
910 |
#: application/modules/Daisycon/DaisyconConfig.php:94
|
911 |
#: application/modules/Impactradius/ImpactradiusConfig.php:101
|
@@ -913,7 +926,7 @@ msgid "In stock"
|
|
913 |
msgstr ""
|
914 |
|
915 |
#: application/admin/ProductTable.php:81
|
916 |
-
#: application/models/ProductModel.php:
|
917 |
msgid "Out of stock"
|
918 |
msgstr ""
|
919 |
|
@@ -926,7 +939,7 @@ msgid "Filter by module"
|
|
926 |
msgstr ""
|
927 |
|
928 |
#: application/admin/ProductTable.php:222
|
929 |
-
#: application/modules/Aliexpress2/Aliexpress2Config.php:
|
930 |
#: application/modules/BingImages/BingImagesConfig.php:92
|
931 |
#: application/modules/BingImages/BingImagesConfig.php:108
|
932 |
#: application/modules/BingImages/BingImagesConfig.php:121
|
@@ -1129,8 +1142,7 @@ msgstr ""
|
|
1129 |
|
1130 |
#: application/admin/views/_metabox_autoblog.php:211
|
1131 |
msgid ""
|
1132 |
-
"You can use
|
1133 |
-
"random option, for example, {Discount|Sale|Cheap}."
|
1134 |
msgstr ""
|
1135 |
|
1136 |
#: application/admin/views/_metabox_autoblog.php:218
|
@@ -1142,10 +1154,7 @@ msgid "You can use CE shortcodes like:"
|
|
1142 |
msgstr ""
|
1143 |
|
1144 |
#: application/admin/views/_metabox_autoblog.php:226
|
1145 |
-
|
1146 |
-
#: application/admin/views/_metabox_autoblog.php:478
|
1147 |
-
msgid ""
|
1148 |
-
"\"Formulas\", and also all tags from title template, will also work here."
|
1149 |
msgstr ""
|
1150 |
|
1151 |
#: application/admin/views/_metabox_autoblog.php:233
|
@@ -1180,9 +1189,9 @@ msgstr ""
|
|
1180 |
|
1181 |
#: application/admin/views/_metabox_autoblog.php:300
|
1182 |
#: application/modules/Aliexpress/AliexpressConfig.php:89
|
1183 |
-
#: application/modules/Aliexpress2/Aliexpress2Config.php:
|
1184 |
#: application/modules/CityadsProducts/CityadsProductsConfig.php:89
|
1185 |
-
#: application/modules/CjLinks/CjLinksConfig.php:
|
1186 |
#: application/modules/Clickbank/ClickbankConfig.php:69
|
1187 |
#: application/modules/Ebay/EbayConfig.php:170
|
1188 |
#: application/modules/Linkshare/LinkshareConfig.php:106
|
@@ -1295,6 +1304,11 @@ msgstr ""
|
|
1295 |
msgid "Comma separated list of tags."
|
1296 |
msgstr ""
|
1297 |
|
|
|
|
|
|
|
|
|
|
|
1298 |
#: application/admin/views/_metabox_autoblog.php:443
|
1299 |
#: application/modules/Ebay/EbayConfig.php:194
|
1300 |
msgid "Product condition"
|
@@ -1307,16 +1321,16 @@ msgstr ""
|
|
1307 |
#: application/modules/Amazon/AmazonConfig_FREE.php:196
|
1308 |
#: application/modules/BingImages/BingImagesConfig.php:93
|
1309 |
#: application/modules/CityadsProducts/CityadsProductsConfig.php:154
|
1310 |
-
#: application/modules/CjLinks/CjLinksConfig.php:
|
1311 |
-
#: application/modules/CjLinks/CjLinksConfig.php:
|
1312 |
-
#: application/modules/CjLinks/CjLinksConfig.php:
|
1313 |
#: application/modules/Clickbank/ClickbankConfig.php:133
|
1314 |
#: application/modules/Envato/EnvatoConfig.php:135
|
1315 |
#: application/modules/GoogleBooks/GoogleBooksConfig.php:112
|
1316 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:121
|
1317 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:134
|
1318 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:154
|
1319 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
1320 |
#: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:73
|
1321 |
msgid "Any"
|
1322 |
msgstr ""
|
@@ -1379,7 +1393,7 @@ msgid "Domain"
|
|
1379 |
msgstr ""
|
1380 |
|
1381 |
#: application/admin/views/_metabox_results.php:33
|
1382 |
-
#: application/helpers/TemplateHelper.php:
|
1383 |
#: application/models/ProductModel.php:64
|
1384 |
#: application/modules/GdeSlon/GdeSlonConfig.php:84
|
1385 |
#: application/modules/LomadeeProducts/LomadeeProductsConfig.php:90
|
@@ -1437,7 +1451,7 @@ msgstr ""
|
|
1437 |
msgid "EAN:"
|
1438 |
msgstr ""
|
1439 |
|
1440 |
-
#: application/admin/views/_metabox_search_results.php:
|
1441 |
#: application/modules/CjLinks/views/search_results.php:17
|
1442 |
msgid "Coupon code:"
|
1443 |
msgstr ""
|
@@ -1464,28 +1478,17 @@ msgstr ""
|
|
1464 |
msgid "Integration with Affiliate Egg"
|
1465 |
msgstr ""
|
1466 |
|
1467 |
-
#: application/admin/views/ae_integration.php:
|
1468 |
-
msgid ""
|
1469 |
-
"You <a href=\"https://ce-docs.keywordrush.com/integrations/"
|
1470 |
-
"affiliateeggintegration\">can activate</a> parsers of <a href=\"http://www."
|
1471 |
-
"keywordrush.com/en/affiliateegg\">Affiliate Egg</a> as modules of Content "
|
1472 |
-
"Egg."
|
1473 |
-
msgstr ""
|
1474 |
-
|
1475 |
-
#: application/admin/views/ae_integration.php:15
|
1476 |
-
msgid ""
|
1477 |
-
"Here is the <a href=\"http://www.keywordrush.com/res/ae_supported_shops.txt"
|
1478 |
-
"\">full list</a> of Affiliate Egg supported shops."
|
1479 |
msgstr ""
|
1480 |
|
1481 |
-
#: application/admin/views/ae_integration.php:
|
1482 |
-
msgid "
|
1483 |
msgstr ""
|
1484 |
|
1485 |
-
#: application/admin/views/ae_integration.php:
|
1486 |
msgid ""
|
1487 |
-
"Install and activate <a href=\"
|
1488 |
-
"\">Affiliate Egg</a>"
|
1489 |
msgstr ""
|
1490 |
|
1491 |
#: application/admin/views/autoblog_edit.php:8
|
@@ -1912,11 +1915,11 @@ msgstr ""
|
|
1912 |
msgid "Content Egg Settings"
|
1913 |
msgstr ""
|
1914 |
|
1915 |
-
#: application/components/AffiliateFeedParserModule.php:
|
1916 |
msgid "Product import is in progress"
|
1917 |
msgstr ""
|
1918 |
|
1919 |
-
#: application/components/AffiliateFeedParserModule.php:
|
1920 |
msgid ""
|
1921 |
"Your data feed is too large and cannot be imported. Use a smaller feed or "
|
1922 |
"increase <a target=\"_blank\" href=\"%s\">WP_MAX_MEMORY_LIMIT</a>."
|
@@ -1933,6 +1936,7 @@ msgstr ""
|
|
1933 |
#: application/modules/Aliexpress2/Aliexpress2Config.php:68
|
1934 |
#: application/modules/Amazon/AmazonConfig.php:88
|
1935 |
#: application/modules/Amazon/AmazonConfig_FREE.php:84
|
|
|
1936 |
#: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:50
|
1937 |
#: application/modules/Awin/AwinConfig.php:36
|
1938 |
#: application/modules/BingImages/BingImagesConfig.php:38
|
@@ -1945,6 +1949,7 @@ msgstr ""
|
|
1945 |
#: application/modules/Clickbank/ClickbankConfig.php:37
|
1946 |
#: application/modules/Daisycon/DaisyconConfig.php:64
|
1947 |
#: application/modules/Ebay/EbayConfig.php:120
|
|
|
1948 |
#: application/modules/Envato/EnvatoConfig.php:58
|
1949 |
#: application/modules/Flickr/FlickrConfig.php:37
|
1950 |
#: application/modules/Flipkart/FlipkartConfig.php:72
|
@@ -1955,7 +1960,7 @@ msgstr ""
|
|
1955 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:60
|
1956 |
#: application/modules/GoogleNews/GoogleNewsConfig.php:22
|
1957 |
#: application/modules/Impactradius/ImpactradiusConfig.php:51
|
1958 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
1959 |
#: application/modules/Linkshare/LinkshareConfig.php:37
|
1960 |
#: application/modules/Linkwise/LinkwiseConfig.php:59
|
1961 |
#: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:36
|
@@ -1978,7 +1983,7 @@ msgstr ""
|
|
1978 |
#: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:37
|
1979 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:37
|
1980 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:95
|
1981 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
1982 |
#: application/modules/Twitter/TwitterConfig.php:82
|
1983 |
#: application/modules/Udemy/UdemyConfig.php:66
|
1984 |
#: application/modules/Viglink/ViglinkConfig.php:52
|
@@ -2000,6 +2005,7 @@ msgstr ""
|
|
2000 |
#: application/modules/Aliexpress2/Aliexpress2Config.php:69
|
2001 |
#: application/modules/Amazon/AmazonConfig.php:89
|
2002 |
#: application/modules/Amazon/AmazonConfig_FREE.php:85
|
|
|
2003 |
#: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:51
|
2004 |
#: application/modules/Awin/AwinConfig.php:37
|
2005 |
#: application/modules/Bolcom/BolcomConfig.php:51
|
@@ -2009,11 +2015,12 @@ msgstr ""
|
|
2009 |
#: application/modules/Clickbank/ClickbankConfig.php:38
|
2010 |
#: application/modules/Daisycon/DaisyconConfig.php:65
|
2011 |
#: application/modules/Ebay/EbayConfig.php:121
|
|
|
2012 |
#: application/modules/Envato/EnvatoConfig.php:59
|
2013 |
#: application/modules/Flipkart/FlipkartConfig.php:73
|
2014 |
#: application/modules/GdeSlon/GdeSlonConfig.php:48
|
2015 |
#: application/modules/Impactradius/ImpactradiusConfig.php:52
|
2016 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
2017 |
#: application/modules/Linkshare/LinkshareConfig.php:38
|
2018 |
#: application/modules/Linkwise/LinkwiseConfig.php:60
|
2019 |
#: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:37
|
@@ -2027,7 +2034,7 @@ msgstr ""
|
|
2027 |
#: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:38
|
2028 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:38
|
2029 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:96
|
2030 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
2031 |
#: application/modules/Udemy/UdemyConfig.php:67
|
2032 |
#: application/modules/Viglink/ViglinkConfig.php:53
|
2033 |
#: application/modules/Walmart/WalmartConfig.php:49
|
@@ -2049,6 +2056,8 @@ msgstr ""
|
|
2049 |
#: application/modules/Bolcom/BolcomConfig.php:75
|
2050 |
#: application/modules/Daisycon/DaisyconConfig.php:74
|
2051 |
#: application/modules/Daisycon/DaisyconConfig.php:89
|
|
|
|
|
2052 |
#: application/modules/Envato/EnvatoConfig.php:68
|
2053 |
#: application/modules/Envato/EnvatoConfig.php:83
|
2054 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:60
|
@@ -2056,8 +2065,8 @@ msgstr ""
|
|
2056 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:80
|
2057 |
#: application/modules/Impactradius/ImpactradiusConfig.php:61
|
2058 |
#: application/modules/Impactradius/ImpactradiusConfig.php:76
|
2059 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
2060 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
2061 |
#: application/modules/Linkwise/LinkwiseConfig.php:69
|
2062 |
#: application/modules/Linkwise/LinkwiseConfig.php:84
|
2063 |
#: application/modules/LomadeeProducts/LomadeeProductsConfig.php:46
|
@@ -2079,12 +2088,13 @@ msgstr ""
|
|
2079 |
|
2080 |
#: application/components/AffiliateFeedParserModuleConfig.php:35
|
2081 |
#: application/modules/Amazon/AmazonConfig.php:105
|
|
|
2082 |
#: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:65
|
2083 |
#: application/modules/Awin/AwinConfig.php:51
|
2084 |
#: application/modules/Bolcom/BolcomConfig.php:65
|
2085 |
#: application/modules/Daisycon/DaisyconConfig.php:79
|
2086 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:70
|
2087 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
2088 |
#: application/modules/Linkwise/LinkwiseConfig.php:74
|
2089 |
#: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:47
|
2090 |
#: application/modules/LomadeeProducts/LomadeeProductsConfig.php:51
|
@@ -2103,6 +2113,7 @@ msgstr ""
|
|
2103 |
#: application/modules/Aliexpress2/Aliexpress2Config.php:84
|
2104 |
#: application/modules/Amazon/AmazonConfig.php:106
|
2105 |
#: application/modules/Amazon/AmazonConfig_FREE.php:102
|
|
|
2106 |
#: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:66
|
2107 |
#: application/modules/Awin/AwinConfig.php:52
|
2108 |
#: application/modules/Bolcom/BolcomConfig.php:66
|
@@ -2112,11 +2123,12 @@ msgstr ""
|
|
2112 |
#: application/modules/Clickbank/ClickbankConfig.php:54
|
2113 |
#: application/modules/Daisycon/DaisyconConfig.php:80
|
2114 |
#: application/modules/Ebay/EbayConfig.php:137
|
|
|
2115 |
#: application/modules/Envato/EnvatoConfig.php:74
|
2116 |
#: application/modules/Flipkart/FlipkartConfig.php:89
|
2117 |
#: application/modules/GdeSlon/GdeSlonConfig.php:64
|
2118 |
#: application/modules/Impactradius/ImpactradiusConfig.php:67
|
2119 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
2120 |
#: application/modules/Linkshare/LinkshareConfig.php:49
|
2121 |
#: application/modules/Linkwise/LinkwiseConfig.php:75
|
2122 |
#: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:48
|
@@ -2130,7 +2142,7 @@ msgstr ""
|
|
2130 |
#: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:49
|
2131 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:49
|
2132 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:107
|
2133 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
2134 |
#: application/modules/Udemy/UdemyConfig.php:82
|
2135 |
#: application/modules/Viglink/ViglinkConfig.php:63
|
2136 |
#: application/modules/Walmart/WalmartConfig.php:64
|
@@ -2159,9 +2171,10 @@ msgstr ""
|
|
2159 |
#: application/modules/Affiliatewindow/AffiliatewindowConfig.php:130
|
2160 |
#: application/modules/AffilinetProducts/AffilinetProductsConfig.php:167
|
2161 |
#: application/modules/Aliexpress/AliexpressConfig.php:260
|
2162 |
-
#: application/modules/Aliexpress2/Aliexpress2Config.php:
|
2163 |
#: application/modules/Amazon/AmazonConfig.php:303
|
2164 |
#: application/modules/Amazon/AmazonConfig_FREE.php:274
|
|
|
2165 |
#: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:218
|
2166 |
#: application/modules/Awin/AwinConfig.php:81
|
2167 |
#: application/modules/BingImages/BingImagesConfig.php:207
|
@@ -2171,6 +2184,7 @@ msgstr ""
|
|
2171 |
#: application/modules/Coupon/CouponConfig.php:22
|
2172 |
#: application/modules/Daisycon/DaisyconConfig.php:101
|
2173 |
#: application/modules/Ebay/EbayConfig.php:381
|
|
|
2174 |
#: application/modules/Envato/EnvatoConfig.php:219
|
2175 |
#: application/modules/Flickr/FlickrConfig.php:106
|
2176 |
#: application/modules/Flipkart/FlipkartConfig.php:104
|
@@ -2180,7 +2194,7 @@ msgstr ""
|
|
2180 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:186
|
2181 |
#: application/modules/GoogleNews/GoogleNewsConfig.php:54
|
2182 |
#: application/modules/Impactradius/ImpactradiusConfig.php:109
|
2183 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
2184 |
#: application/modules/Linkshare/LinkshareConfig.php:122
|
2185 |
#: application/modules/Linkwise/LinkwiseConfig.php:204
|
2186 |
#: application/modules/LomadeeProducts/LomadeeProductsConfig.php:95
|
@@ -2195,7 +2209,7 @@ msgstr ""
|
|
2195 |
#: application/modules/Shareasale/ShareasaleConfig.php:109
|
2196 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:159
|
2197 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:171
|
2198 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
2199 |
#: application/modules/Twitter/TwitterConfig.php:127
|
2200 |
#: application/modules/Udemy/UdemyConfig.php:215
|
2201 |
#: application/modules/Viglink/ViglinkConfig.php:141
|
@@ -2220,6 +2234,7 @@ msgstr ""
|
|
2220 |
#: application/modules/Coupon/CouponConfig.php:23
|
2221 |
#: application/modules/Daisycon/DaisyconConfig.php:102
|
2222 |
#: application/modules/Ebay/EbayConfig.php:382
|
|
|
2223 |
#: application/modules/Envato/EnvatoConfig.php:220
|
2224 |
#: application/modules/Flickr/FlickrConfig.php:107
|
2225 |
#: application/modules/Flipkart/FlipkartConfig.php:105
|
@@ -2229,7 +2244,7 @@ msgstr ""
|
|
2229 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:187
|
2230 |
#: application/modules/GoogleNews/GoogleNewsConfig.php:55
|
2231 |
#: application/modules/Impactradius/ImpactradiusConfig.php:110
|
2232 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
2233 |
#: application/modules/Linkshare/LinkshareConfig.php:123
|
2234 |
#: application/modules/Linkwise/LinkwiseConfig.php:205
|
2235 |
#: application/modules/LomadeeProducts/LomadeeProductsConfig.php:96
|
@@ -2243,7 +2258,7 @@ msgstr ""
|
|
2243 |
#: application/modules/Shareasale/ShareasaleConfig.php:110
|
2244 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:160
|
2245 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:172
|
2246 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
2247 |
#: application/modules/Twitter/TwitterConfig.php:128
|
2248 |
#: application/modules/Udemy/UdemyConfig.php:216
|
2249 |
#: application/modules/Viglink/ViglinkConfig.php:142
|
@@ -2253,7 +2268,7 @@ msgstr ""
|
|
2253 |
msgid "Save images on server"
|
2254 |
msgstr ""
|
2255 |
|
2256 |
-
#: application/components/AffiliateFeedParserModuleConfig.php:
|
2257 |
#: application/components/AffiliateParserModuleConfig.php:52
|
2258 |
msgid "Cron"
|
2259 |
msgstr ""
|
@@ -2265,7 +2280,7 @@ msgid ""
|
|
2265 |
msgstr ""
|
2266 |
|
2267 |
#: application/components/AffiliateParserModuleConfig.php:35
|
2268 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
2269 |
msgid "Price update"
|
2270 |
msgstr ""
|
2271 |
|
@@ -2447,19 +2462,19 @@ msgstr ""
|
|
2447 |
msgid "Make links with local 301 redirect"
|
2448 |
msgstr ""
|
2449 |
|
2450 |
-
#: application/helpers/TemplateHelper.php:
|
2451 |
msgid "today"
|
2452 |
msgstr ""
|
2453 |
|
2454 |
-
#: application/helpers/TemplateHelper.php:
|
2455 |
msgid "%d day ago"
|
2456 |
msgstr ""
|
2457 |
|
2458 |
-
#: application/helpers/TemplateHelper.php:
|
2459 |
msgid "in stock"
|
2460 |
msgstr ""
|
2461 |
|
2462 |
-
#: application/helpers/TemplateHelper.php:
|
2463 |
msgid "out of stock"
|
2464 |
msgstr ""
|
2465 |
|
@@ -2505,7 +2520,7 @@ msgstr ""
|
|
2505 |
msgid "Stock"
|
2506 |
msgstr ""
|
2507 |
|
2508 |
-
#: application/models/ProductModel.php:
|
2509 |
msgid "Unknown"
|
2510 |
msgstr ""
|
2511 |
|
@@ -2529,6 +2544,8 @@ msgstr ""
|
|
2529 |
#: application/modules/Amazon/AmazonConfig.php:116
|
2530 |
#: application/modules/Amazon/AmazonConfig_FREE.php:95
|
2531 |
#: application/modules/Amazon/AmazonConfig_FREE.php:112
|
|
|
|
|
2532 |
#: application/modules/Clickbank/ClickbankConfig.php:47
|
2533 |
#: application/modules/Clickbank/ClickbankConfig.php:63
|
2534 |
#: application/modules/RssFetcher/RssFetcherConfig.php:47
|
@@ -2551,6 +2568,7 @@ msgstr ""
|
|
2551 |
#: application/modules/CjProducts/CjProductsConfig.php:74
|
2552 |
#: application/modules/Clickbank/ClickbankConfig.php:53
|
2553 |
#: application/modules/Ebay/EbayConfig.php:136
|
|
|
2554 |
#: application/modules/Envato/EnvatoConfig.php:73
|
2555 |
#: application/modules/Flipkart/FlipkartConfig.php:88
|
2556 |
#: application/modules/GdeSlon/GdeSlonConfig.php:63
|
@@ -2564,7 +2582,7 @@ msgstr ""
|
|
2564 |
#: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:48
|
2565 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:48
|
2566 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:106
|
2567 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
2568 |
#: application/modules/Udemy/UdemyConfig.php:81
|
2569 |
#: application/modules/Viglink/ViglinkConfig.php:62
|
2570 |
#: application/modules/Walmart/WalmartConfig.php:63
|
@@ -2589,32 +2607,38 @@ msgstr ""
|
|
2589 |
#: application/modules/AE/AEConfig.php:78
|
2590 |
#: application/modules/Amazon/AmazonConfig.php:311
|
2591 |
#: application/modules/Amazon/AmazonConfig_FREE.php:281
|
|
|
2592 |
msgid "Small logos"
|
2593 |
msgstr ""
|
2594 |
|
2595 |
#: application/modules/AE/AEConfig.php:81
|
2596 |
#: application/modules/Amazon/AmazonConfig.php:316
|
2597 |
#: application/modules/Amazon/AmazonConfig_FREE.php:282
|
|
|
2598 |
msgid "Show small logos"
|
2599 |
msgstr ""
|
2600 |
|
2601 |
#: application/modules/AE/AEConfig.php:82
|
2602 |
#: application/modules/Amazon/AmazonConfig.php:317
|
|
|
2603 |
msgid "Hide small logos"
|
2604 |
msgstr ""
|
2605 |
|
2606 |
#: application/modules/AE/AEConfig.php:87
|
2607 |
#: application/modules/Amazon/AmazonConfig.php:322
|
|
|
2608 |
msgid "Large logos"
|
2609 |
msgstr ""
|
2610 |
|
2611 |
#: application/modules/AE/AEConfig.php:90
|
2612 |
#: application/modules/Amazon/AmazonConfig.php:325
|
|
|
2613 |
msgid "Show large logos"
|
2614 |
msgstr ""
|
2615 |
|
2616 |
#: application/modules/AE/AEConfig.php:91
|
2617 |
#: application/modules/Amazon/AmazonConfig.php:326
|
|
|
2618 |
msgid "Hide large logos"
|
2619 |
msgstr ""
|
2620 |
|
@@ -2734,8 +2758,9 @@ msgstr ""
|
|
2734 |
#: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:169
|
2735 |
#: application/modules/CityadsProducts/CityadsProductsConfig.php:130
|
2736 |
#: application/modules/Ebay/EbayConfig.php:316
|
|
|
2737 |
#: application/modules/Impactradius/ImpactradiusConfig.php:81
|
2738 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
2739 |
#: application/modules/Linkwise/LinkwiseConfig.php:143
|
2740 |
#: application/modules/Optimisemedia/OptimisemediaConfig.php:138
|
2741 |
#: application/modules/PayTM/PayTMConfig.php:71
|
@@ -2751,8 +2776,9 @@ msgstr ""
|
|
2751 |
#: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:179
|
2752 |
#: application/modules/CityadsProducts/CityadsProductsConfig.php:140
|
2753 |
#: application/modules/Ebay/EbayConfig.php:306
|
|
|
2754 |
#: application/modules/Impactradius/ImpactradiusConfig.php:91
|
2755 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
2756 |
#: application/modules/Linkwise/LinkwiseConfig.php:153
|
2757 |
#: application/modules/Optimisemedia/OptimisemediaConfig.php:148
|
2758 |
#: application/modules/PayTM/PayTMConfig.php:81
|
@@ -2777,7 +2803,7 @@ msgstr ""
|
|
2777 |
#: application/modules/GoogleBooks/GoogleBooksConfig.php:86
|
2778 |
#: application/modules/GoogleNews/GoogleNewsConfig.php:61
|
2779 |
#: application/modules/Impactradius/ImpactradiusConfig.php:116
|
2780 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
2781 |
#: application/modules/Linkshare/LinkshareConfig.php:129
|
2782 |
#: application/modules/Linkwise/LinkwiseConfig.php:182
|
2783 |
#: application/modules/Optimisemedia/OptimisemediaConfig.php:172
|
@@ -2786,7 +2812,7 @@ msgstr ""
|
|
2786 |
#: application/modules/Pepperjam/PepperjamConfig.php:148
|
2787 |
#: application/modules/Shareasale/ShareasaleConfig.php:116
|
2788 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:166
|
2789 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
2790 |
#: application/modules/VkNews/VkNewsConfig.php:51
|
2791 |
#: application/modules/Walmart/WalmartConfig.php:142
|
2792 |
#: application/modules/Youtube/YoutubeConfig.php:87
|
@@ -2810,7 +2836,6 @@ msgstr ""
|
|
2810 |
#: application/modules/GoogleBooks/GoogleBooksConfig.php:87
|
2811 |
#: application/modules/GoogleNews/GoogleNewsConfig.php:62
|
2812 |
#: application/modules/Impactradius/ImpactradiusConfig.php:117
|
2813 |
-
#: application/modules/Kelkoo/KelkooConfig.php:227
|
2814 |
#: application/modules/Linkshare/LinkshareConfig.php:130
|
2815 |
#: application/modules/Linkwise/LinkwiseConfig.php:183
|
2816 |
#: application/modules/Optimisemedia/OptimisemediaConfig.php:173
|
@@ -2819,7 +2844,7 @@ msgstr ""
|
|
2819 |
#: application/modules/Pepperjam/PepperjamConfig.php:149
|
2820 |
#: application/modules/Shareasale/ShareasaleConfig.php:117
|
2821 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:167
|
2822 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
2823 |
#: application/modules/VkNews/VkNewsConfig.php:52
|
2824 |
#: application/modules/Walmart/WalmartConfig.php:143
|
2825 |
#: application/modules/Youtube/YoutubeConfig.php:88
|
@@ -2862,8 +2887,10 @@ msgstr ""
|
|
2862 |
#: application/modules/Bolcom/views/update_panel.php:2
|
2863 |
#: application/modules/Daisycon/views/search_panel.php:2
|
2864 |
#: application/modules/Daisycon/views/update_panel.php:2
|
2865 |
-
#: application/modules/Ebay/views/search_panel.php:
|
2866 |
#: application/modules/Ebay/views/update_panel.php:2
|
|
|
|
|
2867 |
#: application/modules/Feed/views/search_panel.php:2
|
2868 |
#: application/modules/Feed/views/update_panel.php:2
|
2869 |
#: application/modules/Impactradius/views/search_panel.php:2
|
@@ -2902,8 +2929,10 @@ msgstr ""
|
|
2902 |
#: application/modules/Bolcom/views/update_panel.php:3
|
2903 |
#: application/modules/Daisycon/views/search_panel.php:3
|
2904 |
#: application/modules/Daisycon/views/update_panel.php:3
|
2905 |
-
#: application/modules/Ebay/views/search_panel.php:
|
2906 |
#: application/modules/Ebay/views/update_panel.php:3
|
|
|
|
|
2907 |
#: application/modules/Feed/views/search_panel.php:3
|
2908 |
#: application/modules/Feed/views/update_panel.php:3
|
2909 |
#: application/modules/Impactradius/views/search_panel.php:3
|
@@ -2945,14 +2974,14 @@ msgstr ""
|
|
2945 |
|
2946 |
#: application/modules/Affiliatewindow/AffiliatewindowConfig.php:61
|
2947 |
#: application/modules/Aliexpress/AliexpressConfig.php:232
|
2948 |
-
#: application/modules/Aliexpress2/Aliexpress2Config.php:
|
2949 |
#: application/modules/CityadsProducts/CityadsProductsConfig.php:190
|
2950 |
#: application/modules/Clickbank/ClickbankConfig.php:102
|
2951 |
#: application/modules/Ebay/EbayConfig.php:152
|
|
|
2952 |
#: application/modules/Flickr/FlickrConfig.php:59
|
2953 |
#: application/modules/GdeSlon/GdeSlonConfig.php:79
|
2954 |
#: application/modules/GoogleBooks/GoogleBooksConfig.php:97
|
2955 |
-
#: application/modules/Kelkoo/KelkooConfig.php:118
|
2956 |
#: application/modules/Linkshare/LinkshareConfig.php:81
|
2957 |
#: application/modules/Ozon/OzonConfig.php:64
|
2958 |
#: application/modules/PayTM/PayTMConfig.php:91
|
@@ -2966,13 +2995,13 @@ msgstr ""
|
|
2966 |
#: application/modules/Affiliatewindow/AffiliatewindowConfig.php:65
|
2967 |
#: application/modules/Affiliatewindow/AffiliatewindowConfig.php:105
|
2968 |
#: application/modules/Aliexpress/AliexpressConfig.php:236
|
2969 |
-
#: application/modules/Aliexpress2/Aliexpress2Config.php:
|
2970 |
#: application/modules/Bolcom/BolcomConfig.php:149
|
2971 |
#: application/modules/CityadsProducts/CityadsProductsConfig.php:194
|
2972 |
#: application/modules/Envato/EnvatoConfig.php:157
|
2973 |
#: application/modules/Envato/EnvatoConfig.php:175
|
2974 |
#: application/modules/GdeSlon/GdeSlonConfig.php:83
|
2975 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
2976 |
#: application/modules/Linkshare/LinkshareConfig.php:85
|
2977 |
#: application/modules/PayTM/PayTMConfig.php:95
|
2978 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:149
|
@@ -3067,12 +3096,12 @@ msgid "The \"Results\" can not be more than 40."
|
|
3067 |
msgstr ""
|
3068 |
|
3069 |
#: application/modules/Aliexpress/AliexpressConfig.php:90
|
3070 |
-
#: application/modules/Aliexpress2/Aliexpress2Config.php:
|
3071 |
msgid "Limit the search of goods by this category."
|
3072 |
msgstr ""
|
3073 |
|
3074 |
#: application/modules/Aliexpress/AliexpressConfig.php:93
|
3075 |
-
#: application/modules/Aliexpress2/Aliexpress2Config.php:
|
3076 |
#: application/modules/Pepperjam/PepperjamConfig.php:101
|
3077 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:63
|
3078 |
#: application/modules/Udemy/UdemyConfig.php:125
|
@@ -3095,7 +3124,7 @@ msgid "Currency"
|
|
3095 |
msgstr ""
|
3096 |
|
3097 |
#: application/modules/Aliexpress/AliexpressConfig.php:157
|
3098 |
-
#: application/modules/Aliexpress2/Aliexpress2Config.php:
|
3099 |
#: application/modules/Clickbank/ClickbankConfig.php:129
|
3100 |
#: application/modules/Udemy/UdemyConfig.php:96
|
3101 |
msgid "Language"
|
@@ -3183,6 +3212,7 @@ msgstr ""
|
|
3183 |
#: application/modules/Bolcom/views/update_panel.php:2
|
3184 |
#: application/modules/Daisycon/views/update_panel.php:2
|
3185 |
#: application/modules/Ebay/views/update_panel.php:2
|
|
|
3186 |
#: application/modules/Feed/views/update_panel.php:2
|
3187 |
#: application/modules/Kelkoo/views/update_panel.php:2
|
3188 |
#: application/modules/Linkwise/views/update_panel.php:2
|
@@ -3201,6 +3231,7 @@ msgstr ""
|
|
3201 |
#: application/modules/Bolcom/views/update_panel.php:3
|
3202 |
#: application/modules/Daisycon/views/update_panel.php:3
|
3203 |
#: application/modules/Ebay/views/update_panel.php:3
|
|
|
3204 |
#: application/modules/Feed/views/update_panel.php:3
|
3205 |
#: application/modules/Kelkoo/views/update_panel.php:3
|
3206 |
#: application/modules/Linkwise/views/update_panel.php:3
|
@@ -3235,35 +3266,35 @@ msgid ""
|
|
3235 |
"target=\"_blank\" href=\"%s\">here</a>."
|
3236 |
msgstr ""
|
3237 |
|
3238 |
-
#: application/modules/Aliexpress2/Aliexpress2Config.php:
|
3239 |
msgid "The price must be set in USD. Example: 99"
|
3240 |
msgstr ""
|
3241 |
|
3242 |
-
#: application/modules/Aliexpress2/Aliexpress2Config.php:
|
3243 |
msgid "The price must be set in USD. Example: 10"
|
3244 |
msgstr ""
|
3245 |
|
3246 |
-
#: application/modules/Aliexpress2/Aliexpress2Config.php:
|
3247 |
msgid "Platform"
|
3248 |
msgstr ""
|
3249 |
|
3250 |
-
#: application/modules/Aliexpress2/Aliexpress2Config.php:
|
3251 |
msgid "Price ASC"
|
3252 |
msgstr ""
|
3253 |
|
3254 |
-
#: application/modules/Aliexpress2/Aliexpress2Config.php:
|
3255 |
msgid "Price DESC"
|
3256 |
msgstr ""
|
3257 |
|
3258 |
-
#: application/modules/Aliexpress2/Aliexpress2Config.php:
|
3259 |
msgid "Volume ASC"
|
3260 |
msgstr ""
|
3261 |
|
3262 |
-
#: application/modules/Aliexpress2/Aliexpress2Config.php:
|
3263 |
msgid "Volume DESC"
|
3264 |
msgstr ""
|
3265 |
|
3266 |
-
#: application/modules/Aliexpress2/Aliexpress2Config.php:
|
3267 |
msgid "Save images locally"
|
3268 |
msgstr ""
|
3269 |
|
@@ -3295,10 +3326,12 @@ msgstr ""
|
|
3295 |
|
3296 |
#: application/modules/Amazon/AmazonConfig.php:58
|
3297 |
#: application/modules/Amazon/AmazonConfig_FREE.php:53
|
|
|
3298 |
msgid "Default Associate Tag"
|
3299 |
msgstr ""
|
3300 |
|
3301 |
#: application/modules/Amazon/AmazonConfig.php:59
|
|
|
3302 |
msgid ""
|
3303 |
"An alphanumeric token that uniquely identifies you as an Associate. To "
|
3304 |
"obtain an Associate Tag, refer to <a target=\"_blank\" href=\"https://"
|
@@ -3308,15 +3341,19 @@ msgstr ""
|
|
3308 |
|
3309 |
#: application/modules/Amazon/AmazonConfig.php:67
|
3310 |
#: application/modules/Amazon/AmazonConfig_FREE.php:62
|
|
|
3311 |
msgid "The \"Tracking ID\" can not be empty."
|
3312 |
msgstr ""
|
3313 |
|
3314 |
#: application/modules/Amazon/AmazonConfig.php:73
|
3315 |
#: application/modules/Amazon/AmazonConfig_FREE.php:76
|
|
|
|
|
3316 |
msgid "Default locale"
|
3317 |
msgstr ""
|
3318 |
|
3319 |
#: application/modules/Amazon/AmazonConfig.php:74
|
|
|
3320 |
msgid ""
|
3321 |
"Your Amazon Associates tag works only in the locale in which you register. "
|
3322 |
"If you want to be an Amazon Associate in more than one locale, you must "
|
@@ -3336,20 +3373,24 @@ msgstr ""
|
|
3336 |
#: application/modules/Amazon/AmazonConfig.php:90
|
3337 |
#: application/modules/Amazon/AmazonConfig_FREE.php:86
|
3338 |
#: application/modules/Amazon/AmazonConfig_FREE.php:103
|
|
|
3339 |
msgid "It needs a bit more time to get more than 10 results in one request"
|
3340 |
msgstr ""
|
3341 |
|
3342 |
#: application/modules/Amazon/AmazonConfig.php:107
|
|
|
3343 |
msgid "It needs a bit more time to get more than 10 results in one request."
|
3344 |
msgstr ""
|
3345 |
|
3346 |
#: application/modules/Amazon/AmazonConfig.php:122
|
3347 |
#: application/modules/Amazon/AmazonConfig_FREE.php:118
|
|
|
3348 |
msgid "Link type"
|
3349 |
msgstr ""
|
3350 |
|
3351 |
#: application/modules/Amazon/AmazonConfig.php:123
|
3352 |
#: application/modules/Amazon/AmazonConfig_FREE.php:119
|
|
|
3353 |
msgid ""
|
3354 |
"Type of partner links. Know more about amazon <a target=\"_blank\" href="
|
3355 |
"\"https://affiliate-program.amazon.com/gp/associates/help/t2/a11\">90 day "
|
@@ -3446,6 +3487,7 @@ msgid ""
|
|
3446 |
msgstr ""
|
3447 |
|
3448 |
#: application/modules/Amazon/AmazonConfig.php:229
|
|
|
3449 |
msgid "Condition"
|
3450 |
msgstr ""
|
3451 |
|
@@ -3505,6 +3547,7 @@ msgstr ""
|
|
3505 |
|
3506 |
#: application/modules/Amazon/AmazonConfig.php:269
|
3507 |
#: application/modules/Ebay/EbayConfig.php:238
|
|
|
3508 |
msgid "Free Shipping"
|
3509 |
msgstr ""
|
3510 |
|
@@ -3550,16 +3593,20 @@ msgid ""
|
|
3550 |
msgstr ""
|
3551 |
|
3552 |
#: application/modules/Amazon/AmazonConfig.php:304
|
|
|
3553 |
msgid "Save images to local server"
|
3554 |
msgstr ""
|
3555 |
|
3556 |
#: application/modules/Amazon/AmazonConfig.php:305
|
3557 |
#: application/modules/Amazon/AmazonConfig.php:313
|
|
|
|
|
3558 |
msgid "Enabling this option may violate API rules."
|
3559 |
msgstr ""
|
3560 |
|
3561 |
#: application/modules/Amazon/AmazonConfig.php:314
|
3562 |
#: application/modules/Amazon/AmazonConfig_FREE.php:282
|
|
|
3563 |
msgid ""
|
3564 |
"Read more: <a target=\"_blank\" href=\"%s\">Amazon brand usage guidelines</"
|
3565 |
"a>."
|
@@ -3567,11 +3614,13 @@ msgstr ""
|
|
3567 |
|
3568 |
#: application/modules/Amazon/AmazonConfig.php:335
|
3569 |
#: application/modules/Amazon/AmazonConfig_FREE.php:292
|
|
|
3570 |
msgid "Associate Tag for %s locale"
|
3571 |
msgstr ""
|
3572 |
|
3573 |
#: application/modules/Amazon/AmazonConfig.php:336
|
3574 |
#: application/modules/Amazon/AmazonConfig_FREE.php:293
|
|
|
3575 |
msgid ""
|
3576 |
"Type here your tracking ID for this locale if you need multiple locale "
|
3577 |
"parsing"
|
@@ -3683,14 +3732,14 @@ msgstr ""
|
|
3683 |
|
3684 |
#: application/modules/Amazon/AmazonConfig_FREE.php:173
|
3685 |
#: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:170
|
3686 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
3687 |
#: application/modules/Linkwise/LinkwiseConfig.php:144
|
3688 |
msgid "Example, 8.99"
|
3689 |
msgstr ""
|
3690 |
|
3691 |
#: application/modules/Amazon/AmazonConfig_FREE.php:183
|
3692 |
#: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:180
|
3693 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
3694 |
#: application/modules/Linkwise/LinkwiseConfig.php:154
|
3695 |
msgid "Example, 98.50"
|
3696 |
msgstr ""
|
@@ -3786,10 +3835,10 @@ msgstr ""
|
|
3786 |
|
3787 |
#: application/modules/Amazon/templates/data_compare.php:98
|
3788 |
#: application/modules/Ozon/templates/data_compare.php:78
|
3789 |
-
#: application/templates/blocks/item_row.php:
|
3790 |
-
#: application/templates/blocks/list_row.php:
|
3791 |
#: application/templates/data_price_tracker_alert.php:48
|
3792 |
-
#: templates/block_offers_logo.php:
|
3793 |
#: templates/wdgt_price_movers_list.php:48
|
3794 |
msgid "as of %s"
|
3795 |
msgstr ""
|
@@ -3892,17 +3941,18 @@ msgstr ""
|
|
3892 |
#: application/modules/Daisycon/DaisyconConfig.php:32
|
3893 |
#: application/modules/Ebay/EbayConfig.php:31
|
3894 |
#: application/modules/Ebay/EbayConfig.php:46
|
|
|
|
|
3895 |
#: application/modules/Envato/EnvatoConfig.php:31
|
3896 |
#: application/modules/Feed/FeedConfig.php:35
|
3897 |
#: application/modules/Feed/FeedConfig.php:54
|
3898 |
-
#: application/modules/Feed/FeedConfig.php:
|
3899 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:31
|
3900 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:45
|
3901 |
#: application/modules/Impactradius/ImpactradiusConfig.php:32
|
3902 |
#: application/modules/Impactradius/ImpactradiusConfig.php:46
|
3903 |
#: application/modules/Kelkoo/KelkooConfig.php:31
|
3904 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
3905 |
-
#: application/modules/Kelkoo/KelkooConfig.php:83
|
3906 |
#: application/modules/Linkwise/LinkwiseConfig.php:31
|
3907 |
#: application/modules/Linkwise/LinkwiseConfig.php:45
|
3908 |
#: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:31
|
@@ -3914,9 +3964,9 @@ msgstr ""
|
|
3914 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:31
|
3915 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:45
|
3916 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:60
|
3917 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
3918 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
3919 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
3920 |
#: application/modules/Udemy/UdemyConfig.php:31
|
3921 |
#: application/modules/Udemy/UdemyConfig.php:46
|
3922 |
#: application/modules/Viglink/ViglinkConfig.php:33
|
@@ -4096,10 +4146,10 @@ msgstr ""
|
|
4096 |
#: application/modules/Daisycon/DaisyconModule.php:31
|
4097 |
#: application/modules/GdeSlon/GdeSlonModule.php:31
|
4098 |
#: application/modules/Impactradius/ImpactradiusModule.php:29
|
4099 |
-
#: application/modules/Kelkoo/KelkooModule.php:
|
4100 |
#: application/modules/Pepperjam/PepperjamModule.php:29
|
4101 |
#: application/modules/TradetrackerProducts/TradetrackerProductsModule.php:28
|
4102 |
-
#: application/modules/Walmart/WalmartModule.php:
|
4103 |
msgid "Adds products from %s."
|
4104 |
msgstr ""
|
4105 |
|
@@ -4467,7 +4517,7 @@ msgid ""
|
|
4467 |
msgstr ""
|
4468 |
|
4469 |
#: application/modules/Bolcom/BolcomConfig.php:81
|
4470 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
4471 |
msgid "SubID is a parameter that allows for the tracking of sales separately."
|
4472 |
msgstr ""
|
4473 |
|
@@ -4512,13 +4562,11 @@ msgid "Sales ranking descending"
|
|
4512 |
msgstr ""
|
4513 |
|
4514 |
#: application/modules/Bolcom/BolcomConfig.php:152
|
4515 |
-
#: application/modules/Kelkoo/KelkooConfig.php:122
|
4516 |
#: application/modules/Ozon/OzonConfig.php:82
|
4517 |
msgid "Price ascending"
|
4518 |
msgstr ""
|
4519 |
|
4520 |
#: application/modules/Bolcom/BolcomConfig.php:153
|
4521 |
-
#: application/modules/Kelkoo/KelkooConfig.php:123
|
4522 |
#: application/modules/Ozon/OzonConfig.php:83
|
4523 |
msgid "Price descending"
|
4524 |
msgstr ""
|
@@ -4732,6 +4780,18 @@ msgstr ""
|
|
4732 |
msgid "Advertisers"
|
4733 |
msgstr ""
|
4734 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4735 |
#: application/modules/CjLinks/CjLinksModule.php:28
|
4736 |
msgid ""
|
4737 |
"Adds text links, coupons, banners from CJ.com. You must have approval from "
|
@@ -4896,11 +4956,15 @@ msgstr ""
|
|
4896 |
|
4897 |
#: application/modules/Ebay/EbayConfig.php:23
|
4898 |
#: application/modules/Ebay/EbayConfig.php:38
|
|
|
|
|
4899 |
msgid "Your application's OAuth credentials."
|
4900 |
msgstr ""
|
4901 |
|
4902 |
#: application/modules/Ebay/EbayConfig.php:23
|
4903 |
#: application/modules/Ebay/EbayConfig.php:38
|
|
|
|
|
4904 |
msgid ""
|
4905 |
"You can get it in <a target=\"_blank\" href=\"%s\">eBay Developers Program</"
|
4906 |
"a>."
|
@@ -4957,6 +5021,8 @@ msgid ""
|
|
4957 |
msgstr ""
|
4958 |
|
4959 |
#: application/modules/Ebay/EbayConfig.php:102
|
|
|
|
|
4960 |
#: application/modules/Ozon/OzonConfig.php:32
|
4961 |
msgid "Deeplink"
|
4962 |
msgstr ""
|
@@ -4973,7 +5039,7 @@ msgstr ""
|
|
4973 |
|
4974 |
#: application/modules/Ebay/EbayConfig.php:112
|
4975 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:67
|
4976 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
4977 |
msgid "Locale"
|
4978 |
msgstr ""
|
4979 |
|
@@ -5002,6 +5068,7 @@ msgid ""
|
|
5002 |
msgstr ""
|
5003 |
|
5004 |
#: application/modules/Ebay/EbayConfig.php:180
|
|
|
5005 |
msgid "Search in description"
|
5006 |
msgstr ""
|
5007 |
|
@@ -5089,26 +5156,32 @@ msgid "Type of auction"
|
|
5089 |
msgstr ""
|
5090 |
|
5091 |
#: application/modules/Ebay/EbayConfig.php:286
|
|
|
5092 |
msgid "Maximum bids"
|
5093 |
msgstr ""
|
5094 |
|
5095 |
#: application/modules/Ebay/EbayConfig.php:287
|
|
|
5096 |
msgid "Example, 10"
|
5097 |
msgstr ""
|
5098 |
|
5099 |
#: application/modules/Ebay/EbayConfig.php:296
|
|
|
5100 |
msgid "Minimum bids"
|
5101 |
msgstr ""
|
5102 |
|
5103 |
#: application/modules/Ebay/EbayConfig.php:297
|
|
|
5104 |
msgid "Example, 3"
|
5105 |
msgstr ""
|
5106 |
|
5107 |
#: application/modules/Ebay/EbayConfig.php:307
|
|
|
5108 |
msgid "Example, 300.50"
|
5109 |
msgstr ""
|
5110 |
|
5111 |
#: application/modules/Ebay/EbayConfig.php:317
|
|
|
5112 |
msgid "Example, 10.98"
|
5113 |
msgstr ""
|
5114 |
|
@@ -5158,7 +5231,7 @@ msgid ""
|
|
5158 |
"one searching"
|
5159 |
msgstr ""
|
5160 |
|
5161 |
-
#: application/modules/Ebay/EbayModule.php:
|
5162 |
msgid ""
|
5163 |
"Starting on July 1, 2021, applications using Shopping API calls must "
|
5164 |
"authenticate with an OAuth application access token. Please visit <a href="
|
@@ -5166,6 +5239,179 @@ msgid ""
|
|
5166 |
"authentication."
|
5167 |
msgstr ""
|
5168 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5169 |
#: application/modules/Envato/EnvatoConfig.php:23
|
5170 |
msgid ""
|
5171 |
"You can <a href=\"https://build.envato.com/create-token/\">generate a "
|
@@ -5278,7 +5524,7 @@ msgid "Feed name"
|
|
5278 |
msgstr ""
|
5279 |
|
5280 |
#: application/modules/Feed/FeedConfig.php:27
|
5281 |
-
#: application/modules/Feed/FeedConfig.php:
|
5282 |
msgid "For example: %s"
|
5283 |
msgstr ""
|
5284 |
|
@@ -5287,7 +5533,7 @@ msgid "Feed download URL"
|
|
5287 |
msgstr ""
|
5288 |
|
5289 |
#: application/modules/Feed/FeedConfig.php:45
|
5290 |
-
msgid "CSV format
|
5291 |
msgstr ""
|
5292 |
|
5293 |
#: application/modules/Feed/FeedConfig.php:46
|
@@ -5295,47 +5541,63 @@ msgid "Make sure your unzipped feed size is less than %s."
|
|
5295 |
msgstr ""
|
5296 |
|
5297 |
#: application/modules/Feed/FeedConfig.php:64
|
5298 |
-
msgid "
|
5299 |
msgstr ""
|
5300 |
|
5301 |
#: application/modules/Feed/FeedConfig.php:67
|
5302 |
-
msgid "
|
5303 |
msgstr ""
|
5304 |
|
5305 |
#: application/modules/Feed/FeedConfig.php:73
|
5306 |
-
msgid "
|
|
|
|
|
|
|
|
|
5307 |
msgstr ""
|
5308 |
|
5309 |
#: application/modules/Feed/FeedConfig.php:82
|
|
|
|
|
|
|
|
|
5310 |
#: application/modules/Viglink/ViglinkConfig.php:135
|
5311 |
msgid "Default currency"
|
5312 |
msgstr ""
|
5313 |
|
5314 |
-
#: application/modules/Feed/FeedConfig.php:
|
5315 |
msgid "Default merchant domain"
|
5316 |
msgstr ""
|
5317 |
|
5318 |
-
#: application/modules/Feed/FeedConfig.php:
|
5319 |
msgid "Field mapping"
|
5320 |
msgstr ""
|
5321 |
|
5322 |
-
#: application/modules/Feed/FeedConfig.php:
|
5323 |
msgid "Please fill out all required mapping fields."
|
5324 |
msgstr ""
|
5325 |
|
5326 |
-
#: application/modules/Feed/FeedConfig.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5327 |
msgid "(required)"
|
5328 |
msgstr ""
|
5329 |
|
5330 |
-
#: application/modules/Feed/FeedConfig.php:
|
5331 |
msgid "(optional)"
|
5332 |
msgstr ""
|
5333 |
|
5334 |
-
#: application/modules/Feed/FeedConfig.php:
|
5335 |
msgid "In your feed"
|
5336 |
msgstr ""
|
5337 |
|
5338 |
-
#: application/modules/Feed/FeedModule.php:
|
5339 |
msgid "Add new"
|
5340 |
msgstr ""
|
5341 |
|
@@ -5770,109 +6032,69 @@ msgstr ""
|
|
5770 |
|
5771 |
#: application/modules/Kelkoo/KelkooConfig.php:23
|
5772 |
msgid ""
|
5773 |
-
"
|
5774 |
-
"
|
5775 |
-
"
|
5776 |
msgstr ""
|
5777 |
|
5778 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
5779 |
-
msgid ""
|
5780 |
-
"Before you can use it you must obtain a Affiliate Key from <a target=\"_blank"
|
5781 |
-
"\" href=\"https://partner.kelkoo.com/protected/ecommerceServices\">Kelkoo</"
|
5782 |
-
"a>."
|
5783 |
-
msgstr ""
|
5784 |
-
|
5785 |
-
#: application/modules/Kelkoo/KelkooConfig.php:50
|
5786 |
msgid "Region <span class=\"cegg_required\">*</span>"
|
5787 |
msgstr ""
|
5788 |
|
5789 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
5790 |
msgid "- Choose your region -"
|
5791 |
msgstr ""
|
5792 |
|
5793 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
5794 |
-
msgid "
|
5795 |
msgstr ""
|
5796 |
|
5797 |
#: application/modules/Kelkoo/KelkooConfig.php:124
|
5798 |
-
msgid "
|
5799 |
msgstr ""
|
5800 |
|
5801 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
5802 |
-
msgid "
|
5803 |
msgstr ""
|
5804 |
|
5805 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
5806 |
-
msgid "
|
5807 |
msgstr ""
|
5808 |
|
5809 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
5810 |
-
msgid "
|
5811 |
-
msgstr ""
|
5812 |
-
|
5813 |
-
#: application/modules/Kelkoo/KelkooConfig.php:135
|
5814 |
-
msgid "all the offers matching term 1 AND term 2"
|
5815 |
-
msgstr ""
|
5816 |
-
|
5817 |
-
#: application/modules/Kelkoo/KelkooConfig.php:136
|
5818 |
-
msgid "all the offers matching term 1 OR term 2"
|
5819 |
-
msgstr ""
|
5820 |
-
|
5821 |
-
#: application/modules/Kelkoo/KelkooConfig.php:141
|
5822 |
-
msgid "Automatic OR"
|
5823 |
-
msgstr ""
|
5824 |
-
|
5825 |
-
#: application/modules/Kelkoo/KelkooConfig.php:142
|
5826 |
-
msgid ""
|
5827 |
-
"Automatic search with a OR instead of AND if there is no results with AND "
|
5828 |
-
"query"
|
5829 |
-
msgstr ""
|
5830 |
-
|
5831 |
-
#: application/modules/Kelkoo/KelkooConfig.php:148
|
5832 |
-
msgid "Mobile friendly"
|
5833 |
-
msgstr ""
|
5834 |
-
|
5835 |
-
#: application/modules/Kelkoo/KelkooConfig.php:149
|
5836 |
-
msgid "Response will return mobile compliant offers only"
|
5837 |
msgstr ""
|
5838 |
|
5839 |
#: application/modules/Kelkoo/KelkooConfig.php:155
|
5840 |
-
msgid "Boost mobile results"
|
5841 |
-
msgstr ""
|
5842 |
-
|
5843 |
-
#: application/modules/Kelkoo/KelkooConfig.php:156
|
5844 |
-
msgid "Response will return mobile friendly offers at the top of the resultset"
|
5845 |
-
msgstr ""
|
5846 |
-
|
5847 |
-
#: application/modules/Kelkoo/KelkooConfig.php:157
|
5848 |
-
msgid ""
|
5849 |
-
"Offers from merchants that are not considered mobile friendly will also be "
|
5850 |
-
"returned but below those which are mobile friendly."
|
5851 |
-
msgstr ""
|
5852 |
-
|
5853 |
-
#: application/modules/Kelkoo/KelkooConfig.php:183
|
5854 |
msgid "Rebate percentage"
|
5855 |
msgstr ""
|
5856 |
|
5857 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
5858 |
msgid ""
|
5859 |
"When set to 30 for example, the response will return offers that have a sale "
|
5860 |
"price discounted by 30% or more."
|
5861 |
msgstr ""
|
5862 |
|
5863 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
5864 |
-
msgid "The category to search in. It is the category ID."
|
5865 |
-
msgstr ""
|
5866 |
-
|
5867 |
-
#: application/modules/Kelkoo/KelkooConfig.php:217
|
5868 |
#: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:117
|
5869 |
msgid "Merchant ID"
|
5870 |
msgstr ""
|
5871 |
|
5872 |
-
#: application/modules/Kelkoo/KelkooConfig.php:
|
5873 |
msgid "Limit the search to a specific merchant."
|
5874 |
msgstr ""
|
5875 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5876 |
#: application/modules/Linkshare/LinkshareConfig.php:23
|
5877 |
msgid ""
|
5878 |
"Linkshare access key. Go to your account in Linkshare and follow \"LINKS -> "
|
@@ -6039,10 +6261,6 @@ msgstr ""
|
|
6039 |
msgid "Lomadee affiliate network"
|
6040 |
msgstr ""
|
6041 |
|
6042 |
-
#: application/modules/LomadeeProducts/LomadeeProductsConfig.php:66
|
6043 |
-
msgid "Category ID"
|
6044 |
-
msgstr ""
|
6045 |
-
|
6046 |
#: application/modules/LomadeeProducts/LomadeeProductsConfig.php:86
|
6047 |
msgid "The way the offers are sorted."
|
6048 |
msgstr ""
|
@@ -6714,7 +6932,7 @@ msgid ""
|
|
6714 |
msgstr ""
|
6715 |
|
6716 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:94
|
6717 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
6718 |
msgid "Feed ID"
|
6719 |
msgstr ""
|
6720 |
|
@@ -6736,7 +6954,7 @@ msgid ""
|
|
6736 |
msgstr ""
|
6737 |
|
6738 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:23
|
6739 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
6740 |
msgid ""
|
6741 |
"You can find your Customer ID and Passphrase by logging onto your "
|
6742 |
"TradeTracker account and navagating to \"Creatives -> <a href=\"https://"
|
@@ -6745,7 +6963,7 @@ msgid ""
|
|
6745 |
msgstr ""
|
6746 |
|
6747 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:52
|
6748 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
6749 |
msgid ""
|
6750 |
"Login into your TradeTracker control panel. Click on \"<a href=\"https://"
|
6751 |
"affiliate.tradetracker.com/customerSite/list\">My Sites</a>\" in the Account "
|
@@ -6754,7 +6972,7 @@ msgid ""
|
|
6754 |
msgstr ""
|
6755 |
|
6756 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:68
|
6757 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
6758 |
msgid "Your TradeTracker locale."
|
6759 |
msgstr ""
|
6760 |
|
@@ -6778,12 +6996,12 @@ msgid "Banner Dimension ID"
|
|
6778 |
msgstr ""
|
6779 |
|
6780 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:137
|
6781 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
6782 |
msgid "Campaign ID"
|
6783 |
msgstr ""
|
6784 |
|
6785 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:146
|
6786 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
6787 |
msgid "Campaign Category ID"
|
6788 |
msgstr ""
|
6789 |
|
@@ -6795,29 +7013,29 @@ msgstr ""
|
|
6795 |
msgid "Include unsubscribed campaigns."
|
6796 |
msgstr ""
|
6797 |
|
6798 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
6799 |
msgid "Feed Category Name"
|
6800 |
msgstr ""
|
6801 |
|
6802 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
6803 |
#: application/modules/Viglink/ViglinkConfig.php:105
|
6804 |
msgid "Price From"
|
6805 |
msgstr ""
|
6806 |
|
6807 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
6808 |
#: application/modules/Viglink/ViglinkConfig.php:114
|
6809 |
msgid "Price To"
|
6810 |
msgstr ""
|
6811 |
|
6812 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
6813 |
msgid "Set this status if the product is not found."
|
6814 |
msgstr ""
|
6815 |
|
6816 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
6817 |
msgid "Time in seconds for updating prices. 0 - never update."
|
6818 |
msgstr ""
|
6819 |
|
6820 |
-
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:
|
6821 |
msgid "Experimental feature for this module."
|
6822 |
msgstr ""
|
6823 |
|
@@ -7092,7 +7310,7 @@ msgid ""
|
|
7092 |
"Parse customer reviews. It takes more time. Don't check if you don't need it."
|
7093 |
msgstr ""
|
7094 |
|
7095 |
-
#: application/modules/Walmart/WalmartModule.php:
|
7096 |
msgid "<a href=\"%s\">Walmart module</a> requires the OpenSSL PHP extension!"
|
7097 |
msgstr ""
|
7098 |
|
@@ -7201,13 +7419,13 @@ msgid ""
|
|
7201 |
msgstr ""
|
7202 |
|
7203 |
#: application/templates/blocks/item_after_price_row.php:12
|
7204 |
-
#: application/templates/blocks/list_row.php:
|
7205 |
#: templates/block_offers_logo.php:64 templates/block_price_comparison.php:51
|
7206 |
msgid "%d new from %s"
|
7207 |
msgstr ""
|
7208 |
|
7209 |
#: application/templates/blocks/item_after_price_row.php:15
|
7210 |
-
#: application/templates/blocks/list_row.php:
|
7211 |
#: templates/block_offers_logo.php:69 templates/block_price_comparison.php:56
|
7212 |
msgid "%d used from %s"
|
7213 |
msgstr ""
|
@@ -7297,7 +7515,7 @@ msgstr ""
|
|
7297 |
msgid "Create Your Free Price Drop Alert!"
|
7298 |
msgstr ""
|
7299 |
|
7300 |
-
#: templates/block_price_comparison.php:
|
7301 |
#: templates/block_price_comparison_card.php:55
|
7302 |
#: templates/block_text_links.php:39
|
7303 |
msgid "Last Amazon price update was: %s"
|
2 |
# This file is distributed under the same license as the Content Egg<stripfree> Pro</stripfree> package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Content Egg<stripfree> Pro</stripfree> 9.3.0\n"
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg\n"
|
7 |
+
"POT-Creation-Date: 2021-09-15 10:52:40+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
|
15 |
+
#: application/Autoupdate.php:87
|
16 |
msgid "New version of %s plugin."
|
17 |
msgstr ""
|
18 |
|
19 |
+
#: application/Autoupdate.php:88
|
20 |
msgid ""
|
21 |
"Please <a target=\"_blank\" href=\"%s\">find here</a> the releases notes."
|
22 |
msgstr ""
|
81 |
#: application/PriceMoversWidget.php:99 application/PriceMoversWidget.php:100
|
82 |
#: application/PriceMoversWidget.php:101 application/PriceMoversWidget.php:102
|
83 |
#: application/PriceMoversWidget.php:103 application/PriceMoversWidget.php:104
|
84 |
+
#: application/helpers/TemplateHelper.php:778
|
85 |
msgid "%d days ago"
|
86 |
msgstr ""
|
87 |
|
101 |
#: application/WooIntegrator.php:544
|
102 |
#: application/templates/blocks/grid_row.php:43
|
103 |
#: application/templates/blocks/item_row.php:37
|
104 |
+
#: application/templates/blocks/list_row.php:34
|
105 |
+
#: application/templates/data_list.php:28
|
106 |
#: application/templates/data_price_tracker_alert.php:43
|
107 |
#: templates/block_offers_logo.php:55 templates/block_price_comparison.php:44
|
108 |
msgid "Last updated on %s"
|
220 |
msgid "user guide"
|
221 |
msgstr ""
|
222 |
|
223 |
+
#: application/admin/EggMetabox.php:94
|
224 |
msgid "Configure and activate modules of Content Egg plugin"
|
225 |
msgstr ""
|
226 |
|
265 |
msgid "Error."
|
266 |
msgstr ""
|
267 |
|
268 |
+
#: application/admin/GeneralConfig.php:37 application/admin/PluginAdmin.php:112
|
269 |
msgid "Settings"
|
270 |
msgstr ""
|
271 |
|
369 |
|
370 |
#: application/admin/GeneralConfig.php:216
|
371 |
#: application/admin/views/_metabox_autoblog.php:415
|
372 |
+
#: application/modules/Aliexpress2/Aliexpress2Config.php:153
|
373 |
msgid "Minimum price"
|
374 |
msgstr ""
|
375 |
|
376 |
#: application/admin/GeneralConfig.php:217
|
377 |
#: application/admin/views/_metabox_autoblog.php:416
|
378 |
+
#: application/modules/Aliexpress2/Aliexpress2Config.php:143
|
379 |
msgid "Maximum price"
|
380 |
msgstr ""
|
381 |
|
494 |
msgstr ""
|
495 |
|
496 |
#: application/admin/GeneralConfig.php:301
|
497 |
+
#: application/modules/Kelkoo/KelkooConfig.php:220
|
498 |
msgid "The field \"%s\" can't be more than %d."
|
499 |
msgstr ""
|
500 |
|
651 |
msgstr ""
|
652 |
|
653 |
#: application/admin/GeneralConfig.php:452
|
654 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:198
|
655 |
msgid "Stock status"
|
656 |
msgstr ""
|
657 |
|
766 |
msgid "Translation"
|
767 |
msgstr ""
|
768 |
|
769 |
+
#: application/admin/GeneralConfig.php:545
|
770 |
+
msgid "Merchant settings"
|
771 |
+
msgstr ""
|
772 |
+
|
773 |
+
#: application/admin/GeneralConfig.php:554
|
774 |
+
msgid "Merchants"
|
775 |
+
msgstr ""
|
776 |
+
|
777 |
+
#: application/admin/GeneralConfig.php:594
|
778 |
+
#: application/admin/GeneralConfig.php:691
|
779 |
msgid "Domain name"
|
780 |
msgstr ""
|
781 |
|
782 |
+
#: application/admin/GeneralConfig.php:597
|
783 |
msgid "Logo URL"
|
784 |
msgstr ""
|
785 |
|
786 |
+
#: application/admin/GeneralConfig.php:654
|
787 |
msgid "Translated string"
|
788 |
msgstr ""
|
789 |
|
790 |
+
#: application/admin/GeneralConfig.php:695
|
791 |
+
msgid "Shop info"
|
792 |
+
msgstr ""
|
793 |
+
|
794 |
#: application/admin/ImportExportController.php:28
|
795 |
msgid "Import/Export"
|
796 |
msgstr ""
|
858 |
msgid " ago"
|
859 |
msgstr ""
|
860 |
|
861 |
+
#: application/admin/PluginAdmin.php:98
|
862 |
msgid "Are you sure?"
|
863 |
msgstr ""
|
864 |
|
918 |
msgstr ""
|
919 |
|
920 |
#: application/admin/ProductTable.php:79
|
921 |
+
#: application/models/ProductModel.php:182
|
922 |
#: application/modules/Awin/AwinConfig.php:66
|
923 |
#: application/modules/Daisycon/DaisyconConfig.php:94
|
924 |
#: application/modules/Impactradius/ImpactradiusConfig.php:101
|
926 |
msgstr ""
|
927 |
|
928 |
#: application/admin/ProductTable.php:81
|
929 |
+
#: application/models/ProductModel.php:183
|
930 |
msgid "Out of stock"
|
931 |
msgstr ""
|
932 |
|
939 |
msgstr ""
|
940 |
|
941 |
#: application/admin/ProductTable.php:222
|
942 |
+
#: application/modules/Aliexpress2/Aliexpress2Config.php:166
|
943 |
#: application/modules/BingImages/BingImagesConfig.php:92
|
944 |
#: application/modules/BingImages/BingImagesConfig.php:108
|
945 |
#: application/modules/BingImages/BingImagesConfig.php:121
|
1142 |
|
1143 |
#: application/admin/views/_metabox_autoblog.php:211
|
1144 |
msgid ""
|
1145 |
+
"You can use spin syntax with synonyms, for example, {Discount|Sale|Cheap}."
|
|
|
1146 |
msgstr ""
|
1147 |
|
1148 |
#: application/admin/views/_metabox_autoblog.php:218
|
1154 |
msgstr ""
|
1155 |
|
1156 |
#: application/admin/views/_metabox_autoblog.php:226
|
1157 |
+
msgid "Spin syntax and all tags from title template, will also work here."
|
|
|
|
|
|
|
1158 |
msgstr ""
|
1159 |
|
1160 |
#: application/admin/views/_metabox_autoblog.php:233
|
1189 |
|
1190 |
#: application/admin/views/_metabox_autoblog.php:300
|
1191 |
#: application/modules/Aliexpress/AliexpressConfig.php:89
|
1192 |
+
#: application/modules/Aliexpress2/Aliexpress2Config.php:134
|
1193 |
#: application/modules/CityadsProducts/CityadsProductsConfig.php:89
|
1194 |
+
#: application/modules/CjLinks/CjLinksConfig.php:136
|
1195 |
#: application/modules/Clickbank/ClickbankConfig.php:69
|
1196 |
#: application/modules/Ebay/EbayConfig.php:170
|
1197 |
#: application/modules/Linkshare/LinkshareConfig.php:106
|
1304 |
msgid "Comma separated list of tags."
|
1305 |
msgstr ""
|
1306 |
|
1307 |
+
#: application/admin/views/_metabox_autoblog.php:436
|
1308 |
+
#: application/admin/views/_metabox_autoblog.php:478
|
1309 |
+
msgid "Spin syntax and also all tags from title template, will also work here."
|
1310 |
+
msgstr ""
|
1311 |
+
|
1312 |
#: application/admin/views/_metabox_autoblog.php:443
|
1313 |
#: application/modules/Ebay/EbayConfig.php:194
|
1314 |
msgid "Product condition"
|
1321 |
#: application/modules/Amazon/AmazonConfig_FREE.php:196
|
1322 |
#: application/modules/BingImages/BingImagesConfig.php:93
|
1323 |
#: application/modules/CityadsProducts/CityadsProductsConfig.php:154
|
1324 |
+
#: application/modules/CjLinks/CjLinksConfig.php:99
|
1325 |
+
#: application/modules/CjLinks/CjLinksConfig.php:123
|
1326 |
+
#: application/modules/CjLinks/CjLinksConfig.php:140
|
1327 |
#: application/modules/Clickbank/ClickbankConfig.php:133
|
1328 |
#: application/modules/Envato/EnvatoConfig.php:135
|
1329 |
#: application/modules/GoogleBooks/GoogleBooksConfig.php:112
|
1330 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:121
|
1331 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:134
|
1332 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:154
|
1333 |
+
#: application/modules/Kelkoo/KelkooConfig.php:159
|
1334 |
#: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:73
|
1335 |
msgid "Any"
|
1336 |
msgstr ""
|
1393 |
msgstr ""
|
1394 |
|
1395 |
#: application/admin/views/_metabox_results.php:33
|
1396 |
+
#: application/helpers/TemplateHelper.php:370
|
1397 |
#: application/models/ProductModel.php:64
|
1398 |
#: application/modules/GdeSlon/GdeSlonConfig.php:84
|
1399 |
#: application/modules/LomadeeProducts/LomadeeProductsConfig.php:90
|
1451 |
msgid "EAN:"
|
1452 |
msgstr ""
|
1453 |
|
1454 |
+
#: application/admin/views/_metabox_search_results.php:27
|
1455 |
#: application/modules/CjLinks/views/search_results.php:17
|
1456 |
msgid "Coupon code:"
|
1457 |
msgstr ""
|
1478 |
msgid "Integration with Affiliate Egg"
|
1479 |
msgstr ""
|
1480 |
|
1481 |
+
#: application/admin/views/ae_integration.php:22
|
1482 |
+
msgid "Read more..."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1483 |
msgstr ""
|
1484 |
|
1485 |
+
#: application/admin/views/ae_integration.php:27
|
1486 |
+
msgid "Follow these steps to get started"
|
1487 |
msgstr ""
|
1488 |
|
1489 |
+
#: application/admin/views/ae_integration.php:29
|
1490 |
msgid ""
|
1491 |
+
"Install and activate <a target=\"_blank\" href=\"%s\">Affiliate Egg Pro</a>"
|
|
|
1492 |
msgstr ""
|
1493 |
|
1494 |
#: application/admin/views/autoblog_edit.php:8
|
1915 |
msgid "Content Egg Settings"
|
1916 |
msgstr ""
|
1917 |
|
1918 |
+
#: application/components/AffiliateFeedParserModule.php:390
|
1919 |
msgid "Product import is in progress"
|
1920 |
msgstr ""
|
1921 |
|
1922 |
+
#: application/components/AffiliateFeedParserModule.php:470
|
1923 |
msgid ""
|
1924 |
"Your data feed is too large and cannot be imported. Use a smaller feed or "
|
1925 |
"increase <a target=\"_blank\" href=\"%s\">WP_MAX_MEMORY_LIMIT</a>."
|
1936 |
#: application/modules/Aliexpress2/Aliexpress2Config.php:68
|
1937 |
#: application/modules/Amazon/AmazonConfig.php:88
|
1938 |
#: application/modules/Amazon/AmazonConfig_FREE.php:84
|
1939 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:48
|
1940 |
#: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:50
|
1941 |
#: application/modules/Awin/AwinConfig.php:36
|
1942 |
#: application/modules/BingImages/BingImagesConfig.php:38
|
1949 |
#: application/modules/Clickbank/ClickbankConfig.php:37
|
1950 |
#: application/modules/Daisycon/DaisyconConfig.php:64
|
1951 |
#: application/modules/Ebay/EbayConfig.php:120
|
1952 |
+
#: application/modules/Ebay2/Ebay2Config.php:87
|
1953 |
#: application/modules/Envato/EnvatoConfig.php:58
|
1954 |
#: application/modules/Flickr/FlickrConfig.php:37
|
1955 |
#: application/modules/Flipkart/FlipkartConfig.php:72
|
1960 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:60
|
1961 |
#: application/modules/GoogleNews/GoogleNewsConfig.php:22
|
1962 |
#: application/modules/Impactradius/ImpactradiusConfig.php:51
|
1963 |
+
#: application/modules/Kelkoo/KelkooConfig.php:93
|
1964 |
#: application/modules/Linkshare/LinkshareConfig.php:37
|
1965 |
#: application/modules/Linkwise/LinkwiseConfig.php:59
|
1966 |
#: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:36
|
1983 |
#: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:37
|
1984 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:37
|
1985 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:95
|
1986 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:104
|
1987 |
#: application/modules/Twitter/TwitterConfig.php:82
|
1988 |
#: application/modules/Udemy/UdemyConfig.php:66
|
1989 |
#: application/modules/Viglink/ViglinkConfig.php:52
|
2005 |
#: application/modules/Aliexpress2/Aliexpress2Config.php:69
|
2006 |
#: application/modules/Amazon/AmazonConfig.php:89
|
2007 |
#: application/modules/Amazon/AmazonConfig_FREE.php:85
|
2008 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:49
|
2009 |
#: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:51
|
2010 |
#: application/modules/Awin/AwinConfig.php:37
|
2011 |
#: application/modules/Bolcom/BolcomConfig.php:51
|
2015 |
#: application/modules/Clickbank/ClickbankConfig.php:38
|
2016 |
#: application/modules/Daisycon/DaisyconConfig.php:65
|
2017 |
#: application/modules/Ebay/EbayConfig.php:121
|
2018 |
+
#: application/modules/Ebay2/Ebay2Config.php:88
|
2019 |
#: application/modules/Envato/EnvatoConfig.php:59
|
2020 |
#: application/modules/Flipkart/FlipkartConfig.php:73
|
2021 |
#: application/modules/GdeSlon/GdeSlonConfig.php:48
|
2022 |
#: application/modules/Impactradius/ImpactradiusConfig.php:52
|
2023 |
+
#: application/modules/Kelkoo/KelkooConfig.php:94
|
2024 |
#: application/modules/Linkshare/LinkshareConfig.php:38
|
2025 |
#: application/modules/Linkwise/LinkwiseConfig.php:60
|
2026 |
#: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:37
|
2034 |
#: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:38
|
2035 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:38
|
2036 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:96
|
2037 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:105
|
2038 |
#: application/modules/Udemy/UdemyConfig.php:67
|
2039 |
#: application/modules/Viglink/ViglinkConfig.php:53
|
2040 |
#: application/modules/Walmart/WalmartConfig.php:49
|
2056 |
#: application/modules/Bolcom/BolcomConfig.php:75
|
2057 |
#: application/modules/Daisycon/DaisyconConfig.php:74
|
2058 |
#: application/modules/Daisycon/DaisyconConfig.php:89
|
2059 |
+
#: application/modules/Ebay2/Ebay2Config.php:97
|
2060 |
+
#: application/modules/Ebay2/Ebay2Config.php:112
|
2061 |
#: application/modules/Envato/EnvatoConfig.php:68
|
2062 |
#: application/modules/Envato/EnvatoConfig.php:83
|
2063 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:60
|
2065 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:80
|
2066 |
#: application/modules/Impactradius/ImpactradiusConfig.php:61
|
2067 |
#: application/modules/Impactradius/ImpactradiusConfig.php:76
|
2068 |
+
#: application/modules/Kelkoo/KelkooConfig.php:103
|
2069 |
+
#: application/modules/Kelkoo/KelkooConfig.php:118
|
2070 |
#: application/modules/Linkwise/LinkwiseConfig.php:69
|
2071 |
#: application/modules/Linkwise/LinkwiseConfig.php:84
|
2072 |
#: application/modules/LomadeeProducts/LomadeeProductsConfig.php:46
|
2088 |
|
2089 |
#: application/components/AffiliateFeedParserModuleConfig.php:35
|
2090 |
#: application/modules/Amazon/AmazonConfig.php:105
|
2091 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:65
|
2092 |
#: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:65
|
2093 |
#: application/modules/Awin/AwinConfig.php:51
|
2094 |
#: application/modules/Bolcom/BolcomConfig.php:65
|
2095 |
#: application/modules/Daisycon/DaisyconConfig.php:79
|
2096 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:70
|
2097 |
+
#: application/modules/Kelkoo/KelkooConfig.php:108
|
2098 |
#: application/modules/Linkwise/LinkwiseConfig.php:74
|
2099 |
#: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:47
|
2100 |
#: application/modules/LomadeeProducts/LomadeeProductsConfig.php:51
|
2113 |
#: application/modules/Aliexpress2/Aliexpress2Config.php:84
|
2114 |
#: application/modules/Amazon/AmazonConfig.php:106
|
2115 |
#: application/modules/Amazon/AmazonConfig_FREE.php:102
|
2116 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:66
|
2117 |
#: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:66
|
2118 |
#: application/modules/Awin/AwinConfig.php:52
|
2119 |
#: application/modules/Bolcom/BolcomConfig.php:66
|
2123 |
#: application/modules/Clickbank/ClickbankConfig.php:54
|
2124 |
#: application/modules/Daisycon/DaisyconConfig.php:80
|
2125 |
#: application/modules/Ebay/EbayConfig.php:137
|
2126 |
+
#: application/modules/Ebay2/Ebay2Config.php:103
|
2127 |
#: application/modules/Envato/EnvatoConfig.php:74
|
2128 |
#: application/modules/Flipkart/FlipkartConfig.php:89
|
2129 |
#: application/modules/GdeSlon/GdeSlonConfig.php:64
|
2130 |
#: application/modules/Impactradius/ImpactradiusConfig.php:67
|
2131 |
+
#: application/modules/Kelkoo/KelkooConfig.php:109
|
2132 |
#: application/modules/Linkshare/LinkshareConfig.php:49
|
2133 |
#: application/modules/Linkwise/LinkwiseConfig.php:75
|
2134 |
#: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:48
|
2142 |
#: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:49
|
2143 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:49
|
2144 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:107
|
2145 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:116
|
2146 |
#: application/modules/Udemy/UdemyConfig.php:82
|
2147 |
#: application/modules/Viglink/ViglinkConfig.php:63
|
2148 |
#: application/modules/Walmart/WalmartConfig.php:64
|
2171 |
#: application/modules/Affiliatewindow/AffiliatewindowConfig.php:130
|
2172 |
#: application/modules/AffilinetProducts/AffilinetProductsConfig.php:167
|
2173 |
#: application/modules/Aliexpress/AliexpressConfig.php:260
|
2174 |
+
#: application/modules/Aliexpress2/Aliexpress2Config.php:215
|
2175 |
#: application/modules/Amazon/AmazonConfig.php:303
|
2176 |
#: application/modules/Amazon/AmazonConfig_FREE.php:274
|
2177 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:93
|
2178 |
#: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:218
|
2179 |
#: application/modules/Awin/AwinConfig.php:81
|
2180 |
#: application/modules/BingImages/BingImagesConfig.php:207
|
2184 |
#: application/modules/Coupon/CouponConfig.php:22
|
2185 |
#: application/modules/Daisycon/DaisyconConfig.php:101
|
2186 |
#: application/modules/Ebay/EbayConfig.php:381
|
2187 |
+
#: application/modules/Ebay2/Ebay2Config.php:297
|
2188 |
#: application/modules/Envato/EnvatoConfig.php:219
|
2189 |
#: application/modules/Flickr/FlickrConfig.php:106
|
2190 |
#: application/modules/Flipkart/FlipkartConfig.php:104
|
2194 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:186
|
2195 |
#: application/modules/GoogleNews/GoogleNewsConfig.php:54
|
2196 |
#: application/modules/Impactradius/ImpactradiusConfig.php:109
|
2197 |
+
#: application/modules/Kelkoo/KelkooConfig.php:200
|
2198 |
#: application/modules/Linkshare/LinkshareConfig.php:122
|
2199 |
#: application/modules/Linkwise/LinkwiseConfig.php:204
|
2200 |
#: application/modules/LomadeeProducts/LomadeeProductsConfig.php:95
|
2209 |
#: application/modules/Shareasale/ShareasaleConfig.php:109
|
2210 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:159
|
2211 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:171
|
2212 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:180
|
2213 |
#: application/modules/Twitter/TwitterConfig.php:127
|
2214 |
#: application/modules/Udemy/UdemyConfig.php:215
|
2215 |
#: application/modules/Viglink/ViglinkConfig.php:141
|
2234 |
#: application/modules/Coupon/CouponConfig.php:23
|
2235 |
#: application/modules/Daisycon/DaisyconConfig.php:102
|
2236 |
#: application/modules/Ebay/EbayConfig.php:382
|
2237 |
+
#: application/modules/Ebay2/Ebay2Config.php:298
|
2238 |
#: application/modules/Envato/EnvatoConfig.php:220
|
2239 |
#: application/modules/Flickr/FlickrConfig.php:107
|
2240 |
#: application/modules/Flipkart/FlipkartConfig.php:105
|
2244 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:187
|
2245 |
#: application/modules/GoogleNews/GoogleNewsConfig.php:55
|
2246 |
#: application/modules/Impactradius/ImpactradiusConfig.php:110
|
2247 |
+
#: application/modules/Kelkoo/KelkooConfig.php:201
|
2248 |
#: application/modules/Linkshare/LinkshareConfig.php:123
|
2249 |
#: application/modules/Linkwise/LinkwiseConfig.php:205
|
2250 |
#: application/modules/LomadeeProducts/LomadeeProductsConfig.php:96
|
2258 |
#: application/modules/Shareasale/ShareasaleConfig.php:110
|
2259 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:160
|
2260 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:172
|
2261 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:181
|
2262 |
#: application/modules/Twitter/TwitterConfig.php:128
|
2263 |
#: application/modules/Udemy/UdemyConfig.php:216
|
2264 |
#: application/modules/Viglink/ViglinkConfig.php:142
|
2268 |
msgid "Save images on server"
|
2269 |
msgstr ""
|
2270 |
|
2271 |
+
#: application/components/AffiliateFeedParserModuleConfig.php:65
|
2272 |
#: application/components/AffiliateParserModuleConfig.php:52
|
2273 |
msgid "Cron"
|
2274 |
msgstr ""
|
2280 |
msgstr ""
|
2281 |
|
2282 |
#: application/components/AffiliateParserModuleConfig.php:35
|
2283 |
+
#: application/modules/Kelkoo/KelkooConfig.php:220
|
2284 |
msgid "Price update"
|
2285 |
msgstr ""
|
2286 |
|
2462 |
msgid "Make links with local 301 redirect"
|
2463 |
msgstr ""
|
2464 |
|
2465 |
+
#: application/helpers/TemplateHelper.php:774
|
2466 |
msgid "today"
|
2467 |
msgstr ""
|
2468 |
|
2469 |
+
#: application/helpers/TemplateHelper.php:780
|
2470 |
msgid "%d day ago"
|
2471 |
msgstr ""
|
2472 |
|
2473 |
+
#: application/helpers/TemplateHelper.php:887
|
2474 |
msgid "in stock"
|
2475 |
msgstr ""
|
2476 |
|
2477 |
+
#: application/helpers/TemplateHelper.php:889
|
2478 |
msgid "out of stock"
|
2479 |
msgstr ""
|
2480 |
|
2520 |
msgid "Stock"
|
2521 |
msgstr ""
|
2522 |
|
2523 |
+
#: application/models/ProductModel.php:184
|
2524 |
msgid "Unknown"
|
2525 |
msgstr ""
|
2526 |
|
2544 |
#: application/modules/Amazon/AmazonConfig.php:116
|
2545 |
#: application/modules/Amazon/AmazonConfig_FREE.php:95
|
2546 |
#: application/modules/Amazon/AmazonConfig_FREE.php:112
|
2547 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:59
|
2548 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:76
|
2549 |
#: application/modules/Clickbank/ClickbankConfig.php:47
|
2550 |
#: application/modules/Clickbank/ClickbankConfig.php:63
|
2551 |
#: application/modules/RssFetcher/RssFetcherConfig.php:47
|
2568 |
#: application/modules/CjProducts/CjProductsConfig.php:74
|
2569 |
#: application/modules/Clickbank/ClickbankConfig.php:53
|
2570 |
#: application/modules/Ebay/EbayConfig.php:136
|
2571 |
+
#: application/modules/Ebay2/Ebay2Config.php:102
|
2572 |
#: application/modules/Envato/EnvatoConfig.php:73
|
2573 |
#: application/modules/Flipkart/FlipkartConfig.php:88
|
2574 |
#: application/modules/GdeSlon/GdeSlonConfig.php:63
|
2582 |
#: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:48
|
2583 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:48
|
2584 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:106
|
2585 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:115
|
2586 |
#: application/modules/Udemy/UdemyConfig.php:81
|
2587 |
#: application/modules/Viglink/ViglinkConfig.php:62
|
2588 |
#: application/modules/Walmart/WalmartConfig.php:63
|
2607 |
#: application/modules/AE/AEConfig.php:78
|
2608 |
#: application/modules/Amazon/AmazonConfig.php:311
|
2609 |
#: application/modules/Amazon/AmazonConfig_FREE.php:281
|
2610 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:101
|
2611 |
msgid "Small logos"
|
2612 |
msgstr ""
|
2613 |
|
2614 |
#: application/modules/AE/AEConfig.php:81
|
2615 |
#: application/modules/Amazon/AmazonConfig.php:316
|
2616 |
#: application/modules/Amazon/AmazonConfig_FREE.php:282
|
2617 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:106
|
2618 |
msgid "Show small logos"
|
2619 |
msgstr ""
|
2620 |
|
2621 |
#: application/modules/AE/AEConfig.php:82
|
2622 |
#: application/modules/Amazon/AmazonConfig.php:317
|
2623 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:107
|
2624 |
msgid "Hide small logos"
|
2625 |
msgstr ""
|
2626 |
|
2627 |
#: application/modules/AE/AEConfig.php:87
|
2628 |
#: application/modules/Amazon/AmazonConfig.php:322
|
2629 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:112
|
2630 |
msgid "Large logos"
|
2631 |
msgstr ""
|
2632 |
|
2633 |
#: application/modules/AE/AEConfig.php:90
|
2634 |
#: application/modules/Amazon/AmazonConfig.php:325
|
2635 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:115
|
2636 |
msgid "Show large logos"
|
2637 |
msgstr ""
|
2638 |
|
2639 |
#: application/modules/AE/AEConfig.php:91
|
2640 |
#: application/modules/Amazon/AmazonConfig.php:326
|
2641 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:116
|
2642 |
msgid "Hide large logos"
|
2643 |
msgstr ""
|
2644 |
|
2758 |
#: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:169
|
2759 |
#: application/modules/CityadsProducts/CityadsProductsConfig.php:130
|
2760 |
#: application/modules/Ebay/EbayConfig.php:316
|
2761 |
+
#: application/modules/Ebay2/Ebay2Config.php:277
|
2762 |
#: application/modules/Impactradius/ImpactradiusConfig.php:81
|
2763 |
+
#: application/modules/Kelkoo/KelkooConfig.php:135
|
2764 |
#: application/modules/Linkwise/LinkwiseConfig.php:143
|
2765 |
#: application/modules/Optimisemedia/OptimisemediaConfig.php:138
|
2766 |
#: application/modules/PayTM/PayTMConfig.php:71
|
2776 |
#: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:179
|
2777 |
#: application/modules/CityadsProducts/CityadsProductsConfig.php:140
|
2778 |
#: application/modules/Ebay/EbayConfig.php:306
|
2779 |
+
#: application/modules/Ebay2/Ebay2Config.php:287
|
2780 |
#: application/modules/Impactradius/ImpactradiusConfig.php:91
|
2781 |
+
#: application/modules/Kelkoo/KelkooConfig.php:145
|
2782 |
#: application/modules/Linkwise/LinkwiseConfig.php:153
|
2783 |
#: application/modules/Optimisemedia/OptimisemediaConfig.php:148
|
2784 |
#: application/modules/PayTM/PayTMConfig.php:81
|
2803 |
#: application/modules/GoogleBooks/GoogleBooksConfig.php:86
|
2804 |
#: application/modules/GoogleNews/GoogleNewsConfig.php:61
|
2805 |
#: application/modules/Impactradius/ImpactradiusConfig.php:116
|
2806 |
+
#: application/modules/Kelkoo/KelkooConfig.php:189
|
2807 |
#: application/modules/Linkshare/LinkshareConfig.php:129
|
2808 |
#: application/modules/Linkwise/LinkwiseConfig.php:182
|
2809 |
#: application/modules/Optimisemedia/OptimisemediaConfig.php:172
|
2812 |
#: application/modules/Pepperjam/PepperjamConfig.php:148
|
2813 |
#: application/modules/Shareasale/ShareasaleConfig.php:116
|
2814 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:166
|
2815 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:187
|
2816 |
#: application/modules/VkNews/VkNewsConfig.php:51
|
2817 |
#: application/modules/Walmart/WalmartConfig.php:142
|
2818 |
#: application/modules/Youtube/YoutubeConfig.php:87
|
2836 |
#: application/modules/GoogleBooks/GoogleBooksConfig.php:87
|
2837 |
#: application/modules/GoogleNews/GoogleNewsConfig.php:62
|
2838 |
#: application/modules/Impactradius/ImpactradiusConfig.php:117
|
|
|
2839 |
#: application/modules/Linkshare/LinkshareConfig.php:130
|
2840 |
#: application/modules/Linkwise/LinkwiseConfig.php:183
|
2841 |
#: application/modules/Optimisemedia/OptimisemediaConfig.php:173
|
2844 |
#: application/modules/Pepperjam/PepperjamConfig.php:149
|
2845 |
#: application/modules/Shareasale/ShareasaleConfig.php:117
|
2846 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:167
|
2847 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:188
|
2848 |
#: application/modules/VkNews/VkNewsConfig.php:52
|
2849 |
#: application/modules/Walmart/WalmartConfig.php:143
|
2850 |
#: application/modules/Youtube/YoutubeConfig.php:88
|
2887 |
#: application/modules/Bolcom/views/update_panel.php:2
|
2888 |
#: application/modules/Daisycon/views/search_panel.php:2
|
2889 |
#: application/modules/Daisycon/views/update_panel.php:2
|
2890 |
+
#: application/modules/Ebay/views/search_panel.php:3
|
2891 |
#: application/modules/Ebay/views/update_panel.php:2
|
2892 |
+
#: application/modules/Ebay2/views/search_panel.php:15
|
2893 |
+
#: application/modules/Ebay2/views/update_panel.php:2
|
2894 |
#: application/modules/Feed/views/search_panel.php:2
|
2895 |
#: application/modules/Feed/views/update_panel.php:2
|
2896 |
#: application/modules/Impactradius/views/search_panel.php:2
|
2929 |
#: application/modules/Bolcom/views/update_panel.php:3
|
2930 |
#: application/modules/Daisycon/views/search_panel.php:3
|
2931 |
#: application/modules/Daisycon/views/update_panel.php:3
|
2932 |
+
#: application/modules/Ebay/views/search_panel.php:4
|
2933 |
#: application/modules/Ebay/views/update_panel.php:3
|
2934 |
+
#: application/modules/Ebay2/views/search_panel.php:16
|
2935 |
+
#: application/modules/Ebay2/views/update_panel.php:3
|
2936 |
#: application/modules/Feed/views/search_panel.php:3
|
2937 |
#: application/modules/Feed/views/update_panel.php:3
|
2938 |
#: application/modules/Impactradius/views/search_panel.php:3
|
2974 |
|
2975 |
#: application/modules/Affiliatewindow/AffiliatewindowConfig.php:61
|
2976 |
#: application/modules/Aliexpress/AliexpressConfig.php:232
|
2977 |
+
#: application/modules/Aliexpress2/Aliexpress2Config.php:173
|
2978 |
#: application/modules/CityadsProducts/CityadsProductsConfig.php:190
|
2979 |
#: application/modules/Clickbank/ClickbankConfig.php:102
|
2980 |
#: application/modules/Ebay/EbayConfig.php:152
|
2981 |
+
#: application/modules/Ebay2/Ebay2Config.php:117
|
2982 |
#: application/modules/Flickr/FlickrConfig.php:59
|
2983 |
#: application/modules/GdeSlon/GdeSlonConfig.php:79
|
2984 |
#: application/modules/GoogleBooks/GoogleBooksConfig.php:97
|
|
|
2985 |
#: application/modules/Linkshare/LinkshareConfig.php:81
|
2986 |
#: application/modules/Ozon/OzonConfig.php:64
|
2987 |
#: application/modules/PayTM/PayTMConfig.php:91
|
2995 |
#: application/modules/Affiliatewindow/AffiliatewindowConfig.php:65
|
2996 |
#: application/modules/Affiliatewindow/AffiliatewindowConfig.php:105
|
2997 |
#: application/modules/Aliexpress/AliexpressConfig.php:236
|
2998 |
+
#: application/modules/Aliexpress2/Aliexpress2Config.php:177
|
2999 |
#: application/modules/Bolcom/BolcomConfig.php:149
|
3000 |
#: application/modules/CityadsProducts/CityadsProductsConfig.php:194
|
3001 |
#: application/modules/Envato/EnvatoConfig.php:157
|
3002 |
#: application/modules/Envato/EnvatoConfig.php:175
|
3003 |
#: application/modules/GdeSlon/GdeSlonConfig.php:83
|
3004 |
+
#: application/modules/Kelkoo/KelkooConfig.php:127
|
3005 |
#: application/modules/Linkshare/LinkshareConfig.php:85
|
3006 |
#: application/modules/PayTM/PayTMConfig.php:95
|
3007 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:149
|
3096 |
msgstr ""
|
3097 |
|
3098 |
#: application/modules/Aliexpress/AliexpressConfig.php:90
|
3099 |
+
#: application/modules/Aliexpress2/Aliexpress2Config.php:135
|
3100 |
msgid "Limit the search of goods by this category."
|
3101 |
msgstr ""
|
3102 |
|
3103 |
#: application/modules/Aliexpress/AliexpressConfig.php:93
|
3104 |
+
#: application/modules/Aliexpress2/Aliexpress2Config.php:138
|
3105 |
#: application/modules/Pepperjam/PepperjamConfig.php:101
|
3106 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:63
|
3107 |
#: application/modules/Udemy/UdemyConfig.php:125
|
3124 |
msgstr ""
|
3125 |
|
3126 |
#: application/modules/Aliexpress/AliexpressConfig.php:157
|
3127 |
+
#: application/modules/Aliexpress2/Aliexpress2Config.php:125
|
3128 |
#: application/modules/Clickbank/ClickbankConfig.php:129
|
3129 |
#: application/modules/Udemy/UdemyConfig.php:96
|
3130 |
msgid "Language"
|
3212 |
#: application/modules/Bolcom/views/update_panel.php:2
|
3213 |
#: application/modules/Daisycon/views/update_panel.php:2
|
3214 |
#: application/modules/Ebay/views/update_panel.php:2
|
3215 |
+
#: application/modules/Ebay2/views/update_panel.php:2
|
3216 |
#: application/modules/Feed/views/update_panel.php:2
|
3217 |
#: application/modules/Kelkoo/views/update_panel.php:2
|
3218 |
#: application/modules/Linkwise/views/update_panel.php:2
|
3231 |
#: application/modules/Bolcom/views/update_panel.php:3
|
3232 |
#: application/modules/Daisycon/views/update_panel.php:3
|
3233 |
#: application/modules/Ebay/views/update_panel.php:3
|
3234 |
+
#: application/modules/Ebay2/views/update_panel.php:3
|
3235 |
#: application/modules/Feed/views/update_panel.php:3
|
3236 |
#: application/modules/Kelkoo/views/update_panel.php:3
|
3237 |
#: application/modules/Linkwise/views/update_panel.php:3
|
3266 |
"target=\"_blank\" href=\"%s\">here</a>."
|
3267 |
msgstr ""
|
3268 |
|
3269 |
+
#: application/modules/Aliexpress2/Aliexpress2Config.php:144
|
3270 |
msgid "The price must be set in USD. Example: 99"
|
3271 |
msgstr ""
|
3272 |
|
3273 |
+
#: application/modules/Aliexpress2/Aliexpress2Config.php:154
|
3274 |
msgid "The price must be set in USD. Example: 10"
|
3275 |
msgstr ""
|
3276 |
|
3277 |
+
#: application/modules/Aliexpress2/Aliexpress2Config.php:163
|
3278 |
msgid "Platform"
|
3279 |
msgstr ""
|
3280 |
|
3281 |
+
#: application/modules/Aliexpress2/Aliexpress2Config.php:178
|
3282 |
msgid "Price ASC"
|
3283 |
msgstr ""
|
3284 |
|
3285 |
+
#: application/modules/Aliexpress2/Aliexpress2Config.php:179
|
3286 |
msgid "Price DESC"
|
3287 |
msgstr ""
|
3288 |
|
3289 |
+
#: application/modules/Aliexpress2/Aliexpress2Config.php:180
|
3290 |
msgid "Volume ASC"
|
3291 |
msgstr ""
|
3292 |
|
3293 |
+
#: application/modules/Aliexpress2/Aliexpress2Config.php:181
|
3294 |
msgid "Volume DESC"
|
3295 |
msgstr ""
|
3296 |
|
3297 |
+
#: application/modules/Aliexpress2/Aliexpress2Config.php:216
|
3298 |
msgid "Save images locally"
|
3299 |
msgstr ""
|
3300 |
|
3326 |
|
3327 |
#: application/modules/Amazon/AmazonConfig.php:58
|
3328 |
#: application/modules/Amazon/AmazonConfig_FREE.php:53
|
3329 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:25
|
3330 |
msgid "Default Associate Tag"
|
3331 |
msgstr ""
|
3332 |
|
3333 |
#: application/modules/Amazon/AmazonConfig.php:59
|
3334 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:26
|
3335 |
msgid ""
|
3336 |
"An alphanumeric token that uniquely identifies you as an Associate. To "
|
3337 |
"obtain an Associate Tag, refer to <a target=\"_blank\" href=\"https://"
|
3341 |
|
3342 |
#: application/modules/Amazon/AmazonConfig.php:67
|
3343 |
#: application/modules/Amazon/AmazonConfig_FREE.php:62
|
3344 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:34
|
3345 |
msgid "The \"Tracking ID\" can not be empty."
|
3346 |
msgstr ""
|
3347 |
|
3348 |
#: application/modules/Amazon/AmazonConfig.php:73
|
3349 |
#: application/modules/Amazon/AmazonConfig_FREE.php:76
|
3350 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:40
|
3351 |
+
#: application/modules/Ebay2/Ebay2Config.php:80
|
3352 |
msgid "Default locale"
|
3353 |
msgstr ""
|
3354 |
|
3355 |
#: application/modules/Amazon/AmazonConfig.php:74
|
3356 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:41
|
3357 |
msgid ""
|
3358 |
"Your Amazon Associates tag works only in the locale in which you register. "
|
3359 |
"If you want to be an Amazon Associate in more than one locale, you must "
|
3373 |
#: application/modules/Amazon/AmazonConfig.php:90
|
3374 |
#: application/modules/Amazon/AmazonConfig_FREE.php:86
|
3375 |
#: application/modules/Amazon/AmazonConfig_FREE.php:103
|
3376 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:50
|
3377 |
msgid "It needs a bit more time to get more than 10 results in one request"
|
3378 |
msgstr ""
|
3379 |
|
3380 |
#: application/modules/Amazon/AmazonConfig.php:107
|
3381 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:67
|
3382 |
msgid "It needs a bit more time to get more than 10 results in one request."
|
3383 |
msgstr ""
|
3384 |
|
3385 |
#: application/modules/Amazon/AmazonConfig.php:122
|
3386 |
#: application/modules/Amazon/AmazonConfig_FREE.php:118
|
3387 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:82
|
3388 |
msgid "Link type"
|
3389 |
msgstr ""
|
3390 |
|
3391 |
#: application/modules/Amazon/AmazonConfig.php:123
|
3392 |
#: application/modules/Amazon/AmazonConfig_FREE.php:119
|
3393 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:83
|
3394 |
msgid ""
|
3395 |
"Type of partner links. Know more about amazon <a target=\"_blank\" href="
|
3396 |
"\"https://affiliate-program.amazon.com/gp/associates/help/t2/a11\">90 day "
|
3487 |
msgstr ""
|
3488 |
|
3489 |
#: application/modules/Amazon/AmazonConfig.php:229
|
3490 |
+
#: application/modules/Ebay2/Ebay2Config.php:195
|
3491 |
msgid "Condition"
|
3492 |
msgstr ""
|
3493 |
|
3547 |
|
3548 |
#: application/modules/Amazon/AmazonConfig.php:269
|
3549 |
#: application/modules/Ebay/EbayConfig.php:238
|
3550 |
+
#: application/modules/Ebay2/Ebay2Config.php:155
|
3551 |
msgid "Free Shipping"
|
3552 |
msgstr ""
|
3553 |
|
3593 |
msgstr ""
|
3594 |
|
3595 |
#: application/modules/Amazon/AmazonConfig.php:304
|
3596 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:94
|
3597 |
msgid "Save images to local server"
|
3598 |
msgstr ""
|
3599 |
|
3600 |
#: application/modules/Amazon/AmazonConfig.php:305
|
3601 |
#: application/modules/Amazon/AmazonConfig.php:313
|
3602 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:95
|
3603 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:103
|
3604 |
msgid "Enabling this option may violate API rules."
|
3605 |
msgstr ""
|
3606 |
|
3607 |
#: application/modules/Amazon/AmazonConfig.php:314
|
3608 |
#: application/modules/Amazon/AmazonConfig_FREE.php:282
|
3609 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:104
|
3610 |
msgid ""
|
3611 |
"Read more: <a target=\"_blank\" href=\"%s\">Amazon brand usage guidelines</"
|
3612 |
"a>."
|
3614 |
|
3615 |
#: application/modules/Amazon/AmazonConfig.php:335
|
3616 |
#: application/modules/Amazon/AmazonConfig_FREE.php:292
|
3617 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:125
|
3618 |
msgid "Associate Tag for %s locale"
|
3619 |
msgstr ""
|
3620 |
|
3621 |
#: application/modules/Amazon/AmazonConfig.php:336
|
3622 |
#: application/modules/Amazon/AmazonConfig_FREE.php:293
|
3623 |
+
#: application/modules/AmazonNoApi/AmazonNoApiConfig.php:126
|
3624 |
msgid ""
|
3625 |
"Type here your tracking ID for this locale if you need multiple locale "
|
3626 |
"parsing"
|
3732 |
|
3733 |
#: application/modules/Amazon/AmazonConfig_FREE.php:173
|
3734 |
#: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:170
|
3735 |
+
#: application/modules/Kelkoo/KelkooConfig.php:136
|
3736 |
#: application/modules/Linkwise/LinkwiseConfig.php:144
|
3737 |
msgid "Example, 8.99"
|
3738 |
msgstr ""
|
3739 |
|
3740 |
#: application/modules/Amazon/AmazonConfig_FREE.php:183
|
3741 |
#: application/modules/AvantlinkProducts/AvantlinkProductsConfig.php:180
|
3742 |
+
#: application/modules/Kelkoo/KelkooConfig.php:146
|
3743 |
#: application/modules/Linkwise/LinkwiseConfig.php:154
|
3744 |
msgid "Example, 98.50"
|
3745 |
msgstr ""
|
3835 |
|
3836 |
#: application/modules/Amazon/templates/data_compare.php:98
|
3837 |
#: application/modules/Ozon/templates/data_compare.php:78
|
3838 |
+
#: application/templates/blocks/item_row.php:59
|
3839 |
+
#: application/templates/blocks/list_row.php:56
|
3840 |
#: application/templates/data_price_tracker_alert.php:48
|
3841 |
+
#: templates/block_offers_logo.php:76 templates/wdgt_price_movers_grid.php:72
|
3842 |
#: templates/wdgt_price_movers_list.php:48
|
3843 |
msgid "as of %s"
|
3844 |
msgstr ""
|
3941 |
#: application/modules/Daisycon/DaisyconConfig.php:32
|
3942 |
#: application/modules/Ebay/EbayConfig.php:31
|
3943 |
#: application/modules/Ebay/EbayConfig.php:46
|
3944 |
+
#: application/modules/Ebay2/Ebay2Config.php:31
|
3945 |
+
#: application/modules/Ebay2/Ebay2Config.php:45
|
3946 |
#: application/modules/Envato/EnvatoConfig.php:31
|
3947 |
#: application/modules/Feed/FeedConfig.php:35
|
3948 |
#: application/modules/Feed/FeedConfig.php:54
|
3949 |
+
#: application/modules/Feed/FeedConfig.php:105
|
3950 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:31
|
3951 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:45
|
3952 |
#: application/modules/Impactradius/ImpactradiusConfig.php:32
|
3953 |
#: application/modules/Impactradius/ImpactradiusConfig.php:46
|
3954 |
#: application/modules/Kelkoo/KelkooConfig.php:31
|
3955 |
+
#: application/modules/Kelkoo/KelkooConfig.php:88
|
|
|
3956 |
#: application/modules/Linkwise/LinkwiseConfig.php:31
|
3957 |
#: application/modules/Linkwise/LinkwiseConfig.php:45
|
3958 |
#: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:31
|
3964 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:31
|
3965 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:45
|
3966 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:60
|
3967 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:31
|
3968 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:45
|
3969 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:60
|
3970 |
#: application/modules/Udemy/UdemyConfig.php:31
|
3971 |
#: application/modules/Udemy/UdemyConfig.php:46
|
3972 |
#: application/modules/Viglink/ViglinkConfig.php:33
|
4146 |
#: application/modules/Daisycon/DaisyconModule.php:31
|
4147 |
#: application/modules/GdeSlon/GdeSlonModule.php:31
|
4148 |
#: application/modules/Impactradius/ImpactradiusModule.php:29
|
4149 |
+
#: application/modules/Kelkoo/KelkooModule.php:34
|
4150 |
#: application/modules/Pepperjam/PepperjamModule.php:29
|
4151 |
#: application/modules/TradetrackerProducts/TradetrackerProductsModule.php:28
|
4152 |
+
#: application/modules/Walmart/WalmartModule.php:36
|
4153 |
msgid "Adds products from %s."
|
4154 |
msgstr ""
|
4155 |
|
4517 |
msgstr ""
|
4518 |
|
4519 |
#: application/modules/Bolcom/BolcomConfig.php:81
|
4520 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:67
|
4521 |
msgid "SubID is a parameter that allows for the tracking of sales separately."
|
4522 |
msgstr ""
|
4523 |
|
4562 |
msgstr ""
|
4563 |
|
4564 |
#: application/modules/Bolcom/BolcomConfig.php:152
|
|
|
4565 |
#: application/modules/Ozon/OzonConfig.php:82
|
4566 |
msgid "Price ascending"
|
4567 |
msgstr ""
|
4568 |
|
4569 |
#: application/modules/Bolcom/BolcomConfig.php:153
|
|
|
4570 |
#: application/modules/Ozon/OzonConfig.php:83
|
4571 |
msgid "Price descending"
|
4572 |
msgstr ""
|
4780 |
msgid "Advertisers"
|
4781 |
msgstr ""
|
4782 |
|
4783 |
+
#: application/modules/CjLinks/CjLinksConfig.php:85
|
4784 |
+
msgid ""
|
4785 |
+
"A comma separated list of Advertiser IDs (CID). Restrict search results "
|
4786 |
+
"based on these IDs"
|
4787 |
+
msgstr ""
|
4788 |
+
|
4789 |
+
#: application/modules/CjLinks/CjLinksConfig.php:86
|
4790 |
+
msgid ""
|
4791 |
+
"or set this option to \"joined\" (this value restricts the search to "
|
4792 |
+
"advertisers with which you have a relationship)."
|
4793 |
+
msgstr ""
|
4794 |
+
|
4795 |
#: application/modules/CjLinks/CjLinksModule.php:28
|
4796 |
msgid ""
|
4797 |
"Adds text links, coupons, banners from CJ.com. You must have approval from "
|
4956 |
|
4957 |
#: application/modules/Ebay/EbayConfig.php:23
|
4958 |
#: application/modules/Ebay/EbayConfig.php:38
|
4959 |
+
#: application/modules/Ebay2/Ebay2Config.php:23
|
4960 |
+
#: application/modules/Ebay2/Ebay2Config.php:37
|
4961 |
msgid "Your application's OAuth credentials."
|
4962 |
msgstr ""
|
4963 |
|
4964 |
#: application/modules/Ebay/EbayConfig.php:23
|
4965 |
#: application/modules/Ebay/EbayConfig.php:38
|
4966 |
+
#: application/modules/Ebay2/Ebay2Config.php:23
|
4967 |
+
#: application/modules/Ebay2/Ebay2Config.php:37
|
4968 |
msgid ""
|
4969 |
"You can get it in <a target=\"_blank\" href=\"%s\">eBay Developers Program</"
|
4970 |
"a>."
|
5021 |
msgstr ""
|
5022 |
|
5023 |
#: application/modules/Ebay/EbayConfig.php:102
|
5024 |
+
#: application/modules/Ebay2/Ebay2Config.php:70
|
5025 |
+
#: application/modules/Feed/FeedConfig.php:130
|
5026 |
#: application/modules/Ozon/OzonConfig.php:32
|
5027 |
msgid "Deeplink"
|
5028 |
msgstr ""
|
5039 |
|
5040 |
#: application/modules/Ebay/EbayConfig.php:112
|
5041 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:67
|
5042 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:75
|
5043 |
msgid "Locale"
|
5044 |
msgstr ""
|
5045 |
|
5068 |
msgstr ""
|
5069 |
|
5070 |
#: application/modules/Ebay/EbayConfig.php:180
|
5071 |
+
#: application/modules/Ebay2/Ebay2Config.php:149
|
5072 |
msgid "Search in description"
|
5073 |
msgstr ""
|
5074 |
|
5156 |
msgstr ""
|
5157 |
|
5158 |
#: application/modules/Ebay/EbayConfig.php:286
|
5159 |
+
#: application/modules/Ebay2/Ebay2Config.php:268
|
5160 |
msgid "Maximum bids"
|
5161 |
msgstr ""
|
5162 |
|
5163 |
#: application/modules/Ebay/EbayConfig.php:287
|
5164 |
+
#: application/modules/Ebay2/Ebay2Config.php:269
|
5165 |
msgid "Example, 10"
|
5166 |
msgstr ""
|
5167 |
|
5168 |
#: application/modules/Ebay/EbayConfig.php:296
|
5169 |
+
#: application/modules/Ebay2/Ebay2Config.php:259
|
5170 |
msgid "Minimum bids"
|
5171 |
msgstr ""
|
5172 |
|
5173 |
#: application/modules/Ebay/EbayConfig.php:297
|
5174 |
+
#: application/modules/Ebay2/Ebay2Config.php:260
|
5175 |
msgid "Example, 3"
|
5176 |
msgstr ""
|
5177 |
|
5178 |
#: application/modules/Ebay/EbayConfig.php:307
|
5179 |
+
#: application/modules/Ebay2/Ebay2Config.php:288
|
5180 |
msgid "Example, 300.50"
|
5181 |
msgstr ""
|
5182 |
|
5183 |
#: application/modules/Ebay/EbayConfig.php:317
|
5184 |
+
#: application/modules/Ebay2/Ebay2Config.php:278
|
5185 |
msgid "Example, 10.98"
|
5186 |
msgstr ""
|
5187 |
|
5231 |
"one searching"
|
5232 |
msgstr ""
|
5233 |
|
5234 |
+
#: application/modules/Ebay/EbayModule.php:54
|
5235 |
msgid ""
|
5236 |
"Starting on July 1, 2021, applications using Shopping API calls must "
|
5237 |
"authenticate with an OAuth application access token. Please visit <a href="
|
5239 |
"authentication."
|
5240 |
msgstr ""
|
5241 |
|
5242 |
+
#: application/modules/Ebay2/Ebay2Config.php:51
|
5243 |
+
msgid ""
|
5244 |
+
"This is a 10-digit unique number provided by the eBay Partner Network. This "
|
5245 |
+
"is embedded in the campid part of the ePN affiliate link."
|
5246 |
+
msgstr ""
|
5247 |
+
|
5248 |
+
#: application/modules/Ebay2/Ebay2Config.php:52
|
5249 |
+
msgid ""
|
5250 |
+
"Campaign ID is valid for all programs which were approved for you on EPN. If "
|
5251 |
+
"you leave this field blank - you will not get commissions from sales."
|
5252 |
+
msgstr ""
|
5253 |
+
|
5254 |
+
#: application/modules/Ebay2/Ebay2Config.php:61
|
5255 |
+
msgid "ePN Custom ID"
|
5256 |
+
msgstr ""
|
5257 |
+
|
5258 |
+
#: application/modules/Ebay2/Ebay2Config.php:62
|
5259 |
+
msgid ""
|
5260 |
+
"This can be any value you want to use to identify this item or purchase "
|
5261 |
+
"order and can be a maximum of 256 characters. This is embedded in the "
|
5262 |
+
"customid part of the ePN affiliate link. Note: The Custom ID is the same as "
|
5263 |
+
"SUB-ID."
|
5264 |
+
msgstr ""
|
5265 |
+
|
5266 |
+
#: application/modules/Ebay2/Ebay2Config.php:71
|
5267 |
+
msgid ""
|
5268 |
+
"Set this parameter only if you want to send traffic through third party "
|
5269 |
+
"affiliate networks."
|
5270 |
+
msgstr ""
|
5271 |
+
|
5272 |
+
#: application/modules/Ebay2/Ebay2Config.php:72
|
5273 |
+
msgid ""
|
5274 |
+
"Read more: <a target=\"_blank\" href=\"%s\">How to find your deeplink</a>."
|
5275 |
+
msgstr ""
|
5276 |
+
|
5277 |
+
#: application/modules/Ebay2/Ebay2Config.php:130
|
5278 |
+
#: application/modules/LomadeeProducts/LomadeeProductsConfig.php:66
|
5279 |
+
msgid "Category ID"
|
5280 |
+
msgstr ""
|
5281 |
+
|
5282 |
+
#: application/modules/Ebay2/Ebay2Config.php:131
|
5283 |
+
msgid ""
|
5284 |
+
"The category ID is used to limit the results. This field can have one "
|
5285 |
+
"category ID or a comma separated list of IDs."
|
5286 |
+
msgstr ""
|
5287 |
+
|
5288 |
+
#: application/modules/Ebay2/Ebay2Config.php:132
|
5289 |
+
msgid ""
|
5290 |
+
"Use the <a target=\"_blank\" href=\"%s\">Category Changes page</a> to find "
|
5291 |
+
"IDs."
|
5292 |
+
msgstr ""
|
5293 |
+
|
5294 |
+
#: application/modules/Ebay2/Ebay2Config.php:140
|
5295 |
+
msgid "Exclude category IDs"
|
5296 |
+
msgstr ""
|
5297 |
+
|
5298 |
+
#: application/modules/Ebay2/Ebay2Config.php:141
|
5299 |
+
msgid ""
|
5300 |
+
"Any item in the specified categories will not be returned. Multiple values "
|
5301 |
+
"can be used for this filter and are separated by comma."
|
5302 |
+
msgstr ""
|
5303 |
+
|
5304 |
+
#: application/modules/Ebay2/Ebay2Config.php:150
|
5305 |
+
msgid ""
|
5306 |
+
"Only items with a title or description matching the specified keyword are "
|
5307 |
+
"returned."
|
5308 |
+
msgstr ""
|
5309 |
+
|
5310 |
+
#: application/modules/Ebay2/Ebay2Config.php:156
|
5311 |
+
msgid "Only items with free shipping are returned"
|
5312 |
+
msgstr ""
|
5313 |
+
|
5314 |
+
#: application/modules/Ebay2/Ebay2Config.php:161
|
5315 |
+
msgid "Payment method"
|
5316 |
+
msgstr ""
|
5317 |
+
|
5318 |
+
#: application/modules/Ebay2/Ebay2Config.php:162
|
5319 |
+
msgid "Only items that offer payment by credit card are returned"
|
5320 |
+
msgstr ""
|
5321 |
+
|
5322 |
+
#: application/modules/Ebay2/Ebay2Config.php:167
|
5323 |
+
msgid "Returns accepted"
|
5324 |
+
msgstr ""
|
5325 |
+
|
5326 |
+
#: application/modules/Ebay2/Ebay2Config.php:168
|
5327 |
+
msgid ""
|
5328 |
+
"Only items with a title or description matching the specified keyword are "
|
5329 |
+
"returned"
|
5330 |
+
msgstr ""
|
5331 |
+
|
5332 |
+
#: application/modules/Ebay2/Ebay2Config.php:173
|
5333 |
+
msgid "Buying options"
|
5334 |
+
msgstr ""
|
5335 |
+
|
5336 |
+
#: application/modules/Ebay2/Ebay2Config.php:174
|
5337 |
+
msgid "Only items offering the specified buying formats are returned."
|
5338 |
+
msgstr ""
|
5339 |
+
|
5340 |
+
#: application/modules/Ebay2/Ebay2Config.php:185
|
5341 |
+
msgid "Condition IDs"
|
5342 |
+
msgstr ""
|
5343 |
+
|
5344 |
+
#: application/modules/Ebay2/Ebay2Config.php:186
|
5345 |
+
msgid ""
|
5346 |
+
"Only items with the specified condition ID are returned. Multiple values "
|
5347 |
+
"separated by comma can be used for this filter."
|
5348 |
+
msgstr ""
|
5349 |
+
|
5350 |
+
#: application/modules/Ebay2/Ebay2Config.php:196
|
5351 |
+
msgid ""
|
5352 |
+
"Unlike the Condition ID filter, the Condition filter will not return items "
|
5353 |
+
"of a specific condition such as Good, Very Good, or Seller Refurbished. It "
|
5354 |
+
"will only return items that are categorized by the broader conditions of NEW "
|
5355 |
+
"and USED."
|
5356 |
+
msgstr ""
|
5357 |
+
|
5358 |
+
#: application/modules/Ebay2/Ebay2Config.php:206
|
5359 |
+
msgid "Location country"
|
5360 |
+
msgstr ""
|
5361 |
+
|
5362 |
+
#: application/modules/Ebay2/Ebay2Config.php:207
|
5363 |
+
msgid ""
|
5364 |
+
"Only items located in the specified country are returned. Expects the two-"
|
5365 |
+
"letter ISO 3166 country code."
|
5366 |
+
msgstr ""
|
5367 |
+
|
5368 |
+
#: application/modules/Ebay2/Ebay2Config.php:215
|
5369 |
+
msgid "Delivery country"
|
5370 |
+
msgstr ""
|
5371 |
+
|
5372 |
+
#: application/modules/Ebay2/Ebay2Config.php:216
|
5373 |
+
msgid ""
|
5374 |
+
"Only items that can be shipped to the specified country are returned. "
|
5375 |
+
"Expects the two-letter ISO 3166 country code."
|
5376 |
+
msgstr ""
|
5377 |
+
|
5378 |
+
#: application/modules/Ebay2/Ebay2Config.php:224
|
5379 |
+
msgid "Local pickup"
|
5380 |
+
msgstr ""
|
5381 |
+
|
5382 |
+
#: application/modules/Ebay2/Ebay2Config.php:225
|
5383 |
+
msgid "Only local pickup items are returned."
|
5384 |
+
msgstr ""
|
5385 |
+
|
5386 |
+
#: application/modules/Ebay2/Ebay2Config.php:230
|
5387 |
+
msgid "Delivery postal code"
|
5388 |
+
msgstr ""
|
5389 |
+
|
5390 |
+
#: application/modules/Ebay2/Ebay2Config.php:231
|
5391 |
+
msgid ""
|
5392 |
+
"Only items that can be shipped to the specified postal/zip code are returned."
|
5393 |
+
msgstr ""
|
5394 |
+
|
5395 |
+
#: application/modules/Ebay2/Ebay2Config.php:240
|
5396 |
+
msgid "Sellers"
|
5397 |
+
msgstr ""
|
5398 |
+
|
5399 |
+
#: application/modules/Ebay2/Ebay2Config.php:241
|
5400 |
+
msgid ""
|
5401 |
+
"Only items from the specified sellers are returned in the response. Multiple "
|
5402 |
+
"values can be used for this filter and are separated by by comma."
|
5403 |
+
msgstr ""
|
5404 |
+
|
5405 |
+
#: application/modules/Ebay2/Ebay2Config.php:249
|
5406 |
+
msgid "Exclude sellers"
|
5407 |
+
msgstr ""
|
5408 |
+
|
5409 |
+
#: application/modules/Ebay2/Ebay2Config.php:250
|
5410 |
+
msgid ""
|
5411 |
+
"Any items from the specified sellers are not returned in the response. "
|
5412 |
+
"Multiple values can be used for this filter and are separated by comma."
|
5413 |
+
msgstr ""
|
5414 |
+
|
5415 |
#: application/modules/Envato/EnvatoConfig.php:23
|
5416 |
msgid ""
|
5417 |
"You can <a href=\"https://build.envato.com/create-token/\">generate a "
|
5524 |
msgstr ""
|
5525 |
|
5526 |
#: application/modules/Feed/FeedConfig.php:27
|
5527 |
+
#: application/modules/Feed/FeedConfig.php:98
|
5528 |
msgid "For example: %s"
|
5529 |
msgstr ""
|
5530 |
|
5533 |
msgstr ""
|
5534 |
|
5535 |
#: application/modules/Feed/FeedConfig.php:45
|
5536 |
+
msgid "CSV or XML format."
|
5537 |
msgstr ""
|
5538 |
|
5539 |
#: application/modules/Feed/FeedConfig.php:46
|
5541 |
msgstr ""
|
5542 |
|
5543 |
#: application/modules/Feed/FeedConfig.php:64
|
5544 |
+
msgid "Feed format"
|
5545 |
msgstr ""
|
5546 |
|
5547 |
#: application/modules/Feed/FeedConfig.php:67
|
5548 |
+
msgid "CSV"
|
5549 |
msgstr ""
|
5550 |
|
5551 |
#: application/modules/Feed/FeedConfig.php:73
|
5552 |
+
msgid "Archive format"
|
5553 |
+
msgstr ""
|
5554 |
+
|
5555 |
+
#: application/modules/Feed/FeedConfig.php:76
|
5556 |
+
msgid "None"
|
5557 |
msgstr ""
|
5558 |
|
5559 |
#: application/modules/Feed/FeedConfig.php:82
|
5560 |
+
msgid "Feed encoding"
|
5561 |
+
msgstr ""
|
5562 |
+
|
5563 |
+
#: application/modules/Feed/FeedConfig.php:91
|
5564 |
#: application/modules/Viglink/ViglinkConfig.php:135
|
5565 |
msgid "Default currency"
|
5566 |
msgstr ""
|
5567 |
|
5568 |
+
#: application/modules/Feed/FeedConfig.php:97
|
5569 |
msgid "Default merchant domain"
|
5570 |
msgstr ""
|
5571 |
|
5572 |
+
#: application/modules/Feed/FeedConfig.php:114
|
5573 |
msgid "Field mapping"
|
5574 |
msgstr ""
|
5575 |
|
5576 |
+
#: application/modules/Feed/FeedConfig.php:125
|
5577 |
msgid "Please fill out all required mapping fields."
|
5578 |
msgstr ""
|
5579 |
|
5580 |
+
#: application/modules/Feed/FeedConfig.php:131
|
5581 |
+
msgid "Set this option only if your feed does not contain affiliate links."
|
5582 |
+
msgstr ""
|
5583 |
+
|
5584 |
+
#: application/modules/Feed/FeedConfig.php:152
|
5585 |
+
msgid "(required for XML feed only)"
|
5586 |
+
msgstr ""
|
5587 |
+
|
5588 |
+
#: application/modules/Feed/FeedConfig.php:154
|
5589 |
msgid "(required)"
|
5590 |
msgstr ""
|
5591 |
|
5592 |
+
#: application/modules/Feed/FeedConfig.php:156
|
5593 |
msgid "(optional)"
|
5594 |
msgstr ""
|
5595 |
|
5596 |
+
#: application/modules/Feed/FeedConfig.php:163
|
5597 |
msgid "In your feed"
|
5598 |
msgstr ""
|
5599 |
|
5600 |
+
#: application/modules/Feed/FeedModule.php:26
|
5601 |
msgid "Add new"
|
5602 |
msgstr ""
|
5603 |
|
6032 |
|
6033 |
#: application/modules/Kelkoo/KelkooConfig.php:23
|
6034 |
msgid ""
|
6035 |
+
"In order to access the Kelkoo Group Shopping API you must have a token. You "
|
6036 |
+
"can generate these from the credentials page from the left menu of your "
|
6037 |
+
"account."
|
6038 |
msgstr ""
|
6039 |
|
6040 |
+
#: application/modules/Kelkoo/KelkooConfig.php:36
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6041 |
msgid "Region <span class=\"cegg_required\">*</span>"
|
6042 |
msgstr ""
|
6043 |
|
6044 |
+
#: application/modules/Kelkoo/KelkooConfig.php:39
|
6045 |
msgid "- Choose your region -"
|
6046 |
msgstr ""
|
6047 |
|
6048 |
+
#: application/modules/Kelkoo/KelkooConfig.php:123
|
6049 |
+
msgid "Match strength"
|
6050 |
msgstr ""
|
6051 |
|
6052 |
#: application/modules/Kelkoo/KelkooConfig.php:124
|
6053 |
+
msgid "Query match strength for query terms."
|
6054 |
msgstr ""
|
6055 |
|
6056 |
+
#: application/modules/Kelkoo/KelkooConfig.php:128
|
6057 |
+
msgid "All the offers matching term 1 AND term 2"
|
6058 |
msgstr ""
|
6059 |
|
6060 |
+
#: application/modules/Kelkoo/KelkooConfig.php:129
|
6061 |
+
msgid "All the offers matching term 1 OR term 2"
|
6062 |
msgstr ""
|
6063 |
|
6064 |
+
#: application/modules/Kelkoo/KelkooConfig.php:130
|
6065 |
+
msgid "Query operator OR if no result with AND"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6066 |
msgstr ""
|
6067 |
|
6068 |
#: application/modules/Kelkoo/KelkooConfig.php:155
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6069 |
msgid "Rebate percentage"
|
6070 |
msgstr ""
|
6071 |
|
6072 |
+
#: application/modules/Kelkoo/KelkooConfig.php:156
|
6073 |
msgid ""
|
6074 |
"When set to 30 for example, the response will return offers that have a sale "
|
6075 |
"price discounted by 30% or more."
|
6076 |
msgstr ""
|
6077 |
|
6078 |
+
#: application/modules/Kelkoo/KelkooConfig.php:180
|
|
|
|
|
|
|
|
|
6079 |
#: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:117
|
6080 |
msgid "Merchant ID"
|
6081 |
msgstr ""
|
6082 |
|
6083 |
+
#: application/modules/Kelkoo/KelkooConfig.php:181
|
6084 |
msgid "Limit the search to a specific merchant."
|
6085 |
msgstr ""
|
6086 |
|
6087 |
+
#: application/modules/Kelkoo/KelkooConfig.php:190
|
6088 |
+
msgid "Description size in characters."
|
6089 |
+
msgstr ""
|
6090 |
+
|
6091 |
+
#: application/modules/Kelkoo/KelkooModule.php:48
|
6092 |
+
msgid ""
|
6093 |
+
"Kelkoo launched a new tool for API that will replace the current eCS "
|
6094 |
+
"integration. Please visit <a href=\"%s\">Kelkoo module settings</a> to get "
|
6095 |
+
"started with the new API."
|
6096 |
+
msgstr ""
|
6097 |
+
|
6098 |
#: application/modules/Linkshare/LinkshareConfig.php:23
|
6099 |
msgid ""
|
6100 |
"Linkshare access key. Go to your account in Linkshare and follow \"LINKS -> "
|
6261 |
msgid "Lomadee affiliate network"
|
6262 |
msgstr ""
|
6263 |
|
|
|
|
|
|
|
|
|
6264 |
#: application/modules/LomadeeProducts/LomadeeProductsConfig.php:86
|
6265 |
msgid "The way the offers are sorted."
|
6266 |
msgstr ""
|
6932 |
msgstr ""
|
6933 |
|
6934 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:94
|
6935 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:126
|
6936 |
msgid "Feed ID"
|
6937 |
msgstr ""
|
6938 |
|
6954 |
msgstr ""
|
6955 |
|
6956 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:23
|
6957 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:23
|
6958 |
msgid ""
|
6959 |
"You can find your Customer ID and Passphrase by logging onto your "
|
6960 |
"TradeTracker account and navagating to \"Creatives -> <a href=\"https://"
|
6963 |
msgstr ""
|
6964 |
|
6965 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:52
|
6966 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:52
|
6967 |
msgid ""
|
6968 |
"Login into your TradeTracker control panel. Click on \"<a href=\"https://"
|
6969 |
"affiliate.tradetracker.com/customerSite/list\">My Sites</a>\" in the Account "
|
6972 |
msgstr ""
|
6973 |
|
6974 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:68
|
6975 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:76
|
6976 |
msgid "Your TradeTracker locale."
|
6977 |
msgstr ""
|
6978 |
|
6996 |
msgstr ""
|
6997 |
|
6998 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:137
|
6999 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:144
|
7000 |
msgid "Campaign ID"
|
7001 |
msgstr ""
|
7002 |
|
7003 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:146
|
7004 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:153
|
7005 |
msgid "Campaign Category ID"
|
7006 |
msgstr ""
|
7007 |
|
7013 |
msgid "Include unsubscribed campaigns."
|
7014 |
msgstr ""
|
7015 |
|
7016 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:135
|
7017 |
msgid "Feed Category Name"
|
7018 |
msgstr ""
|
7019 |
|
7020 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:162
|
7021 |
#: application/modules/Viglink/ViglinkConfig.php:105
|
7022 |
msgid "Price From"
|
7023 |
msgstr ""
|
7024 |
|
7025 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:171
|
7026 |
#: application/modules/Viglink/ViglinkConfig.php:114
|
7027 |
msgid "Price To"
|
7028 |
msgstr ""
|
7029 |
|
7030 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:199
|
7031 |
msgid "Set this status if the product is not found."
|
7032 |
msgstr ""
|
7033 |
|
7034 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:211
|
7035 |
msgid "Time in seconds for updating prices. 0 - never update."
|
7036 |
msgstr ""
|
7037 |
|
7038 |
+
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:212
|
7039 |
msgid "Experimental feature for this module."
|
7040 |
msgstr ""
|
7041 |
|
7310 |
"Parse customer reviews. It takes more time. Don't check if you don't need it."
|
7311 |
msgstr ""
|
7312 |
|
7313 |
+
#: application/modules/Walmart/WalmartModule.php:50
|
7314 |
msgid "<a href=\"%s\">Walmart module</a> requires the OpenSSL PHP extension!"
|
7315 |
msgstr ""
|
7316 |
|
7419 |
msgstr ""
|
7420 |
|
7421 |
#: application/templates/blocks/item_after_price_row.php:12
|
7422 |
+
#: application/templates/blocks/list_row.php:43
|
7423 |
#: templates/block_offers_logo.php:64 templates/block_price_comparison.php:51
|
7424 |
msgid "%d new from %s"
|
7425 |
msgstr ""
|
7426 |
|
7427 |
#: application/templates/blocks/item_after_price_row.php:15
|
7428 |
+
#: application/templates/blocks/list_row.php:48
|
7429 |
#: templates/block_offers_logo.php:69 templates/block_price_comparison.php:56
|
7430 |
msgid "%d used from %s"
|
7431 |
msgstr ""
|
7515 |
msgid "Create Your Free Price Drop Alert!"
|
7516 |
msgstr ""
|
7517 |
|
7518 |
+
#: templates/block_price_comparison.php:77
|
7519 |
#: templates/block_price_comparison_card.php:55
|
7520 |
#: templates/block_text_links.php:39
|
7521 |
msgid "Last Amazon price update was: %s"
|
languages/tpl/content-egg-tpl.pot
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the same license as the Content Egg<stripfree> Pro</stripfree> package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Content Egg<stripfree> Pro</stripfree>
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg-tpl\n"
|
7 |
-
"POT-Creation-Date: 2021-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -158,8 +158,8 @@ msgstr ""
|
|
158 |
#: application/WooIntegrator.php:544 application/admin/GeneralConfig.php:45
|
159 |
#: application/templates/blocks/grid_row.php:43
|
160 |
#: application/templates/blocks/item_row.php:37
|
161 |
-
#: application/templates/blocks/list_row.php:
|
162 |
-
#: application/templates/data_list.php:
|
163 |
#: application/templates/data_price_tracker_alert.php:43
|
164 |
#: templates/block_offers_logo.php:55 templates/block_price_comparison.php:44
|
165 |
msgid "Last updated on %s"
|
@@ -170,17 +170,17 @@ msgid "Price per unit: %s"
|
|
170 |
msgstr ""
|
171 |
|
172 |
#: application/admin/GeneralConfig.php:43
|
173 |
-
#: application/helpers/TemplateHelper.php:
|
174 |
msgid "in stock"
|
175 |
msgstr ""
|
176 |
|
177 |
#: application/admin/GeneralConfig.php:44
|
178 |
-
#: application/helpers/TemplateHelper.php:
|
179 |
msgid "out of stock"
|
180 |
msgstr ""
|
181 |
|
182 |
#: application/admin/GeneralConfig.php:46
|
183 |
-
#: templates/block_price_comparison.php:
|
184 |
#: templates/block_price_comparison_card.php:55
|
185 |
#: templates/block_text_links.php:39
|
186 |
msgid "Last Amazon price update was: %s"
|
@@ -189,24 +189,24 @@ msgstr ""
|
|
189 |
#: application/admin/GeneralConfig.php:47
|
190 |
#: application/modules/Amazon/templates/data_compare.php:98
|
191 |
#: application/modules/Ozon/templates/data_compare.php:78
|
192 |
-
#: application/templates/blocks/item_row.php:
|
193 |
-
#: application/templates/blocks/list_row.php:
|
194 |
#: application/templates/data_price_tracker_alert.php:48
|
195 |
-
#: templates/block_offers_logo.php:
|
196 |
#: templates/wdgt_price_movers_list.php:48
|
197 |
msgid "as of %s"
|
198 |
msgstr ""
|
199 |
|
200 |
#: application/admin/GeneralConfig.php:48
|
201 |
#: application/templates/blocks/item_after_price_row.php:12
|
202 |
-
#: application/templates/blocks/list_row.php:
|
203 |
#: templates/block_offers_logo.php:64 templates/block_price_comparison.php:51
|
204 |
msgid "%d new from %s"
|
205 |
msgstr ""
|
206 |
|
207 |
#: application/admin/GeneralConfig.php:49
|
208 |
#: application/templates/blocks/item_after_price_row.php:15
|
209 |
-
#: application/templates/blocks/list_row.php:
|
210 |
#: templates/block_offers_logo.php:69 templates/block_price_comparison.php:56
|
211 |
msgid "%d used from %s"
|
212 |
msgstr ""
|
@@ -232,7 +232,7 @@ msgid "Plus %s Cash Back"
|
|
232 |
msgstr ""
|
233 |
|
234 |
#: application/admin/GeneralConfig.php:53
|
235 |
-
#: application/helpers/TemplateHelper.php:
|
236 |
#: application/modules/Amazon/templates/data_compare.php:65
|
237 |
#: application/modules/Ozon/templates/data_compare.php:68
|
238 |
#: application/templates/data_price_tracker_alert.php:39
|
@@ -354,17 +354,17 @@ msgid "Search Results for \"%s\""
|
|
354 |
msgstr ""
|
355 |
|
356 |
#: application/admin/GeneralConfig.php:77
|
357 |
-
#: application/helpers/TemplateHelper.php:
|
358 |
msgid "today"
|
359 |
msgstr ""
|
360 |
|
361 |
#: application/admin/GeneralConfig.php:78
|
362 |
-
#: application/helpers/TemplateHelper.php:
|
363 |
msgid "%d day ago"
|
364 |
msgstr ""
|
365 |
|
366 |
#: application/admin/GeneralConfig.php:79
|
367 |
-
#: application/helpers/TemplateHelper.php:
|
368 |
msgid "%d days ago"
|
369 |
msgstr ""
|
370 |
|
@@ -373,7 +373,7 @@ msgid "Buy Now"
|
|
373 |
msgstr ""
|
374 |
|
375 |
#: application/admin/GeneralConfig.php:443
|
376 |
-
#: application/helpers/TemplateHelper.php:
|
377 |
msgid "Shop Sale"
|
378 |
msgstr ""
|
379 |
|
@@ -382,17 +382,17 @@ msgstr ""
|
|
382 |
msgid "Future"
|
383 |
msgstr ""
|
384 |
|
385 |
-
#: application/components/ContentManager.php:
|
386 |
#: application/modules/Market/templates/data_item.php:128
|
387 |
msgid "Pros:"
|
388 |
msgstr ""
|
389 |
|
390 |
-
#: application/components/ContentManager.php:
|
391 |
#: application/modules/Market/templates/data_item.php:129
|
392 |
msgid "Cons:"
|
393 |
msgstr ""
|
394 |
|
395 |
-
#: application/components/ContentManager.php:
|
396 |
msgid "Rating"
|
397 |
msgstr ""
|
398 |
|
@@ -420,15 +420,15 @@ msgstr ""
|
|
420 |
msgid "m"
|
421 |
msgstr ""
|
422 |
|
423 |
-
#: application/helpers/TemplateHelper.php:
|
424 |
msgid "BUY NOW"
|
425 |
msgstr ""
|
426 |
|
427 |
-
#: application/helpers/TemplateHelper.php:
|
428 |
msgid "As an Amazon associate I earn from qualifying purchases."
|
429 |
msgstr ""
|
430 |
|
431 |
-
#: application/helpers/TemplateHelper.php:
|
432 |
msgid ""
|
433 |
"Product prices and availability are accurate as of the date/time indicated "
|
434 |
"and are subject to change. Any price and availability information displayed "
|
@@ -442,6 +442,7 @@ msgstr ""
|
|
442 |
#: application/modules/Aliexpress/templates/data_grid.php:9
|
443 |
#: application/modules/Aliexpress2/templates/data_grid.php:9
|
444 |
#: application/modules/Amazon/templates/data_grid.php:9
|
|
|
445 |
#: application/modules/AvantlinkProducts/templates/data_grid.php:9
|
446 |
#: application/modules/Awin/templates/data_grid.php:9
|
447 |
#: application/modules/Bolcom/templates/data_grid.php:9
|
@@ -449,6 +450,7 @@ msgstr ""
|
|
449 |
#: application/modules/CjProducts/templates/data_grid.php:9
|
450 |
#: application/modules/Daisycon/templates/data_grid.php:9
|
451 |
#: application/modules/Ebay/templates/data_grid.php:9
|
|
|
452 |
#: application/modules/Envato/templates/data_grid.php:9
|
453 |
#: application/modules/Feed/templates/data_grid.php:8
|
454 |
#: application/modules/Flipkart/templates/data_grid.php:9
|
@@ -481,6 +483,7 @@ msgstr ""
|
|
481 |
#: application/modules/Aliexpress/templates/data_item.php:9
|
482 |
#: application/modules/Aliexpress2/templates/data_item.php:9
|
483 |
#: application/modules/Amazon/templates/data_item.php:9
|
|
|
484 |
#: application/modules/AvantlinkProducts/templates/data_item.php:9
|
485 |
#: application/modules/Awin/templates/data_item.php:9
|
486 |
#: application/modules/Bolcom/templates/data_item.php:9
|
@@ -488,6 +491,7 @@ msgstr ""
|
|
488 |
#: application/modules/CjProducts/templates/data_item.php:9
|
489 |
#: application/modules/Daisycon/templates/data_item.php:9
|
490 |
#: application/modules/Ebay/templates/data_item.php:9
|
|
|
491 |
#: application/modules/Envato/templates/data_item.php:9
|
492 |
#: application/modules/Feed/templates/data_item.php:8
|
493 |
#: application/modules/Flipkart/templates/data_item.php:9
|
@@ -521,6 +525,7 @@ msgstr ""
|
|
521 |
#: application/modules/Aliexpress/templates/data_list.php:8
|
522 |
#: application/modules/Aliexpress2/templates/data_list.php:8
|
523 |
#: application/modules/Amazon/templates/data_list.php:8
|
|
|
524 |
#: application/modules/AvantlinkProducts/templates/data_list.php:8
|
525 |
#: application/modules/Awin/templates/data_list.php:8
|
526 |
#: application/modules/Bolcom/templates/data_list.php:8
|
@@ -528,6 +533,7 @@ msgstr ""
|
|
528 |
#: application/modules/CjProducts/templates/data_list.php:8
|
529 |
#: application/modules/Daisycon/templates/data_list.php:8
|
530 |
#: application/modules/Ebay/templates/data_list.php:8
|
|
|
531 |
#: application/modules/Envato/templates/data_list.php:8
|
532 |
#: application/modules/Feed/templates/data_list.php:7
|
533 |
#: application/modules/Flipkart/templates/data_list.php:8
|
@@ -561,12 +567,14 @@ msgstr ""
|
|
561 |
#: application/modules/Aliexpress/templates/data_price_tracker_alert.php:9
|
562 |
#: application/modules/Aliexpress2/templates/data_price_tracker_alert.php:9
|
563 |
#: application/modules/Amazon/templates/data_price_tracker_alert.php:9
|
|
|
564 |
#: application/modules/AvantlinkProducts/templates/data_price_tracker_alert.php:9
|
565 |
#: application/modules/Awin/templates/data_price_tracker_alert.php:9
|
566 |
#: application/modules/Bolcom/templates/data_price_tracker_alert.php:9
|
567 |
#: application/modules/CjProducts/templates/data_price_tracker_alert.php:9
|
568 |
#: application/modules/Daisycon/templates/data_price_tracker_alert.php:9
|
569 |
#: application/modules/Ebay/templates/data_price_tracker_alert.php:9
|
|
|
570 |
#: application/modules/Feed/templates/data_price_tracker_alert.php:8
|
571 |
#: application/modules/Flipkart/templates/data_price_tracker_alert.php:9
|
572 |
#: application/modules/GdeSlon/templates/data_price_tracker_alert.php:9
|
@@ -602,6 +610,7 @@ msgid "Coupons"
|
|
602 |
msgstr ""
|
603 |
|
604 |
#: application/modules/Amazon/templates/data_add_to_cart.php:11
|
|
|
605 |
msgid "ADD ALL TO CART"
|
606 |
msgstr ""
|
607 |
|
@@ -905,15 +914,15 @@ msgstr ""
|
|
905 |
msgid "The lowest price of %s was obtained on %s."
|
906 |
msgstr ""
|
907 |
|
908 |
-
#: templates/block_top_listing.php:
|
909 |
msgid "Best choice"
|
910 |
msgstr ""
|
911 |
|
912 |
-
#: templates/block_top_listing.php:
|
913 |
msgid "Recommended"
|
914 |
msgstr ""
|
915 |
|
916 |
-
#: templates/block_top_listing.php:
|
917 |
msgid "High quality"
|
918 |
msgstr ""
|
919 |
|
2 |
# This file is distributed under the same license as the Content Egg<stripfree> Pro</stripfree> package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Content Egg<stripfree> Pro</stripfree> 9.3.0\n"
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg-tpl\n"
|
7 |
+
"POT-Creation-Date: 2021-09-15 10:52:56+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
158 |
#: application/WooIntegrator.php:544 application/admin/GeneralConfig.php:45
|
159 |
#: application/templates/blocks/grid_row.php:43
|
160 |
#: application/templates/blocks/item_row.php:37
|
161 |
+
#: application/templates/blocks/list_row.php:34
|
162 |
+
#: application/templates/data_list.php:28
|
163 |
#: application/templates/data_price_tracker_alert.php:43
|
164 |
#: templates/block_offers_logo.php:55 templates/block_price_comparison.php:44
|
165 |
msgid "Last updated on %s"
|
170 |
msgstr ""
|
171 |
|
172 |
#: application/admin/GeneralConfig.php:43
|
173 |
+
#: application/helpers/TemplateHelper.php:887
|
174 |
msgid "in stock"
|
175 |
msgstr ""
|
176 |
|
177 |
#: application/admin/GeneralConfig.php:44
|
178 |
+
#: application/helpers/TemplateHelper.php:889
|
179 |
msgid "out of stock"
|
180 |
msgstr ""
|
181 |
|
182 |
#: application/admin/GeneralConfig.php:46
|
183 |
+
#: templates/block_price_comparison.php:77
|
184 |
#: templates/block_price_comparison_card.php:55
|
185 |
#: templates/block_text_links.php:39
|
186 |
msgid "Last Amazon price update was: %s"
|
189 |
#: application/admin/GeneralConfig.php:47
|
190 |
#: application/modules/Amazon/templates/data_compare.php:98
|
191 |
#: application/modules/Ozon/templates/data_compare.php:78
|
192 |
+
#: application/templates/blocks/item_row.php:59
|
193 |
+
#: application/templates/blocks/list_row.php:56
|
194 |
#: application/templates/data_price_tracker_alert.php:48
|
195 |
+
#: templates/block_offers_logo.php:76 templates/wdgt_price_movers_grid.php:72
|
196 |
#: templates/wdgt_price_movers_list.php:48
|
197 |
msgid "as of %s"
|
198 |
msgstr ""
|
199 |
|
200 |
#: application/admin/GeneralConfig.php:48
|
201 |
#: application/templates/blocks/item_after_price_row.php:12
|
202 |
+
#: application/templates/blocks/list_row.php:43
|
203 |
#: templates/block_offers_logo.php:64 templates/block_price_comparison.php:51
|
204 |
msgid "%d new from %s"
|
205 |
msgstr ""
|
206 |
|
207 |
#: application/admin/GeneralConfig.php:49
|
208 |
#: application/templates/blocks/item_after_price_row.php:15
|
209 |
+
#: application/templates/blocks/list_row.php:48
|
210 |
#: templates/block_offers_logo.php:69 templates/block_price_comparison.php:56
|
211 |
msgid "%d used from %s"
|
212 |
msgstr ""
|
232 |
msgstr ""
|
233 |
|
234 |
#: application/admin/GeneralConfig.php:53
|
235 |
+
#: application/helpers/TemplateHelper.php:370
|
236 |
#: application/modules/Amazon/templates/data_compare.php:65
|
237 |
#: application/modules/Ozon/templates/data_compare.php:68
|
238 |
#: application/templates/data_price_tracker_alert.php:39
|
354 |
msgstr ""
|
355 |
|
356 |
#: application/admin/GeneralConfig.php:77
|
357 |
+
#: application/helpers/TemplateHelper.php:774
|
358 |
msgid "today"
|
359 |
msgstr ""
|
360 |
|
361 |
#: application/admin/GeneralConfig.php:78
|
362 |
+
#: application/helpers/TemplateHelper.php:780
|
363 |
msgid "%d day ago"
|
364 |
msgstr ""
|
365 |
|
366 |
#: application/admin/GeneralConfig.php:79
|
367 |
+
#: application/helpers/TemplateHelper.php:778
|
368 |
msgid "%d days ago"
|
369 |
msgstr ""
|
370 |
|
373 |
msgstr ""
|
374 |
|
375 |
#: application/admin/GeneralConfig.php:443
|
376 |
+
#: application/helpers/TemplateHelper.php:756
|
377 |
msgid "Shop Sale"
|
378 |
msgstr ""
|
379 |
|
382 |
msgid "Future"
|
383 |
msgstr ""
|
384 |
|
385 |
+
#: application/components/ContentManager.php:503
|
386 |
#: application/modules/Market/templates/data_item.php:128
|
387 |
msgid "Pros:"
|
388 |
msgstr ""
|
389 |
|
390 |
+
#: application/components/ContentManager.php:505
|
391 |
#: application/modules/Market/templates/data_item.php:129
|
392 |
msgid "Cons:"
|
393 |
msgstr ""
|
394 |
|
395 |
+
#: application/components/ContentManager.php:593
|
396 |
msgid "Rating"
|
397 |
msgstr ""
|
398 |
|
420 |
msgid "m"
|
421 |
msgstr ""
|
422 |
|
423 |
+
#: application/helpers/TemplateHelper.php:751
|
424 |
msgid "BUY NOW"
|
425 |
msgstr ""
|
426 |
|
427 |
+
#: application/helpers/TemplateHelper.php:788
|
428 |
msgid "As an Amazon associate I earn from qualifying purchases."
|
429 |
msgstr ""
|
430 |
|
431 |
+
#: application/helpers/TemplateHelper.php:788
|
432 |
msgid ""
|
433 |
"Product prices and availability are accurate as of the date/time indicated "
|
434 |
"and are subject to change. Any price and availability information displayed "
|
442 |
#: application/modules/Aliexpress/templates/data_grid.php:9
|
443 |
#: application/modules/Aliexpress2/templates/data_grid.php:9
|
444 |
#: application/modules/Amazon/templates/data_grid.php:9
|
445 |
+
#: application/modules/AmazonNoApi/templates/data_grid.php:9
|
446 |
#: application/modules/AvantlinkProducts/templates/data_grid.php:9
|
447 |
#: application/modules/Awin/templates/data_grid.php:9
|
448 |
#: application/modules/Bolcom/templates/data_grid.php:9
|
450 |
#: application/modules/CjProducts/templates/data_grid.php:9
|
451 |
#: application/modules/Daisycon/templates/data_grid.php:9
|
452 |
#: application/modules/Ebay/templates/data_grid.php:9
|
453 |
+
#: application/modules/Ebay2/templates/data_grid.php:9
|
454 |
#: application/modules/Envato/templates/data_grid.php:9
|
455 |
#: application/modules/Feed/templates/data_grid.php:8
|
456 |
#: application/modules/Flipkart/templates/data_grid.php:9
|
483 |
#: application/modules/Aliexpress/templates/data_item.php:9
|
484 |
#: application/modules/Aliexpress2/templates/data_item.php:9
|
485 |
#: application/modules/Amazon/templates/data_item.php:9
|
486 |
+
#: application/modules/AmazonNoApi/templates/data_item.php:9
|
487 |
#: application/modules/AvantlinkProducts/templates/data_item.php:9
|
488 |
#: application/modules/Awin/templates/data_item.php:9
|
489 |
#: application/modules/Bolcom/templates/data_item.php:9
|
491 |
#: application/modules/CjProducts/templates/data_item.php:9
|
492 |
#: application/modules/Daisycon/templates/data_item.php:9
|
493 |
#: application/modules/Ebay/templates/data_item.php:9
|
494 |
+
#: application/modules/Ebay2/templates/data_item.php:9
|
495 |
#: application/modules/Envato/templates/data_item.php:9
|
496 |
#: application/modules/Feed/templates/data_item.php:8
|
497 |
#: application/modules/Flipkart/templates/data_item.php:9
|
525 |
#: application/modules/Aliexpress/templates/data_list.php:8
|
526 |
#: application/modules/Aliexpress2/templates/data_list.php:8
|
527 |
#: application/modules/Amazon/templates/data_list.php:8
|
528 |
+
#: application/modules/AmazonNoApi/templates/data_list.php:8
|
529 |
#: application/modules/AvantlinkProducts/templates/data_list.php:8
|
530 |
#: application/modules/Awin/templates/data_list.php:8
|
531 |
#: application/modules/Bolcom/templates/data_list.php:8
|
533 |
#: application/modules/CjProducts/templates/data_list.php:8
|
534 |
#: application/modules/Daisycon/templates/data_list.php:8
|
535 |
#: application/modules/Ebay/templates/data_list.php:8
|
536 |
+
#: application/modules/Ebay2/templates/data_list.php:8
|
537 |
#: application/modules/Envato/templates/data_list.php:8
|
538 |
#: application/modules/Feed/templates/data_list.php:7
|
539 |
#: application/modules/Flipkart/templates/data_list.php:8
|
567 |
#: application/modules/Aliexpress/templates/data_price_tracker_alert.php:9
|
568 |
#: application/modules/Aliexpress2/templates/data_price_tracker_alert.php:9
|
569 |
#: application/modules/Amazon/templates/data_price_tracker_alert.php:9
|
570 |
+
#: application/modules/AmazonNoApi/templates/data_price_tracker_alert.php:9
|
571 |
#: application/modules/AvantlinkProducts/templates/data_price_tracker_alert.php:9
|
572 |
#: application/modules/Awin/templates/data_price_tracker_alert.php:9
|
573 |
#: application/modules/Bolcom/templates/data_price_tracker_alert.php:9
|
574 |
#: application/modules/CjProducts/templates/data_price_tracker_alert.php:9
|
575 |
#: application/modules/Daisycon/templates/data_price_tracker_alert.php:9
|
576 |
#: application/modules/Ebay/templates/data_price_tracker_alert.php:9
|
577 |
+
#: application/modules/Ebay2/templates/data_price_tracker_alert.php:9
|
578 |
#: application/modules/Feed/templates/data_price_tracker_alert.php:8
|
579 |
#: application/modules/Flipkart/templates/data_price_tracker_alert.php:9
|
580 |
#: application/modules/GdeSlon/templates/data_price_tracker_alert.php:9
|
610 |
msgstr ""
|
611 |
|
612 |
#: application/modules/Amazon/templates/data_add_to_cart.php:11
|
613 |
+
#: application/modules/AmazonNoApi/templates/data_add_to_cart.php:11
|
614 |
msgid "ADD ALL TO CART"
|
615 |
msgstr ""
|
616 |
|
914 |
msgid "The lowest price of %s was obtained on %s."
|
915 |
msgstr ""
|
916 |
|
917 |
+
#: templates/block_top_listing.php:45
|
918 |
msgid "Best choice"
|
919 |
msgstr ""
|
920 |
|
921 |
+
#: templates/block_top_listing.php:47
|
922 |
msgid "Recommended"
|
923 |
msgstr ""
|
924 |
|
925 |
+
#: templates/block_top_listing.php:49
|
926 |
msgid "High quality"
|
927 |
msgstr ""
|
928 |
|
readme.txt
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
Contributors: keywordrush
|
3 |
Tags: content, affiliate, autoblogging, affilinet, coupons, linkshare, shareasale, amazon, flickr, youtube, commission junction, aliexpress, cj, images, wikipedia, freebase, ecommerce, links, shortcode, monetize, search engine optimization, ebay, zanox, moneymaking, price comparison, google images, timesaving, clickbank, linkshare, pixabay, admitad, affilitewindow, optimisemedia, tradedoubler, flipkart, paytm, price alert, tracker, impactradius, pepperjam, udemy, envato, tradetracker, viglink, skimlinks
|
4 |
Requires at least: 4.6.1
|
5 |
-
Tested up to: 5.
|
6 |
Requires PHP: 5.4
|
7 |
-
Stable tag: 5.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -14,7 +14,7 @@ All in one solution for creating affiliate websites.
|
|
14 |
|
15 |
= What is this plugin for? =
|
16 |
|
17 |
-
* Product
|
18 |
* Price comparison site
|
19 |
* Daily deals website
|
20 |
* WooCommerce directories
|
@@ -99,6 +99,27 @@ This section describes how to install the plugin and get it working.
|
|
99 |
|
100 |
== Changelog ==
|
101 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
= 5.2.0 =
|
103 |
|
104 |
* New: Feed module to work with custom CSV feeds.
|
@@ -141,6 +162,7 @@ This section describes how to install the plugin and get it working.
|
|
141 |
* Fix: External featured images: WP 5.4+ support.
|
142 |
|
143 |
= 5.0.0 =
|
|
|
144 |
* New: Offer Module: Global XPath and Deeplink settings.
|
145 |
* New: Offer Module: Multiple XPath queries.
|
146 |
* New: Offer Module: Display the last occurred error.
|
@@ -162,10 +184,12 @@ This section describes how to install the plugin and get it working.
|
|
162 |
* Deprecated: Amazon module: https://www.keywordrush.com/docs/content-egg/Amazon.html#amazon_apiv4_deprecated
|
163 |
|
164 |
= 4.9.9 =
|
|
|
165 |
* New: Lomadee link builder. Syntax for Deeplink: [lomadee][sourceId]
|
166 |
* Improvement: CJ modules: Developer keys have been deprecated. Please use personal access tokens instead.
|
167 |
|
168 |
= 4.9.8 =
|
|
|
169 |
* New: Product management tool.
|
170 |
* New: Option 'Out of Stock products' - how to deal with Out of Stock products.
|
171 |
* New: Accept privacy policy checkbox for price drop alert.
|
@@ -184,12 +208,14 @@ This section describes how to install the plugin and get it working.
|
|
184 |
* Fix: GdeSlon module multiple Shop ID filter.
|
185 |
|
186 |
= 4.5.0 =
|
|
|
187 |
* New: GdeSlon module.
|
188 |
* New: Price alert subscription report: added delete URL and unsubscribe URL.
|
189 |
* Fix: Dublicate images during update by keyword.
|
190 |
* Fix: Currency converter to EUR.
|
191 |
|
192 |
= 4.4.3 =
|
|
|
193 |
* New: Price Movers widget.
|
194 |
* New: Price Movers shortcode: [content-egg-price-movers].
|
195 |
* New: Currency shortcode parameter to convert all prices to one currency: [content-egg-block template=offers_grid currency=EUR]
|
@@ -202,6 +228,7 @@ This section describes how to install the plugin and get it working.
|
|
202 |
* New: Ability to edit Domain field for products.
|
203 |
|
204 |
= 4.3.0 =
|
|
|
205 |
* New: Google Images module.
|
206 |
* New: Coupon module: Hide expired coupons option.
|
207 |
* New: Coupon module: Hide future coupons option.
|
@@ -212,6 +239,7 @@ This section describes how to install the plugin and get it working.
|
|
212 |
* Fix: CJ Links module.
|
213 |
|
214 |
= 4.2.0 =
|
|
|
215 |
* New: Coupon module.
|
216 |
* New: Show price update date for WooCommerce products.
|
217 |
* New: Ability to edit product attributes.
|
@@ -228,13 +256,16 @@ This section describes how to install the plugin and get it working.
|
|
228 |
* Deprecated: Admitad Products module.
|
229 |
|
230 |
= 4.0.0 =
|
|
|
231 |
* New: Skimlinks Coupons module.
|
232 |
|
233 |
= 3.9.1 =
|
|
|
234 |
* Fix: Admitad module.
|
235 |
* Fix: Autoblogging default category.
|
236 |
|
237 |
= 3.9.0 =
|
|
|
238 |
* New: WooCommerce products synchronization.
|
239 |
* New: WooCommerce attributes synchronization (global and custom).
|
240 |
* New: WooCommerce autoblogging.
|
@@ -255,6 +286,7 @@ This section describes how to install the plugin and get it working.
|
|
255 |
* Fix: Subscribers CSV export.
|
256 |
|
257 |
= 3.7.0 =
|
|
|
258 |
* New: Price filter in search form.
|
259 |
* New: Price filter for autoupdate (Amazon, Ebay, Aliexpress).
|
260 |
* New: Amazon.com.mx support.
|
@@ -262,6 +294,7 @@ This section describes how to install the plugin and get it working.
|
|
262 |
* New: Prefill from Arbitrary custom field keyword source.
|
263 |
|
264 |
= 3.6.0 =
|
|
|
265 |
* New: Autoblogging: Minimum reviews required.
|
266 |
* New: Autoblogging: Dynamic categories.
|
267 |
* Improvement: Offer module: Old price.
|
@@ -271,6 +304,7 @@ This section describes how to install the plugin and get it working.
|
|
271 |
* Improvement: Loco Translate ready.
|
272 |
|
273 |
= 3.5.0 =
|
|
|
274 |
* New: Frontend product search.
|
275 |
* New: Buy now button text / Coupon button text options.
|
276 |
* Improvement: Prefix for catalog url: [catalog limit=3]
|
@@ -279,6 +313,7 @@ This section describes how to install the plugin and get it working.
|
|
279 |
* Fix: Amazon price update if more than 10 items on page.
|
280 |
|
281 |
= 3.4.0 =
|
|
|
282 |
* New: Short redirect url.
|
283 |
* New: Custom redirect prefix.
|
284 |
* New: Settings for From Name and From Email.
|
@@ -289,6 +324,7 @@ This section describes how to install the plugin and get it working.
|
|
289 |
* Improvement: Dynamically changed Deeplinks.
|
290 |
|
291 |
= 3.2.0 =
|
|
|
292 |
* New: Block template: Price statistics.
|
293 |
* New: Ability to add reviews as post comments for AE modules.
|
294 |
* New: Rating field for Offer module.
|
@@ -298,6 +334,7 @@ This section describes how to install the plugin and get it working.
|
|
298 |
* Fix: Product keyword tool.
|
299 |
|
300 |
= 3.0.0 =
|
|
|
301 |
* New: Offer module - manually create offer from any site with price update.
|
302 |
* New: BingImages - new Cognitive Services API.
|
303 |
* New: RelatedKeywords - new Cognitive Services API.
|
@@ -311,6 +348,7 @@ This section describes how to install the plugin and get it working.
|
|
311 |
* New: Source language in English.
|
312 |
|
313 |
= 2.9.0 =
|
|
|
314 |
* New: Products update via cron job.
|
315 |
* New: Next, offset, limit params for block shortcode [content-egg-block template=offers_list next=3].
|
316 |
* New: Merchant visible url.
|
@@ -320,6 +358,7 @@ This section describes how to install the plugin and get it working.
|
|
320 |
* Improvement: Module templates.
|
321 |
|
322 |
= 2.8.0 =
|
|
|
323 |
* New: Price tracker.
|
324 |
* New: Price alert.
|
325 |
* New: Title shortcode param [content-egg module=Amazon title="My Title"].
|
@@ -328,29 +367,35 @@ This section describes how to install the plugin and get it working.
|
|
328 |
* Fix: Same Amazon ASIN in different locales.
|
329 |
|
330 |
= 2.7.0 =
|
|
|
331 |
* New: Admitad Products module.
|
332 |
* New: 301 local redirect for outbound affiliate links.
|
333 |
|
334 |
= 2.6.0 =
|
|
|
335 |
* New: Autoblogging batch creation.
|
336 |
* Improvement: Fill utility now works for all post types that are checked in the general CE settings.
|
337 |
* Improvement: Fill utility now works for post statuses: 'publish', 'future'.
|
338 |
|
339 |
= 2.5.0 =
|
|
|
340 |
* New: Affiliate Egg plugin integration.
|
341 |
* Fix: Bug Fixes.
|
342 |
|
343 |
= 2.4.0 =
|
|
|
344 |
* New: Ability to add modules to existing posts.
|
345 |
* New: Locale parameter for amazon shortcode: [content-egg module=Amazon locale=US]
|
346 |
* Deprecated: Freebase module. Freebase API has been officially closed.
|
347 |
|
348 |
= 2.3.0 =
|
|
|
349 |
* New: Amazon module: Custom associate tag.
|
350 |
* New: Amazon module: 50 results now available.
|
351 |
* New: Drag and drop for order of items.
|
352 |
|
353 |
= 2.2.0 =
|
|
|
354 |
* New: Pixabay module.
|
355 |
* New: Import/export settings.
|
356 |
* New: Keyword parsers for autoblogging.
|
@@ -360,10 +405,12 @@ This section describes how to install the plugin and get it working.
|
|
360 |
* New: Amazon module: Rewrite image urls when using https.
|
361 |
|
362 |
= 2.1.0 =
|
|
|
363 |
* Fix: Amazon decode url.
|
364 |
* Removed: Google Images module. Google Images Search API has been officially closed.
|
365 |
|
366 |
= 2.0.1 =
|
|
|
367 |
* New: Related Keywords module.
|
368 |
* New: RSS Fetcher module.
|
369 |
* New: Post Types option.
|
@@ -375,23 +422,28 @@ This section describes how to install the plugin and get it working.
|
|
375 |
* Removed: Amazon customer reviews parser has become unstable and is no longer available.
|
376 |
|
377 |
= 1.9.0 =
|
|
|
378 |
* New: Autoblogging!
|
379 |
* New: Priority option for modules.
|
380 |
* New: "Compare" template for Amazon.
|
381 |
* Improvement: Module templates.
|
382 |
|
383 |
= 1.8.0 =
|
|
|
384 |
* New: Affilinet Coupons module.
|
385 |
* New: Content egg block shortcodes.
|
386 |
* Fix: Amazon IN/BR locale products search.
|
387 |
|
388 |
= 1.7.1 =
|
|
|
389 |
* New: CJ Links module.
|
390 |
* Enhancement: Module templates.
|
391 |
* Fix: Admin panel interface.
|
392 |
|
393 |
= 1.6.1 =
|
|
|
394 |
* Fix: Error in uninstallation process.
|
395 |
|
396 |
= 1.6.0 =
|
|
|
397 |
* Initial release.
|
2 |
Contributors: keywordrush
|
3 |
Tags: content, affiliate, autoblogging, affilinet, coupons, linkshare, shareasale, amazon, flickr, youtube, commission junction, aliexpress, cj, images, wikipedia, freebase, ecommerce, links, shortcode, monetize, search engine optimization, ebay, zanox, moneymaking, price comparison, google images, timesaving, clickbank, linkshare, pixabay, admitad, affilitewindow, optimisemedia, tradedoubler, flipkart, paytm, price alert, tracker, impactradius, pepperjam, udemy, envato, tradetracker, viglink, skimlinks
|
4 |
Requires at least: 4.6.1
|
5 |
+
Tested up to: 5.9
|
6 |
Requires PHP: 5.4
|
7 |
+
Stable tag: 5.3.0
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
14 |
|
15 |
= What is this plugin for? =
|
16 |
|
17 |
+
* Product reviews and niche blog
|
18 |
* Price comparison site
|
19 |
* Daily deals website
|
20 |
* WooCommerce directories
|
99 |
|
100 |
== Changelog ==
|
101 |
|
102 |
+
= 5.3.0 =
|
103 |
+
|
104 |
+
* New: Multiple keyword search.
|
105 |
+
* New: REST API for module data.
|
106 |
+
* New: Feed module: Support for XML format.
|
107 |
+
* New: Feed module: Deeplink.
|
108 |
+
* New: Feed module: Feed encoding option.
|
109 |
+
* New: Feed module: JSON feed format.
|
110 |
+
* New: Module shortcodes: sort parameter.
|
111 |
+
* New: Offer modules: Default currency option.
|
112 |
+
* New: Shortcode parameters: add_query_arg.
|
113 |
+
* Improvement: Locale filter for block shortcodes.
|
114 |
+
* Improvement: Feed modules: Feeds will be updated twice a day.
|
115 |
+
* Improvement: Feed modules: Update by page view.
|
116 |
+
* Improvement: Offer modules: Domain editing capability.
|
117 |
+
* Improvement: Alt tag for featured images.
|
118 |
+
* Fix: AMP styles.
|
119 |
+
* Fix: Feed modules: WooCommerce sync.
|
120 |
+
* Fix: Feed modules: Stock status.
|
121 |
+
* Fix: Fixed theoretical security issue (XSS) in admin dashboard.
|
122 |
+
|
123 |
= 5.2.0 =
|
124 |
|
125 |
* New: Feed module to work with custom CSV feeds.
|
162 |
* Fix: External featured images: WP 5.4+ support.
|
163 |
|
164 |
= 5.0.0 =
|
165 |
+
|
166 |
* New: Offer Module: Global XPath and Deeplink settings.
|
167 |
* New: Offer Module: Multiple XPath queries.
|
168 |
* New: Offer Module: Display the last occurred error.
|
184 |
* Deprecated: Amazon module: https://www.keywordrush.com/docs/content-egg/Amazon.html#amazon_apiv4_deprecated
|
185 |
|
186 |
= 4.9.9 =
|
187 |
+
|
188 |
* New: Lomadee link builder. Syntax for Deeplink: [lomadee][sourceId]
|
189 |
* Improvement: CJ modules: Developer keys have been deprecated. Please use personal access tokens instead.
|
190 |
|
191 |
= 4.9.8 =
|
192 |
+
|
193 |
* New: Product management tool.
|
194 |
* New: Option 'Out of Stock products' - how to deal with Out of Stock products.
|
195 |
* New: Accept privacy policy checkbox for price drop alert.
|
208 |
* Fix: GdeSlon module multiple Shop ID filter.
|
209 |
|
210 |
= 4.5.0 =
|
211 |
+
|
212 |
* New: GdeSlon module.
|
213 |
* New: Price alert subscription report: added delete URL and unsubscribe URL.
|
214 |
* Fix: Dublicate images during update by keyword.
|
215 |
* Fix: Currency converter to EUR.
|
216 |
|
217 |
= 4.4.3 =
|
218 |
+
|
219 |
* New: Price Movers widget.
|
220 |
* New: Price Movers shortcode: [content-egg-price-movers].
|
221 |
* New: Currency shortcode parameter to convert all prices to one currency: [content-egg-block template=offers_grid currency=EUR]
|
228 |
* New: Ability to edit Domain field for products.
|
229 |
|
230 |
= 4.3.0 =
|
231 |
+
|
232 |
* New: Google Images module.
|
233 |
* New: Coupon module: Hide expired coupons option.
|
234 |
* New: Coupon module: Hide future coupons option.
|
239 |
* Fix: CJ Links module.
|
240 |
|
241 |
= 4.2.0 =
|
242 |
+
|
243 |
* New: Coupon module.
|
244 |
* New: Show price update date for WooCommerce products.
|
245 |
* New: Ability to edit product attributes.
|
256 |
* Deprecated: Admitad Products module.
|
257 |
|
258 |
= 4.0.0 =
|
259 |
+
|
260 |
* New: Skimlinks Coupons module.
|
261 |
|
262 |
= 3.9.1 =
|
263 |
+
|
264 |
* Fix: Admitad module.
|
265 |
* Fix: Autoblogging default category.
|
266 |
|
267 |
= 3.9.0 =
|
268 |
+
|
269 |
* New: WooCommerce products synchronization.
|
270 |
* New: WooCommerce attributes synchronization (global and custom).
|
271 |
* New: WooCommerce autoblogging.
|
286 |
* Fix: Subscribers CSV export.
|
287 |
|
288 |
= 3.7.0 =
|
289 |
+
|
290 |
* New: Price filter in search form.
|
291 |
* New: Price filter for autoupdate (Amazon, Ebay, Aliexpress).
|
292 |
* New: Amazon.com.mx support.
|
294 |
* New: Prefill from Arbitrary custom field keyword source.
|
295 |
|
296 |
= 3.6.0 =
|
297 |
+
|
298 |
* New: Autoblogging: Minimum reviews required.
|
299 |
* New: Autoblogging: Dynamic categories.
|
300 |
* Improvement: Offer module: Old price.
|
304 |
* Improvement: Loco Translate ready.
|
305 |
|
306 |
= 3.5.0 =
|
307 |
+
|
308 |
* New: Frontend product search.
|
309 |
* New: Buy now button text / Coupon button text options.
|
310 |
* Improvement: Prefix for catalog url: [catalog limit=3]
|
313 |
* Fix: Amazon price update if more than 10 items on page.
|
314 |
|
315 |
= 3.4.0 =
|
316 |
+
|
317 |
* New: Short redirect url.
|
318 |
* New: Custom redirect prefix.
|
319 |
* New: Settings for From Name and From Email.
|
324 |
* Improvement: Dynamically changed Deeplinks.
|
325 |
|
326 |
= 3.2.0 =
|
327 |
+
|
328 |
* New: Block template: Price statistics.
|
329 |
* New: Ability to add reviews as post comments for AE modules.
|
330 |
* New: Rating field for Offer module.
|
334 |
* Fix: Product keyword tool.
|
335 |
|
336 |
= 3.0.0 =
|
337 |
+
|
338 |
* New: Offer module - manually create offer from any site with price update.
|
339 |
* New: BingImages - new Cognitive Services API.
|
340 |
* New: RelatedKeywords - new Cognitive Services API.
|
348 |
* New: Source language in English.
|
349 |
|
350 |
= 2.9.0 =
|
351 |
+
|
352 |
* New: Products update via cron job.
|
353 |
* New: Next, offset, limit params for block shortcode [content-egg-block template=offers_list next=3].
|
354 |
* New: Merchant visible url.
|
358 |
* Improvement: Module templates.
|
359 |
|
360 |
= 2.8.0 =
|
361 |
+
|
362 |
* New: Price tracker.
|
363 |
* New: Price alert.
|
364 |
* New: Title shortcode param [content-egg module=Amazon title="My Title"].
|
367 |
* Fix: Same Amazon ASIN in different locales.
|
368 |
|
369 |
= 2.7.0 =
|
370 |
+
|
371 |
* New: Admitad Products module.
|
372 |
* New: 301 local redirect for outbound affiliate links.
|
373 |
|
374 |
= 2.6.0 =
|
375 |
+
|
376 |
* New: Autoblogging batch creation.
|
377 |
* Improvement: Fill utility now works for all post types that are checked in the general CE settings.
|
378 |
* Improvement: Fill utility now works for post statuses: 'publish', 'future'.
|
379 |
|
380 |
= 2.5.0 =
|
381 |
+
|
382 |
* New: Affiliate Egg plugin integration.
|
383 |
* Fix: Bug Fixes.
|
384 |
|
385 |
= 2.4.0 =
|
386 |
+
|
387 |
* New: Ability to add modules to existing posts.
|
388 |
* New: Locale parameter for amazon shortcode: [content-egg module=Amazon locale=US]
|
389 |
* Deprecated: Freebase module. Freebase API has been officially closed.
|
390 |
|
391 |
= 2.3.0 =
|
392 |
+
|
393 |
* New: Amazon module: Custom associate tag.
|
394 |
* New: Amazon module: 50 results now available.
|
395 |
* New: Drag and drop for order of items.
|
396 |
|
397 |
= 2.2.0 =
|
398 |
+
|
399 |
* New: Pixabay module.
|
400 |
* New: Import/export settings.
|
401 |
* New: Keyword parsers for autoblogging.
|
405 |
* New: Amazon module: Rewrite image urls when using https.
|
406 |
|
407 |
= 2.1.0 =
|
408 |
+
|
409 |
* Fix: Amazon decode url.
|
410 |
* Removed: Google Images module. Google Images Search API has been officially closed.
|
411 |
|
412 |
= 2.0.1 =
|
413 |
+
|
414 |
* New: Related Keywords module.
|
415 |
* New: RSS Fetcher module.
|
416 |
* New: Post Types option.
|
422 |
* Removed: Amazon customer reviews parser has become unstable and is no longer available.
|
423 |
|
424 |
= 1.9.0 =
|
425 |
+
|
426 |
* New: Autoblogging!
|
427 |
* New: Priority option for modules.
|
428 |
* New: "Compare" template for Amazon.
|
429 |
* Improvement: Module templates.
|
430 |
|
431 |
= 1.8.0 =
|
432 |
+
|
433 |
* New: Affilinet Coupons module.
|
434 |
* New: Content egg block shortcodes.
|
435 |
* Fix: Amazon IN/BR locale products search.
|
436 |
|
437 |
= 1.7.1 =
|
438 |
+
|
439 |
* New: CJ Links module.
|
440 |
* Enhancement: Module templates.
|
441 |
* Fix: Admin panel interface.
|
442 |
|
443 |
= 1.6.1 =
|
444 |
+
|
445 |
* Fix: Error in uninstallation process.
|
446 |
|
447 |
= 1.6.0 =
|
448 |
+
|
449 |
* Initial release.
|
res/app/vendor/angular.min.js
CHANGED
@@ -327,4 +327,4 @@ f||c.$isEmpty(b)||b.length<=f}}}}},Uc=function(){return{restrict:"A",require:"?n
|
|
327 |
{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:"January February March April May June July August September October November December".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONEMONTH:"January February March April May June July August September October November December".split(" "),
|
328 |
WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-\u00a4",negSuf:"",posPre:"\u00a4",posSuf:""}]},id:"en-us",localeID:"en_US",pluralCat:function(a,
|
329 |
c){var f=a|0,e=c;void 0===e&&(e=Math.min(b(a),3));Math.pow(10,e);return 1==f&&0==e?"one":"other"}})}]),D(function(){pe(z.document,Mc)}))})(window);!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>');
|
330 |
-
|
327 |
{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:"January February March April May June July August September October November December".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONEMONTH:"January February March April May June July August September October November December".split(" "),
|
328 |
WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-\u00a4",negSuf:"",posPre:"\u00a4",posSuf:""}]},id:"en-us",localeID:"en_US",pluralCat:function(a,
|
329 |
c){var f=a|0,e=c;void 0===e&&(e=Math.min(b(a),3));Math.pow(10,e);return 1==f&&0==e?"one":"other"}})}]),D(function(){pe(z.document,Mc)}))})(window);!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>');
|
330 |
+
|
res/css/products.css
CHANGED
@@ -57,7 +57,7 @@ span.rating_small{white-space:nowrap}
|
|
57 |
.egg-container {clear: both;}
|
58 |
.egg-list .row-products {clear: both;}
|
59 |
.egg-list .row-products{margin-bottom:15px;margin-top:0}
|
60 |
-
.egg-container .cegg-image-cell img{max-height: 100px; max-width:
|
61 |
.egg-container .cegg-image-cell{text-align:center}
|
62 |
.cegg-image-container img{ vertical-align: top; max-width: 100%; height: auto; display: inline-block; max-height: 350px; }
|
63 |
.egg-container .cegg-no-top-margin{margin-top:0 }
|
57 |
.egg-container {clear: both;}
|
58 |
.egg-list .row-products {clear: both;}
|
59 |
.egg-list .row-products{margin-bottom:15px;margin-top:0}
|
60 |
+
.egg-container .cegg-image-cell img{max-height: 100px; max-width: 100%;}
|
61 |
.egg-container .cegg-image-cell{text-align:center}
|
62 |
.cegg-image-container img{ vertical-align: top; max-width: 100%; height: auto; display: inline-block; max-height: 350px; }
|
63 |
.egg-container .cegg-no-top-margin{margin-top:0 }
|
templates/block_offers_list.php
CHANGED
@@ -10,11 +10,10 @@ __('Sorted offers list with product images', 'content-egg-tpl');
|
|
10 |
|
11 |
use ContentEgg\application\helpers\TemplateHelper;
|
12 |
|
13 |
-
if (isset($data['Amazon']))
|
14 |
\wp_enqueue_script('cegg-frontend', \ContentEgg\PLUGIN_RES . '/js/frontend.js', array('jquery'));
|
15 |
|
16 |
-
|
17 |
-
$all_items = TemplateHelper::sortAllByPrice($data, $order);
|
18 |
$amazon_last_updated = TemplateHelper::getLastUpdateFormattedAmazon($data);
|
19 |
?>
|
20 |
|
10 |
|
11 |
use ContentEgg\application\helpers\TemplateHelper;
|
12 |
|
13 |
+
if (isset($data['Amazon']) || isset($data['AmazonNoApi']))
|
14 |
\wp_enqueue_script('cegg-frontend', \ContentEgg\PLUGIN_RES . '/js/frontend.js', array('jquery'));
|
15 |
|
16 |
+
$all_items = TemplateHelper::sortAllByPrice($data, $order, $sort);
|
|
|
17 |
$amazon_last_updated = TemplateHelper::getLastUpdateFormattedAmazon($data);
|
18 |
?>
|
19 |
|
templates/block_offers_list_groups.php
CHANGED
@@ -23,7 +23,7 @@ if (!$groups = TemplateHelper::getGroupsList($data, $groups))
|
|
23 |
<ul class="nav nav-tabs">
|
24 |
<?php foreach ($groups as $i => $group): ?>
|
25 |
<?php $group_ids[$i] = TemplateHelper::generateGlobalId('cegg-list-'); ?>
|
26 |
-
<li<?php if ($i == 0): ?> class="active"<?php endif; ?>><a data-toggle="egg-tab"
|
27 |
<?php endforeach; ?>
|
28 |
</ul>
|
29 |
<div class="tab-content">
|
23 |
<ul class="nav nav-tabs">
|
24 |
<?php foreach ($groups as $i => $group): ?>
|
25 |
<?php $group_ids[$i] = TemplateHelper::generateGlobalId('cegg-list-'); ?>
|
26 |
+
<li<?php if ($i == 0): ?> class="active"<?php endif; ?>><a style="cursor: pointer" data-toggle="egg-tab" data-target="#<?php echo \esc_attr($group_ids[$i]); ?>"><?php echo \esc_html($group); ?></a></li>
|
27 |
<?php endforeach; ?>
|
28 |
</ul>
|
29 |
<div class="tab-content">
|
templates/block_offers_logo.php
CHANGED
@@ -11,7 +11,7 @@ __('Sorted offers list with store logos', 'content-egg-tpl');
|
|
11 |
use ContentEgg\application\helpers\TemplateHelper;
|
12 |
use ContentEgg\application\helpers\TextHelper;
|
13 |
|
14 |
-
if (isset($data['Amazon']))
|
15 |
\wp_enqueue_script('cegg-frontend', \ContentEgg\PLUGIN_RES . '/js/frontend.js', array('jquery'));
|
16 |
|
17 |
$all_items = TemplateHelper::sortAllByPrice($data, $order);
|
@@ -69,13 +69,13 @@ $amazon_last_updated = TemplateHelper::getLastUpdateFormattedAmazon($data);
|
|
69 |
<?php echo sprintf(TemplateHelper::__('%d used from %s'), $item['extra']['totalUsed'], TemplateHelper::formatPriceCurrency($item['extra']['lowestUsedPrice'], $item['currencyCode'])); ?>
|
70 |
</div>
|
71 |
<?php endif; ?>
|
|
|
72 |
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
<?php endif; ?>
|
79 |
<?php endif; ?>
|
80 |
|
81 |
</div>
|
@@ -84,18 +84,18 @@ $amazon_last_updated = TemplateHelper::getLastUpdateFormattedAmazon($data);
|
|
84 |
<div class="cegg-btn-row">
|
85 |
<a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-danger btn-block"><span><?php TemplateHelper::buyNowBtnText(true, $item, $btn_text); ?></span></a>
|
86 |
</div>
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
</div>
|
97 |
</div>
|
98 |
<?php endforeach; ?>
|
99 |
</div>
|
100 |
|
101 |
-
</div>
|
11 |
use ContentEgg\application\helpers\TemplateHelper;
|
12 |
use ContentEgg\application\helpers\TextHelper;
|
13 |
|
14 |
+
if (isset($data['Amazon']) || isset($data['AmazonNoApi']))
|
15 |
\wp_enqueue_script('cegg-frontend', \ContentEgg\PLUGIN_RES . '/js/frontend.js', array('jquery'));
|
16 |
|
17 |
$all_items = TemplateHelper::sortAllByPrice($data, $order);
|
69 |
<?php echo sprintf(TemplateHelper::__('%d used from %s'), $item['extra']['totalUsed'], TemplateHelper::formatPriceCurrency($item['extra']['lowestUsedPrice'], $item['currencyCode'])); ?>
|
70 |
</div>
|
71 |
<?php endif; ?>
|
72 |
+
<?php endif; ?>
|
73 |
|
74 |
+
<?php if ($item['module_id'] == 'Amazon' || $item['module_id'] == 'AmazonNoApi'): ?>
|
75 |
+
<div class="cegg-font60 cegg-lineheight15">
|
76 |
+
<?php echo sprintf(TemplateHelper::__('as of %s'), TemplateHelper::dateFormatFromGmt($item['last_update'])); ?>
|
77 |
+
<?php TemplateHelper::printAmazonDisclaimer(); ?>
|
78 |
+
</div>
|
|
|
79 |
<?php endif; ?>
|
80 |
|
81 |
</div>
|
84 |
<div class="cegg-btn-row">
|
85 |
<a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-danger btn-block"><span><?php TemplateHelper::buyNowBtnText(true, $item, $btn_text); ?></span></a>
|
86 |
</div>
|
87 |
+
<?php if ($merchant = TemplateHelper::getMerchantName($item)): ?>
|
88 |
+
<div class="text-center">
|
89 |
+
<small class="text-muted title-case">
|
90 |
+
<?php echo \esc_html($merchant); ?>
|
91 |
+
<?php TemplateHelper::printShopInfo($item); ?>
|
92 |
+
</small>
|
93 |
+
</div>
|
94 |
+
<?php endif; ?>
|
95 |
+
|
96 |
</div>
|
97 |
</div>
|
98 |
<?php endforeach; ?>
|
99 |
</div>
|
100 |
|
101 |
+
</div>
|
templates/block_price_comparison_card.php
CHANGED
@@ -11,7 +11,7 @@ use ContentEgg\application\helpers\TemplateHelper;
|
|
11 |
if (!$all_items = TemplateHelper::sortAllByPrice($data, $order))
|
12 |
return;
|
13 |
|
14 |
-
if (TemplateHelper::isModuleDataExist($all_items, 'Amazon'))
|
15 |
\wp_enqueue_script('cegg-frontend', \ContentEgg\PLUGIN_RES . '/js/frontend.js', array('jquery'));
|
16 |
|
17 |
$amazon_last_updated = TemplateHelper::getLastUpdateFormattedAmazon($data);
|
11 |
if (!$all_items = TemplateHelper::sortAllByPrice($data, $order))
|
12 |
return;
|
13 |
|
14 |
+
if (TemplateHelper::isModuleDataExist($all_items, 'Amazon', 'AmazonNoApi'))
|
15 |
\wp_enqueue_script('cegg-frontend', \ContentEgg\PLUGIN_RES . '/js/frontend.js', array('jquery'));
|
16 |
|
17 |
$amazon_last_updated = TemplateHelper::getLastUpdateFormattedAmazon($data);
|
templates/block_text_links.php
CHANGED
@@ -11,7 +11,7 @@ use ContentEgg\application\helpers\TemplateHelper;
|
|
11 |
if (!$all_items = TemplateHelper::sortAllByPrice($data, $order))
|
12 |
return;
|
13 |
|
14 |
-
if (TemplateHelper::isModuleDataExist($all_items, 'Amazon'))
|
15 |
\wp_enqueue_script('cegg-frontend', \ContentEgg\PLUGIN_RES . '/js/frontend.js', array('jquery'));
|
16 |
|
17 |
$amazon_last_updated = TemplateHelper::getLastUpdateFormattedAmazon($data);
|
11 |
if (!$all_items = TemplateHelper::sortAllByPrice($data, $order))
|
12 |
return;
|
13 |
|
14 |
+
if (TemplateHelper::isModuleDataExist($all_items, 'Amazon', 'AmazonNoApi'))
|
15 |
\wp_enqueue_script('cegg-frontend', \ContentEgg\PLUGIN_RES . '/js/frontend.js', array('jquery'));
|
16 |
|
17 |
$amazon_last_updated = TemplateHelper::getLastUpdateFormattedAmazon($data);
|
templates/block_top_listing.php
CHANGED
@@ -37,14 +37,19 @@ $ratings = TemplateHelper::generateStaticRatings(count($all_items));
|
|
37 |
<?php endif; ?>
|
38 |
</div>
|
39 |
<div class="col-md-6 col-sm-6 col-xs-6 cegg-desc-cell">
|
40 |
-
|
41 |
-
<?php if ($
|
42 |
-
|
43 |
-
<?php
|
44 |
-
|
45 |
-
|
46 |
-
|
|
|
|
|
|
|
|
|
47 |
<?php endif; ?>
|
|
|
48 |
<div class="cegg-no-top-margin cegg-list-logo-title">
|
49 |
<a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>"><?php echo \esc_html(TemplateHelper::truncate($item['title'], 100)); ?></a>
|
50 |
</div>
|
37 |
<?php endif; ?>
|
38 |
</div>
|
39 |
<div class="col-md-6 col-sm-6 col-xs-6 cegg-desc-cell">
|
40 |
+
|
41 |
+
<?php if (strstr($item['description'], 'class="label')): ?>
|
42 |
+
<?php echo $item['description']; ?>
|
43 |
+
<?php else: ?>
|
44 |
+
<?php if ($i == 0 && TemplateHelper::getChance($i)): ?>
|
45 |
+
<span class="label label-success">✓ <?php echo __('Best choice', 'content-egg-tpl'); ?></span>
|
46 |
+
<?php elseif ($i == 1 && TemplateHelper::getChance($i)): ?>
|
47 |
+
<span class="label label-success"><?php echo __('Recommended', 'content-egg-tpl'); ?></span>
|
48 |
+
<?php elseif ($i == 2 && TemplateHelper::getChance($i)): ?>
|
49 |
+
<span class="label label-success"><?php echo __('High quality', 'content-egg-tpl'); ?></span>
|
50 |
+
<?php endif; ?>
|
51 |
<?php endif; ?>
|
52 |
+
|
53 |
<div class="cegg-no-top-margin cegg-list-logo-title">
|
54 |
<a<?php TemplateHelper::printRel(); ?> target="_blank" href="<?php echo $item['url']; ?>"><?php echo \esc_html(TemplateHelper::truncate($item['title'], 100)); ?></a>
|
55 |
</div>
|