Version Description
- New: WooCommerce products synchronization.
- New: WooCommerce attributes synchronization (global and custom).
- New: WooCommerce autoblogging.
- New: Curency converter for WooCommerce synchronization.
- New: Latin slugs for WooCommerce attributes.
- New: WooCommerce reviews rating for AE modules.
- New: WooCommerce attributes filter (auto/blacklist/whitelist).
- New: Post type for Fill utility.
- New: Post status for Fill utility.
- New: ustom fields for Fill utility.
- New: Replacement tags: %RANDOM%, %RANDOM(10,50)%
- New: Subscribers CSV export.
- Improvement: Amazon: Getting price for parent products.
- Improvement: Affilinet: https affilite links support.
- Improvement: 'product-search' filter for Frontend search.
- Improvement: User Guide - http://www.keywordrush.com/en/docs/content-egg/
- Fix: Keywords parser.
- Fix: Subscribers CSV export.
Download this release
Release Info
Developer | keywordrush |
Plugin | Content Egg |
Version | 3.9.0 |
Comparing to | |
See all releases |
Code changes from version 3.7.0 to 3.9.0
- application/ModuleViewer.php +0 -1
- application/Plugin.php +3 -2
- application/ProductSearch.php +7 -1
- application/ProductSearchWidget.php +2 -2
- application/WooIntegrator.php +444 -0
- application/admin/AutoblogController.php +1 -1
- application/admin/EggMetabox.php +7 -1
- application/admin/GeneralConfig.php +59 -18
- application/admin/PluginAdmin.php +1 -0
- application/admin/PrefillController.php +56 -19
- application/admin/ToolsController.php +70 -0
- application/admin/views/_metabox_autoblog.php +22 -10
- application/admin/views/_metabox_results.php +15 -2
- application/admin/views/_metabox_search_results.php +4 -1
- application/admin/views/prefill.php +46 -1
- application/admin/views/settings.php +2 -1
- application/components/AffiliateParserModule.php +1 -1
- application/components/Config.php +15 -0
- application/components/ContentManager.php +88 -19
- application/components/ContentProduct.php +4 -1
- application/components/EggAutoblogger.php +0 -86
- application/components/FeaturedImage.php +19 -15
- application/components/LinkHandler.php +11 -5
- application/components/ModuleManager.php +15 -4
- application/helpers/CurrencyHelper.php +34 -3
- application/helpers/FileHelper.php +47 -0
- application/helpers/ImageHelper.php +5 -1
- application/helpers/TemplateHelper.php +23 -1
- application/helpers/TextHelper.php +52 -2
- application/models/AutoblogModel.php +58 -44
- application/models/Model.php +1 -1
- application/models/PriceAlertModel.php +17 -0
- application/modules/AE/AEConfig.php +1 -1
- application/modules/AE/AEModule.php +11 -1
- application/modules/AdmitadProducts/AdmitadProductsConfig.php +1 -1
- application/modules/AdmitadProducts/AdmitadProductsModule.php +31 -21
- application/modules/AffilinetCoupons/AffilinetCouponsConfig.php +23 -23
- application/modules/AffilinetCoupons/AffilinetCouponsModule.php +14 -5
- application/modules/AffilinetCoupons/views/search_panel.php +10 -10
- application/modules/Amazon/AmazonModule.php +79 -9
- application/modules/RelatedKeywords/RelatedKeywordsConfig.php +2 -3
- application/templates/blocks/item_features.php +10 -1
- content-egg.php +1 -1
- languages/content-egg.pot +501 -230
- languages/tpl/content-egg-tpl.pot +32 -21
- readme.txt +27 -5
- res/app/app.js +10 -0
- res/js/keywords.js +14 -10
- res/js/prefill.js +87 -50
- res/logos/flipkart-com.png +0 -0
- templates/block_offers_list.php +9 -1
- templates/block_offers_logo.php +8 -0
application/ModuleViewer.php
CHANGED
@@ -33,7 +33,6 @@ class ModuleViewer {
|
|
33 |
|
34 |
private function __construct()
|
35 |
{
|
36 |
-
|
37 |
}
|
38 |
|
39 |
public function init()
|
33 |
|
34 |
private function __construct()
|
35 |
{
|
|
|
36 |
}
|
37 |
|
38 |
public function init()
|
application/Plugin.php
CHANGED
@@ -14,7 +14,7 @@ use ContentEgg\application\helpers\CurrencyHelper;
|
|
14 |
*/
|
15 |
class Plugin {
|
16 |
|
17 |
-
const version = '3.
|
18 |
const db_version = 33;
|
19 |
const wp_requires = '4.2.2';
|
20 |
const slug = 'content-egg';
|
@@ -33,7 +33,7 @@ class Plugin {
|
|
33 |
|
34 |
return self::$instance;
|
35 |
}
|
36 |
-
|
37 |
private function __construct()
|
38 |
{
|
39 |
$this->loadTextdomain();
|
@@ -55,6 +55,7 @@ class Plugin {
|
|
55 |
PriceAlert::getInstance()->init();
|
56 |
AutoblogScheduler::initAction();
|
57 |
ModuleUpdateScheduler::initAction();
|
|
|
58 |
}
|
59 |
}
|
60 |
|
14 |
*/
|
15 |
class Plugin {
|
16 |
|
17 |
+
const version = '3.9.0';
|
18 |
const db_version = 33;
|
19 |
const wp_requires = '4.2.2';
|
20 |
const slug = 'content-egg';
|
33 |
|
34 |
return self::$instance;
|
35 |
}
|
36 |
+
|
37 |
private function __construct()
|
38 |
{
|
39 |
$this->loadTextdomain();
|
55 |
PriceAlert::getInstance()->init();
|
56 |
AutoblogScheduler::initAction();
|
57 |
ModuleUpdateScheduler::initAction();
|
58 |
+
WooIntegrator::initAction();
|
59 |
}
|
60 |
}
|
61 |
|
application/ProductSearch.php
CHANGED
@@ -54,8 +54,14 @@ class ProductSearch extends VirtualPage {
|
|
54 |
|
55 |
public function getSlug()
|
56 |
{
|
57 |
-
return self::PAGE_SLUG;
|
58 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
|
60 |
public function getBody()
|
61 |
{
|
54 |
|
55 |
public function getSlug()
|
56 |
{
|
57 |
+
return \apply_filters('cegg_product_search_slug', self::PAGE_SLUG);
|
58 |
}
|
59 |
+
|
60 |
+
public static function getPageSlug()
|
61 |
+
{
|
62 |
+
return \apply_filters('cegg_product_search_slug', self::PAGE_SLUG);
|
63 |
+
}
|
64 |
+
|
65 |
|
66 |
public function getBody()
|
67 |
{
|
application/ProductSearchWidget.php
CHANGED
@@ -90,7 +90,7 @@ class ProductSearchWidget extends \WP_Widget {
|
|
90 |
if (\get_option('permalink_structure'))
|
91 |
$form = preg_replace('/action=["\'].+?["\']/', 'action="' . self::getSearchFormUri() . '"', $form);
|
92 |
else
|
93 |
-
$form = preg_replace('/<\/form>/', '<input type="hidden" name="pagename" value="' . \esc_attr(ProductSearch::
|
94 |
|
95 |
$form = preg_replace('/placeholder=".+?"/', 'placeholder="' . esc_attr(__('Product Search...', 'content-egg-tpl')) . '"', $form);
|
96 |
}
|
@@ -100,7 +100,7 @@ class ProductSearchWidget extends \WP_Widget {
|
|
100 |
public static function getSearchFormUri()
|
101 |
{
|
102 |
if (\get_option('permalink_structure'))
|
103 |
-
return \esc_url(\home_url(ProductSearch::
|
104 |
else
|
105 |
return \esc_url(\home_url('/'));
|
106 |
}
|
90 |
if (\get_option('permalink_structure'))
|
91 |
$form = preg_replace('/action=["\'].+?["\']/', 'action="' . self::getSearchFormUri() . '"', $form);
|
92 |
else
|
93 |
+
$form = preg_replace('/<\/form>/', '<input type="hidden" name="pagename" value="' . \esc_attr(ProductSearch::getPageSlug()) . '"></form>', $form);
|
94 |
|
95 |
$form = preg_replace('/placeholder=".+?"/', 'placeholder="' . esc_attr(__('Product Search...', 'content-egg-tpl')) . '"', $form);
|
96 |
}
|
100 |
public static function getSearchFormUri()
|
101 |
{
|
102 |
if (\get_option('permalink_structure'))
|
103 |
+
return \esc_url(\home_url(ProductSearch::getPageSlug()));
|
104 |
else
|
105 |
return \esc_url(\home_url('/'));
|
106 |
}
|
application/WooIntegrator.php
ADDED
@@ -0,0 +1,444 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace ContentEgg\application;
|
4 |
+
|
5 |
+
use ContentEgg\application\components\ContentManager;
|
6 |
+
use ContentEgg\application\components\FeaturedImage;
|
7 |
+
use ContentEgg\application\helpers\TextHelper;
|
8 |
+
use ContentEgg\application\helpers\CurrencyHelper;
|
9 |
+
use ContentEgg\application\admin\GeneralConfig;
|
10 |
+
use ContentEgg\application\components\ModuleManager;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* WooIntegrator class file
|
14 |
+
*
|
15 |
+
* @author keywordrush.com <support@keywordrush.com>
|
16 |
+
* @link http://www.keywordrush.com/
|
17 |
+
* @copyright Copyright © 2017 keywordrush.com
|
18 |
+
*/
|
19 |
+
class WooIntegrator {
|
20 |
+
|
21 |
+
const META_WOO_SYNC_MODULE_UNIQUE_ID = '_cegg_woo_sync_muid';
|
22 |
+
|
23 |
+
private static $attributes_list;
|
24 |
+
|
25 |
+
public static function initAction()
|
26 |
+
{
|
27 |
+
if (!function_exists('\wc_get_product'))
|
28 |
+
return;
|
29 |
+
|
30 |
+
\add_action('content_egg_save_data', array(__CLASS__, 'wooHandler'), 13, 4);
|
31 |
+
}
|
32 |
+
|
33 |
+
public static function wooHandler($data, $module_id, $post_id, $is_last_iteration)
|
34 |
+
{
|
35 |
+
if (\get_post_type($post_id) != 'product' || !$product = \wc_get_product($post_id))
|
36 |
+
return;
|
37 |
+
|
38 |
+
if (!$is_last_iteration)
|
39 |
+
return;
|
40 |
+
|
41 |
+
// Get all post data
|
42 |
+
$affiliate_modules = ModuleManager::getInstance()->getAffiliteModulesList(true);
|
43 |
+
$modules_data = array();
|
44 |
+
foreach ($affiliate_modules as $module_id => $module_name)
|
45 |
+
{
|
46 |
+
if (!$data = ContentManager::getViewData($module_id, $post_id))
|
47 |
+
continue;
|
48 |
+
$modules_data[$module_id] = $data;
|
49 |
+
}
|
50 |
+
|
51 |
+
// Check for Manual sync
|
52 |
+
$is_product_sync = false;
|
53 |
+
$is_attr_sync = false;
|
54 |
+
foreach ($modules_data as $module_id => $data)
|
55 |
+
{
|
56 |
+
foreach ($data as $item)
|
57 |
+
{
|
58 |
+
if (!$is_product_sync && !empty($item['woo_sync']))
|
59 |
+
{
|
60 |
+
self::wooSync($item, $module_id, $post_id);
|
61 |
+
$is_product_sync = true;
|
62 |
+
}
|
63 |
+
|
64 |
+
if (!$is_attr_sync && !empty($item['woo_attr']))
|
65 |
+
{
|
66 |
+
self::wooCreateAttr($item, $module_id, $post_id);
|
67 |
+
$is_attr_sync == true;
|
68 |
+
}
|
69 |
+
|
70 |
+
if ($is_product_sync && $is_attr_sync)
|
71 |
+
return;
|
72 |
+
}
|
73 |
+
}
|
74 |
+
|
75 |
+
if ($is_product_sync)
|
76 |
+
return;
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Automatic sync
|
80 |
+
*/
|
81 |
+
$woocommerce_product_sync = GeneralConfig::getInstance()->option('woocommerce_product_sync');
|
82 |
+
$woocommerce_modules = GeneralConfig::getInstance()->option('woocommerce_modules');
|
83 |
+
if (!$woocommerce_modules || $woocommerce_product_sync == 'manually')
|
84 |
+
return;
|
85 |
+
|
86 |
+
$modules_data = array_intersect_key($modules_data, $woocommerce_modules);
|
87 |
+
if ($item = ContentManager::getMainProduct($modules_data, $woocommerce_product_sync))
|
88 |
+
{
|
89 |
+
self::wooSync($item, $item['module_id'], $post_id);
|
90 |
+
|
91 |
+
// also sync attr if not exist
|
92 |
+
if (!$product->get_attributes())
|
93 |
+
self::wooCreateAttr($item, $item['module_id'], $post_id);
|
94 |
+
}
|
95 |
+
}
|
96 |
+
|
97 |
+
public static function wooSync(array $item, $module_id, $post_id)
|
98 |
+
{
|
99 |
+
if (!$product = \wc_get_product($post_id))
|
100 |
+
return false;
|
101 |
+
|
102 |
+
// set price
|
103 |
+
if (!empty($item['price']))
|
104 |
+
{
|
105 |
+
|
106 |
+
$currency_rate = 1;
|
107 |
+
$woo_currency = \get_woocommerce_currency();
|
108 |
+
if ($item['currencyCode'] && $item['currencyCode'] != $woo_currency)
|
109 |
+
{
|
110 |
+
$currency_rate = CurrencyHelper::getCurrencyRate($item['currencyCode'], $woo_currency);
|
111 |
+
if (!$currency_rate)
|
112 |
+
$currency_rate = 1;
|
113 |
+
}
|
114 |
+
|
115 |
+
$product->set_price($item['price'] * $currency_rate);
|
116 |
+
if ($item['priceOld'])
|
117 |
+
{
|
118 |
+
$product->set_regular_price($item['priceOld'] * $currency_rate);
|
119 |
+
$product->set_sale_price($item['price'] * $currency_rate);
|
120 |
+
} else
|
121 |
+
{
|
122 |
+
$product->set_regular_price($item['price'] * $currency_rate);
|
123 |
+
$product->set_sale_price(null);
|
124 |
+
}
|
125 |
+
} else
|
126 |
+
{
|
127 |
+
$product->set_price(null);
|
128 |
+
$product->set_regular_price(null);
|
129 |
+
$product->set_sale_price(null);
|
130 |
+
}
|
131 |
+
|
132 |
+
if ($item['description'] && !$product->get_short_description())
|
133 |
+
$product->set_short_description($item['description']);
|
134 |
+
|
135 |
+
$product->set_date_modified(time());
|
136 |
+
|
137 |
+
// image
|
138 |
+
if (!$product->get_image_id() && $img_file = FeaturedImage::getImgFile($item))
|
139 |
+
FeaturedImage::attachThumbnail($img_file, $post_id);
|
140 |
+
|
141 |
+
if ($product->get_type() == 'external')
|
142 |
+
$product->set_product_url($item['url']);
|
143 |
+
|
144 |
+
// update meta
|
145 |
+
self::setMetaSyncUniqueId($post_id, $module_id, $item['unique_id']);
|
146 |
+
|
147 |
+
return $product->save();
|
148 |
+
}
|
149 |
+
|
150 |
+
public static function wooCreateAttr(array $item, $module_id, $post_id)
|
151 |
+
{
|
152 |
+
if (empty($item['features']) || !is_array($item['features']))
|
153 |
+
return;
|
154 |
+
|
155 |
+
if (!$product = \wc_get_product($post_id))
|
156 |
+
return false;
|
157 |
+
|
158 |
+
$attributes = $product->get_attributes();
|
159 |
+
$registered_taxonomy_count = 0;
|
160 |
+
$taxonomy_count = 0;
|
161 |
+
foreach ($item['features'] as $feature)
|
162 |
+
{
|
163 |
+
$feature['name'] = \wc_clean($feature['name']);
|
164 |
+
$prepared = self::modifyAttribute($feature['name'], $feature['value']);
|
165 |
+
$feature['name'] = $prepared['name'];
|
166 |
+
$feature['value'] = $prepared['value'];
|
167 |
+
|
168 |
+
$f_name = \wc_clean($feature['name']);
|
169 |
+
$f_slug = self::getSlug($f_name);
|
170 |
+
|
171 |
+
// exists?
|
172 |
+
if (isset($attributes[$f_slug]) || isset($attributes['pa_' . $f_slug]))
|
173 |
+
continue;
|
174 |
+
|
175 |
+
$f_value = \wc_sanitize_term_text_based($feature['value']);
|
176 |
+
$term_ids = array();
|
177 |
+
$taxonomy = '';
|
178 |
+
$prepared = self::isTaxonomyAttribute($f_name, $f_value, $f_slug);
|
179 |
+
if ($prepared)
|
180 |
+
{
|
181 |
+
$taxonomy_count++;
|
182 |
+
$f_name = \wc_clean($prepared['name']);
|
183 |
+
|
184 |
+
// Taxonomy Attribute
|
185 |
+
// @see: class-wc-admin-attributes.php -> process_add_attribute()
|
186 |
+
$attr_data = array(
|
187 |
+
'attribute_label' => $f_name,
|
188 |
+
'attribute_name' => $f_slug,
|
189 |
+
'attribute_type' => 'text',
|
190 |
+
);
|
191 |
+
|
192 |
+
$attr_id = self::createTaxonomyAttribute($attr_data);
|
193 |
+
|
194 |
+
if ($attr_id)
|
195 |
+
{
|
196 |
+
$taxonomy = \wc_attribute_taxonomy_name_by_id($attr_id);
|
197 |
+
|
198 |
+
// Register the taxonomy now so that the import works!
|
199 |
+
if (!\taxonomy_exists($taxonomy))
|
200 |
+
{
|
201 |
+
\register_taxonomy(
|
202 |
+
$taxonomy, apply_filters('woocommerce_taxonomy_objects_' . $taxonomy, array('product')), apply_filters('woocommerce_taxonomy_args_' . $taxonomy, array(
|
203 |
+
'hierarchical' => true,
|
204 |
+
'show_ui' => false,
|
205 |
+
'query_var' => true,
|
206 |
+
'rewrite' => false,
|
207 |
+
))
|
208 |
+
);
|
209 |
+
$registered_taxonomy_count++;
|
210 |
+
}
|
211 |
+
|
212 |
+
// Creates the term and taxonomy relationship if it doesn't already exist.
|
213 |
+
$f_value_array = self::value2Array($f_value);
|
214 |
+
$term_ids = \wp_set_object_terms($product->get_id(), $f_value_array, $taxonomy);
|
215 |
+
$term_ids = array_map('intval', $term_ids);
|
216 |
+
} else
|
217 |
+
$attr_id = 0;
|
218 |
+
} else
|
219 |
+
{
|
220 |
+
// Local Attribute
|
221 |
+
$attr_id = 0;
|
222 |
+
$f_value_array = self::value2Array($f_value);
|
223 |
+
}
|
224 |
+
|
225 |
+
$attribute = new \WC_Product_Attribute();
|
226 |
+
$attribute->set_id($attr_id); // 0 for product level attributes. ID for global attributes.
|
227 |
+
if ($taxonomy)
|
228 |
+
$attribute->set_name($taxonomy);
|
229 |
+
else
|
230 |
+
$attribute->set_name($f_name);
|
231 |
+
// attribute value or array of term ids/names.
|
232 |
+
if ($term_ids)
|
233 |
+
$attribute->set_options($term_ids);
|
234 |
+
else
|
235 |
+
$attribute->set_options($f_value_array);
|
236 |
+
$attribute->set_visible(true); // If visible on frontend.
|
237 |
+
$attributes[] = $attribute;
|
238 |
+
}
|
239 |
+
$product->set_attributes($attributes);
|
240 |
+
$res = $product->save();
|
241 |
+
|
242 |
+
if ($taxonomy_count)
|
243 |
+
\flush_rewrite_rules();
|
244 |
+
return $res;
|
245 |
+
}
|
246 |
+
|
247 |
+
public static function createTaxonomyAttribute($attribute)
|
248 |
+
{
|
249 |
+
global $wpdb;
|
250 |
+
|
251 |
+
if (empty($attribute['attribute_label']))
|
252 |
+
return false;
|
253 |
+
|
254 |
+
$attribute['attribute_label'] = \wc_clean($attribute['attribute_label']);
|
255 |
+
|
256 |
+
if (empty($attribute['attribute_name']))
|
257 |
+
$attribute['attribute_name'] = \wc_sanitize_taxonomy_name($attribute['attribute_label']);
|
258 |
+
|
259 |
+
if (empty($attribute['attribute_type']))
|
260 |
+
$attribute['attribute_type'] = 'text';
|
261 |
+
|
262 |
+
|
263 |
+
if (empty($attribute['attribute_orderby']))
|
264 |
+
$attribute['attribute_orderby'] = 'menu_order';
|
265 |
+
|
266 |
+
// validate slug
|
267 |
+
if (strlen($attribute['attribute_name']) >= 28 || wc_check_if_attribute_name_is_reserved($attribute['attribute_name']))
|
268 |
+
return false;
|
269 |
+
|
270 |
+
if (\taxonomy_exists(\wc_attribute_taxonomy_name($attribute['attribute_name'])))
|
271 |
+
return \wc_attribute_taxonomy_id_by_name($attribute['attribute_name']);
|
272 |
+
|
273 |
+
// Create the taxonomy
|
274 |
+
$insert = $wpdb->insert($wpdb->prefix . 'woocommerce_attribute_taxonomies', $attribute);
|
275 |
+
|
276 |
+
if (\is_wp_error($insert))
|
277 |
+
return false;
|
278 |
+
|
279 |
+
$id = $wpdb->insert_id;
|
280 |
+
|
281 |
+
//\do_action('woocommerce_attribute_added', $id, $attribute);
|
282 |
+
|
283 |
+
\wp_schedule_single_event(time(), 'woocommerce_flush_rewrite_rules');
|
284 |
+
\delete_transient('wc_attribute_taxonomies');
|
285 |
+
|
286 |
+
return $id;
|
287 |
+
}
|
288 |
+
|
289 |
+
public static function getAttributesList()
|
290 |
+
{
|
291 |
+
if (self::$attributes_list === null)
|
292 |
+
{
|
293 |
+
$attributes_list = GeneralConfig::getInstance()->option('woocommerce_attributes_list');
|
294 |
+
$attributes_list = explode(',', $attributes_list);
|
295 |
+
$attributes_list = array_map('trim', $attributes_list);
|
296 |
+
$attributes_list = array_map('mb_strtolower', $attributes_list);
|
297 |
+
$attributes_list = array_filter($attributes_list);
|
298 |
+
self::$attributes_list = $attributes_list;
|
299 |
+
}
|
300 |
+
return self::$attributes_list;
|
301 |
+
}
|
302 |
+
|
303 |
+
public static function modifyAttribute($name, $value, $slug = '')
|
304 |
+
{
|
305 |
+
/**
|
306 |
+
* Modifiers
|
307 |
+
*/
|
308 |
+
// 16 M; 8 GB; 1.5 GB; 8MP; 30 fps; 2 m; 0.5600 kg; 6,37 кг
|
309 |
+
if (preg_match('/^([0-9]*[.,]?[0-9]+)[\s+]?([\p{L}]+)$/u', $value, $matches))
|
310 |
+
{
|
311 |
+
$name = $name . ' (' . $matches[2] . ')';
|
312 |
+
$value = $matches[1];
|
313 |
+
}
|
314 |
+
return array('name' => $name, 'value' => $value);
|
315 |
+
}
|
316 |
+
|
317 |
+
public static function value2Array($value)
|
318 |
+
{
|
319 |
+
// arrays
|
320 |
+
$list = preg_split('/[,|;\/]\s/', $value);
|
321 |
+
$list = array_map('trim', $list);
|
322 |
+
$list = array_map('\wc_sanitize_term_text_based', $list);
|
323 |
+
return $list;
|
324 |
+
}
|
325 |
+
|
326 |
+
public static function isTaxonomyAttribute($name, $value, $slug = '')
|
327 |
+
{
|
328 |
+
/**
|
329 |
+
* Black / white list filter
|
330 |
+
*/
|
331 |
+
$attributes_filter = GeneralConfig::getInstance()->option('woocommerce_attributes_filter');
|
332 |
+
if ($attributes_filter)
|
333 |
+
{
|
334 |
+
if (in_array(mb_strtolower($name, 'utf-8'), self::getAttributesList()) || ($slug && in_array($slug, self::getAttributesList())))
|
335 |
+
$in_list = true;
|
336 |
+
else
|
337 |
+
$in_list = false;
|
338 |
+
|
339 |
+
if ($attributes_filter == 'whitelist' && $in_list)
|
340 |
+
return array('name' => $name, 'value' => $value);
|
341 |
+
elseif ($attributes_filter == 'blacklist' && !$in_list)
|
342 |
+
return array('name' => $name, 'value' => $value);
|
343 |
+
else
|
344 |
+
return false;
|
345 |
+
}
|
346 |
+
|
347 |
+
/**
|
348 |
+
* Default filter
|
349 |
+
*/
|
350 |
+
// ignore names
|
351 |
+
$ignore_names = array('depth', 'height', 'weight', 'package', 'model', 'pack of', 'warranty', 'title', 'of items', 'ean', 'department', 'dimensions');
|
352 |
+
foreach ($ignore_names as $in)
|
353 |
+
{
|
354 |
+
if (mb_stristr($name, $in, true, 'utf-8') !== false)
|
355 |
+
return false;
|
356 |
+
}
|
357 |
+
|
358 |
+
if (strstr($name, '(') && strstr($name, ')') && is_numeric($value))
|
359 |
+
{
|
360 |
+
return array('name' => $name, 'value' => $value);
|
361 |
+
}
|
362 |
+
|
363 |
+
// Yes/No/0/1
|
364 |
+
$yes_array = array('yes');
|
365 |
+
foreach ($yes_array as $yes)
|
366 |
+
{
|
367 |
+
if (mb_strtolower($value, 'utf-8') == $yes)
|
368 |
+
return array('name' => $name, 'value' => ucfirst($value));
|
369 |
+
}
|
370 |
+
$no_array = array('no', '0', '-');
|
371 |
+
foreach ($no_array as $no)
|
372 |
+
{
|
373 |
+
if (mb_strtolower($value, 'utf-8') == $no)
|
374 |
+
return false;
|
375 |
+
}
|
376 |
+
|
377 |
+
// arrays
|
378 |
+
$list = preg_split('/[,|;\/]\s/', $value);
|
379 |
+
if (count($list) > 1 && count($list) <= 5)
|
380 |
+
{
|
381 |
+
foreach ($list as $l)
|
382 |
+
{
|
383 |
+
if (mb_strlen($l, 'utf-8') > 20)
|
384 |
+
return false;
|
385 |
+
}
|
386 |
+
return array('name' => $name, 'value' => $value);
|
387 |
+
}
|
388 |
+
|
389 |
+
// short string value
|
390 |
+
if (mb_strlen($value, 'utf-8') < 20)
|
391 |
+
return array('name' => $name, 'value' => $value);
|
392 |
+
|
393 |
+
return false;
|
394 |
+
}
|
395 |
+
|
396 |
+
public static function getSlug($name)
|
397 |
+
{
|
398 |
+
// already exists?
|
399 |
+
$taxonomies = \wc_get_attribute_taxonomies();
|
400 |
+
foreach ($taxonomies as $taxonomie)
|
401 |
+
{
|
402 |
+
if ($taxonomie->attribute_label == $name)
|
403 |
+
return $taxonomie->attribute_name;
|
404 |
+
}
|
405 |
+
|
406 |
+
// rus 2 lat
|
407 |
+
$slug = strtolower(TextHelper::sluggable($name));
|
408 |
+
if (strlen($slug) >= 28)
|
409 |
+
$slug = substr($slug, 0, 27);
|
410 |
+
$slug = \wc_sanitize_taxonomy_name($slug);
|
411 |
+
return $slug;
|
412 |
+
}
|
413 |
+
|
414 |
+
public static function setMetaSyncUniqueId($post_id, $module_id, $unique_id)
|
415 |
+
{
|
416 |
+
if (!$unique_id)
|
417 |
+
\delete_post_meta($post_id, self::META_WOO_SYNC_MODULE_UNIQUE_ID);
|
418 |
+
else
|
419 |
+
\update_post_meta($post_id, self::META_WOO_SYNC_MODULE_UNIQUE_ID, $module_id . '[&]' . $unique_id);
|
420 |
+
}
|
421 |
+
|
422 |
+
public static function getMetaSyncUniqueId($post_id)
|
423 |
+
{
|
424 |
+
return \get_post_meta($post_id, self::META_WOO_SYNC_MODULE_UNIQUE_ID, true);
|
425 |
+
}
|
426 |
+
|
427 |
+
public static function getSyncItem($post_id)
|
428 |
+
{
|
429 |
+
if (!$muids = self::getMetaSyncUniqueId($post_id))
|
430 |
+
return null;
|
431 |
+
|
432 |
+
$ids = explode('[&]', $muids);
|
433 |
+
if (count($ids) != 2)
|
434 |
+
return null;
|
435 |
+
|
436 |
+
$module_id = $ids[0];
|
437 |
+
$unique_id = $ids[1];
|
438 |
+
|
439 |
+
$item = ContentManager::getProductbyUniqueId($unique_id, $module_id, $post_id);
|
440 |
+
if ($item)
|
441 |
+
$item['module_id'] = $module_id;
|
442 |
+
return $item;
|
443 |
+
}
|
444 |
+
}
|
application/admin/AutoblogController.php
CHANGED
@@ -191,7 +191,7 @@ class AutoblogController {
|
|
191 |
if (is_array($val))
|
192 |
$item[$key] = unserialize($item[$key]);
|
193 |
}
|
194 |
-
$item['id'] =
|
195 |
} else
|
196 |
$item = $default;
|
197 |
} else
|
191 |
if (is_array($val))
|
192 |
$item[$key] = unserialize($item[$key]);
|
193 |
}
|
194 |
+
$item['id'] = null;
|
195 |
} else
|
196 |
$item = $default;
|
197 |
} else
|
application/admin/EggMetabox.php
CHANGED
@@ -251,14 +251,20 @@ class EggMetabox {
|
|
251 |
if (!is_array($content))
|
252 |
return;
|
253 |
|
|
|
254 |
foreach ($content as $module_id => $data)
|
255 |
{
|
|
|
256 |
if (!ModuleManager::getInstance()->moduleExists($module_id) || !ModuleManager::getInstance()->isModuleActive($module_id))
|
257 |
continue;
|
258 |
|
259 |
$data = json_decode($data, true);
|
260 |
$data = $this->dataPrepare($data);
|
261 |
-
|
|
|
|
|
|
|
|
|
262 |
}
|
263 |
}
|
264 |
|
251 |
if (!is_array($content))
|
252 |
return;
|
253 |
|
254 |
+
$i = 0;
|
255 |
foreach ($content as $module_id => $data)
|
256 |
{
|
257 |
+
$i++;
|
258 |
if (!ModuleManager::getInstance()->moduleExists($module_id) || !ModuleManager::getInstance()->isModuleActive($module_id))
|
259 |
continue;
|
260 |
|
261 |
$data = json_decode($data, true);
|
262 |
$data = $this->dataPrepare($data);
|
263 |
+
if ($i == count($content))
|
264 |
+
$last_iteration = true;
|
265 |
+
else
|
266 |
+
$last_iteration = false;
|
267 |
+
ContentManager::saveData($data, $module_id, $post_id, $last_iteration);
|
268 |
}
|
269 |
}
|
270 |
|
application/admin/GeneralConfig.php
CHANGED
@@ -17,7 +17,7 @@ use ContentEgg\application\components\ModuleManager;
|
|
17 |
*/
|
18 |
class GeneralConfig extends Config {
|
19 |
|
20 |
-
private static $
|
21 |
|
22 |
public function page_slug()
|
23 |
{
|
@@ -94,6 +94,8 @@ class GeneralConfig extends Config {
|
|
94 |
$sent_price_alerts = PriceAlertModel::model()->count('status = ' . PriceAlertModel::STATUS_DELETED
|
95 |
. ' AND TIMESTAMPDIFF( DAY, complet_date, "' . \current_time('mysql') . '") <= ' . PriceAlertModel::CLEAN_DELETED_DAYS);
|
96 |
|
|
|
|
|
97 |
return array(
|
98 |
'lang' => array(
|
99 |
'title' => __('Website language', 'content-egg'),
|
@@ -135,16 +137,18 @@ class GeneralConfig extends Config {
|
|
135 |
'message' => sprintf(__('The field "%s" can\'t be more than %d.', 'content-egg'), __('Price history', 'content-egg'), 362),
|
136 |
),
|
137 |
),
|
|
|
138 |
),
|
139 |
'price_alert_enabled' => array(
|
140 |
'title' => 'Price alert',
|
141 |
'description' => __('Allow members to subscribe for price drop alert on email.', 'content-egg') .
|
142 |
'<p class="description">' . sprintf(__('Active subscriptions now: <b>%d</b>', 'content-egg'), $total_price_alerts) .
|
143 |
-
'. ' . sprintf(__('Messages are sent for last %d days: <b>%d</b>', 'content-egg'), PriceAlertModel::CLEAN_DELETED_DAYS, $sent_price_alerts) . '
|
|
|
144 |
'<p class="description">' . __('This option requires "Price history" option (must be enabled) to work.', 'content-egg') . '</p>',
|
145 |
'callback' => array($this, 'render_checkbox'),
|
146 |
'default' => true,
|
147 |
-
'section' => '
|
148 |
),
|
149 |
'button_color' => array(
|
150 |
'title' => __('Button color', 'content-egg'),
|
@@ -162,16 +166,16 @@ class GeneralConfig extends Config {
|
|
162 |
'default' => '',
|
163 |
'validator' => array(
|
164 |
'strip_tags',
|
165 |
-
),
|
166 |
),
|
167 |
'btn_text_coupon' => array(
|
168 |
'title' => __('Coupon button text', 'content-egg'),
|
169 |
'description' => sprintf(__('It will be used instead of "%s".', 'content-egg'), __('Shop Sale', 'content-egg-tpl')),
|
170 |
'callback' => array($this, 'render_input'),
|
171 |
-
'default' =>'',
|
172 |
'validator' => array(
|
173 |
'strip_tags',
|
174 |
-
),
|
175 |
),
|
176 |
'redirect_prefix' => array(
|
177 |
'title' => __('Redirect prefix', 'content-egg'),
|
@@ -196,6 +200,7 @@ class GeneralConfig extends Config {
|
|
196 |
'trim',
|
197 |
'allow_empty',
|
198 |
),
|
|
|
199 |
),
|
200 |
'from_email' => array(
|
201 |
'title' => __('From Email', 'content-egg'),
|
@@ -210,6 +215,7 @@ class GeneralConfig extends Config {
|
|
210 |
'message' => sprintf(__('Field "%s" filled with wrong data.', 'content-egg'), 'Email'),
|
211 |
),
|
212 |
),
|
|
|
213 |
),
|
214 |
'search_modules' => array(
|
215 |
'title' => __('Search modules', 'content-egg'),
|
@@ -217,9 +223,10 @@ class GeneralConfig extends Config {
|
|
217 |
__('Do not select more than 1-2 modules.', 'content-egg') . '<br>' .
|
218 |
__('Please note, AE modules work slowly and are not recommended for use as search modules.', 'content-egg') . '<br>' .
|
219 |
__('Do not forget to add search widget or shorcode [content-egg-search-form].', 'content-egg'),
|
220 |
-
'checkbox_options' => self::
|
221 |
'callback' => array($this, 'render_checkbox_list'),
|
222 |
'default' => array(),
|
|
|
223 |
),
|
224 |
'search_page_tpl' => array(
|
225 |
'title' => __('Search page template', 'content-egg'),
|
@@ -227,6 +234,47 @@ class GeneralConfig extends Config {
|
|
227 |
__('You can use shortcodes, for example: [content-egg module=Amazon template=grid]', 'content-egg'),
|
228 |
'callback' => array($this, 'render_textarea'),
|
229 |
'default' => '',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
230 |
),
|
231 |
);
|
232 |
}
|
@@ -246,20 +294,13 @@ class GeneralConfig extends Config {
|
|
246 |
PluginAdmin::render('settings', array('page_slug' => $this->page_slug()));
|
247 |
}
|
248 |
|
249 |
-
private static function
|
250 |
{
|
251 |
-
if (self::$
|
252 |
{
|
253 |
-
|
254 |
-
foreach ($modules as $module_id => $module)
|
255 |
-
{
|
256 |
-
// AE module?
|
257 |
-
//if ($module_id != $module->getMyShortId())
|
258 |
-
// continue;
|
259 |
-
self::$search_midules[$module_id] = $module->getName();
|
260 |
-
}
|
261 |
}
|
262 |
-
return self::$
|
263 |
}
|
264 |
|
265 |
}
|
17 |
*/
|
18 |
class GeneralConfig extends Config {
|
19 |
|
20 |
+
private static $affiliate_modules;
|
21 |
|
22 |
public function page_slug()
|
23 |
{
|
94 |
$sent_price_alerts = PriceAlertModel::model()->count('status = ' . PriceAlertModel::STATUS_DELETED
|
95 |
. ' AND TIMESTAMPDIFF( DAY, complet_date, "' . \current_time('mysql') . '") <= ' . PriceAlertModel::CLEAN_DELETED_DAYS);
|
96 |
|
97 |
+
$export_url = \get_admin_url(\get_current_blog_id(), 'admin.php?page=content-egg-tools&action=subscribers-export');
|
98 |
+
|
99 |
return array(
|
100 |
'lang' => array(
|
101 |
'title' => __('Website language', 'content-egg'),
|
137 |
'message' => sprintf(__('The field "%s" can\'t be more than %d.', 'content-egg'), __('Price history', 'content-egg'), 362),
|
138 |
),
|
139 |
),
|
140 |
+
'section' => __('Price alerts', 'content-egg'),
|
141 |
),
|
142 |
'price_alert_enabled' => array(
|
143 |
'title' => 'Price alert',
|
144 |
'description' => __('Allow members to subscribe for price drop alert on email.', 'content-egg') .
|
145 |
'<p class="description">' . sprintf(__('Active subscriptions now: <b>%d</b>', 'content-egg'), $total_price_alerts) .
|
146 |
+
'. ' . sprintf(__('Messages are sent for last %d days: <b>%d</b>', 'content-egg'), PriceAlertModel::CLEAN_DELETED_DAYS, $sent_price_alerts) . '.' .
|
147 |
+
' ' . sprintf(__('Export: [ <a href="%s">All</a> | <a href="%s">Active</a> ]', 'content-egg'), $export_url, $export_url . '&active_only=true') . '</p>' .
|
148 |
'<p class="description">' . __('This option requires "Price history" option (must be enabled) to work.', 'content-egg') . '</p>',
|
149 |
'callback' => array($this, 'render_checkbox'),
|
150 |
'default' => true,
|
151 |
+
'section' => __('Price alerts', 'content-egg'),
|
152 |
),
|
153 |
'button_color' => array(
|
154 |
'title' => __('Button color', 'content-egg'),
|
166 |
'default' => '',
|
167 |
'validator' => array(
|
168 |
'strip_tags',
|
169 |
+
),
|
170 |
),
|
171 |
'btn_text_coupon' => array(
|
172 |
'title' => __('Coupon button text', 'content-egg'),
|
173 |
'description' => sprintf(__('It will be used instead of "%s".', 'content-egg'), __('Shop Sale', 'content-egg-tpl')),
|
174 |
'callback' => array($this, 'render_input'),
|
175 |
+
'default' => '',
|
176 |
'validator' => array(
|
177 |
'strip_tags',
|
178 |
+
),
|
179 |
),
|
180 |
'redirect_prefix' => array(
|
181 |
'title' => __('Redirect prefix', 'content-egg'),
|
200 |
'trim',
|
201 |
'allow_empty',
|
202 |
),
|
203 |
+
'section' => __('Price alerts', 'content-egg'),
|
204 |
),
|
205 |
'from_email' => array(
|
206 |
'title' => __('From Email', 'content-egg'),
|
215 |
'message' => sprintf(__('Field "%s" filled with wrong data.', 'content-egg'), 'Email'),
|
216 |
),
|
217 |
),
|
218 |
+
'section' => __('Price alerts', 'content-egg'),
|
219 |
),
|
220 |
'search_modules' => array(
|
221 |
'title' => __('Search modules', 'content-egg'),
|
223 |
__('Do not select more than 1-2 modules.', 'content-egg') . '<br>' .
|
224 |
__('Please note, AE modules work slowly and are not recommended for use as search modules.', 'content-egg') . '<br>' .
|
225 |
__('Do not forget to add search widget or shorcode [content-egg-search-form].', 'content-egg'),
|
226 |
+
'checkbox_options' => self::getAffiliteModulesList(),
|
227 |
'callback' => array($this, 'render_checkbox_list'),
|
228 |
'default' => array(),
|
229 |
+
'section' => __('Frontend search', 'content-egg'),
|
230 |
),
|
231 |
'search_page_tpl' => array(
|
232 |
'title' => __('Search page template', 'content-egg'),
|
234 |
__('You can use shortcodes, for example: [content-egg module=Amazon template=grid]', 'content-egg'),
|
235 |
'callback' => array($this, 'render_textarea'),
|
236 |
'default' => '',
|
237 |
+
'section' => __('Frontend search', 'content-egg'),
|
238 |
+
),
|
239 |
+
'woocommerce_modules' => array(
|
240 |
+
'title' => __('Modules for synchronization', 'content-egg'),
|
241 |
+
'description' => __('Select modules for automatic synchronization with WooCommerce.', 'content-egg'),
|
242 |
+
'checkbox_options' => self::getAffiliteModulesList(),
|
243 |
+
'callback' => array($this, 'render_checkbox_list'),
|
244 |
+
'default' => array(),
|
245 |
+
'section' => __('WooCommerce synchronization', 'content-egg'),
|
246 |
+
),
|
247 |
+
'woocommerce_product_sync' => array(
|
248 |
+
'title' => __('Automatic synchronization', 'content-egg'),
|
249 |
+
'description' => __('How to choose product for automatic synchronization with WooCommerce.', 'content-egg'),
|
250 |
+
'callback' => array($this, 'render_dropdown'),
|
251 |
+
'dropdown_options' => array(
|
252 |
+
'min_price' => __('Minimum price', 'content-egg'),
|
253 |
+
'max_price' => __('Maximum price', 'content-egg'),
|
254 |
+
'random' => __('Random', 'content-egg'),
|
255 |
+
'manually' => __('Manually only', 'content-egg'),
|
256 |
+
),
|
257 |
+
'default' => 'min_price',
|
258 |
+
'section' => __('WooCommerce synchronization', 'content-egg'),
|
259 |
+
),
|
260 |
+
'woocommerce_attributes_filter' => array(
|
261 |
+
'title' => __('Global attributes filter', 'content-egg'),
|
262 |
+
'description' => __('How to create wocommerce attributes when synchronizing. Please, read documentation about them in our docs.', 'content-egg'),
|
263 |
+
'callback' => array($this, 'render_dropdown'),
|
264 |
+
'dropdown_options' => array(
|
265 |
+
'' => __('Default filter', 'content-egg'),
|
266 |
+
'whitelist' => __('Whitelist attribute names', 'content-egg'),
|
267 |
+
'blacklist' => __('Blacklist attribute names', 'content-egg'),
|
268 |
+
),
|
269 |
+
'default' => '',
|
270 |
+
'section' => __('WooCommerce synchronization', 'content-egg'),
|
271 |
+
),
|
272 |
+
'woocommerce_attributes_list' => array(
|
273 |
+
'title' => __('Attributes list', 'content-egg'),
|
274 |
+
'description' => __('Black / white list of woocommerce global (filterable) attributes. Enter a comma separated list.', 'content-egg'),
|
275 |
+
'callback' => array($this, 'render_textarea'),
|
276 |
+
'default' => '',
|
277 |
+
'section' => __('WooCommerce synchronization', 'content-egg'),
|
278 |
),
|
279 |
);
|
280 |
}
|
294 |
PluginAdmin::render('settings', array('page_slug' => $this->page_slug()));
|
295 |
}
|
296 |
|
297 |
+
private static function getAffiliteModulesList()
|
298 |
{
|
299 |
+
if (self::$affiliate_modules === null)
|
300 |
{
|
301 |
+
self::$affiliate_modules = ModuleManager::getInstance()->getAffiliteModulesList(false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
302 |
}
|
303 |
+
return self::$affiliate_modules;
|
304 |
}
|
305 |
|
306 |
}
|
application/admin/PluginAdmin.php
CHANGED
@@ -52,6 +52,7 @@ class PluginAdmin {
|
|
52 |
new FeaturedImage;
|
53 |
new PrefillController;
|
54 |
new AutoblogController;
|
|
|
55 |
AeIntegrationConfig::getInstance()->adminInit();
|
56 |
}
|
57 |
if (Plugin::isEnvato() && !Plugin::isActivated() && !\get_option(Plugin::slug . '_env_install'))
|
52 |
new FeaturedImage;
|
53 |
new PrefillController;
|
54 |
new AutoblogController;
|
55 |
+
new ToolsController;
|
56 |
AeIntegrationConfig::getInstance()->adminInit();
|
57 |
}
|
58 |
if (Plugin::isEnvato() && !Plugin::isActivated() && !\get_option(Plugin::slug . '_env_install'))
|
application/admin/PrefillController.php
CHANGED
@@ -8,6 +8,7 @@ use ContentEgg\application\helpers\TextHelper;
|
|
8 |
use ContentEgg\application\helpers\InputHelper;
|
9 |
use ContentEgg\application\components\ContentManager;
|
10 |
use ContentEgg\application\libs\KeywordDensity;
|
|
|
11 |
|
12 |
/**
|
13 |
* PrefillController class file
|
@@ -31,14 +32,26 @@ class PrefillController {
|
|
31 |
\wp_enqueue_script('jquery-ui-progressbar', array('jquery-ui-core'));
|
32 |
\wp_enqueue_style('contentegg-admin-ui-css', '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/themes/smoothness/jquery-ui.css', false, Plugin::version, false);
|
33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
\wp_localize_script('contentegg-prefill', 'content_egg_prefill', array(
|
35 |
-
'
|
36 |
-
\get_posts(array(
|
37 |
-
'post_type' => GeneralConfig::getInstance()->option('post_types'),
|
38 |
-
'numberposts' => -1,
|
39 |
-
'post_status' => array('publish', 'future'),
|
40 |
-
'fields' => 'ids',
|
41 |
-
)),
|
42 |
'nonce' => \wp_create_nonce('contentegg-prefill')
|
43 |
));
|
44 |
}
|
@@ -68,21 +81,24 @@ class PrefillController {
|
|
68 |
|
69 |
\check_ajax_referer('contentegg-prefill', 'nonce');
|
70 |
|
71 |
-
if (empty($
|
72 |
throw new \Exception("Module is undefined.");
|
73 |
-
if (empty($
|
74 |
throw new \Exception("Post ID is undefined.");
|
75 |
|
76 |
-
$module_id = TextHelper::clear($
|
77 |
-
$post_id = (int) $
|
78 |
-
$keyword_source = InputHelper::
|
79 |
-
$autoupdate = InputHelper::
|
80 |
$autoupdate = filter_var($autoupdate, FILTER_VALIDATE_BOOLEAN);
|
81 |
-
$keyword_count = (int) InputHelper::
|
82 |
-
$minus_words = TextHelper::commaList(InputHelper::
|
|
|
|
|
|
|
83 |
if ($minus_words)
|
84 |
$minus_words = explode(',', $minus_words);
|
85 |
-
$custom_field = InputHelper::
|
86 |
$custom_field = TextHelper::clear($custom_field);
|
87 |
|
88 |
$parser = ModuleManager::getInstance()->parserFactory($module_id);
|
@@ -124,7 +140,7 @@ class PrefillController {
|
|
124 |
|
125 |
// save & exit...
|
126 |
\update_post_meta($post->ID, ContentManager::META_PREFIX_KEYWORD . $parser->getId(), $keyword);
|
127 |
-
|
128 |
}
|
129 |
|
130 |
try
|
@@ -147,6 +163,28 @@ class PrefillController {
|
|
147 |
// save
|
148 |
ContentManager::saveData($data, $parser->getId(), $post->ID);
|
149 |
$log .= ' - ' . __('Data saved:', 'content-egg') . ' ' . count($data) . '.';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
$this->printResult($log);
|
151 |
}
|
152 |
|
@@ -176,11 +214,10 @@ class PrefillController {
|
|
176 |
$popular = $kd->getPopularWords($keyword_count);
|
177 |
$keyword = join(' ', $popular);
|
178 |
} elseif ($keyword_source == '_custom_field')
|
179 |
-
{
|
180 |
if (!$meta_name)
|
181 |
return '';
|
182 |
$keyword = \get_post_meta($post_id, $meta_name, true);
|
183 |
-
|
184 |
} elseif (ModuleManager::getInstance()->moduleExists($keyword_source))
|
185 |
{
|
186 |
$keyword = \get_post_meta($post_id, ContentManager::META_PREFIX_KEYWORD . $keyword_source, true);
|
8 |
use ContentEgg\application\helpers\InputHelper;
|
9 |
use ContentEgg\application\components\ContentManager;
|
10 |
use ContentEgg\application\libs\KeywordDensity;
|
11 |
+
use ContentEgg\application\models\AutoblogModel;
|
12 |
|
13 |
/**
|
14 |
* PrefillController class file
|
32 |
\wp_enqueue_script('jquery-ui-progressbar', array('jquery-ui-core'));
|
33 |
\wp_enqueue_style('contentegg-admin-ui-css', '//ajax.googleapis.com/ajax/libs/jqueryui/1.8.21/themes/smoothness/jquery-ui.css', false, Plugin::version, false);
|
34 |
|
35 |
+
$post_statuses = array_merge(get_post_statuses(), array('future' => __('Future')));
|
36 |
+
$post_ids = \get_posts(array(
|
37 |
+
'post_type' => GeneralConfig::getInstance()->option('post_types'),
|
38 |
+
'numberposts' => -1,
|
39 |
+
'post_status' => array_keys($post_statuses),
|
40 |
+
'fields' => 'ids',
|
41 |
+
));
|
42 |
+
|
43 |
+
$posts = array();
|
44 |
+
foreach ($post_ids as $post_id)
|
45 |
+
{
|
46 |
+
$post = array();
|
47 |
+
$post['id'] = $post_id;
|
48 |
+
$post['post_type'] = \get_post_field('post_type', $post_id);
|
49 |
+
$post['post_status'] = \get_post_field('post_status', $post_id);
|
50 |
+
$posts[] = $post;
|
51 |
+
}
|
52 |
+
|
53 |
\wp_localize_script('contentegg-prefill', 'content_egg_prefill', array(
|
54 |
+
'posts' => $posts,
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
'nonce' => \wp_create_nonce('contentegg-prefill')
|
56 |
));
|
57 |
}
|
81 |
|
82 |
\check_ajax_referer('contentegg-prefill', 'nonce');
|
83 |
|
84 |
+
if (empty($_POST['module_id']))
|
85 |
throw new \Exception("Module is undefined.");
|
86 |
+
if (empty($_POST['post_id']))
|
87 |
throw new \Exception("Post ID is undefined.");
|
88 |
|
89 |
+
$module_id = TextHelper::clear($_POST['module_id']);
|
90 |
+
$post_id = (int) $_POST['post_id'];
|
91 |
+
$keyword_source = InputHelper::post('keyword_source');
|
92 |
+
$autoupdate = InputHelper::post('autoupdate', false);
|
93 |
$autoupdate = filter_var($autoupdate, FILTER_VALIDATE_BOOLEAN);
|
94 |
+
$keyword_count = (int) InputHelper::post('keyword_count');
|
95 |
+
$minus_words = TextHelper::commaList(InputHelper::post('minus_words'));
|
96 |
+
$custom_field_names = InputHelper::post('custom_field_names', array());
|
97 |
+
$custom_field_values = InputHelper::post('custom_field_values', array());
|
98 |
+
|
99 |
if ($minus_words)
|
100 |
$minus_words = explode(',', $minus_words);
|
101 |
+
$custom_field = InputHelper::post('custom_field', '');
|
102 |
$custom_field = TextHelper::clear($custom_field);
|
103 |
|
104 |
$parser = ModuleManager::getInstance()->parserFactory($module_id);
|
140 |
|
141 |
// save & exit...
|
142 |
\update_post_meta($post->ID, ContentManager::META_PREFIX_KEYWORD . $parser->getId(), $keyword);
|
143 |
+
//$this->printResult($log . ' - ' . __('Keyword for autoupdate was saved.', 'content-egg'));
|
144 |
}
|
145 |
|
146 |
try
|
163 |
// save
|
164 |
ContentManager::saveData($data, $parser->getId(), $post->ID);
|
165 |
$log .= ' - ' . __('Data saved:', 'content-egg') . ' ' . count($data) . '.';
|
166 |
+
|
167 |
+
// add custom fields
|
168 |
+
$meta_input = array();
|
169 |
+
if ($custom_field_names && is_array($custom_field_names))
|
170 |
+
{
|
171 |
+
foreach ($custom_field_names as $i => $cf_name)
|
172 |
+
{
|
173 |
+
if (!$cf_name || empty($custom_field_values[$i]))
|
174 |
+
continue;
|
175 |
+
$cf_value = $custom_field_values[$i];
|
176 |
+
if (\is_serialized($cf_value))
|
177 |
+
$cf_value = @unserialize($cf_value);
|
178 |
+
else
|
179 |
+
{
|
180 |
+
$modules_data = array($parser->getId() => $data);
|
181 |
+
$main_product = AutoblogModel::getMainProduct($modules_data, 'min_price');
|
182 |
+
$cf_value = AutoblogModel::buildTemplate($cf_value, $modules_data, $keyword, array(), $main_product);
|
183 |
+
}
|
184 |
+
\update_post_meta($post->ID, $cf_name, $cf_value);
|
185 |
+
}
|
186 |
+
}
|
187 |
+
|
188 |
$this->printResult($log);
|
189 |
}
|
190 |
|
214 |
$popular = $kd->getPopularWords($keyword_count);
|
215 |
$keyword = join(' ', $popular);
|
216 |
} elseif ($keyword_source == '_custom_field')
|
217 |
+
{
|
218 |
if (!$meta_name)
|
219 |
return '';
|
220 |
$keyword = \get_post_meta($post_id, $meta_name, true);
|
|
|
221 |
} elseif (ModuleManager::getInstance()->moduleExists($keyword_source))
|
222 |
{
|
223 |
$keyword = \get_post_meta($post_id, ContentManager::META_PREFIX_KEYWORD . $keyword_source, true);
|
application/admin/ToolsController.php
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace ContentEgg\application\admin;
|
4 |
+
|
5 |
+
use ContentEgg\application\models\PriceAlertModel;
|
6 |
+
use ContentEgg\application\helpers\FileHelper;
|
7 |
+
|
8 |
+
/**
|
9 |
+
* ToolsController class file
|
10 |
+
*
|
11 |
+
* @author keywordrush.com <support@keywordrush.com>
|
12 |
+
* @link http://www.keywordrush.com/
|
13 |
+
* @copyright Copyright © 2017 keywordrush.com
|
14 |
+
*/
|
15 |
+
class ToolsController {
|
16 |
+
|
17 |
+
const slug = 'content-egg-tools';
|
18 |
+
|
19 |
+
public function __construct()
|
20 |
+
{
|
21 |
+
\add_action('admin_menu', array($this, 'actionHandler'));
|
22 |
+
}
|
23 |
+
|
24 |
+
public function actionHandler()
|
25 |
+
{
|
26 |
+
if (empty($GLOBALS['pagenow']) || $GLOBALS['pagenow'] != 'admin.php')
|
27 |
+
return;
|
28 |
+
|
29 |
+
if (empty($_GET['page']) || $_GET['page'] != 'content-egg-tools')
|
30 |
+
return;
|
31 |
+
|
32 |
+
if (!empty($_GET['action']) && $_GET['action'] == 'subscribers-export')
|
33 |
+
{
|
34 |
+
$this->actionSubscribersExport();
|
35 |
+
}
|
36 |
+
}
|
37 |
+
|
38 |
+
public function actionSubscribersExport()
|
39 |
+
{
|
40 |
+
if (!\current_user_can('administrator'))
|
41 |
+
die('You do not have permission to view this page.');
|
42 |
+
|
43 |
+
$where = array();
|
44 |
+
if (!empty($_GET['active_only']) && (bool) $_GET['active_only'])
|
45 |
+
$where = array('where' => 'status = ' . PriceAlertModel::STATUS_ACTIVE);
|
46 |
+
$subscribers = $total_price_alerts = PriceAlertModel::model()->findAll($where);
|
47 |
+
|
48 |
+
$csv_arr = array();
|
49 |
+
$ignore_fields = array('activkey', 'email', 'status');
|
50 |
+
foreach ($subscribers as $subscriber)
|
51 |
+
{
|
52 |
+
$csv_line = array();
|
53 |
+
$csv_line['email'] = $subscriber['email'];
|
54 |
+
$csv_line['status'] = PriceAlertModel::getStatus($subscriber['status']);
|
55 |
+
|
56 |
+
foreach ($subscriber as $key => $s)
|
57 |
+
{
|
58 |
+
if (in_array($key, $ignore_fields))
|
59 |
+
continue;
|
60 |
+
$csv_line[$key] = $s;
|
61 |
+
}
|
62 |
+
$csv_arr[] = $csv_line;
|
63 |
+
}
|
64 |
+
$filename = 'subscribers-' . date('d-m-Y') . '.csv';
|
65 |
+
FileHelper::sendDownloadHeaders($filename);
|
66 |
+
echo FileHelper::array2Csv($csv_arr);
|
67 |
+
exit;
|
68 |
+
}
|
69 |
+
|
70 |
+
}
|
application/admin/views/_metabox_autoblog.php
CHANGED
@@ -305,13 +305,25 @@ use ContentEgg\application\components\ModuleManager;
|
|
305 |
<td>
|
306 |
<?php
|
307 |
$opt = array('name' => 'item[category]', 'id' => 'category', 'selected' => $item['category'], 'hide_empty' => false);
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
}
|
313 |
-
\wp_dropdown_categories($opt);
|
314 |
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
315 |
<p class="description">
|
316 |
<?php _e('Default category for posts.', 'content-egg'); ?>
|
317 |
<?php if ($batch): ?>
|
@@ -320,7 +332,7 @@ use ContentEgg\application\components\ModuleManager;
|
|
320 |
</p>
|
321 |
</td>
|
322 |
</tr>
|
323 |
-
|
324 |
<tr class="form-field">
|
325 |
<th valign="top" scope="row">
|
326 |
<label for="dynamic_categories"><?php _e('Dynamic categories', 'content-egg'); ?></label>
|
@@ -345,7 +357,7 @@ use ContentEgg\application\components\ModuleManager;
|
|
345 |
<p class="description"><?php _e('Post will not be published if no content for such number of modules.', 'content-egg'); ?></p>
|
346 |
</td>
|
347 |
</tr>
|
348 |
-
|
349 |
<tr class="form-field">
|
350 |
<th valign="top" scope="row">
|
351 |
<label for="min_comment_count"><?php _e('Minimum reviews required', 'content-egg'); ?></label>
|
@@ -432,12 +444,12 @@ use ContentEgg\application\components\ModuleManager;
|
|
432 |
<td>
|
433 |
<div style="width: 50%;float:left;">
|
434 |
<?php for ($i = 0; $i < count($item['custom_field_names']); $i++): ?>
|
435 |
-
<input type="text" value="<?php echo esc_attr($item['custom_field_names'][$i]); ?>" name="item[custom_field_names][]" placeholder="<?php _e('Custom Field', 'content-egg'); ?> <?php echo $i + 1
|
436 |
<?php endfor; ?>
|
437 |
</div>
|
438 |
<div style="width: 50%;float:left;">
|
439 |
<?php for ($i = 0; $i < count($item['custom_field_values']); $i++): ?>
|
440 |
-
<input value="<?php echo esc_attr($item['custom_field_values'][$i]); ?>" type="text" name="item[custom_field_values][]" placeholder="<?php _e('Value', 'content-egg'); ?> <?php echo $i + 1
|
441 |
<?php endfor; ?>
|
442 |
</div>
|
443 |
<p class="description">
|
305 |
<td>
|
306 |
<?php
|
307 |
$opt = array('name' => 'item[category]', 'id' => 'category', 'selected' => $item['category'], 'hide_empty' => false);
|
308 |
+
//\wp_dropdown_categories($opt);
|
309 |
+
// categs + product categs
|
310 |
+
$cat_args = array('taxonomy' => array('category', 'product_cat'), 'orderby' => 'name', 'order' => 'asc', 'hide_empty' => false);
|
311 |
+
$categories = \get_terms($cat_args);
|
|
|
|
|
312 |
?>
|
313 |
+
|
314 |
+
<select name="item[category]" id="category">
|
315 |
+
<?php if ($batch): ?>
|
316 |
+
<option value="-1" <?php \selected($item['category'], -1); ?>>[ <?php _e('Create Automatically', 'content-egg');?> ]</option>
|
317 |
+
<?php endif; ?>
|
318 |
+
<?php foreach ($categories as $category): ?>
|
319 |
+
<option value="<?php echo \esc_attr($category->term_id); ?>" <?php \selected($item['category'], $category->term_id); ?>>
|
320 |
+
<?php echo \esc_attr($category->name); ?>
|
321 |
+
<?php if ($category->taxonomy == 'product_cat'):?> [product]<?php endif; ?>
|
322 |
+
</option>
|
323 |
+
<?php endforeach; ?>
|
324 |
+
</select>
|
325 |
+
|
326 |
+
|
327 |
<p class="description">
|
328 |
<?php _e('Default category for posts.', 'content-egg'); ?>
|
329 |
<?php if ($batch): ?>
|
332 |
</p>
|
333 |
</td>
|
334 |
</tr>
|
335 |
+
|
336 |
<tr class="form-field">
|
337 |
<th valign="top" scope="row">
|
338 |
<label for="dynamic_categories"><?php _e('Dynamic categories', 'content-egg'); ?></label>
|
357 |
<p class="description"><?php _e('Post will not be published if no content for such number of modules.', 'content-egg'); ?></p>
|
358 |
</td>
|
359 |
</tr>
|
360 |
+
|
361 |
<tr class="form-field">
|
362 |
<th valign="top" scope="row">
|
363 |
<label for="min_comment_count"><?php _e('Minimum reviews required', 'content-egg'); ?></label>
|
444 |
<td>
|
445 |
<div style="width: 50%;float:left;">
|
446 |
<?php for ($i = 0; $i < count($item['custom_field_names']); $i++): ?>
|
447 |
+
<input type="text" value="<?php echo esc_attr($item['custom_field_names'][$i]); ?>" name="item[custom_field_names][]" placeholder="<?php _e('Custom Field', 'content-egg'); ?> <?php echo $i + 1; ?>" id="custom_fields" />
|
448 |
<?php endfor; ?>
|
449 |
</div>
|
450 |
<div style="width: 50%;float:left;">
|
451 |
<?php for ($i = 0; $i < count($item['custom_field_values']); $i++): ?>
|
452 |
+
<input value="<?php echo esc_attr($item['custom_field_values'][$i]); ?>" type="text" name="item[custom_field_values][]" placeholder="<?php _e('Value', 'content-egg'); ?> <?php echo $i + 1; ?>" />
|
453 |
<?php endfor; ?>
|
454 |
</div>
|
455 |
<p class="description">
|
application/admin/views/_metabox_results.php
CHANGED
@@ -1,3 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<div class="data_results" ng-if="models.<?php echo $module_id; ?>.added.length">
|
2 |
<div ui-sortable="{ 'ui-floating': true }" ng-model="models.<?php echo $module_id; ?>.added" class="row">
|
3 |
<div class="col-md-12 added_data" ng-repeat="data in models.<?php echo $module_id; ?>.added">
|
@@ -9,17 +17,22 @@
|
|
9 |
<div ng-class="data.img ? 'col-md-9' : 'col-md-10'">
|
10 |
<input type="text" placeholder="<?php _e('Title', 'content-egg'); ?>" ng-model="data.title" class="form-control" style="margin-bottom: 5px;">
|
11 |
<textarea type="text" placeholder="<?php _e('Description', 'content-egg'); ?>" rows="1" ng-model="data.description" class="col-sm-12"></textarea>
|
|
|
|
|
|
|
|
|
|
|
12 |
</div>
|
13 |
<div class="col-md-2">
|
14 |
<div><a title="Go to" href="{{data.url}}" target="_blank"><span ng-show="data.domain"><img src="https://www.google.com/s2/favicons?domain={{data.domain}}"> {{data.domain}}</span><span ng-hide="data.domain"><?php _e('Go to ', 'content-egg'); ?></span></a></div>
|
15 |
<div style="padding:0xp;margin:0px;padding-top:10px;"><a style="color:#D03300;" ng-click="delete(data, '<?php echo $module_id; ?>')"><?php _e('Delete', 'content-egg'); ?></a></div>
|
16 |
<div style="padding:0xp;margin:0px;">
|
17 |
<?php /* <small class="text-muted" ng-show="data.ean"><br><?php _e('EAN:'); ?> {{data.ean}}</small> */ ?>
|
18 |
-
<small class="text-muted" ng-show="data.last_update"><br><?php _e('Last update:'); ?> {{data.last_update * 1000
|
19 |
</div>
|
20 |
</div>
|
21 |
</div>
|
22 |
-
|
23 |
</div>
|
24 |
</div>
|
25 |
</div>
|
1 |
+
<?php
|
2 |
+
|
3 |
+
use ContentEgg\application\components\ModuleManager;
|
4 |
+
|
5 |
+
$module = ModuleManager::factory($module_id);
|
6 |
+
$is_woo = (\get_post_type($GLOBALS['post']->ID) == 'product') ? true : false;
|
7 |
+
|
8 |
+
?>
|
9 |
<div class="data_results" ng-if="models.<?php echo $module_id; ?>.added.length">
|
10 |
<div ui-sortable="{ 'ui-floating': true }" ng-model="models.<?php echo $module_id; ?>.added" class="row">
|
11 |
<div class="col-md-12 added_data" ng-repeat="data in models.<?php echo $module_id; ?>.added">
|
17 |
<div ng-class="data.img ? 'col-md-9' : 'col-md-10'">
|
18 |
<input type="text" placeholder="<?php _e('Title', 'content-egg'); ?>" ng-model="data.title" class="form-control" style="margin-bottom: 5px;">
|
19 |
<textarea type="text" placeholder="<?php _e('Description', 'content-egg'); ?>" rows="1" ng-model="data.description" class="col-sm-12"></textarea>
|
20 |
+
<?php if ($is_woo && $module->isAffiliateParser()): ?>
|
21 |
+
<label><input ng-true-value="'true'" type="checkbox" ng-model="data.woo_sync" name="woo_sync" ng-change="wooRadioChange(data.unique_id, 'woo_sync')"> <?php _e('Woo synchronization', 'content-egg'); ?></label>
|
22 |
+
|
23 |
+
<label ng-show="data.features.length"><input ng-true-value="'true'" type="checkbox" ng-model="data.woo_attr" name="woo_attr" ng-change="wooRadioChange(data.unique_id, 'woo_attr')"> <?php _e('Woo attributes', 'content-egg'); ?> ({{data.features.length}})</label>
|
24 |
+
<?php endif; ?>
|
25 |
</div>
|
26 |
<div class="col-md-2">
|
27 |
<div><a title="Go to" href="{{data.url}}" target="_blank"><span ng-show="data.domain"><img src="https://www.google.com/s2/favicons?domain={{data.domain}}"> {{data.domain}}</span><span ng-hide="data.domain"><?php _e('Go to ', 'content-egg'); ?></span></a></div>
|
28 |
<div style="padding:0xp;margin:0px;padding-top:10px;"><a style="color:#D03300;" ng-click="delete(data, '<?php echo $module_id; ?>')"><?php _e('Delete', 'content-egg'); ?></a></div>
|
29 |
<div style="padding:0xp;margin:0px;">
|
30 |
<?php /* <small class="text-muted" ng-show="data.ean"><br><?php _e('EAN:'); ?> {{data.ean}}</small> */ ?>
|
31 |
+
<small class="text-muted" ng-show="data.last_update"><br><?php _e('Last update:'); ?> {{data.last_update * 1000| date:'shortDate'}}</small>
|
32 |
</div>
|
33 |
</div>
|
34 |
</div>
|
35 |
+
|
36 |
</div>
|
37 |
</div>
|
38 |
</div>
|
application/admin/views/_metabox_search_results.php
CHANGED
@@ -9,12 +9,15 @@
|
|
9 |
<p>
|
10 |
<span ng-show="result.price"><b>{{result.currencyCode}}</b> <strike ng-show="result.priceOld">{{result.priceOld}}</strike> <b>{{result.price}}</b></span>
|
11 |
<span ng-show="result.domain" class="text-muted"> <img src="https://www.google.com/s2/favicons?domain={{result.domain}}"> {{result.domain}}</span>
|
12 |
-
|
|
|
|
|
13 |
</p>
|
14 |
<div ng-show="result.code">
|
15 |
<?php _e('Coupon code:', 'content-egg'); ?> <em>{{result.code}}</em>
|
16 |
- <span ng-show="result.startDate">{{result.startDate * 1000|date:'mediumDate'}} - {{result.endDate * 1000|date:'mediumDate'}}</span>
|
17 |
</div>
|
|
|
18 |
</div>
|
19 |
</div>
|
20 |
</div>
|
9 |
<p>
|
10 |
<span ng-show="result.price"><b>{{result.currencyCode}}</b> <strike ng-show="result.priceOld">{{result.priceOld}}</strike> <b>{{result.price}}</b></span>
|
11 |
<span ng-show="result.domain" class="text-muted"> <img src="https://www.google.com/s2/favicons?domain={{result.domain}}"> {{result.domain}}</span>
|
12 |
+
|
13 |
+
<span ng-show="result.features.length"> <small class="text-muted"><?php _e('Attributes:', 'content-egg'); ?> {{result.features.length}}</small></span>
|
14 |
+
<span ng-show="result.ean"> <small class="text-muted"><?php _e('EAN:', 'content-egg'); ?> {{result.ean}}</small></span>
|
15 |
</p>
|
16 |
<div ng-show="result.code">
|
17 |
<?php _e('Coupon code:', 'content-egg'); ?> <em>{{result.code}}</em>
|
18 |
- <span ng-show="result.startDate">{{result.startDate * 1000|date:'mediumDate'}} - {{result.endDate * 1000|date:'mediumDate'}}</span>
|
19 |
</div>
|
20 |
+
|
21 |
</div>
|
22 |
</div>
|
23 |
</div>
|
application/admin/views/prefill.php
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
<?php
|
2 |
|
3 |
use ContentEgg\application\components\ModuleManager;
|
|
|
4 |
?>
|
5 |
|
6 |
<?php if (\ContentEgg\application\Plugin::isFree() || \ContentEgg\application\Plugin::isInactiveEnvato()): ?>
|
@@ -67,11 +68,55 @@ use ContentEgg\application\components\ModuleManager;
|
|
67 |
<input id="minus_words" type="text" class="regular-text">
|
68 |
<p class="description"><?php _e('Remove these words from keyword. You can set several minus words/phrases with commas.', 'content-egg'); ?></p>
|
69 |
</td>
|
70 |
-
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
|
72 |
</table>
|
73 |
|
74 |
<div id="progressbar" name="progressbar"></div>
|
|
|
75 |
|
76 |
<div>
|
77 |
<br>
|
1 |
<?php
|
2 |
|
3 |
use ContentEgg\application\components\ModuleManager;
|
4 |
+
use ContentEgg\application\admin\GeneralConfig;
|
5 |
?>
|
6 |
|
7 |
<?php if (\ContentEgg\application\Plugin::isFree() || \ContentEgg\application\Plugin::isInactiveEnvato()): ?>
|
68 |
<input id="minus_words" type="text" class="regular-text">
|
69 |
<p class="description"><?php _e('Remove these words from keyword. You can set several minus words/phrases with commas.', 'content-egg'); ?></p>
|
70 |
</td>
|
71 |
+
</tr>
|
72 |
+
|
73 |
+
<tr>
|
74 |
+
<th scope="row"><label for="post_type"><?php _e('Post type', 'content-egg'); ?></label></th>
|
75 |
+
<td>
|
76 |
+
<select id="post_type" multiple="multiple">
|
77 |
+
<?php foreach (GeneralConfig::getInstance()->option('post_types') as $post_type): ?>
|
78 |
+
<option value="<?php echo \esc_attr($post_type); ?>" selected="selected"><?php echo \esc_attr($post_type); ?></option>
|
79 |
+
<?php endforeach; ?>
|
80 |
+
</select>
|
81 |
+
<p class="description"><?php _e('You can set all supported post types in General settings -> Post Types.', 'content-egg'); ?></p>
|
82 |
+
</td>
|
83 |
+
</tr>
|
84 |
+
|
85 |
+
<tr>
|
86 |
+
<th scope="row"><label for="post_status"><?php _e('Post status', 'content-egg'); ?></label></th>
|
87 |
+
<td>
|
88 |
+
<?php
|
89 |
+
$post_statuses = array_merge(get_post_statuses(), array('future' => __('Future')));
|
90 |
+
$selected_post_statuses = array('publish', 'future');
|
91 |
+
?>
|
92 |
+
<select id="post_status" multiple="multiple" size="5">
|
93 |
+
<?php foreach ($post_statuses as $post_status_value => $post_status_name): ?>
|
94 |
+
<option value="<?php echo \esc_attr($post_status_value); ?>"
|
95 |
+
<?php if (in_array($post_status_value, $selected_post_statuses)): ?>selected="selected"<?php endif; ?>>
|
96 |
+
<?php echo \esc_attr($post_status_name); ?>
|
97 |
+
</option>
|
98 |
+
<?php endforeach; ?>
|
99 |
+
</select>
|
100 |
+
<p class="description"><?php _e('You can set all supported post types in General settings -> Post Types.', 'content-egg'); ?></p>
|
101 |
+
</td>
|
102 |
+
</tr>
|
103 |
+
|
104 |
+
<tr>
|
105 |
+
<th scope="row"><label for="custom_fields"><?php _e('Add custom fields', 'content-egg'); ?></label></th>
|
106 |
+
<td>
|
107 |
+
<?php for ($i = 0; $i < 5; $i++): ?>
|
108 |
+
<input type="text" name="custom_field_names[]" placeholder="<?php echo sprintf(__('Custom Field %d', 'content-egg'), $i + 1); ?>" id="custom_fields" class="regular-text" />
|
109 |
+
<input type="text" name="custom_field_values[]" placeholder="<?php echo sprintf(__('Value %d', 'content-egg'), $i + 1); ?>" class="regular-text" /><br>
|
110 |
+
<?php endfor; ?>
|
111 |
+
<?php $tags = '%KEYWORD%, %RANDOM(10,50)%, %PRODUCT.title%, %PRODUCT.price%, ...'; ?>
|
112 |
+
<p class="description"><?php echo sprintf(__('You can use tags: %s.', 'content-egg'), $tags); ?></p>
|
113 |
+
</td>
|
114 |
+
</tr>
|
115 |
|
116 |
</table>
|
117 |
|
118 |
<div id="progressbar" name="progressbar"></div>
|
119 |
+
<div><?php _e('Total posts', 'content-egg'); ?>: <b><span id="post_ids_total"></span></b></div>
|
120 |
|
121 |
<div>
|
122 |
<br>
|
application/admin/views/settings.php
CHANGED
@@ -54,7 +54,8 @@
|
|
54 |
<form action="options.php" method="POST">
|
55 |
<?php settings_fields($page_slug); ?>
|
56 |
<table class="form-table">
|
57 |
-
<?php do_settings_fields($page_slug, 'default'); ?>
|
|
|
58 |
</table>
|
59 |
<?php submit_button(); ?>
|
60 |
</form>
|
54 |
<form action="options.php" method="POST">
|
55 |
<?php settings_fields($page_slug); ?>
|
56 |
<table class="form-table">
|
57 |
+
<?php //do_settings_fields($page_slug, 'default'); ?>
|
58 |
+
<?php do_settings_sections($page_slug); ?>
|
59 |
</table>
|
60 |
<?php submit_button(); ?>
|
61 |
</form>
|
application/components/AffiliateParserModule.php
CHANGED
@@ -36,7 +36,7 @@ abstract class AffiliateParserModule extends ParserModule {
|
|
36 |
{
|
37 |
$data[$key]['percentageSaved'] = 0;
|
38 |
if (!isset($data[$key]['priceOld']))
|
39 |
-
$data[$key]['priceOld'] = 0;
|
40 |
if ($item['priceOld'] && $item['priceOld'] <= $item['price'])
|
41 |
$data[$key]['priceOld'] = 0;
|
42 |
|
36 |
{
|
37 |
$data[$key]['percentageSaved'] = 0;
|
38 |
if (!isset($data[$key]['priceOld']))
|
39 |
+
$data[$key]['priceOld'] = $item['priceOld'] = 0;
|
40 |
if ($item['priceOld'] && $item['priceOld'] <= $item['price'])
|
41 |
$data[$key]['priceOld'] = 0;
|
42 |
|
application/components/Config.php
CHANGED
@@ -116,6 +116,8 @@ abstract class Config {
|
|
116 |
// reinit options for later plugin binding
|
117 |
$this->options = $this->options();
|
118 |
|
|
|
|
|
119 |
foreach ($this->options as $id => $field)
|
120 |
{
|
121 |
if (empty($field['title']))
|
@@ -139,6 +141,19 @@ abstract class Config {
|
|
139 |
$params['render_after'] = $field['render_after'];
|
140 |
if (empty($field['section']))
|
141 |
$field['section'] = 'default';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
142 |
\add_settings_field(
|
143 |
$id, $field['title'], $field['callback'], $this->page_slug, // menu slug
|
144 |
$field['section'], $params
|
116 |
// reinit options for later plugin binding
|
117 |
$this->options = $this->options();
|
118 |
|
119 |
+
$sections = array();
|
120 |
+
|
121 |
foreach ($this->options as $id => $field)
|
122 |
{
|
123 |
if (empty($field['title']))
|
141 |
$params['render_after'] = $field['render_after'];
|
142 |
if (empty($field['section']))
|
143 |
$field['section'] = 'default';
|
144 |
+
|
145 |
+
// section
|
146 |
+
if (!isset($sections[$field['section']]))
|
147 |
+
{
|
148 |
+
if ($field['section'] == 'default')
|
149 |
+
$section_title = '';
|
150 |
+
else
|
151 |
+
$section_title = $field['section'];
|
152 |
+
|
153 |
+
\add_settings_section(sanitize_text_field($field['section']), $section_title, null, $this->page_slug);
|
154 |
+
$sections[$field['section']] = $field['section'];
|
155 |
+
}
|
156 |
+
|
157 |
\add_settings_field(
|
158 |
$id, $field['title'], $field['callback'], $this->page_slug, // menu slug
|
159 |
$field['section'], $params
|
application/components/ContentManager.php
CHANGED
@@ -25,11 +25,11 @@ class ContentManager {
|
|
25 |
|
26 |
private static $_view_data = array();
|
27 |
|
28 |
-
public static function saveData(array $data, $module_id, $post_id)
|
29 |
{
|
30 |
if (!$data)
|
31 |
{
|
32 |
-
self::deleteData($module_id, $post_id);
|
33 |
return;
|
34 |
}
|
35 |
|
@@ -69,7 +69,9 @@ class ContentManager {
|
|
69 |
PriceAlert::getInstance()->sendAlerts($data, $module_id, $post_id);
|
70 |
}
|
71 |
|
72 |
-
|
|
|
|
|
73 |
}
|
74 |
|
75 |
public static function dataPresavePrepare(array $data, $module_id, $post_id)
|
@@ -87,19 +89,24 @@ class ContentManager {
|
|
87 |
return $data;
|
88 |
}
|
89 |
|
90 |
-
public static function deleteData($module_id, $post_id)
|
91 |
{
|
92 |
$data = ContentManager::getData($post_id, $module_id);
|
93 |
if (!$data)
|
|
|
|
|
|
|
94 |
return;
|
|
|
95 |
|
96 |
\delete_post_meta($post_id, self::META_PREFIX_DATA . $module_id);
|
97 |
\delete_post_meta($post_id, self::META_PREFIX_LAST_BYKEYWORD_UPDATE . $module_id);
|
98 |
\delete_post_meta($post_id, self::META_PREFIX_LAST_ITEMS_UPDATE . $module_id);
|
99 |
|
100 |
self::clearData($data);
|
|
|
101 |
|
102 |
-
\do_action('content_egg_save_data', array(), $module_id, $post_id);
|
103 |
}
|
104 |
|
105 |
private static function clearData($data)
|
@@ -196,7 +203,30 @@ class ContentManager {
|
|
196 |
$data = self::dataPreviewPrepare($data, $module_id, $post_id, $params);
|
197 |
self::$_view_data[$data_id] = $data;
|
198 |
}
|
199 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
}
|
201 |
|
202 |
public static function dataPreviewPrepare(array $data, $module_id, $post_id, $params = array())
|
@@ -215,13 +245,6 @@ class ContentManager {
|
|
215 |
elseif (empty($d['logo']) && isset($d['extra']['logo']))
|
216 |
$data[$key]['logo'] = $d['extra']['logo'];
|
217 |
|
218 |
-
// locale fix...
|
219 |
-
if (!empty($params['locale']))
|
220 |
-
{
|
221 |
-
if (isset($d['extra']['locale']) && strtolower($d['extra']['locale']) != strtolower($params['locale']))
|
222 |
-
unset($data[$key]);
|
223 |
-
}
|
224 |
-
|
225 |
// https fix for local images
|
226 |
if ($is_ssl && strstr($d['img'], $http_home_url))
|
227 |
{
|
@@ -250,7 +273,7 @@ class ContentManager {
|
|
250 |
$keyword = \get_post_meta($post_id, ContentManager::META_PREFIX_KEYWORD . $module_id, true);
|
251 |
if (!$keyword)
|
252 |
return;
|
253 |
-
|
254 |
$updateParams = \get_post_meta($post_id, ContentManager::META_PREFIX_UPDATE_PARAMS . $module_id, true);
|
255 |
|
256 |
$module = ModuleManager::getInstance()->factory($module_id);
|
@@ -282,7 +305,7 @@ class ContentManager {
|
|
282 |
return;
|
283 |
|
284 |
$items = ContentManager::getData($post_id, $module_id);
|
285 |
-
|
286 |
if (!$items)
|
287 |
return;
|
288 |
|
@@ -335,7 +358,7 @@ class ContentManager {
|
|
335 |
{
|
336 |
if (is_object($item))
|
337 |
$item = ContentManager::object2Array($item);
|
338 |
-
|
339 |
// AE modules
|
340 |
if (!empty($item['extra']['comments']))
|
341 |
{
|
@@ -415,14 +438,19 @@ class ContentManager {
|
|
415 |
'comment_approved' => 1,
|
416 |
);
|
417 |
|
418 |
-
$is_rehub_theme = (basename(get_template_directory()) == 'rehub') ? true : false;
|
419 |
-
$rehub_post_type = get_post_meta($post_id, 'rehub_framework_post_type', true);
|
420 |
-
|
421 |
if ($rehub_post_type && $rehub_post_type == 'review')
|
422 |
$is_review_post_type = true;
|
423 |
else
|
424 |
$is_review_post_type = false;
|
425 |
|
|
|
|
|
|
|
|
|
|
|
426 |
foreach ($normalized_comments as $comment)
|
427 |
{
|
428 |
$comment_pros = '';
|
@@ -464,7 +492,48 @@ class ContentManager {
|
|
464 |
if (function_exists('add_comment_rates'))
|
465 |
\add_comment_rates($comment_id);
|
466 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
467 |
}
|
468 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
469 |
|
470 |
}
|
25 |
|
26 |
private static $_view_data = array();
|
27 |
|
28 |
+
public static function saveData(array $data, $module_id, $post_id, $is_last_iteration = true)
|
29 |
{
|
30 |
if (!$data)
|
31 |
{
|
32 |
+
self::deleteData($module_id, $post_id, $is_last_iteration);
|
33 |
return;
|
34 |
}
|
35 |
|
69 |
PriceAlert::getInstance()->sendAlerts($data, $module_id, $post_id);
|
70 |
}
|
71 |
|
72 |
+
self::resetViewDataCache($module_id, $post_id);
|
73 |
+
|
74 |
+
\do_action('content_egg_save_data', $data, $module_id, $post_id, $is_last_iteration);
|
75 |
}
|
76 |
|
77 |
public static function dataPresavePrepare(array $data, $module_id, $post_id)
|
89 |
return $data;
|
90 |
}
|
91 |
|
92 |
+
public static function deleteData($module_id, $post_id, $is_last_iteration = true)
|
93 |
{
|
94 |
$data = ContentManager::getData($post_id, $module_id);
|
95 |
if (!$data)
|
96 |
+
{
|
97 |
+
// last chance to fire last_iteration hook
|
98 |
+
\do_action('content_egg_save_data', array(), $module_id, $post_id, $is_last_iteration);
|
99 |
return;
|
100 |
+
}
|
101 |
|
102 |
\delete_post_meta($post_id, self::META_PREFIX_DATA . $module_id);
|
103 |
\delete_post_meta($post_id, self::META_PREFIX_LAST_BYKEYWORD_UPDATE . $module_id);
|
104 |
\delete_post_meta($post_id, self::META_PREFIX_LAST_ITEMS_UPDATE . $module_id);
|
105 |
|
106 |
self::clearData($data);
|
107 |
+
self::resetViewDataCache($module_id, $post_id);
|
108 |
|
109 |
+
\do_action('content_egg_save_data', array(), $module_id, $post_id, $is_last_iteration);
|
110 |
}
|
111 |
|
112 |
private static function clearData($data)
|
203 |
$data = self::dataPreviewPrepare($data, $module_id, $post_id, $params);
|
204 |
self::$_view_data[$data_id] = $data;
|
205 |
}
|
206 |
+
|
207 |
+
// locale fix...
|
208 |
+
$data = self::$_view_data[$data_id];
|
209 |
+
if (!empty($params['locale']))
|
210 |
+
{
|
211 |
+
foreach ($data as $key => $d)
|
212 |
+
{
|
213 |
+
if (isset($d['extra']['locale']) && strtolower($d['extra']['locale']) != strtolower($params['locale']))
|
214 |
+
unset($data[$key]);
|
215 |
+
}
|
216 |
+
}
|
217 |
+
|
218 |
+
return $data;
|
219 |
+
}
|
220 |
+
|
221 |
+
public static function resetViewDataCache($module_id = null, $post_id = null)
|
222 |
+
{
|
223 |
+
if ($module_id && $post_id)
|
224 |
+
{
|
225 |
+
$data_id = $post_id . '-' . $module_id;
|
226 |
+
if (isset(self::$_view_data[$data_id]))
|
227 |
+
unset(self::$_view_data[$data_id]);
|
228 |
+
} else
|
229 |
+
self::$_view_data = array();
|
230 |
}
|
231 |
|
232 |
public static function dataPreviewPrepare(array $data, $module_id, $post_id, $params = array())
|
245 |
elseif (empty($d['logo']) && isset($d['extra']['logo']))
|
246 |
$data[$key]['logo'] = $d['extra']['logo'];
|
247 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
248 |
// https fix for local images
|
249 |
if ($is_ssl && strstr($d['img'], $http_home_url))
|
250 |
{
|
273 |
$keyword = \get_post_meta($post_id, ContentManager::META_PREFIX_KEYWORD . $module_id, true);
|
274 |
if (!$keyword)
|
275 |
return;
|
276 |
+
|
277 |
$updateParams = \get_post_meta($post_id, ContentManager::META_PREFIX_UPDATE_PARAMS . $module_id, true);
|
278 |
|
279 |
$module = ModuleManager::getInstance()->factory($module_id);
|
305 |
return;
|
306 |
|
307 |
$items = ContentManager::getData($post_id, $module_id);
|
308 |
+
|
309 |
if (!$items)
|
310 |
return;
|
311 |
|
358 |
{
|
359 |
if (is_object($item))
|
360 |
$item = ContentManager::object2Array($item);
|
361 |
+
|
362 |
// AE modules
|
363 |
if (!empty($item['extra']['comments']))
|
364 |
{
|
438 |
'comment_approved' => 1,
|
439 |
);
|
440 |
|
441 |
+
$is_rehub_theme = (basename(\get_template_directory()) == 'rehub') ? true : false;
|
442 |
+
$rehub_post_type = \get_post_meta($post_id, 'rehub_framework_post_type', true);
|
443 |
+
|
444 |
if ($rehub_post_type && $rehub_post_type == 'review')
|
445 |
$is_review_post_type = true;
|
446 |
else
|
447 |
$is_review_post_type = false;
|
448 |
|
449 |
+
if (\get_post_type($post_id) == 'product')
|
450 |
+
$is_woo_product = true;
|
451 |
+
else
|
452 |
+
$is_woo_product = false;
|
453 |
+
|
454 |
foreach ($normalized_comments as $comment)
|
455 |
{
|
456 |
$comment_pros = '';
|
492 |
if (function_exists('add_comment_rates'))
|
493 |
\add_comment_rates($comment_id);
|
494 |
}
|
495 |
+
|
496 |
+
if ($is_woo_product && !empty($comment['rating']) && $comment['rating'] > 0 && $comment['rating'] <= 5)
|
497 |
+
{
|
498 |
+
\add_comment_meta($comment_id, 'rating', $comment['rating'], true);
|
499 |
+
}
|
500 |
+
}
|
501 |
+
|
502 |
+
if ($is_woo_product && class_exists('\WC_Comments'))
|
503 |
+
{
|
504 |
+
// Ensure product average rating and review count is kept up to date.
|
505 |
+
\WC_Comments::clear_transients($post_id);
|
506 |
}
|
507 |
}
|
508 |
+
|
509 |
+
public static function getMainProduct($modules_data, $main_product_selector = 'min_price')
|
510 |
+
{
|
511 |
+
$all_items = array();
|
512 |
+
foreach ($modules_data as $module_id => $items)
|
513 |
+
{
|
514 |
+
foreach ($items as $item)
|
515 |
+
{
|
516 |
+
$item = ArrayHelper::object2Array($item);
|
517 |
+
$item['module_id'] = $module_id;
|
518 |
+
/*
|
519 |
+
if (empty($item['price']))
|
520 |
+
continue;
|
521 |
+
*
|
522 |
+
*/
|
523 |
+
$all_items[] = $item;
|
524 |
+
}
|
525 |
+
}
|
526 |
+
|
527 |
+
if (!$all_items)
|
528 |
+
return null;
|
529 |
+
|
530 |
+
if ($main_product_selector == 'random')
|
531 |
+
return $all_items[array_rand($all_items)];
|
532 |
+
|
533 |
+
if ($main_product_selector == 'max_price')
|
534 |
+
return $all_items[ArrayHelper::getMaxKeyAssoc($all_items, 'price', true)];
|
535 |
+
else
|
536 |
+
return $all_items[ArrayHelper::getMinKeyAssoc($all_items, 'price', true)];
|
537 |
+
}
|
538 |
|
539 |
}
|
application/components/ContentProduct.php
CHANGED
@@ -7,7 +7,7 @@ namespace ContentEgg\application\components;
|
|
7 |
*
|
8 |
* @author keywordrush.com <support@keywordrush.com>
|
9 |
* @link http://www.keywordrush.com/
|
10 |
-
* @copyright Copyright ©
|
11 |
*/
|
12 |
class ContentProduct extends Content {
|
13 |
|
@@ -30,5 +30,8 @@ class ContentProduct extends Content {
|
|
30 |
public $upc;
|
31 |
public $sku;
|
32 |
public $isbn;
|
|
|
|
|
|
|
33 |
|
34 |
}
|
7 |
*
|
8 |
* @author keywordrush.com <support@keywordrush.com>
|
9 |
* @link http://www.keywordrush.com/
|
10 |
+
* @copyright Copyright © 2017 keywordrush.com
|
11 |
*/
|
12 |
class ContentProduct extends Content {
|
13 |
|
30 |
public $upc;
|
31 |
public $sku;
|
32 |
public $isbn;
|
33 |
+
public $woo_sync;
|
34 |
+
public $woo_attr;
|
35 |
+
public $features = array();
|
36 |
|
37 |
}
|
application/components/EggAutoblogger.php
DELETED
@@ -1,86 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace ContentEgg\application\components;
|
4 |
-
|
5 |
-
/**
|
6 |
-
* EggAutoblogger class file
|
7 |
-
*
|
8 |
-
* @author keywordrush.com <support@keywordrush.com>
|
9 |
-
* @link http://www.keywordrush.com/
|
10 |
-
* @copyright Copyright © 2015 keywordrush.com
|
11 |
-
*/
|
12 |
-
class EggAutoblogger {
|
13 |
-
|
14 |
-
//private $keyword;
|
15 |
-
private $autoblog;
|
16 |
-
|
17 |
-
public function __construct(array $autoblog)
|
18 |
-
{
|
19 |
-
$this->autoblog = $autoblog;
|
20 |
-
}
|
21 |
-
|
22 |
-
/*
|
23 |
-
public function setKeyword($keyword)
|
24 |
-
{
|
25 |
-
$this->keyword = $keyword;
|
26 |
-
}
|
27 |
-
|
28 |
-
public function getKeyword()
|
29 |
-
{
|
30 |
-
return $this->keyword;
|
31 |
-
}
|
32 |
-
*
|
33 |
-
*/
|
34 |
-
|
35 |
-
public function createPost($keyword)
|
36 |
-
{
|
37 |
-
//$this->setKeyword($keyword);
|
38 |
-
//0. Отметить задание автоблоггинга как запущеное
|
39 |
-
|
40 |
-
$modules_data = array();
|
41 |
-
foreach (ModuleManager::getInstance()->getParserModules(true) as $module)
|
42 |
-
{
|
43 |
-
|
44 |
-
try
|
45 |
-
{
|
46 |
-
$data = $module->doRequest($keyword, array(), true);
|
47 |
-
} catch (\Exception $e)
|
48 |
-
{
|
49 |
-
// error
|
50 |
-
continue;
|
51 |
-
}
|
52 |
-
foreach ($data as $i => $d)
|
53 |
-
{
|
54 |
-
$data[$i]->keyword = $keyword;
|
55 |
-
}
|
56 |
-
$modules_data[$module->getId()] = $data;
|
57 |
-
}
|
58 |
-
|
59 |
-
// @todo: проверки обязательных плагинов и т.д.
|
60 |
-
// create post
|
61 |
-
$post = array(
|
62 |
-
'ID' => null,
|
63 |
-
'post_title' => $keyword,
|
64 |
-
'post_content' => 'content',
|
65 |
-
'post_status' => 'publish',
|
66 |
-
'post_author' => $this->autoblog['user_id'],
|
67 |
-
'post_category' => array($this->autoblog['category']),
|
68 |
-
);
|
69 |
-
|
70 |
-
$post_id = \wp_insert_post($post);
|
71 |
-
if (!$post_id)
|
72 |
-
return false;
|
73 |
-
|
74 |
-
// \do_action('content_egg_autoblog_create_post', $post_id);
|
75 |
-
// save modules data
|
76 |
-
foreach ($modules_data as $module_id => $data)
|
77 |
-
{
|
78 |
-
ContentManager::saveData($data, $module_id, $post_id);
|
79 |
-
}
|
80 |
-
|
81 |
-
//@todo: пересохранить заданеи автоблоггинга
|
82 |
-
|
83 |
-
return $post_id;
|
84 |
-
}
|
85 |
-
|
86 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
application/components/FeaturedImage.php
CHANGED
@@ -73,26 +73,14 @@ class FeaturedImage {
|
|
73 |
$img_file = self::getImgFile($d);
|
74 |
if (!$img_file)
|
75 |
continue;
|
76 |
-
|
77 |
-
$
|
78 |
-
'guid' => $img_file,
|
79 |
-
'post_mime_type' => $filetype['type'],
|
80 |
-
'post_title' => $d['title'],
|
81 |
-
'post_content' => '',
|
82 |
-
'post_status' => 'inherit'
|
83 |
-
);
|
84 |
-
$attach_id = \wp_insert_attachment($attachment, $img_file, $post_id);
|
85 |
-
$attach_data = \wp_generate_attachment_metadata($attach_id, $img_file);
|
86 |
-
\wp_update_attachment_metadata($attach_id, $attach_data);
|
87 |
-
\set_post_thumbnail($post_id, $attach_id);
|
88 |
-
|
89 |
-
return true;
|
90 |
} //data foreach
|
91 |
|
92 |
return false;
|
93 |
}
|
94 |
|
95 |
-
|
96 |
{
|
97 |
if (empty($item['img']))
|
98 |
return false;
|
@@ -126,4 +114,20 @@ class FeaturedImage {
|
|
126 |
return $img_file;
|
127 |
}
|
128 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
}
|
73 |
$img_file = self::getImgFile($d);
|
74 |
if (!$img_file)
|
75 |
continue;
|
76 |
+
|
77 |
+
return self::attachThumbnail($img_file, $post_id, $d['title']);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
} //data foreach
|
79 |
|
80 |
return false;
|
81 |
}
|
82 |
|
83 |
+
public static function getImgFile($item)
|
84 |
{
|
85 |
if (empty($item['img']))
|
86 |
return false;
|
114 |
return $img_file;
|
115 |
}
|
116 |
|
117 |
+
public static function attachThumbnail($img_file, $post_id, $title = '')
|
118 |
+
{
|
119 |
+
$filetype = \wp_check_filetype(basename($img_file), null);
|
120 |
+
$attachment = array(
|
121 |
+
'guid' => $img_file,
|
122 |
+
'post_mime_type' => $filetype['type'],
|
123 |
+
'post_title' => $title,
|
124 |
+
'post_content' => '',
|
125 |
+
'post_status' => 'inherit'
|
126 |
+
);
|
127 |
+
$attach_id = \wp_insert_attachment($attachment, $img_file, $post_id);
|
128 |
+
$attach_data = \wp_generate_attachment_metadata($attach_id, $img_file);
|
129 |
+
\wp_update_attachment_metadata($attach_id, $attach_data);
|
130 |
+
return \set_post_thumbnail($post_id, $attach_id);
|
131 |
+
}
|
132 |
+
|
133 |
}
|
application/components/LinkHandler.php
CHANGED
@@ -28,23 +28,29 @@ class LinkHandler {
|
|
28 |
{
|
29 |
if (!$deeplink)
|
30 |
{
|
31 |
-
|
32 |
} elseif (strstr($deeplink, '{{') && strstr($deeplink, '}}'))
|
33 |
{
|
34 |
-
//
|
35 |
-
|
36 |
} elseif (!preg_match('/^https?:\/\//i', $deeplink))
|
37 |
{
|
38 |
// url with tail
|
39 |
-
|
40 |
} else
|
41 |
{
|
42 |
// deeplink
|
43 |
// @todo: subid
|
44 |
//if ($subid)
|
45 |
//$deeplink = Cpa::deeplinkSetSubid($deeplink, $subid);
|
46 |
-
|
47 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
}
|
49 |
|
50 |
public static function getUrlWithTail($url, $tail)
|
28 |
{
|
29 |
if (!$deeplink)
|
30 |
{
|
31 |
+
$result = $url;
|
32 |
} elseif (strstr($deeplink, '{{') && strstr($deeplink, '}}'))
|
33 |
{
|
34 |
+
// template deeplink
|
35 |
+
$result = self::getUrlTemplate($url, $deeplink);
|
36 |
} elseif (!preg_match('/^https?:\/\//i', $deeplink))
|
37 |
{
|
38 |
// url with tail
|
39 |
+
$result = self::getUrlWithTail($url, $deeplink);
|
40 |
} else
|
41 |
{
|
42 |
// deeplink
|
43 |
// @todo: subid
|
44 |
//if ($subid)
|
45 |
//$deeplink = Cpa::deeplinkSetSubid($deeplink, $subid);
|
46 |
+
$result = $deeplink . urlencode($url);
|
47 |
}
|
48 |
+
if ($subid)
|
49 |
+
{
|
50 |
+
$result = self::getUrlWithTail($result, $subid);
|
51 |
+
}
|
52 |
+
|
53 |
+
return $result;
|
54 |
}
|
55 |
|
56 |
public static function getUrlWithTail($url, $tail)
|
application/components/ModuleManager.php
CHANGED
@@ -54,10 +54,10 @@ class ModuleManager {
|
|
54 |
public function highlightAdminMenu($parent_file)
|
55 |
{
|
56 |
global $plugin_page;
|
57 |
-
|
58 |
if (substr($plugin_page, 0, strlen(Plugin::slug())) !== Plugin::slug())
|
59 |
return $parent_file;
|
60 |
-
|
61 |
if (!$parent_file)
|
62 |
$plugin_page = Plugin::slug;
|
63 |
return $parent_file;
|
@@ -82,14 +82,13 @@ class ModuleManager {
|
|
82 |
// create module
|
83 |
self::factory($module_id);
|
84 |
}
|
85 |
-
|
86 |
// fill active modules
|
87 |
foreach (self::$modules as $module)
|
88 |
{
|
89 |
if ($module->isActive())
|
90 |
self::$active_modules[$module->getId()] = $module;
|
91 |
}
|
92 |
-
|
93 |
}
|
94 |
|
95 |
private function scanForModules($path = null)
|
@@ -339,4 +338,16 @@ class ModuleManager {
|
|
339 |
}
|
340 |
return $result;
|
341 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
342 |
}
|
54 |
public function highlightAdminMenu($parent_file)
|
55 |
{
|
56 |
global $plugin_page;
|
57 |
+
|
58 |
if (substr($plugin_page, 0, strlen(Plugin::slug())) !== Plugin::slug())
|
59 |
return $parent_file;
|
60 |
+
|
61 |
if (!$parent_file)
|
62 |
$plugin_page = Plugin::slug;
|
63 |
return $parent_file;
|
82 |
// create module
|
83 |
self::factory($module_id);
|
84 |
}
|
85 |
+
|
86 |
// fill active modules
|
87 |
foreach (self::$modules as $module)
|
88 |
{
|
89 |
if ($module->isActive())
|
90 |
self::$active_modules[$module->getId()] = $module;
|
91 |
}
|
|
|
92 |
}
|
93 |
|
94 |
private function scanForModules($path = null)
|
338 |
}
|
339 |
return $result;
|
340 |
}
|
341 |
+
|
342 |
+
public function getAffiliteModulesList($only_active = true)
|
343 |
+
{
|
344 |
+
$results = array();
|
345 |
+
$modules = ModuleManager::getInstance()->getAffiliateParsers($only_active);
|
346 |
+
foreach ($modules as $module_id => $module)
|
347 |
+
{
|
348 |
+
$results[$module_id] = $module->getName();
|
349 |
+
}
|
350 |
+
return $results;
|
351 |
+
}
|
352 |
+
|
353 |
}
|
application/helpers/CurrencyHelper.php
CHANGED
@@ -214,14 +214,13 @@ class CurrencyHelper {
|
|
214 |
'name' => 'Mexican peso',
|
215 |
),
|
216 |
'MDL' => array(
|
217 |
-
'currency_symbol' => '
|
218 |
-
'currency_pos' => '
|
219 |
'thousand_sep' => ',',
|
220 |
'decimal_sep' => '.',
|
221 |
'num_decimals' => 2,
|
222 |
'name' => 'Moldovan leu',
|
223 |
),
|
224 |
-
|
225 |
);
|
226 |
}
|
227 |
|
@@ -306,4 +305,36 @@ class CurrencyHelper {
|
|
306 |
return array_keys(self::currencies());
|
307 |
}
|
308 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
309 |
}
|
214 |
'name' => 'Mexican peso',
|
215 |
),
|
216 |
'MDL' => array(
|
217 |
+
'currency_symbol' => 'lei',
|
218 |
+
'currency_pos' => 'right_space',
|
219 |
'thousand_sep' => ',',
|
220 |
'decimal_sep' => '.',
|
221 |
'num_decimals' => 2,
|
222 |
'name' => 'Moldovan leu',
|
223 |
),
|
|
|
224 |
);
|
225 |
}
|
226 |
|
305 |
return array_keys(self::currencies());
|
306 |
}
|
307 |
|
308 |
+
public static function queryCurrencyRate($from, $to)
|
309 |
+
{
|
310 |
+
$yql_base_url = "http://query.yahooapis.com/v1/public/yql";
|
311 |
+
$yql_query = 'select * from yahoo.finance.xchange where pair in ("' . $from . $to . '")';
|
312 |
+
$yql_query_url = $yql_base_url . "?q=" . urlencode($yql_query);
|
313 |
+
$yql_query_url .= "&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";
|
314 |
+
|
315 |
+
$response = \wp_remote_get($yql_query_url);
|
316 |
+
if (\is_wp_error($response))
|
317 |
+
return 0;
|
318 |
+
|
319 |
+
if (!$result = json_decode(\wp_remote_retrieve_body($response), true))
|
320 |
+
return 0;
|
321 |
+
|
322 |
+
if (!isset($result['query']['results']['rate']['Rate']))
|
323 |
+
return 0;
|
324 |
+
|
325 |
+
return (float) $result['query']['results']['rate']['Rate'];
|
326 |
+
}
|
327 |
+
|
328 |
+
public static function getCurrencyRate($from, $to)
|
329 |
+
{
|
330 |
+
$transient_name = 'currency-rate-' . $from . $to;
|
331 |
+
$rate = \get_transient($transient_name);
|
332 |
+
if ($rate === false)
|
333 |
+
{
|
334 |
+
$rate = self::queryCurrencyRate($from, $to);
|
335 |
+
\set_transient($transient_name, $rate, 6 * 3600);
|
336 |
+
}
|
337 |
+
return $rate;
|
338 |
+
}
|
339 |
+
|
340 |
}
|
application/helpers/FileHelper.php
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace ContentEgg\application\helpers;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* TextHelper class file
|
7 |
+
*
|
8 |
+
* @author keywordrush.com <support@keywordrush.com>
|
9 |
+
* @link http://www.keywordrush.com/
|
10 |
+
* @copyright Copyright © 2017 keywordrush.com
|
11 |
+
*/
|
12 |
+
class FileHelper {
|
13 |
+
|
14 |
+
public static function array2Csv(array $array)
|
15 |
+
{
|
16 |
+
if (ob_get_length() > 0)
|
17 |
+
ob_clean();
|
18 |
+
|
19 |
+
if (!$array)
|
20 |
+
return '';
|
21 |
+
ob_start();
|
22 |
+
$df = fopen("php://output", 'w');
|
23 |
+
fputcsv($df, array_keys(reset($array)));
|
24 |
+
foreach ($array as $row)
|
25 |
+
{
|
26 |
+
fputcsv($df, $row);
|
27 |
+
}
|
28 |
+
fclose($df);
|
29 |
+
return ob_get_clean();
|
30 |
+
}
|
31 |
+
|
32 |
+
public static function sendDownloadHeaders($filename)
|
33 |
+
{
|
34 |
+
$now = gmdate("D, d M Y H:i:s");
|
35 |
+
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
|
36 |
+
header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
|
37 |
+
header("Last-Modified: {$now} GMT");
|
38 |
+
|
39 |
+
header("Content-Type: application/force-download");
|
40 |
+
header("Content-Type: application/octet-stream");
|
41 |
+
header("Content-Type: application/download");
|
42 |
+
|
43 |
+
header("Content-Disposition: attachment;filename={$filename}");
|
44 |
+
header("Content-Transfer-Encoding: binary");
|
45 |
+
}
|
46 |
+
|
47 |
+
}
|
application/helpers/ImageHelper.php
CHANGED
@@ -39,7 +39,11 @@ class ImageHelper {
|
|
39 |
if ($file_ext === null)
|
40 |
{
|
41 |
if ($ext = pathinfo(basename($img_uri), PATHINFO_EXTENSION))
|
42 |
-
|
|
|
|
|
|
|
|
|
43 |
else
|
44 |
{
|
45 |
$headers = \wp_remote_retrieve_headers($response);
|
39 |
if ($file_ext === null)
|
40 |
{
|
41 |
if ($ext = pathinfo(basename($img_uri), PATHINFO_EXTENSION))
|
42 |
+
{
|
43 |
+
// image url params
|
44 |
+
$ext_parts = explode('?', $ext);
|
45 |
+
$file_ext = $ext_parts[0];
|
46 |
+
}
|
47 |
else
|
48 |
{
|
49 |
$headers = \wp_remote_retrieve_headers($response);
|
application/helpers/TemplateHelper.php
CHANGED
@@ -168,7 +168,7 @@ class TemplateHelper {
|
|
168 |
|
169 |
public static function splitAttributeName($attribute)
|
170 |
{
|
171 |
-
return trim(preg_replace('/([A-Z])/', ' $1', $attribute));
|
172 |
}
|
173 |
|
174 |
public static function getAmazonLink(array $itemLinks, $description)
|
@@ -193,6 +193,28 @@ class TemplateHelper {
|
|
193 |
$res = time();
|
194 |
return $res;
|
195 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
196 |
|
197 |
public static function getLastUpdateFormatted($module_id, $post_id = null, $time = true)
|
198 |
{
|
168 |
|
169 |
public static function splitAttributeName($attribute)
|
170 |
{
|
171 |
+
return trim(preg_replace('/([A-Z])([a-z])/', ' $1$2', $attribute));
|
172 |
}
|
173 |
|
174 |
public static function getAmazonLink(array $itemLinks, $description)
|
193 |
$res = time();
|
194 |
return $res;
|
195 |
}
|
196 |
+
|
197 |
+
|
198 |
+
public static function getLastUpdateFormattedAmazon(array $data, $time = true)
|
199 |
+
{
|
200 |
+
if (!isset($data['Amazon']))
|
201 |
+
return false;
|
202 |
+
|
203 |
+
$item = current($data['Amazon']);
|
204 |
+
if (empty($item['last_update']))
|
205 |
+
return false;
|
206 |
+
|
207 |
+
$last_update = $item['last_update'];
|
208 |
+
|
209 |
+
$format = \get_option('date_format');
|
210 |
+
if ($time)
|
211 |
+
$format .= ' ' . \get_option('time_format');
|
212 |
+
|
213 |
+
// last update date stored in gmt, convert into local time
|
214 |
+
$last_update = strtotime(\get_date_from_gmt(date('Y-m-d H:i:s', $last_update)));
|
215 |
+
|
216 |
+
return \date_i18n($format, $last_update);
|
217 |
+
}
|
218 |
|
219 |
public static function getLastUpdateFormatted($module_id, $post_id = null, $time = true)
|
220 |
{
|
application/helpers/TextHelper.php
CHANGED
@@ -405,20 +405,44 @@ class TextHelper {
|
|
405 |
|
406 |
public static function getHostName($url)
|
407 |
{
|
|
|
408 |
return TextHelper::getDomainWithoutSubdomain(strtolower(str_ireplace('www.', '', parse_url($url, PHP_URL_HOST))));
|
409 |
}
|
410 |
|
411 |
-
public static function
|
|
|
|
|
|
|
|
|
|
|
412 |
{
|
413 |
if (!$query = parse_url($url, PHP_URL_QUERY))
|
414 |
return '';
|
415 |
parse_str($query, $arr);
|
416 |
if (isset($arr[$go_param]))
|
417 |
-
return
|
418 |
else
|
419 |
return '';
|
420 |
}
|
421 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
422 |
public static function getDomainWithoutSubdomain($domain)
|
423 |
{
|
424 |
if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs))
|
@@ -435,6 +459,11 @@ class TextHelper {
|
|
435 |
return $arr[array_rand($arr)];
|
436 |
}
|
437 |
|
|
|
|
|
|
|
|
|
|
|
438 |
/**
|
439 |
* Verify a correct EAN13 structure
|
440 |
*/
|
@@ -481,4 +510,25 @@ class TextHelper {
|
|
481 |
return $rating;
|
482 |
}
|
483 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
484 |
}
|
405 |
|
406 |
public static function getHostName($url)
|
407 |
{
|
408 |
+
$url = trim($url);
|
409 |
return TextHelper::getDomainWithoutSubdomain(strtolower(str_ireplace('www.', '', parse_url($url, PHP_URL_HOST))));
|
410 |
}
|
411 |
|
412 |
+
public static function isValidDomainName($domain)
|
413 |
+
{
|
414 |
+
return preg_match('/^(?!\-)(?:[a-zA-Z\d\-]{0,62}[a-zA-Z\d]\.){1,126}(?!\d+)[a-zA-Z\d]{1,63}$/', $domain);
|
415 |
+
}
|
416 |
+
|
417 |
+
public static function parseOriginalUrl($url, $go_param)
|
418 |
{
|
419 |
if (!$query = parse_url($url, PHP_URL_QUERY))
|
420 |
return '';
|
421 |
parse_str($query, $arr);
|
422 |
if (isset($arr[$go_param]))
|
423 |
+
return $arr[$go_param];
|
424 |
else
|
425 |
return '';
|
426 |
}
|
427 |
|
428 |
+
public static function parseDomain($url, $go_param)
|
429 |
+
{
|
430 |
+
if (!$url = TextHelper::parseOriginalUrl($url, $go_param))
|
431 |
+
return '';
|
432 |
+
return TextHelper::getHostName($url);
|
433 |
+
|
434 |
+
/*
|
435 |
+
if (!$query = parse_url($url, PHP_URL_QUERY))
|
436 |
+
return '';
|
437 |
+
parse_str($query, $arr);
|
438 |
+
if (isset($arr[$go_param]))
|
439 |
+
return TextHelper::getHostName($arr[$go_param]);
|
440 |
+
else
|
441 |
+
return '';
|
442 |
+
*
|
443 |
+
*/
|
444 |
+
}
|
445 |
+
|
446 |
public static function getDomainWithoutSubdomain($domain)
|
447 |
{
|
448 |
if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs))
|
459 |
return $arr[array_rand($arr)];
|
460 |
}
|
461 |
|
462 |
+
public static function getArrayFromCommaList($str)
|
463 |
+
{
|
464 |
+
return explode(",", TextHelper::commaList($str));
|
465 |
+
}
|
466 |
+
|
467 |
/**
|
468 |
* Verify a correct EAN13 structure
|
469 |
*/
|
510 |
return $rating;
|
511 |
}
|
512 |
|
513 |
+
public static function sluggable($string)
|
514 |
+
{
|
515 |
+
$cyrylicFrom = array('Є', 'І', 'Ѓ', 'і', 'є', 'ѓ', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
|
516 |
+
$cyrylicTo = array('YE', 'I', 'G', 'i', 'ye', 'g', 'A', 'B', 'V', 'G', 'D', 'E', 'YO', 'ZH', 'Z', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'X', 'C', 'CH', 'SH', 'SHH', '', 'Y', '', 'E', 'YU', 'YA', 'a', 'b', 'v', 'g', 'd', 'e', 'yo', 'zh', 'z', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'x', 'c', 'ch', 'sh', 'shh', '', 'y', '', 'e', 'yu', 'ya');
|
517 |
+
$from = array("Á", "À", "Â", "Ä", "Ă", "Ā", "Ã", "Å", "Ą", "Æ", "Ć", "Ċ", "Ĉ", "Č", "Ç", "Ď", "Đ", "Ð", "É", "È", "Ė", "Ê", "Ë", "Ě", "Ē", "Ę", "Ə", "Ġ", "Ĝ", "Ğ", "Ģ", "á", "à", "â", "ä", "ă", "ā", "ã", "å", "ą", "æ", "ć", "ċ", "ĉ", "č", "ç", "ď", "đ", "ð", "é", "è", "ė", "ê", "ë", "ě", "ē", "ę", "ə", "ġ", "ĝ", "ğ", "ģ", "Ĥ", "Ħ", "I", "Í", "Ì", "İ", "Î", "Ï", "Ī", "Į", "IJ", "Ĵ", "Ķ", "Ļ", "Ł", "Ń", "Ň", "Ñ", "Ņ", "Ó", "Ò", "Ô", "Ö", "Õ", "Ő", "Ø", "Ơ", "Œ", "ĥ", "ħ", "ı", "í", "ì", "i", "î", "ï", "ī", "į", "ij", "ĵ", "ķ", "ļ", "ł", "ń", "ň", "ñ", "ņ", "ó", "ò", "ô", "ö", "õ", "ő", "ø", "ơ", "œ", "Ŕ", "Ř", "Ś", "Ŝ", "Š", "Ş", "Ť", "Ţ", "Þ", "Ú", "Ù", "Û", "Ü", "Ŭ", "Ū", "Ů", "Ų", "Ű", "Ư", "Ŵ", "Ý", "Ŷ", "Ÿ", "Ź", "Ż", "Ž", "ŕ", "ř", "ś", "ŝ", "š", "ş", "ß", "ť", "ţ", "þ", "ú", "ù", "û", "ü", "ŭ", "ū", "ů", "ų", "ű", "ư", "ŵ", "ý", "ŷ", "ÿ", "ź", "ż", "ž");
|
518 |
+
$to = array("A", "A", "A", "A", "A", "A", "A", "A", "A", "AE", "C", "C", "C", "C", "C", "D", "D", "D", "E", "E", "E", "E", "E", "E", "E", "E", "G", "G", "G", "G", "G", "a", "a", "a", "a", "a", "a", "a", "a", "a", "ae", "c", "c", "c", "c", "c", "d", "d", "d", "e", "e", "e", "e", "e", "e", "e", "e", "g", "g", "g", "g", "g", "H", "H", "I", "I", "I", "I", "I", "I", "I", "I", "IJ", "J", "K", "L", "L", "N", "N", "N", "N", "O", "O", "O", "O", "O", "O", "O", "O", "CE", "h", "h", "i", "i", "i", "i", "i", "i", "i", "i", "ij", "j", "k", "l", "l", "n", "n", "n", "n", "o", "o", "o", "o", "o", "o", "o", "o", "o", "R", "R", "S", "S", "S", "S", "T", "T", "T", "U", "U", "U", "U", "U", "U", "U", "U", "U", "U", "W", "Y", "Y", "Y", "Z", "Z", "Z", "r", "r", "s", "s", "s", "s", "B", "t", "t", "b", "u", "u", "u", "u", "u", "u", "u", "u", "u", "u", "w", "y", "y", "y", "z", "z", "z");
|
519 |
+
$from = array_merge($from, $cyrylicFrom);
|
520 |
+
$to = array_merge($to, $cyrylicTo);
|
521 |
+
$string = str_replace($from, $to, $string);
|
522 |
+
|
523 |
+
if (function_exists('iconv'))
|
524 |
+
{
|
525 |
+
$string = iconv('UTF-8', 'UTF-8//TRANSLIT//IGNORE', $string);
|
526 |
+
}
|
527 |
+
$string = preg_replace("/[^A-Za-z0-9'_\-\.]/", '-', $string);
|
528 |
+
$string = preg_replace('/\-+/', '-', $string);
|
529 |
+
$string = preg_replace('/^-+/', '', $string);
|
530 |
+
$string = preg_replace('/-+$/', '', $string);
|
531 |
+
return $string;
|
532 |
+
}
|
533 |
+
|
534 |
}
|
application/models/AutoblogModel.php
CHANGED
@@ -7,7 +7,7 @@ use ContentEgg\application\components\ContentManager;
|
|
7 |
use ContentEgg\application\helpers\TextHelper;
|
8 |
use ContentEgg\application\components\FeaturedImage;
|
9 |
use ContentEgg\application\helpers\TemplateHelper;
|
10 |
-
use ContentEgg\application\
|
11 |
|
12 |
/**
|
13 |
* AutoblogModel class file
|
@@ -101,7 +101,7 @@ class AutoblogModel extends Model {
|
|
101 |
|
102 |
if (!$item['id'])
|
103 |
{
|
104 |
-
$item['id'] =
|
105 |
$item['create_date'] = \current_time('mysql');
|
106 |
$this->getDb()->insert($this->tableName(), $item);
|
107 |
return $this->getDb()->insert_id;
|
@@ -167,7 +167,6 @@ class AutoblogModel extends Model {
|
|
167 |
if ($post_id)
|
168 |
{
|
169 |
$autoblog['post_count'] ++;
|
170 |
-
\do_action('cegg_autoblog_post_create', $post_id);
|
171 |
}
|
172 |
$autoblog['keywords'][$keyword_id] = self::markKeywordInactive($keyword);
|
173 |
$keyword_id = self::getNextKeywordId($autoblog['keywords']);
|
@@ -294,13 +293,30 @@ class AutoblogModel extends Model {
|
|
294 |
}
|
295 |
|
296 |
// main product
|
297 |
-
$main_product =
|
298 |
|
299 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
300 |
$title = \wp_strip_all_tags($title);
|
301 |
if (!$title)
|
302 |
$title = $keyword;
|
303 |
-
$body =
|
304 |
if ((bool) $autoblog['post_status'])
|
305 |
$post_status = 'publish';
|
306 |
else
|
@@ -316,7 +332,7 @@ class AutoblogModel extends Model {
|
|
316 |
if (\is_serialized($cf_value))
|
317 |
$cf_value = @unserialize($cf_value);
|
318 |
else
|
319 |
-
$cf_value =
|
320 |
|
321 |
$meta_input[$custom_field] = $cf_value;
|
322 |
}
|
@@ -324,7 +340,7 @@ class AutoblogModel extends Model {
|
|
324 |
|
325 |
//tags
|
326 |
if ($autoblog['tags'])
|
327 |
-
$tags_input =
|
328 |
else
|
329 |
$tags_input = '';
|
330 |
|
@@ -339,6 +355,7 @@ class AutoblogModel extends Model {
|
|
339 |
$categ_id = $autoblog['category'];
|
340 |
if (!$categ_id)
|
341 |
$categ_id = $autoblog['category'];
|
|
|
342 |
|
343 |
// create post
|
344 |
$post = array(
|
@@ -353,26 +370,40 @@ class AutoblogModel extends Model {
|
|
353 |
'tags_input' => $tags_input,
|
354 |
//'tax_input' => '',
|
355 |
);
|
356 |
-
// @todo:
|
357 |
-
// You can set the page template for a non-page by calling update_post_meta() with a key of ‘_wp_page_template’.
|
358 |
|
359 |
$post_id = \wp_insert_post($post);
|
360 |
-
|
361 |
if (!$post_id)
|
362 |
throw new \Exception(sprintf(__('Post can\'t be created. Unknown error.', 'content-egg'), $autoblog['min_modules_count']));
|
363 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
364 |
// save modules data & keyword for autoupdate
|
|
|
365 |
foreach ($modules_data as $module_id => $data)
|
366 |
{
|
|
|
367 |
$autoupdate_keyword = \sanitize_text_field($module_keywords[$module_id]);
|
368 |
-
|
|
|
|
|
|
|
|
|
369 |
if (in_array($module_id, $autoblog['autoupdate_modules']) && $autoupdate_keyword)
|
370 |
{
|
371 |
\update_post_meta($post_id, ContentManager::META_PREFIX_KEYWORD . $module_id, $autoupdate_keyword);
|
372 |
}
|
373 |
}
|
374 |
|
375 |
-
\do_action('
|
376 |
|
377 |
// set featured image
|
378 |
$fi = new FeaturedImage();
|
@@ -381,18 +412,29 @@ class AutoblogModel extends Model {
|
|
381 |
return $post_id;
|
382 |
}
|
383 |
|
384 |
-
|
385 |
{
|
386 |
if (!$template)
|
387 |
return $template;
|
388 |
|
389 |
$template = TextHelper::spin($template);
|
390 |
-
if (!preg_match_all('/%[a-zA-Z0-9_
|
391 |
return $template;
|
392 |
|
393 |
$replace = array();
|
394 |
foreach ($matches[0] as $pattern)
|
395 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
396 |
// keyword
|
397 |
if (stristr($pattern, '%KEYWORD%'))
|
398 |
{
|
@@ -400,6 +442,7 @@ class AutoblogModel extends Model {
|
|
400 |
continue;
|
401 |
}
|
402 |
|
|
|
403 |
// module keyword
|
404 |
if (stristr($pattern, '%KEYWORD.'))
|
405 |
{
|
@@ -497,35 +540,6 @@ class AutoblogModel extends Model {
|
|
497 |
return false;
|
498 |
}
|
499 |
|
500 |
-
private function getMainProduct($modules_data, $autoblog_main_product)
|
501 |
-
{
|
502 |
-
$all_items = array();
|
503 |
-
foreach ($modules_data as $module_id => $items)
|
504 |
-
{
|
505 |
-
foreach ($items as $item)
|
506 |
-
{
|
507 |
-
$item = ArrayHelper::object2Array($item);
|
508 |
-
/*
|
509 |
-
if (empty($item['price']))
|
510 |
-
continue;
|
511 |
-
*
|
512 |
-
*/
|
513 |
-
$all_items[] = $item;
|
514 |
-
}
|
515 |
-
}
|
516 |
-
|
517 |
-
if (!$all_items)
|
518 |
-
return null;
|
519 |
-
|
520 |
-
if ($autoblog_main_product == 'random')
|
521 |
-
return $all_items[array_rand($all_items)];
|
522 |
-
|
523 |
-
if ($autoblog_main_product == 'max_price')
|
524 |
-
return $all_items[ArrayHelper::getMaxKeyAssoc($all_items, 'price', true)];
|
525 |
-
else
|
526 |
-
return $all_items[ArrayHelper::getMinKeyAssoc($all_items, 'price', true)];
|
527 |
-
}
|
528 |
-
|
529 |
static public function createNestedCategories(array $categoryPath)
|
530 |
{
|
531 |
$parent = 0;
|
7 |
use ContentEgg\application\helpers\TextHelper;
|
8 |
use ContentEgg\application\components\FeaturedImage;
|
9 |
use ContentEgg\application\helpers\TemplateHelper;
|
10 |
+
use ContentEgg\application\admin\GeneralConfig;
|
11 |
|
12 |
/**
|
13 |
* AutoblogModel class file
|
101 |
|
102 |
if (!$item['id'])
|
103 |
{
|
104 |
+
$item['id'] = null;
|
105 |
$item['create_date'] = \current_time('mysql');
|
106 |
$this->getDb()->insert($this->tableName(), $item);
|
107 |
return $this->getDb()->insert_id;
|
167 |
if ($post_id)
|
168 |
{
|
169 |
$autoblog['post_count'] ++;
|
|
|
170 |
}
|
171 |
$autoblog['keywords'][$keyword_id] = self::markKeywordInactive($keyword);
|
172 |
$keyword_id = self::getNextKeywordId($autoblog['keywords']);
|
293 |
}
|
294 |
|
295 |
// main product
|
296 |
+
$main_product = ContentManager::getMainProduct($modules_data, $autoblog['main_product']);
|
297 |
|
298 |
+
// set main product for woo sync
|
299 |
+
$product_sync = GeneralConfig::getInstance()->option('woocommerce_product_sync');
|
300 |
+
$woocommerce_modules = GeneralConfig::getInstance()->option('woocommerce_modules');
|
301 |
+
|
302 |
+
if ($autoblog['post_type'] == 'product' && ($product_sync == 'manually' || !array_intersect_key($modules_data, $woocommerce_modules)) && $main_product)
|
303 |
+
{
|
304 |
+
foreach ($modules_data[$main_product['module_id']] as $i => $product)
|
305 |
+
{
|
306 |
+
if ($product->unique_id == $main_product['unique_id'] && $product instanceof \ContentEgg\application\components\ContentProduct)
|
307 |
+
{
|
308 |
+
$modules_data[$main_product['module_id']][$i]->woo_sync = true;
|
309 |
+
$modules_data[$main_product['module_id']][$i]->woo_attr = true;
|
310 |
+
break;
|
311 |
+
}
|
312 |
+
}
|
313 |
+
}
|
314 |
+
|
315 |
+
$title = AutoblogModel::buildTemplate($autoblog['template_title'], $modules_data, $keyword, $module_keywords, $main_product);
|
316 |
$title = \wp_strip_all_tags($title);
|
317 |
if (!$title)
|
318 |
$title = $keyword;
|
319 |
+
$body = AutoblogModel::buildTemplate($autoblog['template_body'], $modules_data, $keyword, $module_keywords, $main_product);
|
320 |
if ((bool) $autoblog['post_status'])
|
321 |
$post_status = 'publish';
|
322 |
else
|
332 |
if (\is_serialized($cf_value))
|
333 |
$cf_value = @unserialize($cf_value);
|
334 |
else
|
335 |
+
$cf_value = AutoblogModel::buildTemplate($cf_value, $modules_data, $keyword, $module_keywords, $main_product);
|
336 |
|
337 |
$meta_input[$custom_field] = $cf_value;
|
338 |
}
|
340 |
|
341 |
//tags
|
342 |
if ($autoblog['tags'])
|
343 |
+
$tags_input = AutoblogModel::buildTemplate($autoblog['tags'], $modules_data, $keyword, $module_keywords, $main_product);
|
344 |
else
|
345 |
$tags_input = '';
|
346 |
|
355 |
$categ_id = $autoblog['category'];
|
356 |
if (!$categ_id)
|
357 |
$categ_id = $autoblog['category'];
|
358 |
+
$categ_id = (int) $categ_id;
|
359 |
|
360 |
// create post
|
361 |
$post = array(
|
370 |
'tags_input' => $tags_input,
|
371 |
//'tax_input' => '',
|
372 |
);
|
|
|
|
|
373 |
|
374 |
$post_id = \wp_insert_post($post);
|
|
|
375 |
if (!$post_id)
|
376 |
throw new \Exception(sprintf(__('Post can\'t be created. Unknown error.', 'content-egg'), $autoblog['min_modules_count']));
|
377 |
|
378 |
+
// woocommerce product
|
379 |
+
if (\get_post_type($post_id) == 'product')
|
380 |
+
{
|
381 |
+
// external by default
|
382 |
+
\wp_set_object_terms($post_id, 'external', 'product_type');
|
383 |
+
|
384 |
+
if (\term_exists($categ_id, 'product_cat'))
|
385 |
+
\wp_set_object_terms($post_id, (int) $categ_id, 'product_cat');
|
386 |
+
}
|
387 |
+
|
388 |
+
|
389 |
// save modules data & keyword for autoupdate
|
390 |
+
$i = 0;
|
391 |
foreach ($modules_data as $module_id => $data)
|
392 |
{
|
393 |
+
$i++;
|
394 |
$autoupdate_keyword = \sanitize_text_field($module_keywords[$module_id]);
|
395 |
+
if ($i == count($modules_data))
|
396 |
+
$last_iteration = true;
|
397 |
+
else
|
398 |
+
$last_iteration = false;
|
399 |
+
ContentManager::saveData($data, $module_id, $post_id, $last_iteration);
|
400 |
if (in_array($module_id, $autoblog['autoupdate_modules']) && $autoupdate_keyword)
|
401 |
{
|
402 |
\update_post_meta($post_id, ContentManager::META_PREFIX_KEYWORD . $module_id, $autoupdate_keyword);
|
403 |
}
|
404 |
}
|
405 |
|
406 |
+
\do_action('cegg_autoblog_post_create', $post_id);
|
407 |
|
408 |
// set featured image
|
409 |
$fi = new FeaturedImage();
|
412 |
return $post_id;
|
413 |
}
|
414 |
|
415 |
+
public static function buildTemplate($template, array $modules_data, $keyword, $module_keywords = array(), $main_product = null)
|
416 |
{
|
417 |
if (!$template)
|
418 |
return $template;
|
419 |
|
420 |
$template = TextHelper::spin($template);
|
421 |
+
if (!preg_match_all('/%[a-zA-Z0-9_\.\,\(\)]+%/', $template, $matches))
|
422 |
return $template;
|
423 |
|
424 |
$replace = array();
|
425 |
foreach ($matches[0] as $pattern)
|
426 |
{
|
427 |
+
// keyword
|
428 |
+
if (stristr($pattern, '%RANDOM'))
|
429 |
+
{
|
430 |
+
preg_match('/%RANDOM\((\d+),(\d+)\)%/', $pattern, $rmatches);
|
431 |
+
if ($matches)
|
432 |
+
$replace[$pattern] = rand((int) $rmatches[1], (int) $rmatches[2]);
|
433 |
+
else
|
434 |
+
$replace[$pattern] = rand(0, 9999999);
|
435 |
+
continue;
|
436 |
+
}
|
437 |
+
|
438 |
// keyword
|
439 |
if (stristr($pattern, '%KEYWORD%'))
|
440 |
{
|
442 |
continue;
|
443 |
}
|
444 |
|
445 |
+
|
446 |
// module keyword
|
447 |
if (stristr($pattern, '%KEYWORD.'))
|
448 |
{
|
540 |
return false;
|
541 |
}
|
542 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
543 |
static public function createNestedCategories(array $categoryPath)
|
544 |
{
|
545 |
$parent = 0;
|
application/models/Model.php
CHANGED
@@ -200,7 +200,7 @@ abstract class Model {
|
|
200 |
$item['id'] = (int) $item['id'];
|
201 |
if (!$item['id'])
|
202 |
{
|
203 |
-
$item['id'] =
|
204 |
$this->getDb()->insert($this->tableName(), $item);
|
205 |
return $this->getDb()->insert_id;
|
206 |
} else
|
200 |
$item['id'] = (int) $item['id'];
|
201 |
if (!$item['id'])
|
202 |
{
|
203 |
+
$item['id'] = null;
|
204 |
$this->getDb()->insert($this->tableName(), $item);
|
205 |
return $this->getDb()->insert_id;
|
206 |
} else
|
application/models/PriceAlertModel.php
CHANGED
@@ -71,5 +71,22 @@ class PriceAlertModel extends Model {
|
|
71 |
$sql = 'DELETE FROM ' . $this->tableName() . ' WHERE email = %s AND status != %d';
|
72 |
$this->getDb()->query($this->getDb()->prepare($sql, $email, self::STATUS_DELETED));
|
73 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
|
75 |
}
|
71 |
$sql = 'DELETE FROM ' . $this->tableName() . ' WHERE email = %s AND status != %d';
|
72 |
$this->getDb()->query($this->getDb()->prepare($sql, $email, self::STATUS_DELETED));
|
73 |
}
|
74 |
+
|
75 |
+
public static function getStatus($id)
|
76 |
+
{
|
77 |
+
$statuses = self::getStatuses();
|
78 |
+
if (isset($statuses[$id]))
|
79 |
+
return $statuses[$id];
|
80 |
+
else
|
81 |
+
return null;
|
82 |
+
}
|
83 |
+
public static function getStatuses()
|
84 |
+
{
|
85 |
+
return array(
|
86 |
+
self::STATUS_INACTIVE => 'INACTIVE',
|
87 |
+
self::STATUS_ACTIVE => 'ACTIVE',
|
88 |
+
self::STATUS_DELETED => 'DELETED',
|
89 |
+
);
|
90 |
+
}
|
91 |
|
92 |
}
|
application/modules/AE/AEConfig.php
CHANGED
@@ -30,7 +30,7 @@ class AEConfig extends AffiliateParserModuleConfig {
|
|
30 |
'title' => __('Results', 'content-egg'),
|
31 |
'description' => __('Number of results for one search query.', 'content-egg'),
|
32 |
'callback' => array($this, 'render_input'),
|
33 |
-
'default' =>
|
34 |
'validator' => array(
|
35 |
'trim',
|
36 |
'absint',
|
30 |
'title' => __('Results', 'content-egg'),
|
31 |
'description' => __('Number of results for one search query.', 'content-egg'),
|
32 |
'callback' => array($this, 'render_input'),
|
33 |
+
'default' => 5,
|
34 |
'validator' => array(
|
35 |
'trim',
|
36 |
'absint',
|
application/modules/AE/AEModule.php
CHANGED
@@ -181,7 +181,17 @@ class AEModule extends AffiliateParserModule {
|
|
181 |
$content->extra = new ExtraDataAE;
|
182 |
if (isset($r['extra']['features']))
|
183 |
{
|
184 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
185 |
unset($r['extra']['features']);
|
186 |
}
|
187 |
if (isset($r['extra']['comments']))
|
181 |
$content->extra = new ExtraDataAE;
|
182 |
if (isset($r['extra']['features']))
|
183 |
{
|
184 |
+
//$content->extra->features = $r['extra']['features'];
|
185 |
+
|
186 |
+
foreach ($r['extra']['features'] as $f)
|
187 |
+
{
|
188 |
+
$feature = array(
|
189 |
+
'name' => $f['name'],
|
190 |
+
'value' => $f['value'],
|
191 |
+
);
|
192 |
+
$content->features[] = $feature;
|
193 |
+
}
|
194 |
+
|
195 |
unset($r['extra']['features']);
|
196 |
}
|
197 |
if (isset($r['extra']['comments']))
|
application/modules/AdmitadProducts/AdmitadProductsConfig.php
CHANGED
@@ -35,7 +35,7 @@ class AdmitadProductsConfig extends AffiliateParserModuleConfig {
|
|
35 |
'deeplink' => array(
|
36 |
'title' => 'Deeplink' . ' ' . '<span class="cegg_required">*</span>',
|
37 |
'description' => __('Deeplink of offer.', 'content-egg')
|
38 |
-
. ' ' . __('<a target="_blank" href="http://www.keywordrush.com/
|
39 |
'callback' => array($this, 'render_input'),
|
40 |
'default' => '',
|
41 |
'validator' => array(
|
35 |
'deeplink' => array(
|
36 |
'title' => 'Deeplink' . ' ' . '<span class="cegg_required">*</span>',
|
37 |
'description' => __('Deeplink of offer.', 'content-egg')
|
38 |
+
. ' ' . __('<a target="_blank" href="http://www.keywordrush.com/en/docs/content-egg/DeeplinkSettings.html">Manual</a> for deeplink settings for different CPA-networks.', 'content-egg'),
|
39 |
'callback' => array($this, 'render_input'),
|
40 |
'default' => '',
|
41 |
'validator' => array(
|
application/modules/AdmitadProducts/AdmitadProductsModule.php
CHANGED
@@ -7,6 +7,7 @@ use ContentEgg\application\libs\admitad\AdmitadProducts;
|
|
7 |
use ContentEgg\application\components\ContentProduct;
|
8 |
use ContentEgg\application\admin\PluginAdmin;
|
9 |
use ContentEgg\application\helpers\TextHelper;
|
|
|
10 |
|
11 |
/**
|
12 |
* AdmitadProductsModule class file
|
@@ -21,7 +22,7 @@ class AdmitadProductsModule extends AffiliateParserModule {
|
|
21 |
{
|
22 |
return array(
|
23 |
'name' => 'Admitad Products',
|
24 |
-
'description' => __('Add products from <a href="
|
25 |
. '<br>' . __('Used API the <a href="https://www.admitadgoods.ru/en.html" target="_blank">Admitad Goods</a> WP plugin.', 'content-egg')
|
26 |
);
|
27 |
}
|
@@ -56,12 +57,12 @@ class AdmitadProductsModule extends AffiliateParserModule {
|
|
56 |
if ($this->config('only_sale'))
|
57 |
$options['only_sale'] = 1;
|
58 |
|
59 |
-
|
60 |
if (!empty($query_params['price_from']))
|
61 |
$options['price_from'] = $query_params['price_from'];
|
62 |
elseif ($this->config('price_from'))
|
63 |
$options['price_from'] = (int) $this->config('price_from');
|
64 |
-
|
65 |
if (!empty($query_params['price_to']))
|
66 |
$options['price_to'] = $query_params['price_to'];
|
67 |
elseif ($this->config('price_to'))
|
@@ -96,8 +97,11 @@ class AdmitadProductsModule extends AffiliateParserModule {
|
|
96 |
$content->price = (float) $r['price'];
|
97 |
$content->img = $r['picture'];
|
98 |
$content->manufacturer = $r['vendor'];
|
99 |
-
|
100 |
-
|
|
|
|
|
|
|
101 |
|
102 |
$content->url = $this->createAffUrl($content->orig_url);
|
103 |
$content->description = $r['description'];
|
@@ -109,6 +113,15 @@ class AdmitadProductsModule extends AffiliateParserModule {
|
|
109 |
$content->extra->id_item = $r['id_item'];
|
110 |
ExtraDataAdmitadProducts::fillAttributes($content->extra, $r);
|
111 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
$data[] = $content;
|
113 |
}
|
114 |
return $data;
|
@@ -156,28 +169,25 @@ class AdmitadProductsModule extends AffiliateParserModule {
|
|
156 |
PluginAdmin::render('_metabox_search_results', array('module_id' => $this->getId()));
|
157 |
}
|
158 |
|
159 |
-
|
160 |
{
|
161 |
-
$
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
|
|
|
|
|
|
|
|
167 |
|
168 |
-
|
169 |
-
{
|
170 |
-
/**
|
171 |
-
* &i=13 подставить
|
172 |
-
* это метка адмитада чтоб понимать что с плагина действия
|
173 |
-
*/
|
174 |
-
return $this->config('deeplink') . urlencode($orig_url) . '&i=13';
|
175 |
}
|
176 |
-
|
177 |
public function renderSearchPanel()
|
178 |
{
|
179 |
$this->render('search_panel', array('module_id' => $this->getId()));
|
180 |
}
|
181 |
-
|
182 |
|
183 |
}
|
7 |
use ContentEgg\application\components\ContentProduct;
|
8 |
use ContentEgg\application\admin\PluginAdmin;
|
9 |
use ContentEgg\application\helpers\TextHelper;
|
10 |
+
use ContentEgg\application\components\LinkHandler;
|
11 |
|
12 |
/**
|
13 |
* AdmitadProductsModule class file
|
22 |
{
|
23 |
return array(
|
24 |
'name' => 'Admitad Products',
|
25 |
+
'description' => __('Add products from <a href="http://www.keywordrush.com/go/admitad">Admitad</a>.', 'content-egg') . ' ' . __('You must get approve for each program separately.', 'content-egg')
|
26 |
. '<br>' . __('Used API the <a href="https://www.admitadgoods.ru/en.html" target="_blank">Admitad Goods</a> WP plugin.', 'content-egg')
|
27 |
);
|
28 |
}
|
57 |
if ($this->config('only_sale'))
|
58 |
$options['only_sale'] = 1;
|
59 |
|
60 |
+
|
61 |
if (!empty($query_params['price_from']))
|
62 |
$options['price_from'] = $query_params['price_from'];
|
63 |
elseif ($this->config('price_from'))
|
64 |
$options['price_from'] = (int) $this->config('price_from');
|
65 |
+
|
66 |
if (!empty($query_params['price_to']))
|
67 |
$options['price_to'] = $query_params['price_to'];
|
68 |
elseif ($this->config('price_to'))
|
97 |
$content->price = (float) $r['price'];
|
98 |
$content->img = $r['picture'];
|
99 |
$content->manufacturer = $r['vendor'];
|
100 |
+
|
101 |
+
if (!$orig_url = TextHelper::parseOriginalUrl($r['url'], 'ulp'))
|
102 |
+
continue;
|
103 |
+
$content->orig_url = $orig_url;
|
104 |
+
$content->domain = TextHelper::parseDomain($r['url'], 'ulp');
|
105 |
|
106 |
$content->url = $this->createAffUrl($content->orig_url);
|
107 |
$content->description = $r['description'];
|
113 |
$content->extra->id_item = $r['id_item'];
|
114 |
ExtraDataAdmitadProducts::fillAttributes($content->extra, $r);
|
115 |
|
116 |
+
foreach ($content->extra->param as $f_name => $f_value)
|
117 |
+
{
|
118 |
+
$feature = array(
|
119 |
+
'name' => $f_name,
|
120 |
+
'value' => $f_value,
|
121 |
+
);
|
122 |
+
$content->features[] = $feature;
|
123 |
+
}
|
124 |
+
|
125 |
$data[] = $content;
|
126 |
}
|
127 |
return $data;
|
169 |
PluginAdmin::render('_metabox_search_results', array('module_id' => $this->getId()));
|
170 |
}
|
171 |
|
172 |
+
public function viewDataPrepare($data)
|
173 |
{
|
174 |
+
$deeplink = $this->config('deeplink');
|
175 |
+
foreach ($data as $key => $d)
|
176 |
+
{
|
177 |
+
/**
|
178 |
+
* &i=13 подставить
|
179 |
+
* это метка адмитада чтоб понимать что с плагина действия
|
180 |
+
*/
|
181 |
+
if ($deeplink && $d['orig_url'])
|
182 |
+
$data[$key]['url'] = LinkHandler::createAffUrl($d['orig_url'], $deeplink, 'i=13');
|
183 |
+
}
|
184 |
|
185 |
+
return parent::viewDataPrepare($data);
|
|
|
|
|
|
|
|
|
|
|
|
|
186 |
}
|
187 |
+
|
188 |
public function renderSearchPanel()
|
189 |
{
|
190 |
$this->render('search_panel', array('module_id' => $this->getId()));
|
191 |
}
|
|
|
192 |
|
193 |
}
|
application/modules/AffilinetCoupons/AffilinetCouponsConfig.php
CHANGED
@@ -83,11 +83,11 @@ class AffilinetCouponsConfig extends AffiliateParserModuleConfig {
|
|
83 |
'description' => 'Vouchers can come with or without an actual voucher code. If they don’t have a voucher code, then the customer gets the benefit automatically. With this parameter, you can limit the results to only those vouchers, which have a voucher code, or those, which don’t have a voucher code.',
|
84 |
'callback' => array($this, 'render_dropdown'),
|
85 |
'dropdown_options' => array(
|
86 |
-
0 => 'Any',
|
87 |
-
1 => 'Empty',
|
88 |
-
2 => 'Filled',
|
89 |
),
|
90 |
-
'default' => 0,
|
91 |
'section' => 'default',
|
92 |
'metaboxInit' => true,
|
93 |
),
|
@@ -96,15 +96,15 @@ class AffilinetCouponsConfig extends AffiliateParserModuleConfig {
|
|
96 |
'description' => '',
|
97 |
'callback' => array($this, 'render_dropdown'),
|
98 |
'dropdown_options' => array(
|
99 |
-
-1 => 'Any',
|
100 |
-
0 => 'All products',
|
101 |
-
1 => 'Specific products',
|
102 |
-
2 => 'Multi buy discount',
|
103 |
-
3 => 'Free shipping',
|
104 |
-
4 => 'Free product',
|
105 |
-
5 => 'Competition',
|
106 |
),
|
107 |
-
'default' => 0,
|
108 |
'section' => 'default',
|
109 |
'metaboxInit' => true,
|
110 |
),
|
@@ -123,11 +123,11 @@ class AffilinetCouponsConfig extends AffiliateParserModuleConfig {
|
|
123 |
'description' => 'Some vouchers can only be used by new customers. With this parameter you can restrict the results to either get only those vouchers, which all customers can use, or those vouchers, which only new customers can use.',
|
124 |
'callback' => array($this, 'render_dropdown'),
|
125 |
'dropdown_options' => array(
|
126 |
-
0 => 'No restrictions',
|
127 |
-
1 => 'All customers',
|
128 |
-
2 => 'Only new customers',
|
129 |
),
|
130 |
-
'default' => 0,
|
131 |
'section' => 'default',
|
132 |
),
|
133 |
'ExclusivesOnly' => array(
|
@@ -142,14 +142,14 @@ class AffilinetCouponsConfig extends AffiliateParserModuleConfig {
|
|
142 |
'description' => 'Specifies the logic that shall be applied to the list of shops which is specified in Shop IDs. If you choose "Exclude", then products are not returned, if they come from any of the shops specified in Shop IDs.',
|
143 |
'callback' => array($this, 'render_dropdown'),
|
144 |
'dropdown_options' => array(
|
145 |
-
0 => 'ID',
|
146 |
-
1 => 'Program ID',
|
147 |
-
2 => 'Title',
|
148 |
-
3 => 'Last change date',
|
149 |
-
4 => 'Start date',
|
150 |
-
5 => 'End date',
|
151 |
),
|
152 |
-
'default' => 0,
|
153 |
'section' => 'default',
|
154 |
),
|
155 |
'SortDesc' => array(
|
83 |
'description' => 'Vouchers can come with or without an actual voucher code. If they don’t have a voucher code, then the customer gets the benefit automatically. With this parameter, you can limit the results to only those vouchers, which have a voucher code, or those, which don’t have a voucher code.',
|
84 |
'callback' => array($this, 'render_dropdown'),
|
85 |
'dropdown_options' => array(
|
86 |
+
'0.' => 'Any',
|
87 |
+
'1.' => 'Empty',
|
88 |
+
'2.' => 'Filled',
|
89 |
),
|
90 |
+
'default' => '0.',
|
91 |
'section' => 'default',
|
92 |
'metaboxInit' => true,
|
93 |
),
|
96 |
'description' => '',
|
97 |
'callback' => array($this, 'render_dropdown'),
|
98 |
'dropdown_options' => array(
|
99 |
+
'-1.' => 'Any',
|
100 |
+
'0.' => 'All products',
|
101 |
+
'1.' => 'Specific products',
|
102 |
+
'2.' => 'Multi buy discount',
|
103 |
+
'3.' => 'Free shipping',
|
104 |
+
'4.' => 'Free product',
|
105 |
+
'5.' => 'Competition',
|
106 |
),
|
107 |
+
'default' => '0.',
|
108 |
'section' => 'default',
|
109 |
'metaboxInit' => true,
|
110 |
),
|
123 |
'description' => 'Some vouchers can only be used by new customers. With this parameter you can restrict the results to either get only those vouchers, which all customers can use, or those vouchers, which only new customers can use.',
|
124 |
'callback' => array($this, 'render_dropdown'),
|
125 |
'dropdown_options' => array(
|
126 |
+
'0.' => 'No restrictions',
|
127 |
+
'1.' => 'All customers',
|
128 |
+
'2.' => 'Only new customers',
|
129 |
),
|
130 |
+
'default' => '0.',
|
131 |
'section' => 'default',
|
132 |
),
|
133 |
'ExclusivesOnly' => array(
|
142 |
'description' => 'Specifies the logic that shall be applied to the list of shops which is specified in Shop IDs. If you choose "Exclude", then products are not returned, if they come from any of the shops specified in Shop IDs.',
|
143 |
'callback' => array($this, 'render_dropdown'),
|
144 |
'dropdown_options' => array(
|
145 |
+
'0.' => 'ID',
|
146 |
+
'1.' => 'Program ID',
|
147 |
+
'2.' => 'Title',
|
148 |
+
'3.' => 'Last change date',
|
149 |
+
'4.' => 'Start date',
|
150 |
+
'5.' => 'End date',
|
151 |
),
|
152 |
+
'default' => '0.',
|
153 |
'section' => 'default',
|
154 |
),
|
155 |
'SortDesc' => array(
|
application/modules/AffilinetCoupons/AffilinetCouponsModule.php
CHANGED
@@ -52,19 +52,26 @@ class AffilinetCouponsModule extends AffiliateParserModule {
|
|
52 |
|
53 |
|
54 |
if (isset($query_params['VoucherType']))
|
55 |
-
$options['VoucherType'] = $query_params['VoucherType'];
|
56 |
else
|
57 |
-
$options['VoucherType'] = $this->config('VoucherType');
|
58 |
if (isset($query_params['VoucherCodeContent']))
|
59 |
-
$options['VoucherCodeContent'] = $query_params['VoucherCodeContent'];
|
60 |
else
|
61 |
-
$options['VoucherCodeContent'] = $this->config('VoucherCodeContent');
|
62 |
|
63 |
-
$fields = array('ProgramId', 'MinimumOrderValue', '
|
64 |
foreach ($fields as $field)
|
65 |
{
|
66 |
$options[$field] = $this->config($field);
|
67 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
$options['ExclusivesOnly'] = var_export((bool) $this->config('ExclusivesOnly'), true);
|
69 |
|
70 |
// 0 = NoRestriction, 1 = Accepted, Waiting, DeclinedOrDeleted, NoPartnership
|
@@ -110,6 +117,8 @@ class AffilinetCouponsModule extends AffiliateParserModule {
|
|
110 |
if ($links = $doc->getElementsByTagName('a'))
|
111 |
{
|
112 |
$content->url = trim($links->item(0)->getAttribute('href'));
|
|
|
|
|
113 |
}
|
114 |
|
115 |
$content->extra = new ExtraDataAffilinetCoupons;
|
52 |
|
53 |
|
54 |
if (isset($query_params['VoucherType']))
|
55 |
+
$options['VoucherType'] = (int)$query_params['VoucherType'];
|
56 |
else
|
57 |
+
$options['VoucherType'] = (int)$this->config('VoucherType');
|
58 |
if (isset($query_params['VoucherCodeContent']))
|
59 |
+
$options['VoucherCodeContent'] = (int)$query_params['VoucherCodeContent'];
|
60 |
else
|
61 |
+
$options['VoucherCodeContent'] = (int)$this->config('VoucherCodeContent');
|
62 |
|
63 |
+
$fields = array('ProgramId', 'MinimumOrderValue', 'SortDesc');
|
64 |
foreach ($fields as $field)
|
65 |
{
|
66 |
$options[$field] = $this->config($field);
|
67 |
}
|
68 |
+
$fields = array('OrderBy', 'CustomerRestriction');
|
69 |
+
foreach ($fields as $field)
|
70 |
+
{
|
71 |
+
$options[$field] = (int) $this->config($field);
|
72 |
+
}
|
73 |
+
|
74 |
+
|
75 |
$options['ExclusivesOnly'] = var_export((bool) $this->config('ExclusivesOnly'), true);
|
76 |
|
77 |
// 0 = NoRestriction, 1 = Accepted, Waiting, DeclinedOrDeleted, NoPartnership
|
117 |
if ($links = $doc->getElementsByTagName('a'))
|
118 |
{
|
119 |
$content->url = trim($links->item(0)->getAttribute('href'));
|
120 |
+
if (\is_ssl())
|
121 |
+
$content->url = preg_replace('/^http/', 'https', $content->url);
|
122 |
}
|
123 |
|
124 |
$content->extra = new ExtraDataAffilinetCoupons;
|
application/modules/AffilinetCoupons/views/search_panel.php
CHANGED
@@ -1,19 +1,19 @@
|
|
1 |
<div class="col-sm-4">
|
2 |
<select class="form-control input-sm" ng-model="query_params.<?php echo $module_id; ?>.VoucherType">
|
3 |
-
<option value="-1">Any voucher type</option>
|
4 |
-
<option value="0">All products</option>
|
5 |
-
<option value="1">Specific products</option>
|
6 |
-
<option value="2">Multi buy discount</option>
|
7 |
-
<option value="3">Free shipping</option>
|
8 |
-
<option value="4">Free product</option>
|
9 |
-
<option value="5">Competition</option>
|
10 |
</select>
|
11 |
</div>
|
12 |
<div class="col-sm-4">
|
13 |
|
14 |
<select class="form-control input-sm" ng-model="query_params.<?php echo $module_id; ?>.VoucherCodeContent">
|
15 |
-
<option value="0">Any code content</option>
|
16 |
-
<option value="1">Empty</option>
|
17 |
-
<option value="2">Filled</option>
|
18 |
</select>
|
19 |
</div>
|
1 |
<div class="col-sm-4">
|
2 |
<select class="form-control input-sm" ng-model="query_params.<?php echo $module_id; ?>.VoucherType">
|
3 |
+
<option value="-1.">Any voucher type</option>
|
4 |
+
<option value="0.">All products</option>
|
5 |
+
<option value="1.">Specific products</option>
|
6 |
+
<option value="2.">Multi buy discount</option>
|
7 |
+
<option value="3.">Free shipping</option>
|
8 |
+
<option value="4.">Free product</option>
|
9 |
+
<option value="5.">Competition</option>
|
10 |
</select>
|
11 |
</div>
|
12 |
<div class="col-sm-4">
|
13 |
|
14 |
<select class="form-control input-sm" ng-model="query_params.<?php echo $module_id; ?>.VoucherCodeContent">
|
15 |
+
<option value="0.">Any code content</option>
|
16 |
+
<option value="1.">Empty</option>
|
17 |
+
<option value="2.">Filled</option>
|
18 |
</select>
|
19 |
</div>
|
application/modules/Amazon/AmazonModule.php
CHANGED
@@ -8,6 +8,7 @@ use ContentEgg\application\components\ContentProduct;
|
|
8 |
use ContentEgg\application\admin\PluginAdmin;
|
9 |
use ContentEgg\application\components\ExtraData;
|
10 |
use ContentEgg\application\helpers\TextHelper;
|
|
|
11 |
|
12 |
/**
|
13 |
* AmazonModule class file
|
@@ -91,7 +92,7 @@ class AmazonModule extends AffiliateParserModule {
|
|
91 |
if ($this->config('merchant_id'))
|
92 |
$options['MerchantId'] = "Amazon";
|
93 |
|
94 |
-
$options['ResponseGroup'] = 'ItemIds,Offers,ItemAttributes,Images';
|
95 |
|
96 |
// Customer Reviews
|
97 |
if ($this->config('customer_reviews'))
|
@@ -155,7 +156,6 @@ class AmazonModule extends AffiliateParserModule {
|
|
155 |
$ItemLookup = true;
|
156 |
} else
|
157 |
$ItemLookup = false;
|
158 |
-
|
159 |
for ($i = 0; $i < $pages_count; $i++)
|
160 |
{
|
161 |
$options['ItemPage'] = $i + 1;
|
@@ -238,7 +238,7 @@ class AmazonModule extends AffiliateParserModule {
|
|
238 |
$item_ids[] = $item['extra']['ASIN'];
|
239 |
}
|
240 |
|
241 |
-
$options['ResponseGroup'] = 'Offers';
|
242 |
|
243 |
// update iframe url for customer reviews
|
244 |
//if ($this->config('customer_reviews') && $this->config('customer_reviews_iframe'))
|
@@ -360,6 +360,39 @@ class AmazonModule extends AffiliateParserModule {
|
|
360 |
if (isset($r['ItemAttributes']['Author']))
|
361 |
$extra->author = $r['ItemAttributes']['Author'];
|
362 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
363 |
// Offers
|
364 |
self::fillOfferVars($r, $content, $extra);
|
365 |
|
@@ -394,7 +427,7 @@ class AmazonModule extends AffiliateParserModule {
|
|
394 |
|
395 |
// Заполняем стандартные поля: title, description, url, price
|
396 |
// все остальные данные в extra
|
397 |
-
$content->url =
|
398 |
|
399 |
if (isset($r['ItemAttributes']['Title']))
|
400 |
$content->title = $r['ItemAttributes']['Title'];
|
@@ -467,6 +500,29 @@ class AmazonModule extends AffiliateParserModule {
|
|
467 |
$extra = json_decode(json_encode($extra), FALSE);
|
468 |
}
|
469 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
470 |
// OfferSummary
|
471 |
if (isset($r['OfferSummary']))
|
472 |
{
|
@@ -485,9 +541,7 @@ class AmazonModule extends AffiliateParserModule {
|
|
485 |
}
|
486 |
|
487 |
// Offers
|
488 |
-
if (isset($r['Offers']) &&
|
489 |
-
isset($r['Offers']['Offer']) &&
|
490 |
-
isset($r['Offers']['Offer']['OfferListing']))
|
491 |
{
|
492 |
// SalePrice for amazon de?
|
493 |
if (isset($r['Offers']['Offer']['OfferListing']['SalePrice']))
|
@@ -502,7 +556,7 @@ class AmazonModule extends AffiliateParserModule {
|
|
502 |
$content->percentageSaved = $r['Offers']['Offer']['OfferListing']['PercentageSaved'];
|
503 |
}
|
504 |
|
505 |
-
|
506 |
if (isset($r['Offers']['Offer']['OfferListing']['Availability']))
|
507 |
{
|
508 |
$extra->availability = $r['Offers']['Offer']['OfferListing']['Availability'];
|
@@ -661,11 +715,27 @@ class AmazonModule extends AffiliateParserModule {
|
|
661 |
|
662 |
private static function parseAsinFromUrl($url)
|
663 |
{
|
664 |
-
|
|
|
|
|
665 |
if (preg_match($regex, $url, $matches))
|
666 |
return $matches[1];
|
667 |
else
|
668 |
return '';
|
669 |
}
|
670 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
671 |
}
|
8 |
use ContentEgg\application\admin\PluginAdmin;
|
9 |
use ContentEgg\application\components\ExtraData;
|
10 |
use ContentEgg\application\helpers\TextHelper;
|
11 |
+
use ContentEgg\application\helpers\TemplateHelper;
|
12 |
|
13 |
/**
|
14 |
* AmazonModule class file
|
92 |
if ($this->config('merchant_id'))
|
93 |
$options['MerchantId'] = "Amazon";
|
94 |
|
95 |
+
$options['ResponseGroup'] = 'ItemIds,Offers,ItemAttributes,Images,VariationOffers';
|
96 |
|
97 |
// Customer Reviews
|
98 |
if ($this->config('customer_reviews'))
|
156 |
$ItemLookup = true;
|
157 |
} else
|
158 |
$ItemLookup = false;
|
|
|
159 |
for ($i = 0; $i < $pages_count; $i++)
|
160 |
{
|
161 |
$options['ItemPage'] = $i + 1;
|
238 |
$item_ids[] = $item['extra']['ASIN'];
|
239 |
}
|
240 |
|
241 |
+
$options['ResponseGroup'] = 'Offers,VariationOffers';
|
242 |
|
243 |
// update iframe url for customer reviews
|
244 |
//if ($this->config('customer_reviews') && $this->config('customer_reviews_iframe'))
|
360 |
if (isset($r['ItemAttributes']['Author']))
|
361 |
$extra->author = $r['ItemAttributes']['Author'];
|
362 |
|
363 |
+
foreach ($r['ItemAttributes'] as $attr_name => $attr_value)
|
364 |
+
{
|
365 |
+
if (!$attr_value || in_array($attr_name, array('Feature', 'ListPrice')))
|
366 |
+
continue;
|
367 |
+
|
368 |
+
if (is_array($attr_value))
|
369 |
+
{
|
370 |
+
$tmp_attr_value = reset($attr_value);
|
371 |
+
if (isset($attr_value[0]) && !is_array($attr_value[0]))
|
372 |
+
$attr_value = join('; ', $attr_value);
|
373 |
+
elseif (is_array($tmp_attr_value) && isset($tmp_attr_value[0]) && !is_array($tmp_attr_value[0]))
|
374 |
+
$attr_value = join('; ', $tmp_attr_value);
|
375 |
+
else
|
376 |
+
{
|
377 |
+
if (is_array(reset($attr_value)))
|
378 |
+
$attr_value = reset($attr_value);
|
379 |
+
if (isset($attr_value[0]))
|
380 |
+
continue;
|
381 |
+
$tmp_attr_value = array();
|
382 |
+
foreach ($attr_value as $kk => $vv)
|
383 |
+
{
|
384 |
+
$tmp_attr_value[] = TemplateHelper::splitAttributeName($kk) . ': ' . $vv;
|
385 |
+
}
|
386 |
+
$attr_value = join('; ', $tmp_attr_value);
|
387 |
+
}
|
388 |
+
}
|
389 |
+
$feature = array(
|
390 |
+
'name' => TemplateHelper::splitAttributeName($attr_name),
|
391 |
+
'value' => $attr_value,
|
392 |
+
);
|
393 |
+
$content->features[] = $feature;
|
394 |
+
}
|
395 |
+
|
396 |
// Offers
|
397 |
self::fillOfferVars($r, $content, $extra);
|
398 |
|
427 |
|
428 |
// Заполняем стандартные поля: title, description, url, price
|
429 |
// все остальные данные в extra
|
430 |
+
$content->url = self::formatProductUrl(rawurldecode($r['DetailPageURL'])); // urldecode???
|
431 |
|
432 |
if (isset($r['ItemAttributes']['Title']))
|
433 |
$content->title = $r['ItemAttributes']['Title'];
|
500 |
$extra = json_decode(json_encode($extra), FALSE);
|
501 |
}
|
502 |
|
503 |
+
// Parent ASIN do not have offers. Return first(???) Offer From Item Variations
|
504 |
+
// @link: http://docs.aws.amazon.com/AWSECommerceService/latest/DG/ItemsThatDoNotHaveOffers.html
|
505 |
+
/*
|
506 |
+
if (!isset($r['Offers']['Offer']) && isset($r['Variations']) && isset($r['Variations']['Item']))
|
507 |
+
{
|
508 |
+
if (!isset($r['Variations']['Item'][0]) && isset($r['Variations']['Item']['ASIN']))
|
509 |
+
$r['Variations']['Item'] = array($r['Variations']['Item']);
|
510 |
+
$r['Offers'] = $r['Variations']['Item'][0]['Offers'];
|
511 |
+
// $r['OfferSummary'] = $r['VariationSummary'];
|
512 |
+
}
|
513 |
+
*
|
514 |
+
*/
|
515 |
+
|
516 |
+
// VariationSummary only for parent products
|
517 |
+
if (!$content->price && isset($r['VariationSummary']))
|
518 |
+
{
|
519 |
+
if (isset($r['VariationSummary']['LowestSalePrice']))
|
520 |
+
$r['Price'] = $r['VariationSummary']['LowestSalePrice'];
|
521 |
+
elseif (isset($r['VariationSummary']['LowestPrice']))
|
522 |
+
$r['Price'] = $r['VariationSummary']['LowestPrice'];
|
523 |
+
}
|
524 |
+
|
525 |
+
|
526 |
// OfferSummary
|
527 |
if (isset($r['OfferSummary']))
|
528 |
{
|
541 |
}
|
542 |
|
543 |
// Offers
|
544 |
+
if (isset($r['Offers']) && isset($r['Offers']['Offer']) && isset($r['Offers']['Offer']['OfferListing']))
|
|
|
|
|
545 |
{
|
546 |
// SalePrice for amazon de?
|
547 |
if (isset($r['Offers']['Offer']['OfferListing']['SalePrice']))
|
556 |
$content->percentageSaved = $r['Offers']['Offer']['OfferListing']['PercentageSaved'];
|
557 |
}
|
558 |
|
559 |
+
// @link: http://docs.aws.amazon.com/AWSECommerceService/latest/DG/AvailabilityValues.html
|
560 |
if (isset($r['Offers']['Offer']['OfferListing']['Availability']))
|
561 |
{
|
562 |
$extra->availability = $r['Offers']['Offer']['OfferListing']['Availability'];
|
715 |
|
716 |
private static function parseAsinFromUrl($url)
|
717 |
{
|
718 |
+
//$regex = '~(?:www\.)?ama?zo?n\.(?:com|ca|co\.uk|co\.jp|de|fr|in|com\.mx)/(?:exec/obidos/ASIN/|o/|gp/product/|(?:(?:[^"\'/]*)/)?dp/|)(B[A-Z0-9]{9})(?:(?:/|\?|\#)(?:[^"\'\s]*))?~isx';
|
719 |
+
$regex = '~(?:www\.)?ama?zo?n\.(?:com|ca|co\.uk|co\.jp|de|fr|in|com\.mx)/(?:exec/obidos/ASIN/|o/|gp/product/|(?:(?:[^"\'/]*)/)?dp/|)(B[0-9]{2}[0-9A-Z]{7}|[0-9]{9}(X|0-9]))(?:(?:/|\?|\#)(?:[^"\'\s]*))?~isx';
|
720 |
+
|
721 |
if (preg_match($regex, $url, $matches))
|
722 |
return $matches[1];
|
723 |
else
|
724 |
return '';
|
725 |
}
|
726 |
|
727 |
+
private static function formatProductUrl($url)
|
728 |
+
{
|
729 |
+
if (!strstr($url, '%'))
|
730 |
+
return $url;
|
731 |
+
|
732 |
+
if (!$parts = parse_url($url))
|
733 |
+
return $urls;
|
734 |
+
|
735 |
+
// fix % in url: https://www.amazon.in/Optimum-Nutrition-100%-Whey-Standard/dp/B002DYJ00C
|
736 |
+
$parts['path'] = str_replace('%', '', $parts['path']);
|
737 |
+
$result = $parts['scheme'] . '://' . $parts['host'] . $parts['path'] . '?' . $parts['query'];
|
738 |
+
return $result;
|
739 |
+
}
|
740 |
+
|
741 |
}
|
application/modules/RelatedKeywords/RelatedKeywordsConfig.php
CHANGED
@@ -18,7 +18,7 @@ class RelatedKeywordsConfig extends ParserModuleConfig {
|
|
18 |
$optiosn = array(
|
19 |
'subscription_key' => array(
|
20 |
'title' => 'Subscription Key <span class="cegg_required">*</span>',
|
21 |
-
'description' => __('Key access to Bing Autosuggest API. You can get <a href="https://
|
22 |
__('You can set several Subscription Keys with commas.', 'content-egg'),
|
23 |
'callback' => array($this, 'render_input'),
|
24 |
'default' => '',
|
@@ -76,12 +76,11 @@ class RelatedKeywordsConfig extends ParserModuleConfig {
|
|
76 |
unset($parent['featured_image']);
|
77 |
return array_merge($parent, $optiosn);
|
78 |
}
|
79 |
-
|
80 |
static public function marketCodes()
|
81 |
{
|
82 |
$codes = array('es-AR', 'en-AU', 'de-AT', 'nl-BE', 'fr-BE', 'pt-BR', 'en-CA', 'fr-CA', 'es-CL', 'da-DK', 'fi-FI', 'fr-FR', 'de-DE', 'zh-HK', 'en-IN', 'en-ID', 'en-IE', 'it-IT', 'ja-JP', 'ko-KR', 'en-MY', 'es-MX', 'nl-NL', 'en-NZ', 'no-NO', 'zh-CN', 'pl-PL', 'pt-PT', 'en-PH', 'ru-RU', 'ar-SA', 'en-ZA', 'es-ES', 'sv-SE', 'fr-CH', 'de-CH', 'zh-TW', 'tr-TR', 'en-GB', 'en-US', 'es-US');
|
83 |
return array_combine($codes, $codes);
|
84 |
}
|
85 |
-
|
86 |
|
87 |
}
|
18 |
$optiosn = array(
|
19 |
'subscription_key' => array(
|
20 |
'title' => 'Subscription Key <span class="cegg_required">*</span>',
|
21 |
+
'description' => __('Key access to Bing Autosuggest API. You can get <a href="https://azure.microsoft.com/en-us/try/cognitive-services/?api=autosuggest-api">here</a>.', 'content-egg') .
|
22 |
__('You can set several Subscription Keys with commas.', 'content-egg'),
|
23 |
'callback' => array($this, 'render_input'),
|
24 |
'default' => '',
|
76 |
unset($parent['featured_image']);
|
77 |
return array_merge($parent, $optiosn);
|
78 |
}
|
79 |
+
|
80 |
static public function marketCodes()
|
81 |
{
|
82 |
$codes = array('es-AR', 'en-AU', 'de-AT', 'nl-BE', 'fr-BE', 'pt-BR', 'en-CA', 'fr-CA', 'es-CL', 'da-DK', 'fi-FI', 'fr-FR', 'de-DE', 'zh-HK', 'en-IN', 'en-ID', 'en-IE', 'it-IT', 'ja-JP', 'ko-KR', 'en-MY', 'es-MX', 'nl-NL', 'en-NZ', 'no-NO', 'zh-CN', 'pl-PL', 'pt-PT', 'en-PH', 'ru-RU', 'ar-SA', 'en-ZA', 'es-ES', 'sv-SE', 'fr-CH', 'de-CH', 'zh-TW', 'tr-TR', 'en-GB', 'en-US', 'es-US');
|
83 |
return array_combine($codes, $codes);
|
84 |
}
|
|
|
85 |
|
86 |
}
|
application/templates/blocks/item_features.php
CHANGED
@@ -1,4 +1,13 @@
|
|
1 |
-
<?php if (!empty($item['
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
<div class="cegg-features-box">
|
3 |
<h4 class="cegg-no-top-margin"><?php _e('Features', 'content-egg-tpl'); ?></h4>
|
4 |
<ul class="cegg-feature-list">
|
1 |
+
<?php if (!empty($item['features'])): ?>
|
2 |
+
<div class="cegg-features-box">
|
3 |
+
<h4 class="cegg-no-top-margin"><?php _e('Features', 'content-egg-tpl'); ?></h4>
|
4 |
+
<ul class="cegg-feature-list">
|
5 |
+
<?php foreach ($item['features'] as $feature): ?>
|
6 |
+
<li><?php echo '<strong>' . esc_html($feature['name']) . '</strong>' . ': ' . esc_html($feature['value']); ?></li>
|
7 |
+
<?php endforeach; ?>
|
8 |
+
</ul>
|
9 |
+
</div>
|
10 |
+
<?php elseif (!empty($item['extra']['itemAttributes']['Feature'])): ?>
|
11 |
<div class="cegg-features-box">
|
12 |
<h4 class="cegg-no-top-margin"><?php _e('Features', 'content-egg-tpl'); ?></h4>
|
13 |
<ul class="cegg-feature-list">
|
content-egg.php
CHANGED
@@ -6,7 +6,7 @@ namespace ContentEgg;
|
|
6 |
Plugin Name: Content Egg
|
7 |
Plugin URI: http://www.keywordrush.com/contentegg
|
8 |
Description: Easily adding auto updating products from affiliate systems and additional content to posts.
|
9 |
-
Version: 3.
|
10 |
Author: keywordrush.com
|
11 |
Author URI: http://www.keywordrush.com
|
12 |
Text Domain: content-egg
|
6 |
Plugin Name: Content Egg
|
7 |
Plugin URI: http://www.keywordrush.com/contentegg
|
8 |
Description: Easily adding auto updating products from affiliate systems and additional content to posts.
|
9 |
+
Version: 3.9.0
|
10 |
Author: keywordrush.com
|
11 |
Author URI: http://www.keywordrush.com
|
12 |
Text Domain: content-egg
|
languages/content-egg.pot
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the same license as the Content Egg package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Content Egg 3.
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg\n"
|
7 |
-
"POT-Creation-Date: 2017-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -97,7 +97,7 @@ msgid "Duplicate "
|
|
97 |
msgstr ""
|
98 |
|
99 |
#: application/admin/AutoblogTable.php:56 application/admin/MyListTable.php:165
|
100 |
-
#: application/admin/views/_metabox_results.php:
|
101 |
#: application/modules/Offer/views/metabox_module.php:99
|
102 |
msgid "Delete"
|
103 |
msgstr ""
|
@@ -137,7 +137,7 @@ msgid "The field \"%s\" can not be empty"
|
|
137 |
msgstr ""
|
138 |
|
139 |
#: application/admin/EnvatoConfig.php:38 application/admin/EnvatoConfig.php:56
|
140 |
-
#: application/admin/GeneralConfig.php:
|
141 |
msgid "Field \"%s\" filled with wrong data."
|
142 |
msgstr ""
|
143 |
|
@@ -161,153 +161,239 @@ msgstr ""
|
|
161 |
msgid "Error."
|
162 |
msgstr ""
|
163 |
|
164 |
-
#: application/admin/GeneralConfig.php:34 application/admin/PluginAdmin.php:
|
165 |
msgid "Settings"
|
166 |
msgstr ""
|
167 |
|
168 |
-
#: application/admin/GeneralConfig.php:
|
169 |
msgid "Website language"
|
170 |
msgstr ""
|
171 |
|
172 |
-
#: application/admin/GeneralConfig.php:
|
173 |
msgid "Modules, which have Multilanguage support, will have priority for this language. Also, this setting will point on language of output templates"
|
174 |
msgstr ""
|
175 |
|
176 |
-
#: application/admin/GeneralConfig.php:
|
177 |
msgid "What post types do you want to use for Content Egg?"
|
178 |
msgstr ""
|
179 |
|
180 |
-
#: application/admin/GeneralConfig.php:
|
181 |
msgid "This setting also shows post types for Autofill extension"
|
182 |
msgstr ""
|
183 |
|
184 |
-
#: application/admin/GeneralConfig.php:
|
185 |
msgid "Filter bots"
|
186 |
msgstr ""
|
187 |
|
188 |
-
#: application/admin/GeneralConfig.php:
|
189 |
msgid "Bots can't activate parsers."
|
190 |
msgstr ""
|
191 |
|
192 |
-
#: application/admin/GeneralConfig.php:
|
193 |
msgid "Updating price and keyword updating is made with page opening. If we determine update by useragent, and page is opened by one of known bots, no parsers will work in this case."
|
194 |
msgstr ""
|
195 |
|
196 |
-
#: application/admin/GeneralConfig.php:
|
197 |
-
#: application/admin/GeneralConfig.php:
|
198 |
msgid "Price history"
|
199 |
msgstr ""
|
200 |
|
201 |
-
#: application/admin/GeneralConfig.php:
|
202 |
msgid "How long save price history. 0 - deactivate price history."
|
203 |
msgstr ""
|
204 |
|
205 |
-
#: application/admin/GeneralConfig.php:
|
206 |
msgid "The field \"%s\" can't be more than %d."
|
207 |
msgstr ""
|
208 |
|
209 |
-
#: application/admin/GeneralConfig.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
210 |
msgid "Allow members to subscribe for price drop alert on email."
|
211 |
msgstr ""
|
212 |
|
213 |
-
#: application/admin/GeneralConfig.php:
|
214 |
msgid "Active subscriptions now: <b>%d</b>"
|
215 |
msgstr ""
|
216 |
|
217 |
-
#: application/admin/GeneralConfig.php:
|
218 |
msgid "Messages are sent for last %d days: <b>%d</b>"
|
219 |
msgstr ""
|
220 |
|
221 |
-
#: application/admin/GeneralConfig.php:
|
|
|
|
|
|
|
|
|
222 |
msgid "This option requires \"Price history\" option (must be enabled) to work."
|
223 |
msgstr ""
|
224 |
|
225 |
-
#: application/admin/GeneralConfig.php:
|
226 |
msgid "Button color"
|
227 |
msgstr ""
|
228 |
|
229 |
-
#: application/admin/GeneralConfig.php:
|
230 |
msgid "Button color for standard templates."
|
231 |
msgstr ""
|
232 |
|
233 |
-
#: application/admin/GeneralConfig.php:
|
234 |
msgid "Buy now button text"
|
235 |
msgstr ""
|
236 |
|
237 |
-
#: application/admin/GeneralConfig.php:
|
238 |
-
#: application/admin/GeneralConfig.php:
|
239 |
msgid "It will be used instead of \"%s\"."
|
240 |
msgstr ""
|
241 |
|
242 |
-
#: application/admin/GeneralConfig.php:
|
243 |
msgid "Coupon button text"
|
244 |
msgstr ""
|
245 |
|
246 |
-
#: application/admin/GeneralConfig.php:
|
247 |
-
#: application/admin/GeneralConfig.php:
|
248 |
msgid "Redirect prefix"
|
249 |
msgstr ""
|
250 |
|
251 |
-
#: application/admin/GeneralConfig.php:
|
252 |
msgid "Custom prefix for local redirect links."
|
253 |
msgstr ""
|
254 |
|
255 |
-
#: application/admin/GeneralConfig.php:
|
256 |
msgid "The field \"%s\" can contain only Latin letters and digits."
|
257 |
msgstr ""
|
258 |
|
259 |
-
#: application/admin/GeneralConfig.php:
|
260 |
msgid "From Name"
|
261 |
msgstr ""
|
262 |
|
263 |
-
#: application/admin/GeneralConfig.php:
|
264 |
msgid "This name will appear in the From Name column of emails sent from CE plugin."
|
265 |
msgstr ""
|
266 |
|
267 |
-
#: application/admin/GeneralConfig.php:
|
268 |
msgid "From Email"
|
269 |
msgstr ""
|
270 |
|
271 |
-
#: application/admin/GeneralConfig.php:
|
272 |
msgid "Customize the From Email address."
|
273 |
msgstr ""
|
274 |
|
275 |
-
#: application/admin/GeneralConfig.php:
|
276 |
msgid "To avoid your email being marked as spam, it is recommended your \"from\" match your website."
|
277 |
msgstr ""
|
278 |
|
279 |
-
#: application/admin/GeneralConfig.php:
|
280 |
msgid "Search modules"
|
281 |
msgstr ""
|
282 |
|
283 |
-
#: application/admin/GeneralConfig.php:
|
284 |
msgid "Select modules to search on frontend."
|
285 |
msgstr ""
|
286 |
|
287 |
-
#: application/admin/GeneralConfig.php:
|
288 |
msgid "Do not select more than 1-2 modules."
|
289 |
msgstr ""
|
290 |
|
291 |
-
#: application/admin/GeneralConfig.php:
|
292 |
msgid "Please note, AE modules work slowly and are not recommended for use as search modules."
|
293 |
msgstr ""
|
294 |
|
295 |
-
#: application/admin/GeneralConfig.php:
|
296 |
msgid "Do not forget to add search widget or shorcode [content-egg-search-form]."
|
297 |
msgstr ""
|
298 |
|
299 |
-
#: application/admin/GeneralConfig.php:
|
|
|
|
|
|
|
|
|
|
|
300 |
msgid "Search page template"
|
301 |
msgstr ""
|
302 |
|
303 |
-
#: application/admin/GeneralConfig.php:
|
304 |
msgid "Template for body of search page."
|
305 |
msgstr ""
|
306 |
|
307 |
-
#: application/admin/GeneralConfig.php:
|
308 |
msgid "You can use shortcodes, for example: [content-egg module=Amazon template=grid]"
|
309 |
msgstr ""
|
310 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
311 |
#: application/admin/ImportExportController.php:26
|
312 |
msgid "Import/Export"
|
313 |
msgstr ""
|
@@ -366,42 +452,43 @@ msgstr ""
|
|
366 |
msgid " back"
|
367 |
msgstr ""
|
368 |
|
369 |
-
#: application/admin/PluginAdmin.php:
|
370 |
msgid "Are you sure?"
|
371 |
msgstr ""
|
372 |
|
373 |
-
#: application/admin/PrefillController.php:
|
374 |
-
#: application/admin/views/prefill.php:
|
|
|
|
|
|
|
|
|
|
|
375 |
msgid "Fill"
|
376 |
msgstr ""
|
377 |
|
378 |
-
#: application/admin/PrefillController.php:
|
379 |
msgid "Data already exist."
|
380 |
msgstr ""
|
381 |
|
382 |
-
#: application/admin/PrefillController.php:
|
383 |
msgid "Impossible to determine a keyword"
|
384 |
msgstr ""
|
385 |
|
386 |
-
#: application/admin/PrefillController.php:
|
387 |
msgid "Keyword for autoupdate already exists."
|
388 |
msgstr ""
|
389 |
|
390 |
-
#: application/admin/PrefillController.php:
|
391 |
-
|
392 |
-
msgstr ""
|
393 |
-
|
394 |
-
#: application/admin/PrefillController.php:133
|
395 |
-
#: application/admin/views/metabox_module.php:85
|
396 |
msgid "Error:"
|
397 |
msgstr ""
|
398 |
|
399 |
-
#: application/admin/PrefillController.php:
|
400 |
-
#: application/admin/views/metabox_module.php:
|
401 |
msgid "No data found..."
|
402 |
msgstr ""
|
403 |
|
404 |
-
#: application/admin/PrefillController.php:
|
405 |
msgid "Data saved:"
|
406 |
msgstr ""
|
407 |
|
@@ -615,8 +702,8 @@ msgid "You can use shortcodes, for example:"
|
|
615 |
msgstr ""
|
616 |
|
617 |
#: application/admin/views/_metabox_autoblog.php:216
|
618 |
-
#: application/admin/views/_metabox_autoblog.php:
|
619 |
-
#: application/admin/views/_metabox_autoblog.php:
|
620 |
msgid "\"Formulas\", and also all tags from title template, will also work here."
|
621 |
msgstr ""
|
622 |
|
@@ -641,10 +728,12 @@ msgid "Chosen modules will not run in this configuration. "
|
|
641 |
msgstr ""
|
642 |
|
643 |
#: application/admin/views/_metabox_autoblog.php:260
|
|
|
644 |
msgid "Post status"
|
645 |
msgstr ""
|
646 |
|
647 |
#: application/admin/views/_metabox_autoblog.php:272
|
|
|
648 |
msgid "Post type"
|
649 |
msgstr ""
|
650 |
|
@@ -667,147 +756,148 @@ msgstr ""
|
|
667 |
#: application/modules/Pepperjam/PepperjamConfig.php:96
|
668 |
#: application/modules/Pixabay/PixabayConfig.php:108
|
669 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:57
|
|
|
670 |
msgid "Category "
|
671 |
msgstr ""
|
672 |
|
673 |
-
#: application/admin/views/_metabox_autoblog.php:
|
674 |
msgid "Create Automatically"
|
675 |
msgstr ""
|
676 |
|
677 |
-
#: application/admin/views/_metabox_autoblog.php:
|
678 |
msgid "Default category for posts."
|
679 |
msgstr ""
|
680 |
|
681 |
-
#: application/admin/views/_metabox_autoblog.php:
|
682 |
msgid "\"Create Automatically\" means, that categories will be created based on data of CSV file with keywords and categories."
|
683 |
msgstr ""
|
684 |
|
685 |
-
#: application/admin/views/_metabox_autoblog.php:
|
686 |
msgid "Dynamic categories"
|
687 |
msgstr ""
|
688 |
|
689 |
-
#: application/admin/views/_metabox_autoblog.php:
|
690 |
msgid "Do not create"
|
691 |
msgstr ""
|
692 |
|
693 |
-
#: application/admin/views/_metabox_autoblog.php:
|
694 |
msgid "Create category"
|
695 |
msgstr ""
|
696 |
|
697 |
-
#: application/admin/views/_metabox_autoblog.php:
|
698 |
msgid "Create nested categories"
|
699 |
msgstr ""
|
700 |
|
701 |
-
#: application/admin/views/_metabox_autoblog.php:
|
702 |
msgid "Create a category automatically, if the main product has a category data."
|
703 |
msgstr ""
|
704 |
|
705 |
-
#: application/admin/views/_metabox_autoblog.php:
|
706 |
msgid "Minimum modules required"
|
707 |
msgstr ""
|
708 |
|
709 |
-
#: application/admin/views/_metabox_autoblog.php:
|
710 |
msgid "Post will not be published if no content for such number of modules."
|
711 |
msgstr ""
|
712 |
|
713 |
-
#: application/admin/views/_metabox_autoblog.php:
|
714 |
msgid "Minimum reviews required"
|
715 |
msgstr ""
|
716 |
|
717 |
-
#: application/admin/views/_metabox_autoblog.php:
|
718 |
msgid "Post will not be published if there are no user reviews. This option works only for AE modules."
|
719 |
msgstr ""
|
720 |
|
721 |
-
#: application/admin/views/_metabox_autoblog.php:
|
722 |
#: application/modules/AdmitadProducts/AdmitadProductsConfig.php:150
|
723 |
msgid "Automatic update"
|
724 |
msgstr ""
|
725 |
|
726 |
-
#: application/admin/views/_metabox_autoblog.php:
|
727 |
msgid "For selected modules, the current keyword will be used as a keyword for autoupdate. Data of the module will be updated periodically In accordance with the configuration of the lifetime of the cache."
|
728 |
msgstr ""
|
729 |
|
730 |
-
#: application/admin/views/_metabox_autoblog.php:
|
731 |
msgid "Required modules"
|
732 |
msgstr ""
|
733 |
|
734 |
-
#: application/admin/views/_metabox_autoblog.php:
|
735 |
msgid "Post will not be publicized if no results for these modules."
|
736 |
msgstr ""
|
737 |
|
738 |
-
#: application/admin/views/_metabox_autoblog.php:
|
739 |
msgid "Main product"
|
740 |
msgstr ""
|
741 |
|
742 |
-
#: application/admin/views/_metabox_autoblog.php:
|
743 |
-
msgid "Minimum price"
|
744 |
-
msgstr ""
|
745 |
-
|
746 |
-
#: application/admin/views/_metabox_autoblog.php:402
|
747 |
-
msgid "Maximum price"
|
748 |
-
msgstr ""
|
749 |
-
|
750 |
-
#: application/admin/views/_metabox_autoblog.php:403
|
751 |
-
msgid "Random"
|
752 |
-
msgstr ""
|
753 |
-
|
754 |
-
#: application/admin/views/_metabox_autoblog.php:406
|
755 |
msgid "How to choose \"main\" product?"
|
756 |
msgstr ""
|
757 |
|
758 |
-
#: application/admin/views/_metabox_autoblog.php:
|
759 |
msgid "Then you can use tags:"
|
760 |
msgstr ""
|
761 |
|
762 |
-
#: application/admin/views/_metabox_autoblog.php:
|
763 |
msgid "Tags"
|
764 |
msgstr ""
|
765 |
|
766 |
-
#: application/admin/views/_metabox_autoblog.php:
|
767 |
msgid "Comma separated list of tags."
|
768 |
msgstr ""
|
769 |
|
770 |
-
#: application/admin/views/_metabox_autoblog.php:
|
|
|
771 |
msgid "Add custom fields"
|
772 |
msgstr ""
|
773 |
|
774 |
-
#: application/admin/views/_metabox_autoblog.php:
|
775 |
msgid "Custom Field"
|
776 |
msgstr ""
|
777 |
|
778 |
-
#: application/admin/views/_metabox_autoblog.php:
|
779 |
msgid "Value"
|
780 |
msgstr ""
|
781 |
|
782 |
-
#: application/admin/views/_metabox_results.php:
|
783 |
#: application/components/ParserModuleConfig.php:57
|
784 |
#: application/modules/Offer/views/metabox_module.php:53
|
785 |
#: application/modules/Youtube/YoutubeConfig.php:64
|
786 |
-
#: application/modules/Youtube/views/search_panel.php:
|
787 |
msgid "Title"
|
788 |
msgstr ""
|
789 |
|
790 |
-
#: application/admin/views/_metabox_results.php:
|
791 |
#: application/modules/Offer/views/metabox_module.php:95
|
792 |
msgid "Description"
|
793 |
msgstr ""
|
794 |
|
795 |
-
#: application/admin/views/_metabox_results.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
796 |
#: application/admin/views/_promo_box.php:42
|
797 |
#: application/modules/Offer/views/metabox_module.php:98
|
798 |
msgid "Go to "
|
799 |
msgstr ""
|
800 |
|
801 |
-
#: application/admin/views/_metabox_results.php:
|
802 |
-
|
803 |
-
msgid "EAN:"
|
804 |
msgstr ""
|
805 |
|
806 |
-
#: application/admin/views/
|
807 |
-
msgid "
|
808 |
msgstr ""
|
809 |
|
810 |
-
#: application/admin/views/_metabox_search_results.php:
|
|
|
|
|
|
|
|
|
811 |
#: application/modules/CjLinks/views/search_results.php:16
|
812 |
msgid "Coupon code:"
|
813 |
msgstr ""
|
@@ -959,121 +1049,155 @@ msgstr ""
|
|
959 |
msgid "Find all"
|
960 |
msgstr ""
|
961 |
|
962 |
-
#: application/admin/views/metabox_general.php:
|
963 |
-
#: application/admin/views/metabox_module.php:
|
964 |
msgid "Add all"
|
965 |
msgstr ""
|
966 |
|
967 |
-
#: application/admin/views/metabox_general.php:
|
968 |
msgid "Are you sure you want to delete the results of all modules?"
|
969 |
msgstr ""
|
970 |
|
971 |
-
#: application/admin/views/metabox_general.php:
|
972 |
-
#: application/admin/views/metabox_module.php:
|
973 |
#: application/modules/Offer/views/metabox_module.php:36
|
974 |
msgid "Delete all"
|
975 |
msgstr ""
|
976 |
|
977 |
-
#: application/admin/views/metabox_module.php:
|
978 |
#: application/modules/Offer/views/metabox_module.php:26
|
979 |
msgid "Output Template for shortcode"
|
980 |
msgstr ""
|
981 |
|
982 |
-
#: application/admin/views/metabox_module.php:
|
983 |
-
msgid "Keyword for
|
984 |
msgstr ""
|
985 |
|
986 |
-
#: application/admin/views/metabox_module.php:
|
|
|
|
|
|
|
|
|
987 |
#: application/modules/Offer/views/metabox_module.php:36
|
988 |
msgid "Are you sure you want to delete all results?"
|
989 |
msgstr ""
|
990 |
|
991 |
-
#: application/admin/views/metabox_module.php:
|
992 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:160
|
993 |
msgid "Search"
|
994 |
msgstr ""
|
995 |
|
996 |
-
#: application/admin/views/metabox_module.php:
|
997 |
msgid "Keyword for search"
|
998 |
msgstr ""
|
999 |
|
1000 |
-
#: application/admin/views/metabox_module.php:
|
1001 |
msgid "Find"
|
1002 |
msgstr ""
|
1003 |
|
1004 |
-
#: application/admin/views/metabox_module.php:
|
1005 |
msgid "Not found..."
|
1006 |
msgstr ""
|
1007 |
|
1008 |
-
#: application/admin/views/prefill.php:
|
1009 |
msgid "This extension will fill module's data for all existed posts."
|
1010 |
msgstr ""
|
1011 |
|
1012 |
-
#: application/admin/views/prefill.php:
|
1013 |
msgid "All existing data and keywords will not be erased or overwritten."
|
1014 |
msgstr ""
|
1015 |
|
1016 |
-
#: application/admin/views/prefill.php:
|
1017 |
msgid "Add data for module"
|
1018 |
msgstr ""
|
1019 |
|
1020 |
-
#: application/admin/views/prefill.php:
|
1021 |
msgid "Keyword source"
|
1022 |
msgstr ""
|
1023 |
|
1024 |
-
#: application/admin/views/prefill.php:
|
1025 |
msgid "Calculate as base of the density of keywords inside post"
|
1026 |
msgstr ""
|
1027 |
|
1028 |
-
#: application/admin/views/prefill.php:
|
1029 |
msgid "Title for post"
|
1030 |
msgstr ""
|
1031 |
|
1032 |
-
#: application/admin/views/prefill.php:
|
1033 |
msgid "Post tags"
|
1034 |
msgstr ""
|
1035 |
|
1036 |
#: application/admin/views/prefill.php:36
|
|
|
|
|
|
|
|
|
1037 |
msgid "Copy from"
|
1038 |
msgstr ""
|
1039 |
|
1040 |
-
#: application/admin/views/prefill.php:
|
|
|
|
|
|
|
|
|
1041 |
msgid "Autoupdate"
|
1042 |
msgstr ""
|
1043 |
|
1044 |
-
#: application/admin/views/prefill.php:
|
1045 |
msgid "Add Keyword for the automatic update"
|
1046 |
msgstr ""
|
1047 |
|
1048 |
-
#: application/admin/views/prefill.php:
|
1049 |
msgid "Only for those modules, which have autoupdate function."
|
1050 |
msgstr ""
|
1051 |
|
1052 |
-
#: application/admin/views/prefill.php:
|
1053 |
msgid "Number of words"
|
1054 |
msgstr ""
|
1055 |
|
1056 |
-
#: application/admin/views/prefill.php:
|
1057 |
msgid "Maximum words for one search query."
|
1058 |
msgstr ""
|
1059 |
|
1060 |
-
#: application/admin/views/prefill.php:
|
1061 |
msgid "\"Minus\" words"
|
1062 |
msgstr ""
|
1063 |
|
1064 |
-
#: application/admin/views/prefill.php:
|
1065 |
msgid "Remove these words from keyword. You can set several minus words/phrases with commas."
|
1066 |
msgstr ""
|
1067 |
|
1068 |
-
#: application/admin/views/prefill.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1069 |
msgid "Start"
|
1070 |
msgstr ""
|
1071 |
|
1072 |
-
#: application/admin/views/prefill.php:
|
1073 |
msgid "Run again"
|
1074 |
msgstr ""
|
1075 |
|
1076 |
-
#: application/admin/views/prefill.php:
|
1077 |
msgid "Stop"
|
1078 |
msgstr ""
|
1079 |
|
@@ -1086,7 +1210,7 @@ msgstr ""
|
|
1086 |
msgid "General settings"
|
1087 |
msgstr ""
|
1088 |
|
1089 |
-
#: application/admin/views/settings.php:
|
1090 |
msgid "Conditions"
|
1091 |
msgstr ""
|
1092 |
|
@@ -1227,31 +1351,27 @@ msgstr ""
|
|
1227 |
msgid "Status"
|
1228 |
msgstr ""
|
1229 |
|
1230 |
-
#: application/models/AutoblogModel.php:76
|
1231 |
-
msgid "Total posts"
|
1232 |
-
msgstr ""
|
1233 |
-
|
1234 |
#: application/models/AutoblogModel.php:77
|
1235 |
msgid "Last error"
|
1236 |
msgstr ""
|
1237 |
|
1238 |
-
#: application/models/AutoblogModel.php:
|
1239 |
msgid "Required module %s will not run. The module is not configured or deleted."
|
1240 |
msgstr ""
|
1241 |
|
1242 |
-
#: application/models/AutoblogModel.php:
|
1243 |
msgid "Data was not found for required module %s."
|
1244 |
msgstr ""
|
1245 |
|
1246 |
-
#: application/models/AutoblogModel.php:
|
1247 |
msgid "It does not reach the desired amount of data. Minimum required modules: %d."
|
1248 |
msgstr ""
|
1249 |
|
1250 |
-
#: application/models/AutoblogModel.php:
|
1251 |
msgid "Total reviews found: %d. Minimum reviews required: %d."
|
1252 |
msgstr ""
|
1253 |
|
1254 |
-
#: application/models/AutoblogModel.php:
|
1255 |
msgid "Post can't be created. Unknown error."
|
1256 |
msgstr ""
|
1257 |
|
@@ -1306,6 +1426,7 @@ msgstr ""
|
|
1306 |
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:92
|
1307 |
#: application/modules/Twitter/TwitterConfig.php:80
|
1308 |
#: application/modules/Udemy/UdemyConfig.php:64
|
|
|
1309 |
#: application/modules/VkNews/VkNewsConfig.php:20
|
1310 |
#: application/modules/Youtube/YoutubeConfig.php:35
|
1311 |
#: application/modules/Zanox/ZanoxConfig.php:45
|
@@ -1340,6 +1461,7 @@ msgstr ""
|
|
1340 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:93
|
1341 |
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:93
|
1342 |
#: application/modules/Udemy/UdemyConfig.php:65
|
|
|
1343 |
#: application/modules/Zanox/ZanoxConfig.php:46
|
1344 |
msgid "Number of results for one search query."
|
1345 |
msgstr ""
|
@@ -1384,6 +1506,7 @@ msgstr ""
|
|
1384 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:103
|
1385 |
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:103
|
1386 |
#: application/modules/Udemy/UdemyConfig.php:79
|
|
|
1387 |
#: application/modules/Zanox/ZanoxConfig.php:61
|
1388 |
msgid "Results for updates "
|
1389 |
msgstr ""
|
@@ -1416,6 +1539,7 @@ msgstr ""
|
|
1416 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:104
|
1417 |
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:104
|
1418 |
#: application/modules/Udemy/UdemyConfig.php:80
|
|
|
1419 |
#: application/modules/Zanox/ZanoxConfig.php:62
|
1420 |
msgid "Number of results for automatic updates and autoblogging."
|
1421 |
msgstr ""
|
@@ -1433,11 +1557,11 @@ msgstr ""
|
|
1433 |
#: application/modules/Affiliatewindow/AffiliatewindowConfig.php:128
|
1434 |
#: application/modules/AffilinetProducts/AffilinetProductsConfig.php:165
|
1435 |
#: application/modules/Aliexpress/AliexpressConfig.php:258
|
1436 |
-
#: application/modules/Amazon/AmazonConfig.php:
|
1437 |
#: application/modules/BingImages/BingImagesConfig.php:202
|
1438 |
#: application/modules/CityadsProducts/CityadsProductsConfig.php:215
|
1439 |
#: application/modules/CjProducts/CjProductsConfig.php:216
|
1440 |
-
#: application/modules/Ebay/EbayConfig.php:
|
1441 |
#: application/modules/Envato/EnvatoConfig.php:207
|
1442 |
#: application/modules/Flickr/FlickrConfig.php:104
|
1443 |
#: application/modules/Flipkart/FlipkartConfig.php:92
|
@@ -1461,6 +1585,7 @@ msgstr ""
|
|
1461 |
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:168
|
1462 |
#: application/modules/Twitter/TwitterConfig.php:125
|
1463 |
#: application/modules/Udemy/UdemyConfig.php:212
|
|
|
1464 |
#: application/modules/VkNews/VkNewsConfig.php:42
|
1465 |
#: application/modules/Zanox/ZanoxConfig.php:152
|
1466 |
msgid "Save images"
|
@@ -1471,11 +1596,11 @@ msgstr ""
|
|
1471 |
#: application/modules/Affiliatewindow/AffiliatewindowConfig.php:129
|
1472 |
#: application/modules/AffilinetProducts/AffilinetProductsConfig.php:166
|
1473 |
#: application/modules/Aliexpress/AliexpressConfig.php:259
|
1474 |
-
#: application/modules/Amazon/AmazonConfig.php:
|
1475 |
#: application/modules/BingImages/BingImagesConfig.php:203
|
1476 |
#: application/modules/CityadsProducts/CityadsProductsConfig.php:216
|
1477 |
#: application/modules/CjProducts/CjProductsConfig.php:217
|
1478 |
-
#: application/modules/Ebay/EbayConfig.php:
|
1479 |
#: application/modules/Envato/EnvatoConfig.php:208
|
1480 |
#: application/modules/Flickr/FlickrConfig.php:105
|
1481 |
#: application/modules/Flipkart/FlipkartConfig.php:93
|
@@ -1498,6 +1623,7 @@ msgstr ""
|
|
1498 |
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:169
|
1499 |
#: application/modules/Twitter/TwitterConfig.php:126
|
1500 |
#: application/modules/Udemy/UdemyConfig.php:213
|
|
|
1501 |
#: application/modules/VkNews/VkNewsConfig.php:43
|
1502 |
#: application/modules/Zanox/ZanoxConfig.php:153
|
1503 |
msgid "Save images on server"
|
@@ -1528,7 +1654,7 @@ msgid "Adds coupons from <a href=\"https://www.admitad.com/ru/promo/?ref=770f943
|
|
1528 |
msgstr ""
|
1529 |
|
1530 |
#: application/modules/AdmitadCoupons/AdmitadCouponsModule.php:25
|
1531 |
-
#: application/modules/AdmitadProducts/AdmitadProductsModule.php:
|
1532 |
#: application/modules/TradedoublerCoupons/TradedoublerCouponsModule.php:25
|
1533 |
msgid "You must get approve for each program separately."
|
1534 |
msgstr ""
|
@@ -1570,6 +1696,7 @@ msgid "Field \"Results for autoupdating\" can not be more than 20."
|
|
1570 |
msgstr ""
|
1571 |
|
1572 |
#: application/modules/AdmitadProducts/AdmitadProductsConfig.php:88
|
|
|
1573 |
msgid "Discount"
|
1574 |
msgstr ""
|
1575 |
|
@@ -1672,14 +1799,52 @@ msgstr ""
|
|
1672 |
msgid "Update products"
|
1673 |
msgstr ""
|
1674 |
|
1675 |
-
#: application/modules/AdmitadProducts/AdmitadProductsModule.php:
|
1676 |
msgid "Add products from <a href=\"https://www.admitad.com/ru/promo/?ref=770f943d83\">Admitad</a>."
|
1677 |
msgstr ""
|
1678 |
|
1679 |
-
#: application/modules/AdmitadProducts/AdmitadProductsModule.php:
|
1680 |
msgid "Used API the <a href=\"https://www.admitadgoods.ru/en.html\" target=\"_blank\">Admitad Goods</a> WP plugin."
|
1681 |
msgstr ""
|
1682 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1683 |
#: application/modules/Affiliatewindow/AffiliatewindowConfig.php:23
|
1684 |
msgid "Access key for ProductServe API (ShopWindow Client) V3. You can get it <a href=\"https://www.affiliatewindow.com/affiliates/accountdetails.php\">here</a>."
|
1685 |
msgstr ""
|
@@ -1855,10 +2020,12 @@ msgid "Max number of partner sales for last month. Example, 456"
|
|
1855 |
msgstr ""
|
1856 |
|
1857 |
#: application/modules/Aliexpress/AliexpressConfig.php:235
|
|
|
1858 |
msgid "Price low to high"
|
1859 |
msgstr ""
|
1860 |
|
1861 |
#: application/modules/Aliexpress/AliexpressConfig.php:236
|
|
|
1862 |
msgid "Price high to low"
|
1863 |
msgstr ""
|
1864 |
|
@@ -1895,6 +2062,20 @@ msgstr ""
|
|
1895 |
msgid "Adds items from aliexpress.com"
|
1896 |
msgstr ""
|
1897 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1898 |
#: application/modules/Amazon/AmazonConfig.php:22
|
1899 |
msgid "Special key to access the Amazon API."
|
1900 |
msgstr ""
|
@@ -2038,136 +2219,145 @@ msgstr ""
|
|
2038 |
msgid "Get user reviews. Reviews will be in iframe. Iframe url is valid only 24 hours, please, use autoupdating function with less than 24 hour to keep actual url."
|
2039 |
msgstr ""
|
2040 |
|
2041 |
-
#: application/modules/Amazon/AmazonConfig.php:
|
2042 |
#: application/modules/Market/MarketConfig.php:138
|
2043 |
#: application/modules/Ozon/OzonConfig.php:155
|
2044 |
msgid "Cut reviews"
|
2045 |
msgstr ""
|
2046 |
|
2047 |
-
#: application/modules/Amazon/AmazonConfig.php:
|
2048 |
msgid "Number of characters for one review. 0 - the maximal length of the text."
|
2049 |
msgstr ""
|
2050 |
|
2051 |
-
#: application/modules/Amazon/AmazonConfig.php:
|
2052 |
msgid "Parse description"
|
2053 |
msgstr ""
|
2054 |
|
2055 |
-
#: application/modules/Amazon/AmazonConfig.php:
|
2056 |
msgid "Parse description of products from seller"
|
2057 |
msgstr ""
|
2058 |
|
2059 |
-
#: application/modules/Amazon/AmazonConfig.php:
|
2060 |
msgid "Type of description"
|
2061 |
msgstr ""
|
2062 |
|
2063 |
-
#: application/modules/Amazon/AmazonConfig.php:
|
2064 |
msgid "Like on Amazon"
|
2065 |
msgstr ""
|
2066 |
|
2067 |
-
#: application/modules/Amazon/AmazonConfig.php:
|
2068 |
msgid "Safe HTML"
|
2069 |
msgstr ""
|
2070 |
|
2071 |
-
#: application/modules/Amazon/AmazonConfig.php:
|
2072 |
msgid "Only allowed HTML tags"
|
2073 |
msgstr ""
|
2074 |
|
2075 |
-
#: application/modules/Amazon/AmazonConfig.php:
|
2076 |
msgid "Text only"
|
2077 |
msgstr ""
|
2078 |
|
2079 |
-
#: application/modules/Amazon/AmazonConfig.php:
|
2080 |
-
#: application/modules/Ebay/EbayConfig.php:
|
2081 |
msgid "Size of description"
|
2082 |
msgstr ""
|
2083 |
|
2084 |
-
#: application/modules/Amazon/AmazonConfig.php:
|
2085 |
-
#: application/modules/Ebay/EbayConfig.php:
|
2086 |
msgid "The maximum size of the item description. 0 - do not cut."
|
2087 |
msgstr ""
|
2088 |
|
2089 |
-
#: application/modules/Amazon/AmazonConfig.php:
|
2090 |
msgid "Use images with https (use it if you also have https site)"
|
2091 |
msgstr ""
|
2092 |
|
2093 |
-
#: application/modules/Amazon/AmazonConfig.php:
|
2094 |
msgid "Rewrite url of images with https. Use it if you have SSL on your domain"
|
2095 |
msgstr ""
|
2096 |
|
2097 |
-
#: application/modules/Amazon/AmazonConfig.php:
|
2098 |
msgid "Enabling this option violates rules of API."
|
2099 |
msgstr ""
|
2100 |
|
2101 |
-
#: application/modules/Amazon/AmazonConfig.php:
|
2102 |
msgid "Tracking ID for %s locale"
|
2103 |
msgstr ""
|
2104 |
|
2105 |
-
#: application/modules/Amazon/AmazonConfig.php:
|
2106 |
msgid "Type here your tracking ID for this locale if you need multiple locale parsing"
|
2107 |
msgstr ""
|
2108 |
|
2109 |
-
#: application/modules/Amazon/AmazonModule.php:
|
2110 |
-
msgid "Adds
|
2111 |
-
msgstr ""
|
2112 |
-
|
2113 |
-
#: application/modules/Amazon/views/search_panel.php:17
|
2114 |
-
msgid "Min. discount"
|
2115 |
msgstr ""
|
2116 |
|
2117 |
-
#: application/modules/Amazon/views/search_panel.php:
|
2118 |
msgid "5%"
|
2119 |
msgstr ""
|
2120 |
|
2121 |
-
#: application/modules/Amazon/views/search_panel.php:
|
2122 |
msgid "10%"
|
2123 |
msgstr ""
|
2124 |
|
2125 |
-
#: application/modules/Amazon/views/search_panel.php:
|
2126 |
msgid "15%"
|
2127 |
msgstr ""
|
2128 |
|
2129 |
-
#: application/modules/Amazon/views/search_panel.php:
|
2130 |
msgid "20%"
|
2131 |
msgstr ""
|
2132 |
|
2133 |
-
#: application/modules/Amazon/views/search_panel.php:
|
2134 |
msgid "25%"
|
2135 |
msgstr ""
|
2136 |
|
2137 |
-
#: application/modules/Amazon/views/search_panel.php:
|
2138 |
msgid "30%"
|
2139 |
msgstr ""
|
2140 |
|
2141 |
-
#: application/modules/Amazon/views/search_panel.php:
|
2142 |
msgid "35%"
|
2143 |
msgstr ""
|
2144 |
|
2145 |
-
#: application/modules/Amazon/views/search_panel.php:
|
2146 |
msgid "40%"
|
2147 |
msgstr ""
|
2148 |
|
2149 |
-
#: application/modules/Amazon/views/search_panel.php:
|
2150 |
msgid "50%"
|
2151 |
msgstr ""
|
2152 |
|
2153 |
-
#: application/modules/Amazon/views/search_panel.php:
|
2154 |
msgid "60%"
|
2155 |
msgstr ""
|
2156 |
|
2157 |
-
#: application/modules/Amazon/views/search_panel.php:
|
2158 |
msgid "70%"
|
2159 |
msgstr ""
|
2160 |
|
2161 |
-
#: application/modules/Amazon/views/search_panel.php:
|
2162 |
msgid "80%"
|
2163 |
msgstr ""
|
2164 |
|
2165 |
-
#: application/modules/Amazon/views/search_panel.php:
|
2166 |
msgid "90%"
|
2167 |
msgstr ""
|
2168 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2169 |
#: application/modules/BingImages/BingImagesConfig.php:21
|
2170 |
-
msgid "Key access to Bing Search API. You can get <a href=\"https://
|
2171 |
msgstr ""
|
2172 |
|
2173 |
#: application/modules/BingImages/BingImagesConfig.php:22
|
@@ -2291,12 +2481,12 @@ msgid "All"
|
|
2291 |
msgstr ""
|
2292 |
|
2293 |
#: application/modules/BingImages/BingImagesConfig.php:90
|
2294 |
-
#: application/modules/BingImages/views/search_panel.php:
|
2295 |
msgid "Public"
|
2296 |
msgstr ""
|
2297 |
|
2298 |
#: application/modules/BingImages/BingImagesConfig.php:91
|
2299 |
-
#: application/modules/BingImages/views/search_panel.php:
|
2300 |
msgid "Share"
|
2301 |
msgstr ""
|
2302 |
|
@@ -2305,13 +2495,13 @@ msgid "Share commercially "
|
|
2305 |
msgstr ""
|
2306 |
|
2307 |
#: application/modules/BingImages/BingImagesConfig.php:93
|
2308 |
-
#: application/modules/BingImages/views/search_panel.php:
|
2309 |
msgid "Modify"
|
2310 |
msgstr ""
|
2311 |
|
2312 |
#: application/modules/BingImages/BingImagesConfig.php:94
|
2313 |
#: application/modules/BingImages/BingImagesConfig.php:186
|
2314 |
-
#: application/modules/BingImages/views/search_panel.php:
|
2315 |
msgid "Modify commercially"
|
2316 |
msgstr ""
|
2317 |
|
@@ -2512,6 +2702,9 @@ msgid "Limit the search to only that domain. For example ask: wikimedia.org"
|
|
2512 |
msgstr ""
|
2513 |
|
2514 |
#: application/modules/BingImages/templates/data_simple.php:5
|
|
|
|
|
|
|
2515 |
msgid "Simple"
|
2516 |
msgstr ""
|
2517 |
|
@@ -2520,17 +2713,17 @@ msgstr ""
|
|
2520 |
msgid "Source: %s"
|
2521 |
msgstr ""
|
2522 |
|
2523 |
-
#: application/modules/BingImages/views/search_panel.php:
|
2524 |
#: application/modules/Flickr/FlickrConfig.php:75
|
2525 |
-
#: application/modules/Flickr/views/search_panel.php:
|
2526 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:24
|
2527 |
-
#: application/modules/GoogleImages/views/search_panel.php:
|
2528 |
#: application/modules/Youtube/YoutubeConfig.php:76
|
2529 |
-
#: application/modules/Youtube/views/search_panel.php:
|
2530 |
msgid "Any license"
|
2531 |
msgstr ""
|
2532 |
|
2533 |
-
#: application/modules/BingImages/views/search_panel.php:
|
2534 |
msgid "Share commercially"
|
2535 |
msgstr ""
|
2536 |
|
@@ -2927,11 +3120,19 @@ msgstr ""
|
|
2927 |
msgid "Payment options"
|
2928 |
msgstr ""
|
2929 |
|
2930 |
-
#: application/modules/Ebay/EbayConfig.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2931 |
msgid "Get description"
|
2932 |
msgstr ""
|
2933 |
|
2934 |
-
#: application/modules/Ebay/EbayConfig.php:
|
2935 |
msgid "Get description of product. This takes more requests for Ebay API and slow down searching. Description will be requested only for 20 first products for one searching"
|
2936 |
msgstr ""
|
2937 |
|
@@ -2955,6 +3156,8 @@ msgstr ""
|
|
2955 |
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:60
|
2956 |
#: application/modules/Udemy/UdemyConfig.php:29
|
2957 |
#: application/modules/Udemy/UdemyConfig.php:44
|
|
|
|
|
2958 |
msgid "The field \"%s\" can not be empty."
|
2959 |
msgstr ""
|
2960 |
|
@@ -2996,7 +3199,7 @@ msgstr ""
|
|
2996 |
|
2997 |
#: application/modules/Envato/EnvatoConfig.php:118
|
2998 |
#: application/modules/Youtube/YoutubeConfig.php:61
|
2999 |
-
#: application/modules/Youtube/views/search_panel.php:
|
3000 |
msgid "Date"
|
3001 |
msgstr ""
|
3002 |
|
@@ -3058,26 +3261,27 @@ msgid "Number of results for a single query"
|
|
3058 |
msgstr ""
|
3059 |
|
3060 |
#: application/modules/Flickr/FlickrConfig.php:61
|
3061 |
-
#: application/modules/Flickr/views/search_panel.php:
|
3062 |
#: application/modules/GoogleBooks/GoogleBooksConfig.php:99
|
3063 |
#: application/modules/Ozon/OzonConfig.php:66
|
|
|
3064 |
#: application/modules/Youtube/YoutubeConfig.php:63
|
3065 |
-
#: application/modules/Youtube/views/search_panel.php:
|
3066 |
msgid "Relevance"
|
3067 |
msgstr ""
|
3068 |
|
3069 |
#: application/modules/Flickr/FlickrConfig.php:62
|
3070 |
-
#: application/modules/Flickr/views/search_panel.php:
|
3071 |
msgid "Date of post"
|
3072 |
msgstr ""
|
3073 |
|
3074 |
#: application/modules/Flickr/FlickrConfig.php:63
|
3075 |
-
#: application/modules/Flickr/views/search_panel.php:
|
3076 |
msgid "Date of shooting"
|
3077 |
msgstr ""
|
3078 |
|
3079 |
#: application/modules/Flickr/FlickrConfig.php:64
|
3080 |
-
#: application/modules/Flickr/views/search_panel.php:
|
3081 |
msgid "First interesting"
|
3082 |
msgstr ""
|
3083 |
|
@@ -3092,30 +3296,30 @@ msgid "Many photos on Flickr have Creative Commons license. <a href=\"http://www
|
|
3092 |
msgstr ""
|
3093 |
|
3094 |
#: application/modules/Flickr/FlickrConfig.php:76
|
3095 |
-
#: application/modules/Flickr/views/search_panel.php:
|
3096 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:25
|
3097 |
-
#: application/modules/GoogleImages/views/search_panel.php:
|
3098 |
msgid "Any Creative Commons"
|
3099 |
msgstr ""
|
3100 |
|
3101 |
#: application/modules/Flickr/FlickrConfig.php:77
|
3102 |
-
#: application/modules/Flickr/views/search_panel.php:
|
3103 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:26
|
3104 |
-
#: application/modules/GoogleImages/views/search_panel.php:
|
3105 |
msgid "With Allow of commercial use"
|
3106 |
msgstr ""
|
3107 |
|
3108 |
#: application/modules/Flickr/FlickrConfig.php:78
|
3109 |
-
#: application/modules/Flickr/views/search_panel.php:
|
3110 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:27
|
3111 |
-
#: application/modules/GoogleImages/views/search_panel.php:
|
3112 |
msgid "Allowed change"
|
3113 |
msgstr ""
|
3114 |
|
3115 |
#: application/modules/Flickr/FlickrConfig.php:79
|
3116 |
-
#: application/modules/Flickr/views/search_panel.php:
|
3117 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:28
|
3118 |
-
#: application/modules/GoogleImages/views/search_panel.php:
|
3119 |
msgid "Commercial use and change"
|
3120 |
msgstr ""
|
3121 |
|
@@ -3260,7 +3464,7 @@ msgstr ""
|
|
3260 |
msgid "Limit search by definite shop. You can find shop ID <a target=\"_blank\" href=\"http://api.gdeslon.ru/merchants\">here</a>. You can set multiple ID with comma."
|
3261 |
msgstr ""
|
3262 |
|
3263 |
-
#: application/modules/GdeSlon/GdeSlonModule.php:
|
3264 |
msgid "Adds goods from gdeslon.ru."
|
3265 |
msgstr ""
|
3266 |
|
@@ -3269,6 +3473,7 @@ msgid "Field \"Results for autoblogging\" can not be more than 40."
|
|
3269 |
msgstr ""
|
3270 |
|
3271 |
#: application/modules/GoogleBooks/GoogleBooksConfig.php:67
|
|
|
3272 |
msgid "Country"
|
3273 |
msgstr ""
|
3274 |
|
@@ -3323,27 +3528,27 @@ msgstr ""
|
|
3323 |
|
3324 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:105
|
3325 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:120
|
3326 |
-
#: application/modules/GoogleImages/views/search_panel.php:
|
3327 |
msgid "Any size"
|
3328 |
msgstr ""
|
3329 |
|
3330 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:106
|
3331 |
-
#: application/modules/GoogleImages/views/search_panel.php:
|
3332 |
msgid "Small"
|
3333 |
msgstr ""
|
3334 |
|
3335 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:107
|
3336 |
-
#: application/modules/GoogleImages/views/search_panel.php:
|
3337 |
msgid "Medium"
|
3338 |
msgstr ""
|
3339 |
|
3340 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:108
|
3341 |
-
#: application/modules/GoogleImages/views/search_panel.php:
|
3342 |
msgid "Large"
|
3343 |
msgstr ""
|
3344 |
|
3345 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:109
|
3346 |
-
#: application/modules/GoogleImages/views/search_panel.php:
|
3347 |
msgid "Huge"
|
3348 |
msgstr ""
|
3349 |
|
@@ -3478,7 +3683,7 @@ msgstr ""
|
|
3478 |
|
3479 |
#: application/modules/Market/MarketConfig.php:80
|
3480 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:118
|
3481 |
-
#: application/modules/TradetrackerCoupons/views/search_panel.php:
|
3482 |
msgid "Offers"
|
3483 |
msgstr ""
|
3484 |
|
@@ -3557,7 +3762,7 @@ msgstr ""
|
|
3557 |
#: application/modules/Offer/views/metabox_module.php:61
|
3558 |
#: application/modules/Ozon/OzonConfig.php:172
|
3559 |
#: application/modules/Youtube/YoutubeConfig.php:62
|
3560 |
-
#: application/modules/Youtube/views/search_panel.php:
|
3561 |
msgid "Rating"
|
3562 |
msgstr ""
|
3563 |
|
@@ -3841,7 +4046,7 @@ msgid "Search photo with free license CC0 Public Domain on pixabay.com"
|
|
3841 |
msgstr ""
|
3842 |
|
3843 |
#: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:21
|
3844 |
-
msgid "Key access to Bing Autosuggest API. You can get <a href=\"https://
|
3845 |
msgstr ""
|
3846 |
|
3847 |
#: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:30
|
@@ -3912,6 +4117,10 @@ msgstr ""
|
|
3912 |
msgid "Access key for Tradedoubler Coupons API. You can get it <a href=\"https://login.tradedoubler.com/publisher/aManageTokens.action\">here</a>."
|
3913 |
msgstr ""
|
3914 |
|
|
|
|
|
|
|
|
|
3915 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:21
|
3916 |
msgid "Access key for Tradedoubler Products API. You can get it <a href=\"https://login.tradedoubler.com/publisher/aManageTokens.action\">here</a>."
|
3917 |
msgstr ""
|
@@ -3953,12 +4162,12 @@ msgid "Items type"
|
|
3953 |
msgstr ""
|
3954 |
|
3955 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:117
|
3956 |
-
#: application/modules/TradetrackerCoupons/views/search_panel.php:
|
3957 |
msgid "Vouchers"
|
3958 |
msgstr ""
|
3959 |
|
3960 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:119
|
3961 |
-
#: application/modules/TradetrackerCoupons/views/search_panel.php:
|
3962 |
msgid "Text Links"
|
3963 |
msgstr ""
|
3964 |
|
@@ -3994,10 +4203,12 @@ msgid "Feed Category Name"
|
|
3994 |
msgstr ""
|
3995 |
|
3996 |
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:150
|
|
|
3997 |
msgid "Price From"
|
3998 |
msgstr ""
|
3999 |
|
4000 |
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:159
|
|
|
4001 |
msgid "Price To"
|
4002 |
msgstr ""
|
4003 |
|
@@ -4143,12 +4354,72 @@ msgstr ""
|
|
4143 |
msgid "Adds cources from %s."
|
4144 |
msgstr ""
|
4145 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4146 |
#: application/modules/VkNews/VkNewsModule.php:25
|
4147 |
msgid "Adds news from Russian-language social network vk.com"
|
4148 |
msgstr ""
|
4149 |
|
4150 |
#: application/modules/Youtube/YoutubeConfig.php:65
|
4151 |
-
#: application/modules/Youtube/views/search_panel.php:
|
4152 |
msgid "Views"
|
4153 |
msgstr ""
|
4154 |
|
@@ -4161,11 +4432,11 @@ msgid "Creative Commons license"
|
|
4161 |
msgstr ""
|
4162 |
|
4163 |
#: application/modules/Youtube/YoutubeConfig.php:78
|
4164 |
-
#: application/modules/Youtube/views/search_panel.php:
|
4165 |
msgid "Standard license"
|
4166 |
msgstr ""
|
4167 |
|
4168 |
-
#: application/modules/Youtube/views/search_panel.php:
|
4169 |
msgid "Creative Commons"
|
4170 |
msgstr ""
|
4171 |
|
2 |
# This file is distributed under the same license as the Content Egg package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Content Egg 3.9.0\n"
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg\n"
|
7 |
+
"POT-Creation-Date: 2017-07-28 14:34:59+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
97 |
msgstr ""
|
98 |
|
99 |
#: application/admin/AutoblogTable.php:56 application/admin/MyListTable.php:165
|
100 |
+
#: application/admin/views/_metabox_results.php:28
|
101 |
#: application/modules/Offer/views/metabox_module.php:99
|
102 |
msgid "Delete"
|
103 |
msgstr ""
|
137 |
msgstr ""
|
138 |
|
139 |
#: application/admin/EnvatoConfig.php:38 application/admin/EnvatoConfig.php:56
|
140 |
+
#: application/admin/GeneralConfig.php:215
|
141 |
msgid "Field \"%s\" filled with wrong data."
|
142 |
msgstr ""
|
143 |
|
161 |
msgid "Error."
|
162 |
msgstr ""
|
163 |
|
164 |
+
#: application/admin/GeneralConfig.php:34 application/admin/PluginAdmin.php:93
|
165 |
msgid "Settings"
|
166 |
msgstr ""
|
167 |
|
168 |
+
#: application/admin/GeneralConfig.php:101
|
169 |
msgid "Website language"
|
170 |
msgstr ""
|
171 |
|
172 |
+
#: application/admin/GeneralConfig.php:102
|
173 |
msgid "Modules, which have Multilanguage support, will have priority for this language. Also, this setting will point on language of output templates"
|
174 |
msgstr ""
|
175 |
|
176 |
+
#: application/admin/GeneralConfig.php:110
|
177 |
msgid "What post types do you want to use for Content Egg?"
|
178 |
msgstr ""
|
179 |
|
180 |
+
#: application/admin/GeneralConfig.php:111
|
181 |
msgid "This setting also shows post types for Autofill extension"
|
182 |
msgstr ""
|
183 |
|
184 |
+
#: application/admin/GeneralConfig.php:118
|
185 |
msgid "Filter bots"
|
186 |
msgstr ""
|
187 |
|
188 |
+
#: application/admin/GeneralConfig.php:119
|
189 |
msgid "Bots can't activate parsers."
|
190 |
msgstr ""
|
191 |
|
192 |
+
#: application/admin/GeneralConfig.php:120
|
193 |
msgid "Updating price and keyword updating is made with page opening. If we determine update by useragent, and page is opened by one of known bots, no parsers will work in this case."
|
194 |
msgstr ""
|
195 |
|
196 |
+
#: application/admin/GeneralConfig.php:127
|
197 |
+
#: application/admin/GeneralConfig.php:137
|
198 |
msgid "Price history"
|
199 |
msgstr ""
|
200 |
|
201 |
+
#: application/admin/GeneralConfig.php:128
|
202 |
msgid "How long save price history. 0 - deactivate price history."
|
203 |
msgstr ""
|
204 |
|
205 |
+
#: application/admin/GeneralConfig.php:137
|
206 |
msgid "The field \"%s\" can't be more than %d."
|
207 |
msgstr ""
|
208 |
|
209 |
+
#: application/admin/GeneralConfig.php:140
|
210 |
+
#: application/admin/GeneralConfig.php:151
|
211 |
+
#: application/admin/GeneralConfig.php:203
|
212 |
+
#: application/admin/GeneralConfig.php:218
|
213 |
+
msgid "Price alerts"
|
214 |
+
msgstr ""
|
215 |
+
|
216 |
+
#: application/admin/GeneralConfig.php:144
|
217 |
msgid "Allow members to subscribe for price drop alert on email."
|
218 |
msgstr ""
|
219 |
|
220 |
+
#: application/admin/GeneralConfig.php:145
|
221 |
msgid "Active subscriptions now: <b>%d</b>"
|
222 |
msgstr ""
|
223 |
|
224 |
+
#: application/admin/GeneralConfig.php:146
|
225 |
msgid "Messages are sent for last %d days: <b>%d</b>"
|
226 |
msgstr ""
|
227 |
|
228 |
+
#: application/admin/GeneralConfig.php:147
|
229 |
+
msgid "Export: [ <a href=\"%s\">All</a> | <a href=\"%s\">Active</a> ]"
|
230 |
+
msgstr ""
|
231 |
+
|
232 |
+
#: application/admin/GeneralConfig.php:148
|
233 |
msgid "This option requires \"Price history\" option (must be enabled) to work."
|
234 |
msgstr ""
|
235 |
|
236 |
+
#: application/admin/GeneralConfig.php:154
|
237 |
msgid "Button color"
|
238 |
msgstr ""
|
239 |
|
240 |
+
#: application/admin/GeneralConfig.php:155
|
241 |
msgid "Button color for standard templates."
|
242 |
msgstr ""
|
243 |
|
244 |
+
#: application/admin/GeneralConfig.php:163
|
245 |
msgid "Buy now button text"
|
246 |
msgstr ""
|
247 |
|
248 |
+
#: application/admin/GeneralConfig.php:164
|
249 |
+
#: application/admin/GeneralConfig.php:173
|
250 |
msgid "It will be used instead of \"%s\"."
|
251 |
msgstr ""
|
252 |
|
253 |
+
#: application/admin/GeneralConfig.php:172
|
254 |
msgid "Coupon button text"
|
255 |
msgstr ""
|
256 |
|
257 |
+
#: application/admin/GeneralConfig.php:181
|
258 |
+
#: application/admin/GeneralConfig.php:190
|
259 |
msgid "Redirect prefix"
|
260 |
msgstr ""
|
261 |
|
262 |
+
#: application/admin/GeneralConfig.php:182
|
263 |
msgid "Custom prefix for local redirect links."
|
264 |
msgstr ""
|
265 |
|
266 |
+
#: application/admin/GeneralConfig.php:190
|
267 |
msgid "The field \"%s\" can contain only Latin letters and digits."
|
268 |
msgstr ""
|
269 |
|
270 |
+
#: application/admin/GeneralConfig.php:195
|
271 |
msgid "From Name"
|
272 |
msgstr ""
|
273 |
|
274 |
+
#: application/admin/GeneralConfig.php:196
|
275 |
msgid "This name will appear in the From Name column of emails sent from CE plugin."
|
276 |
msgstr ""
|
277 |
|
278 |
+
#: application/admin/GeneralConfig.php:206
|
279 |
msgid "From Email"
|
280 |
msgstr ""
|
281 |
|
282 |
+
#: application/admin/GeneralConfig.php:207
|
283 |
msgid "Customize the From Email address."
|
284 |
msgstr ""
|
285 |
|
286 |
+
#: application/admin/GeneralConfig.php:207
|
287 |
msgid "To avoid your email being marked as spam, it is recommended your \"from\" match your website."
|
288 |
msgstr ""
|
289 |
|
290 |
+
#: application/admin/GeneralConfig.php:221
|
291 |
msgid "Search modules"
|
292 |
msgstr ""
|
293 |
|
294 |
+
#: application/admin/GeneralConfig.php:222
|
295 |
msgid "Select modules to search on frontend."
|
296 |
msgstr ""
|
297 |
|
298 |
+
#: application/admin/GeneralConfig.php:223
|
299 |
msgid "Do not select more than 1-2 modules."
|
300 |
msgstr ""
|
301 |
|
302 |
+
#: application/admin/GeneralConfig.php:224
|
303 |
msgid "Please note, AE modules work slowly and are not recommended for use as search modules."
|
304 |
msgstr ""
|
305 |
|
306 |
+
#: application/admin/GeneralConfig.php:225
|
307 |
msgid "Do not forget to add search widget or shorcode [content-egg-search-form]."
|
308 |
msgstr ""
|
309 |
|
310 |
+
#: application/admin/GeneralConfig.php:229
|
311 |
+
#: application/admin/GeneralConfig.php:237
|
312 |
+
msgid "Frontend search"
|
313 |
+
msgstr ""
|
314 |
+
|
315 |
+
#: application/admin/GeneralConfig.php:232
|
316 |
msgid "Search page template"
|
317 |
msgstr ""
|
318 |
|
319 |
+
#: application/admin/GeneralConfig.php:233
|
320 |
msgid "Template for body of search page."
|
321 |
msgstr ""
|
322 |
|
323 |
+
#: application/admin/GeneralConfig.php:234
|
324 |
msgid "You can use shortcodes, for example: [content-egg module=Amazon template=grid]"
|
325 |
msgstr ""
|
326 |
|
327 |
+
#: application/admin/GeneralConfig.php:240
|
328 |
+
msgid "Modules for synchronization"
|
329 |
+
msgstr ""
|
330 |
+
|
331 |
+
#: application/admin/GeneralConfig.php:241
|
332 |
+
msgid "Select modules for automatic synchronization with WooCommerce."
|
333 |
+
msgstr ""
|
334 |
+
|
335 |
+
#: application/admin/GeneralConfig.php:245
|
336 |
+
#: application/admin/GeneralConfig.php:258
|
337 |
+
#: application/admin/GeneralConfig.php:270
|
338 |
+
#: application/admin/GeneralConfig.php:277
|
339 |
+
msgid "WooCommerce synchronization"
|
340 |
+
msgstr ""
|
341 |
+
|
342 |
+
#: application/admin/GeneralConfig.php:248
|
343 |
+
msgid "Automatic synchronization"
|
344 |
+
msgstr ""
|
345 |
+
|
346 |
+
#: application/admin/GeneralConfig.php:249
|
347 |
+
msgid "How to choose product for automatic synchronization with WooCommerce."
|
348 |
+
msgstr ""
|
349 |
+
|
350 |
+
#: application/admin/GeneralConfig.php:252
|
351 |
+
#: application/admin/views/_metabox_autoblog.php:413
|
352 |
+
msgid "Minimum price"
|
353 |
+
msgstr ""
|
354 |
+
|
355 |
+
#: application/admin/GeneralConfig.php:253
|
356 |
+
#: application/admin/views/_metabox_autoblog.php:414
|
357 |
+
msgid "Maximum price"
|
358 |
+
msgstr ""
|
359 |
+
|
360 |
+
#: application/admin/GeneralConfig.php:254
|
361 |
+
#: application/admin/views/_metabox_autoblog.php:415
|
362 |
+
msgid "Random"
|
363 |
+
msgstr ""
|
364 |
+
|
365 |
+
#: application/admin/GeneralConfig.php:255
|
366 |
+
msgid "Manually only"
|
367 |
+
msgstr ""
|
368 |
+
|
369 |
+
#: application/admin/GeneralConfig.php:261
|
370 |
+
msgid "Global attributes filter"
|
371 |
+
msgstr ""
|
372 |
+
|
373 |
+
#: application/admin/GeneralConfig.php:262
|
374 |
+
msgid "How to create wocommerce attributes when synchronizing. Please, read documentation about them in our docs."
|
375 |
+
msgstr ""
|
376 |
+
|
377 |
+
#: application/admin/GeneralConfig.php:265
|
378 |
+
msgid "Default filter"
|
379 |
+
msgstr ""
|
380 |
+
|
381 |
+
#: application/admin/GeneralConfig.php:266
|
382 |
+
msgid "Whitelist attribute names"
|
383 |
+
msgstr ""
|
384 |
+
|
385 |
+
#: application/admin/GeneralConfig.php:267
|
386 |
+
msgid "Blacklist attribute names"
|
387 |
+
msgstr ""
|
388 |
+
|
389 |
+
#: application/admin/GeneralConfig.php:273
|
390 |
+
msgid "Attributes list"
|
391 |
+
msgstr ""
|
392 |
+
|
393 |
+
#: application/admin/GeneralConfig.php:274
|
394 |
+
msgid "Black / white list of woocommerce global (filterable) attributes. Enter a comma separated list."
|
395 |
+
msgstr ""
|
396 |
+
|
397 |
#: application/admin/ImportExportController.php:26
|
398 |
msgid "Import/Export"
|
399 |
msgstr ""
|
452 |
msgid " back"
|
453 |
msgstr ""
|
454 |
|
455 |
+
#: application/admin/PluginAdmin.php:79
|
456 |
msgid "Are you sure?"
|
457 |
msgstr ""
|
458 |
|
459 |
+
#: application/admin/PrefillController.php:35
|
460 |
+
#: application/admin/views/prefill.php:89
|
461 |
+
msgid "Future"
|
462 |
+
msgstr ""
|
463 |
+
|
464 |
+
#: application/admin/PrefillController.php:62
|
465 |
+
#: application/admin/views/prefill.php:12
|
466 |
msgid "Fill"
|
467 |
msgstr ""
|
468 |
|
469 |
+
#: application/admin/PrefillController.php:117
|
470 |
msgid "Data already exist."
|
471 |
msgstr ""
|
472 |
|
473 |
+
#: application/admin/PrefillController.php:130
|
474 |
msgid "Impossible to determine a keyword"
|
475 |
msgstr ""
|
476 |
|
477 |
+
#: application/admin/PrefillController.php:139
|
478 |
msgid "Keyword for autoupdate already exists."
|
479 |
msgstr ""
|
480 |
|
481 |
+
#: application/admin/PrefillController.php:152
|
482 |
+
#: application/admin/views/metabox_module.php:89
|
|
|
|
|
|
|
|
|
483 |
msgid "Error:"
|
484 |
msgstr ""
|
485 |
|
486 |
+
#: application/admin/PrefillController.php:159
|
487 |
+
#: application/admin/views/metabox_module.php:54
|
488 |
msgid "No data found..."
|
489 |
msgstr ""
|
490 |
|
491 |
+
#: application/admin/PrefillController.php:165
|
492 |
msgid "Data saved:"
|
493 |
msgstr ""
|
494 |
|
702 |
msgstr ""
|
703 |
|
704 |
#: application/admin/views/_metabox_autoblog.php:216
|
705 |
+
#: application/admin/views/_metabox_autoblog.php:434
|
706 |
+
#: application/admin/views/_metabox_autoblog.php:456
|
707 |
msgid "\"Formulas\", and also all tags from title template, will also work here."
|
708 |
msgstr ""
|
709 |
|
728 |
msgstr ""
|
729 |
|
730 |
#: application/admin/views/_metabox_autoblog.php:260
|
731 |
+
#: application/admin/views/prefill.php:86
|
732 |
msgid "Post status"
|
733 |
msgstr ""
|
734 |
|
735 |
#: application/admin/views/_metabox_autoblog.php:272
|
736 |
+
#: application/admin/views/prefill.php:74
|
737 |
msgid "Post type"
|
738 |
msgstr ""
|
739 |
|
756 |
#: application/modules/Pepperjam/PepperjamConfig.php:96
|
757 |
#: application/modules/Pixabay/PixabayConfig.php:108
|
758 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:57
|
759 |
+
#: application/modules/Viglink/ViglinkConfig.php:76
|
760 |
msgid "Category "
|
761 |
msgstr ""
|
762 |
|
763 |
+
#: application/admin/views/_metabox_autoblog.php:316
|
764 |
msgid "Create Automatically"
|
765 |
msgstr ""
|
766 |
|
767 |
+
#: application/admin/views/_metabox_autoblog.php:328
|
768 |
msgid "Default category for posts."
|
769 |
msgstr ""
|
770 |
|
771 |
+
#: application/admin/views/_metabox_autoblog.php:330
|
772 |
msgid "\"Create Automatically\" means, that categories will be created based on data of CSV file with keywords and categories."
|
773 |
msgstr ""
|
774 |
|
775 |
+
#: application/admin/views/_metabox_autoblog.php:338
|
776 |
msgid "Dynamic categories"
|
777 |
msgstr ""
|
778 |
|
779 |
+
#: application/admin/views/_metabox_autoblog.php:342
|
780 |
msgid "Do not create"
|
781 |
msgstr ""
|
782 |
|
783 |
+
#: application/admin/views/_metabox_autoblog.php:343
|
784 |
msgid "Create category"
|
785 |
msgstr ""
|
786 |
|
787 |
+
#: application/admin/views/_metabox_autoblog.php:344
|
788 |
msgid "Create nested categories"
|
789 |
msgstr ""
|
790 |
|
791 |
+
#: application/admin/views/_metabox_autoblog.php:346
|
792 |
msgid "Create a category automatically, if the main product has a category data."
|
793 |
msgstr ""
|
794 |
|
795 |
+
#: application/admin/views/_metabox_autoblog.php:352
|
796 |
msgid "Minimum modules required"
|
797 |
msgstr ""
|
798 |
|
799 |
+
#: application/admin/views/_metabox_autoblog.php:357
|
800 |
msgid "Post will not be published if no content for such number of modules."
|
801 |
msgstr ""
|
802 |
|
803 |
+
#: application/admin/views/_metabox_autoblog.php:363
|
804 |
msgid "Minimum reviews required"
|
805 |
msgstr ""
|
806 |
|
807 |
+
#: application/admin/views/_metabox_autoblog.php:368
|
808 |
msgid "Post will not be published if there are no user reviews. This option works only for AE modules."
|
809 |
msgstr ""
|
810 |
|
811 |
+
#: application/admin/views/_metabox_autoblog.php:374
|
812 |
#: application/modules/AdmitadProducts/AdmitadProductsConfig.php:150
|
813 |
msgid "Automatic update"
|
814 |
msgstr ""
|
815 |
|
816 |
+
#: application/admin/views/_metabox_autoblog.php:385
|
817 |
msgid "For selected modules, the current keyword will be used as a keyword for autoupdate. Data of the module will be updated periodically In accordance with the configuration of the lifetime of the cache."
|
818 |
msgstr ""
|
819 |
|
820 |
+
#: application/admin/views/_metabox_autoblog.php:391
|
821 |
msgid "Required modules"
|
822 |
msgstr ""
|
823 |
|
824 |
+
#: application/admin/views/_metabox_autoblog.php:402
|
825 |
msgid "Post will not be publicized if no results for these modules."
|
826 |
msgstr ""
|
827 |
|
828 |
+
#: application/admin/views/_metabox_autoblog.php:409
|
829 |
msgid "Main product"
|
830 |
msgstr ""
|
831 |
|
832 |
+
#: application/admin/views/_metabox_autoblog.php:418
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
833 |
msgid "How to choose \"main\" product?"
|
834 |
msgstr ""
|
835 |
|
836 |
+
#: application/admin/views/_metabox_autoblog.php:419
|
837 |
msgid "Then you can use tags:"
|
838 |
msgstr ""
|
839 |
|
840 |
+
#: application/admin/views/_metabox_autoblog.php:426
|
841 |
msgid "Tags"
|
842 |
msgstr ""
|
843 |
|
844 |
+
#: application/admin/views/_metabox_autoblog.php:433
|
845 |
msgid "Comma separated list of tags."
|
846 |
msgstr ""
|
847 |
|
848 |
+
#: application/admin/views/_metabox_autoblog.php:442
|
849 |
+
#: application/admin/views/prefill.php:105
|
850 |
msgid "Add custom fields"
|
851 |
msgstr ""
|
852 |
|
853 |
+
#: application/admin/views/_metabox_autoblog.php:447
|
854 |
msgid "Custom Field"
|
855 |
msgstr ""
|
856 |
|
857 |
+
#: application/admin/views/_metabox_autoblog.php:452
|
858 |
msgid "Value"
|
859 |
msgstr ""
|
860 |
|
861 |
+
#: application/admin/views/_metabox_results.php:18
|
862 |
#: application/components/ParserModuleConfig.php:57
|
863 |
#: application/modules/Offer/views/metabox_module.php:53
|
864 |
#: application/modules/Youtube/YoutubeConfig.php:64
|
865 |
+
#: application/modules/Youtube/views/search_panel.php:13
|
866 |
msgid "Title"
|
867 |
msgstr ""
|
868 |
|
869 |
+
#: application/admin/views/_metabox_results.php:19
|
870 |
#: application/modules/Offer/views/metabox_module.php:95
|
871 |
msgid "Description"
|
872 |
msgstr ""
|
873 |
|
874 |
+
#: application/admin/views/_metabox_results.php:21
|
875 |
+
msgid "Woo synchronization"
|
876 |
+
msgstr ""
|
877 |
+
|
878 |
+
#: application/admin/views/_metabox_results.php:23
|
879 |
+
msgid "Woo attributes"
|
880 |
+
msgstr ""
|
881 |
+
|
882 |
+
#: application/admin/views/_metabox_results.php:27
|
883 |
#: application/admin/views/_promo_box.php:42
|
884 |
#: application/modules/Offer/views/metabox_module.php:98
|
885 |
msgid "Go to "
|
886 |
msgstr ""
|
887 |
|
888 |
+
#: application/admin/views/_metabox_results.php:31
|
889 |
+
msgid "Last update:"
|
|
|
890 |
msgstr ""
|
891 |
|
892 |
+
#: application/admin/views/_metabox_search_results.php:13
|
893 |
+
msgid "Attributes:"
|
894 |
msgstr ""
|
895 |
|
896 |
+
#: application/admin/views/_metabox_search_results.php:14
|
897 |
+
msgid "EAN:"
|
898 |
+
msgstr ""
|
899 |
+
|
900 |
+
#: application/admin/views/_metabox_search_results.php:17
|
901 |
#: application/modules/CjLinks/views/search_results.php:16
|
902 |
msgid "Coupon code:"
|
903 |
msgstr ""
|
1049 |
msgid "Find all"
|
1050 |
msgstr ""
|
1051 |
|
1052 |
+
#: application/admin/views/metabox_general.php:37
|
1053 |
+
#: application/admin/views/metabox_module.php:80
|
1054 |
msgid "Add all"
|
1055 |
msgstr ""
|
1056 |
|
1057 |
+
#: application/admin/views/metabox_general.php:38
|
1058 |
msgid "Are you sure you want to delete the results of all modules?"
|
1059 |
msgstr ""
|
1060 |
|
1061 |
+
#: application/admin/views/metabox_general.php:38
|
1062 |
+
#: application/admin/views/metabox_module.php:49
|
1063 |
#: application/modules/Offer/views/metabox_module.php:36
|
1064 |
msgid "Delete all"
|
1065 |
msgstr ""
|
1066 |
|
1067 |
+
#: application/admin/views/metabox_module.php:27
|
1068 |
#: application/modules/Offer/views/metabox_module.php:26
|
1069 |
msgid "Output Template for shortcode"
|
1070 |
msgstr ""
|
1071 |
|
1072 |
+
#: application/admin/views/metabox_module.php:37
|
1073 |
+
msgid "Keyword for update"
|
1074 |
msgstr ""
|
1075 |
|
1076 |
+
#: application/admin/views/metabox_module.php:37
|
1077 |
+
msgid "Keyword for automatic update"
|
1078 |
+
msgstr ""
|
1079 |
+
|
1080 |
+
#: application/admin/views/metabox_module.php:49
|
1081 |
#: application/modules/Offer/views/metabox_module.php:36
|
1082 |
msgid "Are you sure you want to delete all results?"
|
1083 |
msgstr ""
|
1084 |
|
1085 |
+
#: application/admin/views/metabox_module.php:58
|
1086 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:160
|
1087 |
msgid "Search"
|
1088 |
msgstr ""
|
1089 |
|
1090 |
+
#: application/admin/views/metabox_module.php:64
|
1091 |
msgid "Keyword for search"
|
1092 |
msgstr ""
|
1093 |
|
1094 |
+
#: application/admin/views/metabox_module.php:66
|
1095 |
msgid "Find"
|
1096 |
msgstr ""
|
1097 |
|
1098 |
+
#: application/admin/views/metabox_module.php:88
|
1099 |
msgid "Not found..."
|
1100 |
msgstr ""
|
1101 |
|
1102 |
+
#: application/admin/views/prefill.php:15
|
1103 |
msgid "This extension will fill module's data for all existed posts."
|
1104 |
msgstr ""
|
1105 |
|
1106 |
+
#: application/admin/views/prefill.php:16
|
1107 |
msgid "All existing data and keywords will not be erased or overwritten."
|
1108 |
msgstr ""
|
1109 |
|
1110 |
+
#: application/admin/views/prefill.php:20
|
1111 |
msgid "Add data for module"
|
1112 |
msgstr ""
|
1113 |
|
1114 |
+
#: application/admin/views/prefill.php:30
|
1115 |
msgid "Keyword source"
|
1116 |
msgstr ""
|
1117 |
|
1118 |
+
#: application/admin/views/prefill.php:33
|
1119 |
msgid "Calculate as base of the density of keywords inside post"
|
1120 |
msgstr ""
|
1121 |
|
1122 |
+
#: application/admin/views/prefill.php:34
|
1123 |
msgid "Title for post"
|
1124 |
msgstr ""
|
1125 |
|
1126 |
+
#: application/admin/views/prefill.php:35
|
1127 |
msgid "Post tags"
|
1128 |
msgstr ""
|
1129 |
|
1130 |
#: application/admin/views/prefill.php:36
|
1131 |
+
msgid "Arbitrary custom field"
|
1132 |
+
msgstr ""
|
1133 |
+
|
1134 |
+
#: application/admin/views/prefill.php:38
|
1135 |
msgid "Copy from"
|
1136 |
msgstr ""
|
1137 |
|
1138 |
+
#: application/admin/views/prefill.php:41
|
1139 |
+
msgid "Set the name of a custom field"
|
1140 |
+
msgstr ""
|
1141 |
+
|
1142 |
+
#: application/admin/views/prefill.php:46
|
1143 |
msgid "Autoupdate"
|
1144 |
msgstr ""
|
1145 |
|
1146 |
+
#: application/admin/views/prefill.php:48
|
1147 |
msgid "Add Keyword for the automatic update"
|
1148 |
msgstr ""
|
1149 |
|
1150 |
+
#: application/admin/views/prefill.php:49
|
1151 |
msgid "Only for those modules, which have autoupdate function."
|
1152 |
msgstr ""
|
1153 |
|
1154 |
+
#: application/admin/views/prefill.php:54
|
1155 |
msgid "Number of words"
|
1156 |
msgstr ""
|
1157 |
|
1158 |
+
#: application/admin/views/prefill.php:61
|
1159 |
msgid "Maximum words for one search query."
|
1160 |
msgstr ""
|
1161 |
|
1162 |
+
#: application/admin/views/prefill.php:66
|
1163 |
msgid "\"Minus\" words"
|
1164 |
msgstr ""
|
1165 |
|
1166 |
+
#: application/admin/views/prefill.php:69
|
1167 |
msgid "Remove these words from keyword. You can set several minus words/phrases with commas."
|
1168 |
msgstr ""
|
1169 |
|
1170 |
+
#: application/admin/views/prefill.php:81
|
1171 |
+
#: application/admin/views/prefill.php:100
|
1172 |
+
msgid "You can set all supported post types in General settings -> Post Types."
|
1173 |
+
msgstr ""
|
1174 |
+
|
1175 |
+
#: application/admin/views/prefill.php:108
|
1176 |
+
msgid "Custom Field %d"
|
1177 |
+
msgstr ""
|
1178 |
+
|
1179 |
+
#: application/admin/views/prefill.php:109
|
1180 |
+
msgid "Value %d"
|
1181 |
+
msgstr ""
|
1182 |
+
|
1183 |
+
#: application/admin/views/prefill.php:112
|
1184 |
+
msgid "You can use tags: %s."
|
1185 |
+
msgstr ""
|
1186 |
+
|
1187 |
+
#: application/admin/views/prefill.php:119
|
1188 |
+
#: application/models/AutoblogModel.php:76
|
1189 |
+
msgid "Total posts"
|
1190 |
+
msgstr ""
|
1191 |
+
|
1192 |
+
#: application/admin/views/prefill.php:123
|
1193 |
msgid "Start"
|
1194 |
msgstr ""
|
1195 |
|
1196 |
+
#: application/admin/views/prefill.php:124
|
1197 |
msgid "Run again"
|
1198 |
msgstr ""
|
1199 |
|
1200 |
+
#: application/admin/views/prefill.php:125
|
1201 |
msgid "Stop"
|
1202 |
msgstr ""
|
1203 |
|
1210 |
msgid "General settings"
|
1211 |
msgstr ""
|
1212 |
|
1213 |
+
#: application/admin/views/settings.php:72
|
1214 |
msgid "Conditions"
|
1215 |
msgstr ""
|
1216 |
|
1351 |
msgid "Status"
|
1352 |
msgstr ""
|
1353 |
|
|
|
|
|
|
|
|
|
1354 |
#: application/models/AutoblogModel.php:77
|
1355 |
msgid "Last error"
|
1356 |
msgstr ""
|
1357 |
|
1358 |
+
#: application/models/AutoblogModel.php:203
|
1359 |
msgid "Required module %s will not run. The module is not configured or deleted."
|
1360 |
msgstr ""
|
1361 |
|
1362 |
+
#: application/models/AutoblogModel.php:269
|
1363 |
msgid "Data was not found for required module %s."
|
1364 |
msgstr ""
|
1365 |
|
1366 |
+
#: application/models/AutoblogModel.php:276
|
1367 |
msgid "It does not reach the desired amount of data. Minimum required modules: %d."
|
1368 |
msgstr ""
|
1369 |
|
1370 |
+
#: application/models/AutoblogModel.php:292
|
1371 |
msgid "Total reviews found: %d. Minimum reviews required: %d."
|
1372 |
msgstr ""
|
1373 |
|
1374 |
+
#: application/models/AutoblogModel.php:376
|
1375 |
msgid "Post can't be created. Unknown error."
|
1376 |
msgstr ""
|
1377 |
|
1426 |
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:92
|
1427 |
#: application/modules/Twitter/TwitterConfig.php:80
|
1428 |
#: application/modules/Udemy/UdemyConfig.php:64
|
1429 |
+
#: application/modules/Viglink/ViglinkConfig.php:50
|
1430 |
#: application/modules/VkNews/VkNewsConfig.php:20
|
1431 |
#: application/modules/Youtube/YoutubeConfig.php:35
|
1432 |
#: application/modules/Zanox/ZanoxConfig.php:45
|
1461 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:93
|
1462 |
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:93
|
1463 |
#: application/modules/Udemy/UdemyConfig.php:65
|
1464 |
+
#: application/modules/Viglink/ViglinkConfig.php:51
|
1465 |
#: application/modules/Zanox/ZanoxConfig.php:46
|
1466 |
msgid "Number of results for one search query."
|
1467 |
msgstr ""
|
1506 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:103
|
1507 |
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:103
|
1508 |
#: application/modules/Udemy/UdemyConfig.php:79
|
1509 |
+
#: application/modules/Viglink/ViglinkConfig.php:60
|
1510 |
#: application/modules/Zanox/ZanoxConfig.php:61
|
1511 |
msgid "Results for updates "
|
1512 |
msgstr ""
|
1539 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:104
|
1540 |
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:104
|
1541 |
#: application/modules/Udemy/UdemyConfig.php:80
|
1542 |
+
#: application/modules/Viglink/ViglinkConfig.php:61
|
1543 |
#: application/modules/Zanox/ZanoxConfig.php:62
|
1544 |
msgid "Number of results for automatic updates and autoblogging."
|
1545 |
msgstr ""
|
1557 |
#: application/modules/Affiliatewindow/AffiliatewindowConfig.php:128
|
1558 |
#: application/modules/AffilinetProducts/AffilinetProductsConfig.php:165
|
1559 |
#: application/modules/Aliexpress/AliexpressConfig.php:258
|
1560 |
+
#: application/modules/Amazon/AmazonConfig.php:267
|
1561 |
#: application/modules/BingImages/BingImagesConfig.php:202
|
1562 |
#: application/modules/CityadsProducts/CityadsProductsConfig.php:215
|
1563 |
#: application/modules/CjProducts/CjProductsConfig.php:216
|
1564 |
+
#: application/modules/Ebay/EbayConfig.php:355
|
1565 |
#: application/modules/Envato/EnvatoConfig.php:207
|
1566 |
#: application/modules/Flickr/FlickrConfig.php:104
|
1567 |
#: application/modules/Flipkart/FlipkartConfig.php:92
|
1585 |
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:168
|
1586 |
#: application/modules/Twitter/TwitterConfig.php:125
|
1587 |
#: application/modules/Udemy/UdemyConfig.php:212
|
1588 |
+
#: application/modules/Viglink/ViglinkConfig.php:123
|
1589 |
#: application/modules/VkNews/VkNewsConfig.php:42
|
1590 |
#: application/modules/Zanox/ZanoxConfig.php:152
|
1591 |
msgid "Save images"
|
1596 |
#: application/modules/Affiliatewindow/AffiliatewindowConfig.php:129
|
1597 |
#: application/modules/AffilinetProducts/AffilinetProductsConfig.php:166
|
1598 |
#: application/modules/Aliexpress/AliexpressConfig.php:259
|
1599 |
+
#: application/modules/Amazon/AmazonConfig.php:268
|
1600 |
#: application/modules/BingImages/BingImagesConfig.php:203
|
1601 |
#: application/modules/CityadsProducts/CityadsProductsConfig.php:216
|
1602 |
#: application/modules/CjProducts/CjProductsConfig.php:217
|
1603 |
+
#: application/modules/Ebay/EbayConfig.php:356
|
1604 |
#: application/modules/Envato/EnvatoConfig.php:208
|
1605 |
#: application/modules/Flickr/FlickrConfig.php:105
|
1606 |
#: application/modules/Flipkart/FlipkartConfig.php:93
|
1623 |
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:169
|
1624 |
#: application/modules/Twitter/TwitterConfig.php:126
|
1625 |
#: application/modules/Udemy/UdemyConfig.php:213
|
1626 |
+
#: application/modules/Viglink/ViglinkConfig.php:124
|
1627 |
#: application/modules/VkNews/VkNewsConfig.php:43
|
1628 |
#: application/modules/Zanox/ZanoxConfig.php:153
|
1629 |
msgid "Save images on server"
|
1654 |
msgstr ""
|
1655 |
|
1656 |
#: application/modules/AdmitadCoupons/AdmitadCouponsModule.php:25
|
1657 |
+
#: application/modules/AdmitadProducts/AdmitadProductsModule.php:25
|
1658 |
#: application/modules/TradedoublerCoupons/TradedoublerCouponsModule.php:25
|
1659 |
msgid "You must get approve for each program separately."
|
1660 |
msgstr ""
|
1696 |
msgstr ""
|
1697 |
|
1698 |
#: application/modules/AdmitadProducts/AdmitadProductsConfig.php:88
|
1699 |
+
#: application/modules/Amazon/views/search_panel.php:26
|
1700 |
msgid "Discount"
|
1701 |
msgstr ""
|
1702 |
|
1799 |
msgid "Update products"
|
1800 |
msgstr ""
|
1801 |
|
1802 |
+
#: application/modules/AdmitadProducts/AdmitadProductsModule.php:25
|
1803 |
msgid "Add products from <a href=\"https://www.admitad.com/ru/promo/?ref=770f943d83\">Admitad</a>."
|
1804 |
msgstr ""
|
1805 |
|
1806 |
+
#: application/modules/AdmitadProducts/AdmitadProductsModule.php:26
|
1807 |
msgid "Used API the <a href=\"https://www.admitadgoods.ru/en.html\" target=\"_blank\">Admitad Goods</a> WP plugin."
|
1808 |
msgstr ""
|
1809 |
|
1810 |
+
#: application/modules/AdmitadProducts/views/search_panel.php:2
|
1811 |
+
#: application/modules/AffilinetProducts/views/search_panel.php:2
|
1812 |
+
#: application/modules/Aliexpress/views/search_panel.php:2
|
1813 |
+
#: application/modules/Aliexpress/views/update_panel.php:2
|
1814 |
+
#: application/modules/Amazon/views/search_panel.php:45
|
1815 |
+
#: application/modules/Amazon/views/update_panel.php:2
|
1816 |
+
#: application/modules/CjProducts/views/search_panel.php:2
|
1817 |
+
#: application/modules/Ebay/views/search_panel.php:2
|
1818 |
+
#: application/modules/Ebay/views/update_panel.php:2
|
1819 |
+
#: application/modules/Impactradius/views/search_panel.php:2
|
1820 |
+
#: application/modules/Optimisemedia/views/search_panel.php:2
|
1821 |
+
#: application/modules/PayTM/views/search_panel.php:2
|
1822 |
+
#: application/modules/TradedoublerProducts/views/search_panel.php:2
|
1823 |
+
#: application/modules/Viglink/views/search_panel.php:2
|
1824 |
+
#: application/modules/Viglink/views/update_panel.php:2
|
1825 |
+
#: application/modules/Zanox/views/search_panel.php:2
|
1826 |
+
msgid "Min. price"
|
1827 |
+
msgstr ""
|
1828 |
+
|
1829 |
+
#: application/modules/AdmitadProducts/views/search_panel.php:5
|
1830 |
+
#: application/modules/AffilinetProducts/views/search_panel.php:5
|
1831 |
+
#: application/modules/Aliexpress/views/search_panel.php:5
|
1832 |
+
#: application/modules/Aliexpress/views/update_panel.php:5
|
1833 |
+
#: application/modules/Amazon/views/search_panel.php:48
|
1834 |
+
#: application/modules/Amazon/views/update_panel.php:5
|
1835 |
+
#: application/modules/CjProducts/views/search_panel.php:5
|
1836 |
+
#: application/modules/Ebay/views/search_panel.php:5
|
1837 |
+
#: application/modules/Ebay/views/update_panel.php:5
|
1838 |
+
#: application/modules/Impactradius/views/search_panel.php:5
|
1839 |
+
#: application/modules/Optimisemedia/views/search_panel.php:5
|
1840 |
+
#: application/modules/PayTM/views/search_panel.php:5
|
1841 |
+
#: application/modules/TradedoublerProducts/views/search_panel.php:5
|
1842 |
+
#: application/modules/Viglink/views/search_panel.php:5
|
1843 |
+
#: application/modules/Viglink/views/update_panel.php:5
|
1844 |
+
#: application/modules/Zanox/views/search_panel.php:5
|
1845 |
+
msgid "Max. price"
|
1846 |
+
msgstr ""
|
1847 |
+
|
1848 |
#: application/modules/Affiliatewindow/AffiliatewindowConfig.php:23
|
1849 |
msgid "Access key for ProductServe API (ShopWindow Client) V3. You can get it <a href=\"https://www.affiliatewindow.com/affiliates/accountdetails.php\">here</a>."
|
1850 |
msgstr ""
|
2020 |
msgstr ""
|
2021 |
|
2022 |
#: application/modules/Aliexpress/AliexpressConfig.php:235
|
2023 |
+
#: application/modules/Viglink/ViglinkConfig.php:87
|
2024 |
msgid "Price low to high"
|
2025 |
msgstr ""
|
2026 |
|
2027 |
#: application/modules/Aliexpress/AliexpressConfig.php:236
|
2028 |
+
#: application/modules/Viglink/ViglinkConfig.php:88
|
2029 |
msgid "Price high to low"
|
2030 |
msgstr ""
|
2031 |
|
2062 |
msgid "Adds items from aliexpress.com"
|
2063 |
msgstr ""
|
2064 |
|
2065 |
+
#: application/modules/Aliexpress/views/update_panel.php:2
|
2066 |
+
#: application/modules/Amazon/views/update_panel.php:2
|
2067 |
+
#: application/modules/Ebay/views/update_panel.php:2
|
2068 |
+
#: application/modules/Viglink/views/update_panel.php:2
|
2069 |
+
msgid "Min. price for automatic update"
|
2070 |
+
msgstr ""
|
2071 |
+
|
2072 |
+
#: application/modules/Aliexpress/views/update_panel.php:5
|
2073 |
+
#: application/modules/Amazon/views/update_panel.php:5
|
2074 |
+
#: application/modules/Ebay/views/update_panel.php:5
|
2075 |
+
#: application/modules/Viglink/views/update_panel.php:5
|
2076 |
+
msgid "Max. price for automatic update"
|
2077 |
+
msgstr ""
|
2078 |
+
|
2079 |
#: application/modules/Amazon/AmazonConfig.php:22
|
2080 |
msgid "Special key to access the Amazon API."
|
2081 |
msgstr ""
|
2219 |
msgid "Get user reviews. Reviews will be in iframe. Iframe url is valid only 24 hours, please, use autoupdating function with less than 24 hour to keep actual url."
|
2220 |
msgstr ""
|
2221 |
|
2222 |
+
#: application/modules/Amazon/AmazonConfig.php:218
|
2223 |
#: application/modules/Market/MarketConfig.php:138
|
2224 |
#: application/modules/Ozon/OzonConfig.php:155
|
2225 |
msgid "Cut reviews"
|
2226 |
msgstr ""
|
2227 |
|
2228 |
+
#: application/modules/Amazon/AmazonConfig.php:219
|
2229 |
msgid "Number of characters for one review. 0 - the maximal length of the text."
|
2230 |
msgstr ""
|
2231 |
|
2232 |
+
#: application/modules/Amazon/AmazonConfig.php:229
|
2233 |
msgid "Parse description"
|
2234 |
msgstr ""
|
2235 |
|
2236 |
+
#: application/modules/Amazon/AmazonConfig.php:230
|
2237 |
msgid "Parse description of products from seller"
|
2238 |
msgstr ""
|
2239 |
|
2240 |
+
#: application/modules/Amazon/AmazonConfig.php:236
|
2241 |
msgid "Type of description"
|
2242 |
msgstr ""
|
2243 |
|
2244 |
+
#: application/modules/Amazon/AmazonConfig.php:240
|
2245 |
msgid "Like on Amazon"
|
2246 |
msgstr ""
|
2247 |
|
2248 |
+
#: application/modules/Amazon/AmazonConfig.php:241
|
2249 |
msgid "Safe HTML"
|
2250 |
msgstr ""
|
2251 |
|
2252 |
+
#: application/modules/Amazon/AmazonConfig.php:242
|
2253 |
msgid "Only allowed HTML tags"
|
2254 |
msgstr ""
|
2255 |
|
2256 |
+
#: application/modules/Amazon/AmazonConfig.php:243
|
2257 |
msgid "Text only"
|
2258 |
msgstr ""
|
2259 |
|
2260 |
+
#: application/modules/Amazon/AmazonConfig.php:249
|
2261 |
+
#: application/modules/Ebay/EbayConfig.php:344
|
2262 |
msgid "Size of description"
|
2263 |
msgstr ""
|
2264 |
|
2265 |
+
#: application/modules/Amazon/AmazonConfig.php:250
|
2266 |
+
#: application/modules/Ebay/EbayConfig.php:345
|
2267 |
msgid "The maximum size of the item description. 0 - do not cut."
|
2268 |
msgstr ""
|
2269 |
|
2270 |
+
#: application/modules/Amazon/AmazonConfig.php:260
|
2271 |
msgid "Use images with https (use it if you also have https site)"
|
2272 |
msgstr ""
|
2273 |
|
2274 |
+
#: application/modules/Amazon/AmazonConfig.php:261
|
2275 |
msgid "Rewrite url of images with https. Use it if you have SSL on your domain"
|
2276 |
msgstr ""
|
2277 |
|
2278 |
+
#: application/modules/Amazon/AmazonConfig.php:268
|
2279 |
msgid "Enabling this option violates rules of API."
|
2280 |
msgstr ""
|
2281 |
|
2282 |
+
#: application/modules/Amazon/AmazonConfig.php:278
|
2283 |
msgid "Tracking ID for %s locale"
|
2284 |
msgstr ""
|
2285 |
|
2286 |
+
#: application/modules/Amazon/AmazonConfig.php:279
|
2287 |
msgid "Type here your tracking ID for this locale if you need multiple locale parsing"
|
2288 |
msgstr ""
|
2289 |
|
2290 |
+
#: application/modules/Amazon/AmazonModule.php:29
|
2291 |
+
msgid "Adds products from Amazon."
|
|
|
|
|
|
|
|
|
2292 |
msgstr ""
|
2293 |
|
2294 |
+
#: application/modules/Amazon/views/search_panel.php:27
|
2295 |
msgid "5%"
|
2296 |
msgstr ""
|
2297 |
|
2298 |
+
#: application/modules/Amazon/views/search_panel.php:28
|
2299 |
msgid "10%"
|
2300 |
msgstr ""
|
2301 |
|
2302 |
+
#: application/modules/Amazon/views/search_panel.php:29
|
2303 |
msgid "15%"
|
2304 |
msgstr ""
|
2305 |
|
2306 |
+
#: application/modules/Amazon/views/search_panel.php:30
|
2307 |
msgid "20%"
|
2308 |
msgstr ""
|
2309 |
|
2310 |
+
#: application/modules/Amazon/views/search_panel.php:31
|
2311 |
msgid "25%"
|
2312 |
msgstr ""
|
2313 |
|
2314 |
+
#: application/modules/Amazon/views/search_panel.php:32
|
2315 |
msgid "30%"
|
2316 |
msgstr ""
|
2317 |
|
2318 |
+
#: application/modules/Amazon/views/search_panel.php:33
|
2319 |
msgid "35%"
|
2320 |
msgstr ""
|
2321 |
|
2322 |
+
#: application/modules/Amazon/views/search_panel.php:34
|
2323 |
msgid "40%"
|
2324 |
msgstr ""
|
2325 |
|
2326 |
+
#: application/modules/Amazon/views/search_panel.php:35
|
2327 |
msgid "50%"
|
2328 |
msgstr ""
|
2329 |
|
2330 |
+
#: application/modules/Amazon/views/search_panel.php:36
|
2331 |
msgid "60%"
|
2332 |
msgstr ""
|
2333 |
|
2334 |
+
#: application/modules/Amazon/views/search_panel.php:37
|
2335 |
msgid "70%"
|
2336 |
msgstr ""
|
2337 |
|
2338 |
+
#: application/modules/Amazon/views/search_panel.php:38
|
2339 |
msgid "80%"
|
2340 |
msgstr ""
|
2341 |
|
2342 |
+
#: application/modules/Amazon/views/search_panel.php:39
|
2343 |
msgid "90%"
|
2344 |
msgstr ""
|
2345 |
|
2346 |
+
#: application/modules/Amazon/views/search_panel.php:45
|
2347 |
+
msgid "Min. price."
|
2348 |
+
msgstr ""
|
2349 |
+
|
2350 |
+
#: application/modules/Amazon/views/search_panel.php:45
|
2351 |
+
#: application/modules/Amazon/views/search_panel.php:48
|
2352 |
+
msgid "It require that you specify a category."
|
2353 |
+
msgstr ""
|
2354 |
+
|
2355 |
+
#: application/modules/Amazon/views/search_panel.php:48
|
2356 |
+
msgid "Max. price."
|
2357 |
+
msgstr ""
|
2358 |
+
|
2359 |
#: application/modules/BingImages/BingImagesConfig.php:21
|
2360 |
+
msgid "Key access to Bing Search API. You can get <a href=\"https://azure.microsoft.com/en-us/try/cognitive-services/?api=bing-image-search-api\">here</a>."
|
2361 |
msgstr ""
|
2362 |
|
2363 |
#: application/modules/BingImages/BingImagesConfig.php:22
|
2481 |
msgstr ""
|
2482 |
|
2483 |
#: application/modules/BingImages/BingImagesConfig.php:90
|
2484 |
+
#: application/modules/BingImages/views/search_panel.php:4
|
2485 |
msgid "Public"
|
2486 |
msgstr ""
|
2487 |
|
2488 |
#: application/modules/BingImages/BingImagesConfig.php:91
|
2489 |
+
#: application/modules/BingImages/views/search_panel.php:5
|
2490 |
msgid "Share"
|
2491 |
msgstr ""
|
2492 |
|
2495 |
msgstr ""
|
2496 |
|
2497 |
#: application/modules/BingImages/BingImagesConfig.php:93
|
2498 |
+
#: application/modules/BingImages/views/search_panel.php:7
|
2499 |
msgid "Modify"
|
2500 |
msgstr ""
|
2501 |
|
2502 |
#: application/modules/BingImages/BingImagesConfig.php:94
|
2503 |
#: application/modules/BingImages/BingImagesConfig.php:186
|
2504 |
+
#: application/modules/BingImages/views/search_panel.php:8
|
2505 |
msgid "Modify commercially"
|
2506 |
msgstr ""
|
2507 |
|
2702 |
msgstr ""
|
2703 |
|
2704 |
#: application/modules/BingImages/templates/data_simple.php:5
|
2705 |
+
#: application/modules/GoogleNews/templates/data_simple.php:5
|
2706 |
+
#: application/modules/RelatedKeywords/templates/data_simple.php:5
|
2707 |
+
#: application/modules/RssFetcher/templates/data_simple.php:5
|
2708 |
msgid "Simple"
|
2709 |
msgstr ""
|
2710 |
|
2713 |
msgid "Source: %s"
|
2714 |
msgstr ""
|
2715 |
|
2716 |
+
#: application/modules/BingImages/views/search_panel.php:3
|
2717 |
#: application/modules/Flickr/FlickrConfig.php:75
|
2718 |
+
#: application/modules/Flickr/views/search_panel.php:3
|
2719 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:24
|
2720 |
+
#: application/modules/GoogleImages/views/search_panel.php:3
|
2721 |
#: application/modules/Youtube/YoutubeConfig.php:76
|
2722 |
+
#: application/modules/Youtube/views/search_panel.php:3
|
2723 |
msgid "Any license"
|
2724 |
msgstr ""
|
2725 |
|
2726 |
+
#: application/modules/BingImages/views/search_panel.php:6
|
2727 |
msgid "Share commercially"
|
2728 |
msgstr ""
|
2729 |
|
3120 |
msgid "Payment options"
|
3121 |
msgstr ""
|
3122 |
|
3123 |
+
#: application/modules/Ebay/EbayConfig.php:309
|
3124 |
+
msgid "Available to"
|
3125 |
+
msgstr ""
|
3126 |
+
|
3127 |
+
#: application/modules/Ebay/EbayConfig.php:310
|
3128 |
+
msgid "Limits items to those available to the specified country only. Expects the two-letter ISO 3166 country code."
|
3129 |
+
msgstr ""
|
3130 |
+
|
3131 |
+
#: application/modules/Ebay/EbayConfig.php:337
|
3132 |
msgid "Get description"
|
3133 |
msgstr ""
|
3134 |
|
3135 |
+
#: application/modules/Ebay/EbayConfig.php:338
|
3136 |
msgid "Get description of product. This takes more requests for Ebay API and slow down searching. Description will be requested only for 20 first products for one searching"
|
3137 |
msgstr ""
|
3138 |
|
3156 |
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:60
|
3157 |
#: application/modules/Udemy/UdemyConfig.php:29
|
3158 |
#: application/modules/Udemy/UdemyConfig.php:44
|
3159 |
+
#: application/modules/Viglink/ViglinkConfig.php:31
|
3160 |
+
#: application/modules/Viglink/ViglinkConfig.php:45
|
3161 |
msgid "The field \"%s\" can not be empty."
|
3162 |
msgstr ""
|
3163 |
|
3199 |
|
3200 |
#: application/modules/Envato/EnvatoConfig.php:118
|
3201 |
#: application/modules/Youtube/YoutubeConfig.php:61
|
3202 |
+
#: application/modules/Youtube/views/search_panel.php:10
|
3203 |
msgid "Date"
|
3204 |
msgstr ""
|
3205 |
|
3261 |
msgstr ""
|
3262 |
|
3263 |
#: application/modules/Flickr/FlickrConfig.php:61
|
3264 |
+
#: application/modules/Flickr/views/search_panel.php:12
|
3265 |
#: application/modules/GoogleBooks/GoogleBooksConfig.php:99
|
3266 |
#: application/modules/Ozon/OzonConfig.php:66
|
3267 |
+
#: application/modules/Viglink/ViglinkConfig.php:86
|
3268 |
#: application/modules/Youtube/YoutubeConfig.php:63
|
3269 |
+
#: application/modules/Youtube/views/search_panel.php:12
|
3270 |
msgid "Relevance"
|
3271 |
msgstr ""
|
3272 |
|
3273 |
#: application/modules/Flickr/FlickrConfig.php:62
|
3274 |
+
#: application/modules/Flickr/views/search_panel.php:13
|
3275 |
msgid "Date of post"
|
3276 |
msgstr ""
|
3277 |
|
3278 |
#: application/modules/Flickr/FlickrConfig.php:63
|
3279 |
+
#: application/modules/Flickr/views/search_panel.php:14
|
3280 |
msgid "Date of shooting"
|
3281 |
msgstr ""
|
3282 |
|
3283 |
#: application/modules/Flickr/FlickrConfig.php:64
|
3284 |
+
#: application/modules/Flickr/views/search_panel.php:15
|
3285 |
msgid "First interesting"
|
3286 |
msgstr ""
|
3287 |
|
3296 |
msgstr ""
|
3297 |
|
3298 |
#: application/modules/Flickr/FlickrConfig.php:76
|
3299 |
+
#: application/modules/Flickr/views/search_panel.php:4
|
3300 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:25
|
3301 |
+
#: application/modules/GoogleImages/views/search_panel.php:4
|
3302 |
msgid "Any Creative Commons"
|
3303 |
msgstr ""
|
3304 |
|
3305 |
#: application/modules/Flickr/FlickrConfig.php:77
|
3306 |
+
#: application/modules/Flickr/views/search_panel.php:5
|
3307 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:26
|
3308 |
+
#: application/modules/GoogleImages/views/search_panel.php:5
|
3309 |
msgid "With Allow of commercial use"
|
3310 |
msgstr ""
|
3311 |
|
3312 |
#: application/modules/Flickr/FlickrConfig.php:78
|
3313 |
+
#: application/modules/Flickr/views/search_panel.php:6
|
3314 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:27
|
3315 |
+
#: application/modules/GoogleImages/views/search_panel.php:6
|
3316 |
msgid "Allowed change"
|
3317 |
msgstr ""
|
3318 |
|
3319 |
#: application/modules/Flickr/FlickrConfig.php:79
|
3320 |
+
#: application/modules/Flickr/views/search_panel.php:7
|
3321 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:28
|
3322 |
+
#: application/modules/GoogleImages/views/search_panel.php:7
|
3323 |
msgid "Commercial use and change"
|
3324 |
msgstr ""
|
3325 |
|
3464 |
msgid "Limit search by definite shop. You can find shop ID <a target=\"_blank\" href=\"http://api.gdeslon.ru/merchants\">here</a>. You can set multiple ID with comma."
|
3465 |
msgstr ""
|
3466 |
|
3467 |
+
#: application/modules/GdeSlon/GdeSlonModule.php:27
|
3468 |
msgid "Adds goods from gdeslon.ru."
|
3469 |
msgstr ""
|
3470 |
|
3473 |
msgstr ""
|
3474 |
|
3475 |
#: application/modules/GoogleBooks/GoogleBooksConfig.php:67
|
3476 |
+
#: application/modules/Viglink/ViglinkConfig.php:70
|
3477 |
msgid "Country"
|
3478 |
msgstr ""
|
3479 |
|
3528 |
|
3529 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:105
|
3530 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:120
|
3531 |
+
#: application/modules/GoogleImages/views/search_panel.php:12
|
3532 |
msgid "Any size"
|
3533 |
msgstr ""
|
3534 |
|
3535 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:106
|
3536 |
+
#: application/modules/GoogleImages/views/search_panel.php:13
|
3537 |
msgid "Small"
|
3538 |
msgstr ""
|
3539 |
|
3540 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:107
|
3541 |
+
#: application/modules/GoogleImages/views/search_panel.php:14
|
3542 |
msgid "Medium"
|
3543 |
msgstr ""
|
3544 |
|
3545 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:108
|
3546 |
+
#: application/modules/GoogleImages/views/search_panel.php:15
|
3547 |
msgid "Large"
|
3548 |
msgstr ""
|
3549 |
|
3550 |
#: application/modules/GoogleImages/GoogleImagesConfig.php:109
|
3551 |
+
#: application/modules/GoogleImages/views/search_panel.php:16
|
3552 |
msgid "Huge"
|
3553 |
msgstr ""
|
3554 |
|
3683 |
|
3684 |
#: application/modules/Market/MarketConfig.php:80
|
3685 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:118
|
3686 |
+
#: application/modules/TradetrackerCoupons/views/search_panel.php:4
|
3687 |
msgid "Offers"
|
3688 |
msgstr ""
|
3689 |
|
3762 |
#: application/modules/Offer/views/metabox_module.php:61
|
3763 |
#: application/modules/Ozon/OzonConfig.php:172
|
3764 |
#: application/modules/Youtube/YoutubeConfig.php:62
|
3765 |
+
#: application/modules/Youtube/views/search_panel.php:11
|
3766 |
msgid "Rating"
|
3767 |
msgstr ""
|
3768 |
|
4046 |
msgstr ""
|
4047 |
|
4048 |
#: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:21
|
4049 |
+
msgid "Key access to Bing Autosuggest API. You can get <a href=\"https://azure.microsoft.com/en-us/try/cognitive-services/?api=autosuggest-api\">here</a>."
|
4050 |
msgstr ""
|
4051 |
|
4052 |
#: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:30
|
4117 |
msgid "Access key for Tradedoubler Coupons API. You can get it <a href=\"https://login.tradedoubler.com/publisher/aManageTokens.action\">here</a>."
|
4118 |
msgstr ""
|
4119 |
|
4120 |
+
#: application/modules/TradedoublerCoupons/TradedoublerCouponsModule.php:25
|
4121 |
+
msgid "Adds coupons from Tradedoubler."
|
4122 |
+
msgstr ""
|
4123 |
+
|
4124 |
#: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:21
|
4125 |
msgid "Access key for Tradedoubler Products API. You can get it <a href=\"https://login.tradedoubler.com/publisher/aManageTokens.action\">here</a>."
|
4126 |
msgstr ""
|
4162 |
msgstr ""
|
4163 |
|
4164 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:117
|
4165 |
+
#: application/modules/TradetrackerCoupons/views/search_panel.php:3
|
4166 |
msgid "Vouchers"
|
4167 |
msgstr ""
|
4168 |
|
4169 |
#: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:119
|
4170 |
+
#: application/modules/TradetrackerCoupons/views/search_panel.php:5
|
4171 |
msgid "Text Links"
|
4172 |
msgstr ""
|
4173 |
|
4203 |
msgstr ""
|
4204 |
|
4205 |
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:150
|
4206 |
+
#: application/modules/Viglink/ViglinkConfig.php:93
|
4207 |
msgid "Price From"
|
4208 |
msgstr ""
|
4209 |
|
4210 |
#: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:159
|
4211 |
+
#: application/modules/Viglink/ViglinkConfig.php:102
|
4212 |
msgid "Price To"
|
4213 |
msgstr ""
|
4214 |
|
4354 |
msgid "Adds cources from %s."
|
4355 |
msgstr ""
|
4356 |
|
4357 |
+
#: application/modules/Viglink/ViglinkConfig.php:21
|
4358 |
+
msgid "To track clicks by campaign, use your campaign-specific API Key."
|
4359 |
+
msgstr ""
|
4360 |
+
|
4361 |
+
#: application/modules/Viglink/ViglinkConfig.php:22
|
4362 |
+
msgid "You can find your API key in your <a target=\"_blank\" href=\"%s\">VigLink</a> account."
|
4363 |
+
msgstr ""
|
4364 |
+
|
4365 |
+
#: application/modules/Viglink/ViglinkConfig.php:23
|
4366 |
+
msgid "When logged into your dashboard, go to Manage -> Account. Under the My Campaign sub-heading, copy a API Key."
|
4367 |
+
msgstr ""
|
4368 |
+
|
4369 |
+
#: application/modules/Viglink/ViglinkConfig.php:37
|
4370 |
+
msgid "When logged into your dashboard, go to Manage -> Account. Under the My Campaign sub-heading, copy a Secret Key. If you don’t have one, click “Get a Secret Key\" on any of your campaigns."
|
4371 |
+
msgstr ""
|
4372 |
+
|
4373 |
+
#: application/modules/Viglink/ViglinkConfig.php:71
|
4374 |
+
msgid "Filter results to only include offers from a specific country. Please use ISO Alpha-2 country codes like \"us\" for United States. You can specify multiple countries separated by commas."
|
4375 |
+
msgstr ""
|
4376 |
+
|
4377 |
+
#: application/modules/Viglink/ViglinkConfig.php:77
|
4378 |
+
msgid "Filter your query by a specific category."
|
4379 |
+
msgstr ""
|
4380 |
+
|
4381 |
+
#: application/modules/Viglink/ViglinkConfig.php:83
|
4382 |
+
msgid "Sort order"
|
4383 |
+
msgstr ""
|
4384 |
+
|
4385 |
+
#: application/modules/Viglink/ViglinkConfig.php:111
|
4386 |
+
msgid "Merchant"
|
4387 |
+
msgstr ""
|
4388 |
+
|
4389 |
+
#: application/modules/Viglink/ViglinkConfig.php:112
|
4390 |
+
msgid "Filter your query by a specific merchant. Currently this filter is case-sensitive. The best way to ensure that it will return accurate results is to filter with a value <a target=\"_blank\" href=\"%s\">already discovered</a>. You can specify multiple merchants separated by commas."
|
4391 |
+
msgstr ""
|
4392 |
+
|
4393 |
+
#: application/modules/Viglink/ViglinkConfig.php:117
|
4394 |
+
msgid "Images filter"
|
4395 |
+
msgstr ""
|
4396 |
+
|
4397 |
+
#: application/modules/Viglink/ViglinkConfig.php:118
|
4398 |
+
msgid "Products with images"
|
4399 |
+
msgstr ""
|
4400 |
+
|
4401 |
+
#: application/modules/Viglink/ViglinkConfig.php:118
|
4402 |
+
msgid "Some merchants do not supply an image in their feeds. As such, you have the option here to filter out items that do not have a merchant-supplied image, or correctly structured image URL."
|
4403 |
+
msgstr ""
|
4404 |
+
|
4405 |
+
#: application/modules/Viglink/ViglinkConfig.php:134
|
4406 |
+
msgid "[ All ]"
|
4407 |
+
msgstr ""
|
4408 |
+
|
4409 |
+
#: application/modules/Viglink/ViglinkModule.php:26
|
4410 |
+
msgid "Module adds products from <a target=\"_blank\" href=\"%s\">VigLink</a>."
|
4411 |
+
msgstr ""
|
4412 |
+
|
4413 |
+
#: application/modules/Viglink/ViglinkModule.php:27
|
4414 |
+
msgid "Search for specific products from a vast catalog of over 350 million products."
|
4415 |
+
msgstr ""
|
4416 |
+
|
4417 |
#: application/modules/VkNews/VkNewsModule.php:25
|
4418 |
msgid "Adds news from Russian-language social network vk.com"
|
4419 |
msgstr ""
|
4420 |
|
4421 |
#: application/modules/Youtube/YoutubeConfig.php:65
|
4422 |
+
#: application/modules/Youtube/views/search_panel.php:14
|
4423 |
msgid "Views"
|
4424 |
msgstr ""
|
4425 |
|
4432 |
msgstr ""
|
4433 |
|
4434 |
#: application/modules/Youtube/YoutubeConfig.php:78
|
4435 |
+
#: application/modules/Youtube/views/search_panel.php:5
|
4436 |
msgid "Standard license"
|
4437 |
msgstr ""
|
4438 |
|
4439 |
+
#: application/modules/Youtube/views/search_panel.php:4
|
4440 |
msgid "Creative Commons"
|
4441 |
msgstr ""
|
4442 |
|
languages/tpl/content-egg-tpl.pot
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the same license as the Content Egg package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Content Egg 3.
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg-tpl\n"
|
7 |
-
"POT-Creation-Date: 2017-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -128,11 +128,11 @@ msgstr ""
|
|
128 |
msgid "If you don't want to receive any price alerts from us in the future, <a href=\"%s\">please click here</a>."
|
129 |
msgstr ""
|
130 |
|
131 |
-
#: application/ProductSearch.php:
|
132 |
msgid "Sorry. No products found."
|
133 |
msgstr ""
|
134 |
|
135 |
-
#: application/ProductSearch.php:
|
136 |
msgid "Search Results for \"%s\""
|
137 |
msgstr ""
|
138 |
|
@@ -140,36 +140,36 @@ msgstr ""
|
|
140 |
msgid "Product Search..."
|
141 |
msgstr ""
|
142 |
|
143 |
-
#: application/admin/GeneralConfig.php:
|
144 |
-
#: application/helpers/TemplateHelper.php:
|
145 |
msgid "Buy This Item"
|
146 |
msgstr ""
|
147 |
|
148 |
-
#: application/admin/GeneralConfig.php:
|
149 |
-
#: application/helpers/TemplateHelper.php:
|
150 |
msgid "Shop Sale"
|
151 |
msgstr ""
|
152 |
|
153 |
-
#: application/admin/
|
154 |
-
#: application/admin/views/
|
155 |
-
msgid "
|
156 |
msgstr ""
|
157 |
|
158 |
-
#: application/admin/views/_metabox_results.php:
|
159 |
msgid "Last update:"
|
160 |
msgstr ""
|
161 |
|
162 |
-
#: application/components/ContentManager.php:
|
163 |
#: application/modules/Market/templates/data_item.php:127
|
164 |
msgid "Pros:"
|
165 |
msgstr ""
|
166 |
|
167 |
-
#: application/components/ContentManager.php:
|
168 |
#: application/modules/Market/templates/data_item.php:128
|
169 |
msgid "Cons:"
|
170 |
msgstr ""
|
171 |
|
172 |
-
#: application/components/ContentManager.php:
|
173 |
msgid "Rating"
|
174 |
msgstr ""
|
175 |
|
@@ -197,7 +197,7 @@ msgstr ""
|
|
197 |
msgid "m"
|
198 |
msgstr ""
|
199 |
|
200 |
-
#: application/helpers/TemplateHelper.php:
|
201 |
#: application/modules/Amazon/templates/data_compare.php:87
|
202 |
#: application/modules/Ozon/templates/data_compare.php:67
|
203 |
#: application/templates/data_price_tracker_alert.php:37
|
@@ -226,6 +226,7 @@ msgstr ""
|
|
226 |
#: application/modules/TradedoublerProducts/templates/data_grid.php:7
|
227 |
#: application/modules/TradetrackerProducts/templates/data_grid.php:7
|
228 |
#: application/modules/Udemy/templates/data_grid.php:7
|
|
|
229 |
#: application/modules/Zanox/templates/data_grid.php:7
|
230 |
msgid "Grid"
|
231 |
msgstr ""
|
@@ -254,6 +255,7 @@ msgstr ""
|
|
254 |
#: application/modules/TradedoublerProducts/templates/data_item.php:7
|
255 |
#: application/modules/TradetrackerProducts/templates/data_item.php:7
|
256 |
#: application/modules/Udemy/templates/data_item.php:7
|
|
|
257 |
#: application/modules/Zanox/templates/data_item.php:7
|
258 |
msgid "Product card"
|
259 |
msgstr ""
|
@@ -282,6 +284,7 @@ msgstr ""
|
|
282 |
#: application/modules/TradedoublerProducts/templates/data_list.php:6
|
283 |
#: application/modules/TradetrackerProducts/templates/data_list.php:6
|
284 |
#: application/modules/Udemy/templates/data_list.php:6
|
|
|
285 |
#: application/modules/Zanox/templates/data_list.php:6
|
286 |
msgid "List"
|
287 |
msgstr ""
|
@@ -305,6 +308,7 @@ msgstr ""
|
|
305 |
#: application/modules/Shareasale/templates/data_price_tracker_alert.php:7
|
306 |
#: application/modules/TradedoublerProducts/templates/data_price_tracker_alert.php:7
|
307 |
#: application/modules/TradetrackerProducts/templates/data_price_tracker_alert.php:7
|
|
|
308 |
#: application/modules/Zanox/templates/data_price_tracker_alert.php:7
|
309 |
#: application/templates/data_price_tracker_alert.php:5
|
310 |
msgid "Price tracker & alert"
|
@@ -383,11 +387,12 @@ msgstr ""
|
|
383 |
|
384 |
#: application/modules/Amazon/templates/data_compare.php:141
|
385 |
#: application/templates/blocks/item_features.php:3
|
386 |
-
#: application/templates/blocks/item_features.php:
|
387 |
#: application/templates/blocks/item_features.php:22
|
388 |
#: application/templates/blocks/item_features.php:31
|
389 |
#: application/templates/blocks/item_features.php:40
|
390 |
#: application/templates/blocks/item_features.php:49
|
|
|
391 |
msgid "Features"
|
392 |
msgstr ""
|
393 |
|
@@ -451,7 +456,7 @@ msgid "VIEW THIS ITEM"
|
|
451 |
msgstr ""
|
452 |
|
453 |
#: application/modules/Ebay/templates/data_item.php:58
|
454 |
-
#: application/templates/data_grid.php:
|
455 |
msgid "Bids:"
|
456 |
msgstr ""
|
457 |
|
@@ -510,6 +515,11 @@ msgstr ""
|
|
510 |
msgid "Data from Yandex.Market"
|
511 |
msgstr ""
|
512 |
|
|
|
|
|
|
|
|
|
|
|
513 |
#: application/modules/Market/templates/data_item.php:83
|
514 |
msgid "free"
|
515 |
msgstr ""
|
@@ -564,7 +574,7 @@ msgstr ""
|
|
564 |
msgid "Tile"
|
565 |
msgstr ""
|
566 |
|
567 |
-
#: application/templates/blocks/item_features.php:
|
568 |
msgid "Specifications"
|
569 |
msgstr ""
|
570 |
|
@@ -635,8 +645,9 @@ msgstr ""
|
|
635 |
msgid "OFF"
|
636 |
msgstr ""
|
637 |
|
638 |
-
#: application/templates/data_grid.php:
|
639 |
-
#: application/templates/data_list.php:85
|
|
|
640 |
msgid "Last updated on"
|
641 |
msgstr ""
|
642 |
|
2 |
# This file is distributed under the same license as the Content Egg package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Content Egg 3.9.0\n"
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg-tpl\n"
|
7 |
+
"POT-Creation-Date: 2017-07-28 14:34:55+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
128 |
msgid "If you don't want to receive any price alerts from us in the future, <a href=\"%s\">please click here</a>."
|
129 |
msgstr ""
|
130 |
|
131 |
+
#: application/ProductSearch.php:73
|
132 |
msgid "Sorry. No products found."
|
133 |
msgstr ""
|
134 |
|
135 |
+
#: application/ProductSearch.php:118
|
136 |
msgid "Search Results for \"%s\""
|
137 |
msgstr ""
|
138 |
|
140 |
msgid "Product Search..."
|
141 |
msgstr ""
|
142 |
|
143 |
+
#: application/admin/GeneralConfig.php:164
|
144 |
+
#: application/helpers/TemplateHelper.php:540
|
145 |
msgid "Buy This Item"
|
146 |
msgstr ""
|
147 |
|
148 |
+
#: application/admin/GeneralConfig.php:173
|
149 |
+
#: application/helpers/TemplateHelper.php:545
|
150 |
msgid "Shop Sale"
|
151 |
msgstr ""
|
152 |
|
153 |
+
#: application/admin/PrefillController.php:35
|
154 |
+
#: application/admin/views/prefill.php:89
|
155 |
+
msgid "Future"
|
156 |
msgstr ""
|
157 |
|
158 |
+
#: application/admin/views/_metabox_results.php:31
|
159 |
msgid "Last update:"
|
160 |
msgstr ""
|
161 |
|
162 |
+
#: application/components/ContentManager.php:407
|
163 |
#: application/modules/Market/templates/data_item.php:127
|
164 |
msgid "Pros:"
|
165 |
msgstr ""
|
166 |
|
167 |
+
#: application/components/ContentManager.php:409
|
168 |
#: application/modules/Market/templates/data_item.php:128
|
169 |
msgid "Cons:"
|
170 |
msgstr ""
|
171 |
|
172 |
+
#: application/components/ContentManager.php:488
|
173 |
msgid "Rating"
|
174 |
msgstr ""
|
175 |
|
197 |
msgid "m"
|
198 |
msgstr ""
|
199 |
|
200 |
+
#: application/helpers/TemplateHelper.php:336
|
201 |
#: application/modules/Amazon/templates/data_compare.php:87
|
202 |
#: application/modules/Ozon/templates/data_compare.php:67
|
203 |
#: application/templates/data_price_tracker_alert.php:37
|
226 |
#: application/modules/TradedoublerProducts/templates/data_grid.php:7
|
227 |
#: application/modules/TradetrackerProducts/templates/data_grid.php:7
|
228 |
#: application/modules/Udemy/templates/data_grid.php:7
|
229 |
+
#: application/modules/Viglink/templates/data_grid.php:7
|
230 |
#: application/modules/Zanox/templates/data_grid.php:7
|
231 |
msgid "Grid"
|
232 |
msgstr ""
|
255 |
#: application/modules/TradedoublerProducts/templates/data_item.php:7
|
256 |
#: application/modules/TradetrackerProducts/templates/data_item.php:7
|
257 |
#: application/modules/Udemy/templates/data_item.php:7
|
258 |
+
#: application/modules/Viglink/templates/data_item.php:7
|
259 |
#: application/modules/Zanox/templates/data_item.php:7
|
260 |
msgid "Product card"
|
261 |
msgstr ""
|
284 |
#: application/modules/TradedoublerProducts/templates/data_list.php:6
|
285 |
#: application/modules/TradetrackerProducts/templates/data_list.php:6
|
286 |
#: application/modules/Udemy/templates/data_list.php:6
|
287 |
+
#: application/modules/Viglink/templates/data_list.php:6
|
288 |
#: application/modules/Zanox/templates/data_list.php:6
|
289 |
msgid "List"
|
290 |
msgstr ""
|
308 |
#: application/modules/Shareasale/templates/data_price_tracker_alert.php:7
|
309 |
#: application/modules/TradedoublerProducts/templates/data_price_tracker_alert.php:7
|
310 |
#: application/modules/TradetrackerProducts/templates/data_price_tracker_alert.php:7
|
311 |
+
#: application/modules/Viglink/templates/data_price_tracker_alert.php:7
|
312 |
#: application/modules/Zanox/templates/data_price_tracker_alert.php:7
|
313 |
#: application/templates/data_price_tracker_alert.php:5
|
314 |
msgid "Price tracker & alert"
|
387 |
|
388 |
#: application/modules/Amazon/templates/data_compare.php:141
|
389 |
#: application/templates/blocks/item_features.php:3
|
390 |
+
#: application/templates/blocks/item_features.php:12
|
391 |
#: application/templates/blocks/item_features.php:22
|
392 |
#: application/templates/blocks/item_features.php:31
|
393 |
#: application/templates/blocks/item_features.php:40
|
394 |
#: application/templates/blocks/item_features.php:49
|
395 |
+
#: application/templates/blocks/item_features.php:58
|
396 |
msgid "Features"
|
397 |
msgstr ""
|
398 |
|
456 |
msgstr ""
|
457 |
|
458 |
#: application/modules/Ebay/templates/data_item.php:58
|
459 |
+
#: application/templates/data_grid.php:66
|
460 |
msgid "Bids:"
|
461 |
msgstr ""
|
462 |
|
515 |
msgid "Data from Yandex.Market"
|
516 |
msgstr ""
|
517 |
|
518 |
+
#: application/modules/Market/templates/data_item.php:83
|
519 |
+
#: application/modules/Market/templates/data_item.php:85
|
520 |
+
msgid "Shipping:"
|
521 |
+
msgstr ""
|
522 |
+
|
523 |
#: application/modules/Market/templates/data_item.php:83
|
524 |
msgid "free"
|
525 |
msgstr ""
|
574 |
msgid "Tile"
|
575 |
msgstr ""
|
576 |
|
577 |
+
#: application/templates/blocks/item_features.php:68
|
578 |
msgid "Specifications"
|
579 |
msgstr ""
|
580 |
|
645 |
msgid "OFF"
|
646 |
msgstr ""
|
647 |
|
648 |
+
#: application/templates/data_grid.php:84
|
649 |
+
#: application/templates/data_list.php:85 templates/block_offers_list.php:86
|
650 |
+
#: templates/block_offers_logo.php:69
|
651 |
msgid "Last updated on"
|
652 |
msgstr ""
|
653 |
|
readme.txt
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
=== Content Egg ===
|
2 |
Contributors: keywordrush,wpsoul
|
3 |
-
Tags: content, affiliate, autoblogging, amazon, affilinet, coupons, linkshare, shareasale, ozon, 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, pepperjamnetwork, udemy, envato, tradetracker
|
4 |
Requires at least: 4.2.2
|
5 |
-
Tested up to: 4.
|
6 |
-
Stable tag: 3.
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
@@ -18,6 +18,8 @@ Easily adding auto updating products from affiliate systems and additional conte
|
|
18 |
* Autoblogging - monetizing and content auto pilot.
|
19 |
* Multilanguage: make site on any language.
|
20 |
* Automatic updating prices and offers.
|
|
|
|
|
21 |
* Option to generate auto updating price comparison lists of actual offers by keyword.
|
22 |
* Options to set search filters for modules (price range, discount, categories, best offers, CC license, etc).
|
23 |
* Automatically adds your partner ID to links.
|
@@ -43,7 +45,7 @@ Easily adding auto updating products from affiliate systems and additional conte
|
|
43 |
>
|
44 |
>Modules of free version: Amazon, Pixabay, Google Images, Youtube, Commission Junction Links, Freebase, Affili.net Coupons, Related Keywords, RSS Fetcher, Admitad Products, Offer.
|
45 |
>
|
46 |
-
>Additional modules of PRO version: Ebay, Zanox, Aliexpress, CJ Products, ClickBank, Admitad Coupons,
|
47 |
>
|
48 |
>And we don't stop on these modules. All buyers of pro version can suggest us new module.
|
49 |
>
|
@@ -80,7 +82,7 @@ This section describes how to install the plugin and get it working.
|
|
80 |
1. Upload `content-egg` folder to the `/wp-content/plugins/` directory
|
81 |
1. Activate the plugin through the 'Plugins' menu in WordPress
|
82 |
1. Configure plugin settings
|
83 |
-
1. You can find manual how to configure each module - [Content Egg
|
84 |
|
85 |
== Frequently Asked Questions ==
|
86 |
|
@@ -108,6 +110,26 @@ If you can do any Wordpress page templates – you can do also templates for Con
|
|
108 |
|
109 |
== Changelog ==
|
110 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
= 3.7.0 =
|
112 |
* New: Price filter in search form.
|
113 |
* New: Price filter for autoupdate (Amazon, Ebay, Aliexpress).
|
1 |
=== Content Egg ===
|
2 |
Contributors: keywordrush,wpsoul
|
3 |
+
Tags: content, affiliate, autoblogging, amazon, affilinet, coupons, linkshare, shareasale, ozon, 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, pepperjamnetwork, udemy, envato, tradetracker, viglink
|
4 |
Requires at least: 4.2.2
|
5 |
+
Tested up to: 4.8
|
6 |
+
Stable tag: 3.9.0
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
18 |
* Autoblogging - monetizing and content auto pilot.
|
19 |
* Multilanguage: make site on any language.
|
20 |
* Automatic updating prices and offers.
|
21 |
+
* WooCommerce products synchronization.
|
22 |
+
* WooCommerce autoblogging.
|
23 |
* Option to generate auto updating price comparison lists of actual offers by keyword.
|
24 |
* Options to set search filters for modules (price range, discount, categories, best offers, CC license, etc).
|
25 |
* Automatically adds your partner ID to links.
|
45 |
>
|
46 |
>Modules of free version: Amazon, Pixabay, Google Images, Youtube, Commission Junction Links, Freebase, Affili.net Coupons, Related Keywords, RSS Fetcher, Admitad Products, Offer.
|
47 |
>
|
48 |
+
>Additional modules of PRO version: Ebay, Zanox, Aliexpress, CJ Products, ClickBank, Admitad Coupons, Flipkart, Optimisemedia, Tradedoubler, Tradetracker, Affili.net Products, Linkshare, Shareasale, Impactradius, Cityads, Ozon, Paytm, Pepperjam Network, Udemy, Viglink, Envato, Flickr, Bing Images, Google Books, Google News, Twitter, VK news, Yandex Market...
|
49 |
>
|
50 |
>And we don't stop on these modules. All buyers of pro version can suggest us new module.
|
51 |
>
|
82 |
1. Upload `content-egg` folder to the `/wp-content/plugins/` directory
|
83 |
1. Activate the plugin through the 'Plugins' menu in WordPress
|
84 |
1. Configure plugin settings
|
85 |
+
1. You can find manual how to configure each module - [Content Egg User Guide](http://www.keywordrush.com/en/docs/content-egg/)
|
86 |
|
87 |
== Frequently Asked Questions ==
|
88 |
|
110 |
|
111 |
== Changelog ==
|
112 |
|
113 |
+
= 3.9.0 =
|
114 |
+
* New: WooCommerce products synchronization.
|
115 |
+
* New: WooCommerce attributes synchronization (global and custom).
|
116 |
+
* New: WooCommerce autoblogging.
|
117 |
+
* New: Curency converter for WooCommerce synchronization.
|
118 |
+
* New: Latin slugs for WooCommerce attributes.
|
119 |
+
* New: WooCommerce reviews rating for AE modules.
|
120 |
+
* New: WooCommerce attributes filter (auto/blacklist/whitelist).
|
121 |
+
* New: Post type for Fill utility.
|
122 |
+
* New: Post status for Fill utility.
|
123 |
+
* New: Сustom fields for Fill utility.
|
124 |
+
* New: Replacement tags: %RANDOM%, %RANDOM(10,50)%
|
125 |
+
* New: Subscribers CSV export.
|
126 |
+
* Improvement: Amazon: Getting price for parent products.
|
127 |
+
* Improvement: Affilinet: https affilite links support.
|
128 |
+
* Improvement: 'product-search' filter for Frontend search.
|
129 |
+
* Improvement: User Guide - http://www.keywordrush.com/en/docs/content-egg/
|
130 |
+
* Fix: Keywords parser.
|
131 |
+
* Fix: Subscribers CSV export.
|
132 |
+
|
133 |
= 3.7.0 =
|
134 |
* New: Price filter in search form.
|
135 |
* New: Price filter for autoupdate (Amazon, Ebay, Aliexpress).
|
res/app/app.js
CHANGED
@@ -168,6 +168,16 @@ contentEgg.controller('ContentEggController', function ($scope, ModuleService) {
|
|
168 |
$scope.blockShortcode = '[content-egg-block template=' + $scope.selectedBlockTemplate + ']';
|
169 |
};
|
170 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
});
|
172 |
|
173 |
contentEgg.config(function ($sceDelegateProvider) {
|
168 |
$scope.blockShortcode = '[content-egg-block template=' + $scope.selectedBlockTemplate + ']';
|
169 |
};
|
170 |
|
171 |
+
$scope.wooRadioChange = function (unique_id, param_name) {
|
172 |
+
angular.forEach($scope.models, function (service, module_id) {
|
173 |
+
for (var i = 0, len = $scope.models[module_id].added.length; i < len; i++) {
|
174 |
+
if ($scope.models[module_id].added[i].unique_id != unique_id) {
|
175 |
+
$scope.models[module_id].added[i][param_name] = false;
|
176 |
+
}
|
177 |
+
}
|
178 |
+
});
|
179 |
+
};
|
180 |
+
|
181 |
});
|
182 |
|
183 |
contentEgg.config(function ($sceDelegateProvider) {
|
res/js/keywords.js
CHANGED
@@ -213,7 +213,7 @@ jQuery.namespace = function () {
|
|
213 |
vjoObj = jQuery.namespace("vjo.darwin.domain.finding.autofill.AutoFill");
|
214 |
vjoObj._do = function (data) {
|
215 |
sug_ebay_callback(data);
|
216 |
-
}
|
217 |
|
218 |
|
219 |
function sug_ebay(query) {
|
@@ -320,13 +320,15 @@ function trend_google() {
|
|
320 |
else
|
321 |
zone = 'com';
|
322 |
|
323 |
-
var
|
|
|
|
|
|
|
324 |
jQuery.getJSON(url, function () {
|
325 |
}).done(function (data) {
|
326 |
var keywords = {};
|
327 |
-
|
328 |
-
jQuery.each(
|
329 |
-
var keyword = row.content;
|
330 |
keywords[keyword] = keyword;
|
331 |
jQuery('#trend_keywords')
|
332 |
.append(jQuery("<option></option>")
|
@@ -339,15 +341,17 @@ function amazon_trends() {
|
|
339 |
|
340 |
var category_id = jQuery('#amazon_categ').val();
|
341 |
var amazon_section = jQuery('#amazon_section').val();
|
342 |
-
|
343 |
-
var
|
|
|
|
|
|
|
344 |
jQuery('#goods_keywords').empty();
|
345 |
jQuery.getJSON(url, function () {
|
346 |
}).done(function (data) {
|
347 |
var keywords = {};
|
348 |
-
|
349 |
-
jQuery.each(
|
350 |
-
var keyword = row.content;
|
351 |
keywords[keyword] = keyword;
|
352 |
jQuery('#goods_keywords')
|
353 |
.append(jQuery("<option></option>")
|
213 |
vjoObj = jQuery.namespace("vjo.darwin.domain.finding.autofill.AutoFill");
|
214 |
vjoObj._do = function (data) {
|
215 |
sug_ebay_callback(data);
|
216 |
+
};
|
217 |
|
218 |
|
219 |
function sug_ebay(query) {
|
320 |
else
|
321 |
zone = 'com';
|
322 |
|
323 |
+
var site = "https://www.google." + zone + "/trends/hottrends/atom/hourly";
|
324 |
+
var yql = "select * from htmlstring where url='" + site + "' AND xpath='.//a/text()'";
|
325 |
+
var url = "http://query.yahooapis.com/v1/public/yql?q=" + encodeURIComponent(yql) + "&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";
|
326 |
+
|
327 |
jQuery.getJSON(url, function () {
|
328 |
}).done(function (data) {
|
329 |
var keywords = {};
|
330 |
+
list = data.query.results.result.split("\n");
|
331 |
+
jQuery.each(list, function (i, keyword) {
|
|
|
332 |
keywords[keyword] = keyword;
|
333 |
jQuery('#trend_keywords')
|
334 |
.append(jQuery("<option></option>")
|
341 |
|
342 |
var category_id = jQuery('#amazon_categ').val();
|
343 |
var amazon_section = jQuery('#amazon_section').val();
|
344 |
+
|
345 |
+
var site = 'http://www.amazon.com/gp/rss/' + amazon_section + '/' + category_id + '/';
|
346 |
+
var yql = "select * from htmlstring where url='" + site + "' AND xpath='.//span/a/text()'";
|
347 |
+
var url = "http://query.yahooapis.com/v1/public/yql?q=" + encodeURIComponent(yql) + "&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";
|
348 |
+
|
349 |
jQuery('#goods_keywords').empty();
|
350 |
jQuery.getJSON(url, function () {
|
351 |
}).done(function (data) {
|
352 |
var keywords = {};
|
353 |
+
list = data.query.results.result.split("\n");
|
354 |
+
jQuery.each(list, function (i, keyword) {
|
|
|
355 |
keywords[keyword] = keyword;
|
356 |
jQuery('#goods_keywords')
|
357 |
.append(jQuery("<option></option>")
|
res/js/prefill.js
CHANGED
@@ -3,16 +3,22 @@ var cegg_start_prefill_begin = 0;
|
|
3 |
var cegg_xxx;
|
4 |
var cegg_in_action = false;
|
5 |
var cegg_post_ids = [];
|
|
|
6 |
|
7 |
-
jQuery(document).ready(function($) {
|
8 |
|
9 |
-
|
|
|
10 |
|
11 |
-
jQuery('#start_prefill_begin').click(function() {
|
12 |
if (cegg_in_action) {
|
13 |
return false;
|
14 |
}
|
15 |
-
|
|
|
|
|
|
|
|
|
16 |
cegg_p_stop = 0;
|
17 |
cegg_start_prefill_begin = 1;
|
18 |
jQuery('#start_prefill').prop('disabled', true);
|
@@ -30,10 +36,14 @@ jQuery(document).ready(function($) {
|
|
30 |
prefill();
|
31 |
});
|
32 |
|
33 |
-
jQuery('#start_prefill').click(function() {
|
34 |
if (cegg_in_action) {
|
35 |
return false;
|
36 |
}
|
|
|
|
|
|
|
|
|
37 |
cegg_p_stop = 0;
|
38 |
jQuery('#start_prefill').prop('disabled', true);
|
39 |
jQuery('#start_prefill_begin').prop('disabled', true);
|
@@ -47,85 +57,112 @@ jQuery(document).ready(function($) {
|
|
47 |
prefill();
|
48 |
});
|
49 |
|
50 |
-
jQuery('#stop_prefill').click(function() {
|
51 |
cegg_p_stop = 1;
|
52 |
cegg_xxx.abort();
|
53 |
jQuery('#start_prefill').prop('disabled', false);
|
54 |
jQuery('#start_prefill_begin').prop('disabled', false);
|
55 |
jQuery('#stop_prefill').prop('disabled', true);
|
56 |
jQuery('#ajaxBusy').hide();
|
57 |
-
|
58 |
-
});
|
59 |
-
|
60 |
-
jQuery(function() {
|
61 |
-
jQuery('#keyword_source').change(function(){
|
62 |
-
if(jQuery('#keyword_source').val() == '_custom_field') {
|
63 |
-
jQuery('#custom_field').show();
|
64 |
-
} else {
|
65 |
-
jQuery('#custom_field').hide();
|
66 |
-
}
|
67 |
-
});
|
68 |
-
});
|
69 |
|
70 |
-
|
71 |
-
// to ajax start/stop document events
|
72 |
-
/*
|
73 |
-
jQuery(document).ajaxStart(function() {
|
74 |
-
cegg_in_action = true;
|
75 |
-
jQuery('#ajaxBusy').show();
|
76 |
-
jQuery('#ajaxWaiting').hide();
|
77 |
|
78 |
-
|
79 |
-
|
80 |
-
|
|
|
|
|
|
|
|
|
|
|
81 |
});
|
82 |
-
*/
|
83 |
|
84 |
});
|
85 |
|
86 |
-
function
|
|
|
|
|
|
|
87 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
jQuery('#ajaxBusy').show();
|
89 |
-
|
90 |
-
if (cegg_post_ids.length == 0)
|
91 |
-
cegg_post_ids = content_egg_prefill.post_ids.slice();
|
92 |
-
|
93 |
var post_id = cegg_post_ids.shift();
|
94 |
|
95 |
if (cegg_post_ids.length == 0)
|
96 |
cegg_p_stop = 1;
|
97 |
|
98 |
-
var prefill_url = ajaxurl + '?action=content-egg-prefill
|
99 |
-
|
100 |
var module_id = jQuery("#module_id").val();
|
101 |
var keyword_source = jQuery("#keyword_source").val();
|
102 |
var keyword_count = jQuery("#keyword_count").val();
|
103 |
var minus_words = jQuery("#minus_words").val();
|
104 |
var autoupdate = jQuery("#autoupdate").is(':checked');
|
105 |
var custom_field = jQuery("#custom_field").val();
|
106 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
prefill_url += '&module_id=' + module_id;
|
108 |
prefill_url += '&keyword_source=' + keyword_source;
|
109 |
prefill_url += '&keyword_count=' + keyword_count;
|
110 |
prefill_url += '&autoupdate=' + autoupdate;
|
111 |
prefill_url += '&minus_words=' + encodeURIComponent(minus_words);
|
112 |
prefill_url += '&custom_field=' + encodeURIComponent(custom_field);
|
|
|
|
|
113 |
prefill_url += '&nonce=' + content_egg_prefill.nonce;
|
|
|
114 |
|
115 |
cegg_xxx = jQuery.ajax({
|
116 |
url: prefill_url,
|
117 |
dataType: 'json',
|
118 |
//dataType: (jQuery.browser.msie) ? "text" : "xml",
|
119 |
cache: false,
|
120 |
-
type: '
|
121 |
timeout: 600000, //10min
|
122 |
-
|
123 |
});
|
124 |
|
125 |
-
var progress = (
|
126 |
-
|
127 |
|
128 |
-
cegg_xxx.done(function(data, textStatus) {
|
129 |
jQuery('#logs').prepend(data['log'] + '<br />');
|
130 |
//updateProgress(parseInt(data['progress']));
|
131 |
jQuery("#total").text(data['total']);
|
@@ -146,7 +183,7 @@ function prefill() {
|
|
146 |
jQuery('#stop_prefill').prop('disabled', true);
|
147 |
jQuery('#ajaxWaiting').hide();
|
148 |
jQuery('#ajaxBusy').hide();
|
149 |
-
|
150 |
return false;
|
151 |
} else {
|
152 |
//recursion
|
@@ -157,10 +194,10 @@ function prefill() {
|
|
157 |
}
|
158 |
});
|
159 |
|
160 |
-
cegg_xxx.fail(function(jqXHR, textStatus, errorThrown) {
|
161 |
jQuery('#logs').prepend('<span class="label label-important">Error: ' + errorThrown + '</span><br>');
|
162 |
updateProgress(progress);
|
163 |
-
|
164 |
//stop prefill
|
165 |
if (cegg_p_stop == 1) {
|
166 |
jQuery('#start_prefill').prop('disabled', false);
|
@@ -168,7 +205,7 @@ function prefill() {
|
|
168 |
jQuery('#stop_prefill').prop('disabled', true);
|
169 |
jQuery('#ajaxWaiting').hide();
|
170 |
jQuery('#ajaxBusy').hide();
|
171 |
-
|
172 |
return false;
|
173 |
} else {
|
174 |
//recursion
|
@@ -187,8 +224,8 @@ function updateProgress(percentage) {
|
|
187 |
return;
|
188 |
if (percentage > 100)
|
189 |
percentage = 100;
|
190 |
-
|
191 |
-
jQuery(
|
192 |
-
|
193 |
-
});
|
194 |
}
|
3 |
var cegg_xxx;
|
4 |
var cegg_in_action = false;
|
5 |
var cegg_post_ids = [];
|
6 |
+
var cegg_post_ids_total = 0;
|
7 |
|
8 |
+
jQuery(document).ready(function ($) {
|
9 |
|
10 |
+
updateProgress(0);
|
11 |
+
getPostIds();
|
12 |
|
13 |
+
jQuery('#start_prefill_begin').click(function () {
|
14 |
if (cegg_in_action) {
|
15 |
return false;
|
16 |
}
|
17 |
+
|
18 |
+
getPostIds();
|
19 |
+
if (cegg_post_ids.length == 0)
|
20 |
+
return false;
|
21 |
+
|
22 |
cegg_p_stop = 0;
|
23 |
cegg_start_prefill_begin = 1;
|
24 |
jQuery('#start_prefill').prop('disabled', true);
|
36 |
prefill();
|
37 |
});
|
38 |
|
39 |
+
jQuery('#start_prefill').click(function () {
|
40 |
if (cegg_in_action) {
|
41 |
return false;
|
42 |
}
|
43 |
+
getPostIds();
|
44 |
+
if (cegg_post_ids.length == 0)
|
45 |
+
return false;
|
46 |
+
|
47 |
cegg_p_stop = 0;
|
48 |
jQuery('#start_prefill').prop('disabled', true);
|
49 |
jQuery('#start_prefill_begin').prop('disabled', true);
|
57 |
prefill();
|
58 |
});
|
59 |
|
60 |
+
jQuery('#stop_prefill').click(function () {
|
61 |
cegg_p_stop = 1;
|
62 |
cegg_xxx.abort();
|
63 |
jQuery('#start_prefill').prop('disabled', false);
|
64 |
jQuery('#start_prefill_begin').prop('disabled', false);
|
65 |
jQuery('#stop_prefill').prop('disabled', true);
|
66 |
jQuery('#ajaxBusy').hide();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
|
68 |
+
});
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
|
70 |
+
jQuery(function () {
|
71 |
+
jQuery('#keyword_source').change(function () {
|
72 |
+
if (jQuery('#keyword_source').val() == '_custom_field') {
|
73 |
+
jQuery('#custom_field').show();
|
74 |
+
} else {
|
75 |
+
jQuery('#custom_field').hide();
|
76 |
+
}
|
77 |
+
});
|
78 |
});
|
|
|
79 |
|
80 |
});
|
81 |
|
82 |
+
function getPostIds()
|
83 |
+
{
|
84 |
+
var post_type = jQuery("#post_type").val();
|
85 |
+
var post_status = jQuery("#post_status").val();
|
86 |
|
87 |
+
cegg_post_ids = [];
|
88 |
+
var j = 0;
|
89 |
+
for (var i = 0; i < content_egg_prefill.posts.length; i++) {
|
90 |
+
|
91 |
+
if (jQuery.inArray(content_egg_prefill.posts[i].post_type, post_type) == -1)
|
92 |
+
continue;
|
93 |
+
if (jQuery.inArray(content_egg_prefill.posts[i].post_status, post_status) == -1)
|
94 |
+
continue;
|
95 |
+
|
96 |
+
cegg_post_ids[j] = content_egg_prefill.posts[i].id;
|
97 |
+
j++;
|
98 |
+
}
|
99 |
+
cegg_post_ids_total = cegg_post_ids.length;
|
100 |
+
jQuery('#post_ids_total').text(cegg_post_ids_total);
|
101 |
+
}
|
102 |
+
|
103 |
+
function prefill() {
|
104 |
+
|
105 |
jQuery('#ajaxBusy').show();
|
106 |
+
|
|
|
|
|
|
|
107 |
var post_id = cegg_post_ids.shift();
|
108 |
|
109 |
if (cegg_post_ids.length == 0)
|
110 |
cegg_p_stop = 1;
|
111 |
|
112 |
+
var prefill_url = ajaxurl + '?action=content-egg-prefill';
|
113 |
+
|
114 |
var module_id = jQuery("#module_id").val();
|
115 |
var keyword_source = jQuery("#keyword_source").val();
|
116 |
var keyword_count = jQuery("#keyword_count").val();
|
117 |
var minus_words = jQuery("#minus_words").val();
|
118 |
var autoupdate = jQuery("#autoupdate").is(':checked');
|
119 |
var custom_field = jQuery("#custom_field").val();
|
120 |
+
// var custom_field_names = jQuery('input[name="custom_field_names[]"]').val();
|
121 |
+
//var custom_field_values = jQuery('input[name="custom_field_values[]"]').serialize();
|
122 |
+
|
123 |
+
var custom_field_names = jQuery("input[name='custom_field_names[]']")
|
124 |
+
.map(function(){return jQuery(this).val();}).get();
|
125 |
+
var custom_field_values = jQuery("input[name='custom_field_values[]']")
|
126 |
+
.map(function(){return jQuery(this).val();}).get();
|
127 |
+
|
128 |
+
|
129 |
+
var data = {
|
130 |
+
'post_id': post_id,
|
131 |
+
'module_id': module_id,
|
132 |
+
'keyword_source': keyword_source,
|
133 |
+
'keyword_count': keyword_count,
|
134 |
+
'autoupdate': autoupdate,
|
135 |
+
'minus_words': minus_words,
|
136 |
+
'custom_field': custom_field,
|
137 |
+
'custom_field_names': custom_field_names,
|
138 |
+
'custom_field_values': custom_field_values,
|
139 |
+
'nonce': content_egg_prefill.nonce
|
140 |
+
};
|
141 |
+
/*
|
142 |
prefill_url += '&module_id=' + module_id;
|
143 |
prefill_url += '&keyword_source=' + keyword_source;
|
144 |
prefill_url += '&keyword_count=' + keyword_count;
|
145 |
prefill_url += '&autoupdate=' + autoupdate;
|
146 |
prefill_url += '&minus_words=' + encodeURIComponent(minus_words);
|
147 |
prefill_url += '&custom_field=' + encodeURIComponent(custom_field);
|
148 |
+
prefill_url += '&custom_field_names=' + encodeURIComponent(custom_field_names);
|
149 |
+
prefill_url += '&custom_field_values=' + encodeURIComponent(custom_field_values);
|
150 |
prefill_url += '&nonce=' + content_egg_prefill.nonce;
|
151 |
+
*/
|
152 |
|
153 |
cegg_xxx = jQuery.ajax({
|
154 |
url: prefill_url,
|
155 |
dataType: 'json',
|
156 |
//dataType: (jQuery.browser.msie) ? "text" : "xml",
|
157 |
cache: false,
|
158 |
+
type: 'POST',
|
159 |
timeout: 600000, //10min
|
160 |
+
data: data,
|
161 |
});
|
162 |
|
163 |
+
var progress = (cegg_post_ids_total - cegg_post_ids.length) * 100 / cegg_post_ids_total;
|
|
|
164 |
|
165 |
+
cegg_xxx.done(function (data, textStatus) {
|
166 |
jQuery('#logs').prepend(data['log'] + '<br />');
|
167 |
//updateProgress(parseInt(data['progress']));
|
168 |
jQuery("#total").text(data['total']);
|
183 |
jQuery('#stop_prefill').prop('disabled', true);
|
184 |
jQuery('#ajaxWaiting').hide();
|
185 |
jQuery('#ajaxBusy').hide();
|
186 |
+
|
187 |
return false;
|
188 |
} else {
|
189 |
//recursion
|
194 |
}
|
195 |
});
|
196 |
|
197 |
+
cegg_xxx.fail(function (jqXHR, textStatus, errorThrown) {
|
198 |
jQuery('#logs').prepend('<span class="label label-important">Error: ' + errorThrown + '</span><br>');
|
199 |
updateProgress(progress);
|
200 |
+
|
201 |
//stop prefill
|
202 |
if (cegg_p_stop == 1) {
|
203 |
jQuery('#start_prefill').prop('disabled', false);
|
205 |
jQuery('#stop_prefill').prop('disabled', true);
|
206 |
jQuery('#ajaxWaiting').hide();
|
207 |
jQuery('#ajaxBusy').hide();
|
208 |
+
|
209 |
return false;
|
210 |
} else {
|
211 |
//recursion
|
224 |
return;
|
225 |
if (percentage > 100)
|
226 |
percentage = 100;
|
227 |
+
|
228 |
+
jQuery("#progressbar").progressbar({
|
229 |
+
value: percentage
|
230 |
+
});
|
231 |
}
|
res/logos/flipkart-com.png
CHANGED
Binary file
|
templates/block_offers_list.php
CHANGED
@@ -80,4 +80,12 @@ usort($all_items, function($a, $b) {
|
|
80 |
</div>
|
81 |
<?php endforeach; ?>
|
82 |
</div>
|
83 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
</div>
|
81 |
<?php endforeach; ?>
|
82 |
</div>
|
83 |
+
<?php if ($amazon_last_updated = TemplateHelper::getLastUpdateFormattedAmazon($data)): ?>
|
84 |
+
<div class="row">
|
85 |
+
<div class="text-muted text-right">
|
86 |
+
<small><?php _e('Last updated on', 'content-egg-tpl'); ?> <?php echo $amazon_last_updated; ?></small>
|
87 |
+
</div>
|
88 |
+
</div>
|
89 |
+
<?php endif; ?>
|
90 |
+
|
91 |
+
</div>
|
templates/block_offers_logo.php
CHANGED
@@ -63,4 +63,12 @@ use ContentEgg\application\helpers\TextHelper;
|
|
63 |
<?php endforeach; ?>
|
64 |
<?php endforeach; ?>
|
65 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
</div>
|
63 |
<?php endforeach; ?>
|
64 |
<?php endforeach; ?>
|
65 |
</div>
|
66 |
+
<?php if ($amazon_last_updated = TemplateHelper::getLastUpdateFormattedAmazon($data)): ?>
|
67 |
+
<div class="row">
|
68 |
+
<div class="text-muted text-right">
|
69 |
+
<small><?php _e('Last updated on', 'content-egg-tpl'); ?> <?php echo $amazon_last_updated; ?></small>
|
70 |
+
</div>
|
71 |
+
</div>
|
72 |
+
<?php endif; ?>
|
73 |
+
|
74 |
</div>
|