Content Egg - Version 4.5.0

Version Description

  • New: GdeSlon module.
  • New: Price alert subscription report: added delete URL and unsubscribe URL.
  • Fix: Dublicate images during update by keyword.
  • Fix: Currency converter to EUR.
Download this release

Release Info

Developer keywordrush
Plugin Icon 128x128 Content Egg
Version 4.5.0
Comparing to
See all releases

Code changes from version 4.4.3 to 4.5.0

Files changed (35) hide show
  1. application/Plugin.php +1 -1
  2. application/PriceAlert.php +26 -4
  3. application/WooIntegrator.php +2 -2
  4. application/admin/AeIntegrationConfig.php +1 -1
  5. application/admin/GeneralConfig.php +1 -1
  6. application/admin/PluginAdmin.php +5 -1
  7. application/admin/ToolsController.php +15 -0
  8. application/components/ContentManager.php +1 -0
  9. application/components/FeaturedImage.php +3 -1
  10. application/components/ParserModule.php +10 -3
  11. application/helpers/CurrencyHelper.php +15 -6
  12. application/helpers/TextHelper.php +5 -1
  13. application/libs/gdeslon/GdeSlonApi.php +110 -0
  14. application/models/AutoblogModel.php +3 -0
  15. application/modules/AE/AEModule.php +3 -1
  16. application/modules/Amazon/AmazonModule.php +0 -2
  17. application/modules/GdeSlon/ExtraDataGdeSlon.php +23 -0
  18. application/modules/GdeSlon/GdeSlonConfig.php +131 -0
  19. application/modules/GdeSlon/GdeSlonModule.php +259 -0
  20. application/modules/GdeSlon/index.php +3 -0
  21. application/modules/GdeSlon/templates/data_grid.php +9 -0
  22. application/modules/GdeSlon/templates/data_item.php +9 -0
  23. application/modules/GdeSlon/templates/data_list.php +8 -0
  24. application/modules/GdeSlon/templates/data_price_tracker_alert.php +9 -0
  25. application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php +12 -1
  26. content-egg.php +2 -2
  27. languages/content-egg.pot +199 -68
  28. languages/tpl/content-egg-tpl.pot +54 -38
  29. readme.txt +10 -4
  30. res/bootstrap/css/egg-bootstrap.css +6 -0
  31. res/css/admin.css +4 -0
  32. res/logos/bol-com.png +0 -0
  33. res/logos/ebay-co-uk.png +0 -0
  34. res/logos/ebay-de.png +0 -0
  35. res/logos/ebay-fr.png +0 -0
application/Plugin.php CHANGED
@@ -14,7 +14,7 @@ use ContentEgg\application\helpers\CurrencyHelper;
14
  */
15
  class Plugin {
16
 
17
- const version = '4.4.3';
18
  const db_version = 36;
19
  const wp_requires = '4.6.0';
20
  const slug = 'content-egg';
14
  */
15
  class Plugin {
16
 
17
+ const version = '4.5.0';
18
  const db_version = 36;
19
  const wp_requires = '4.6.0';
20
  const slug = 'content-egg';
application/PriceAlert.php CHANGED
@@ -33,6 +33,7 @@ class PriceAlert {
33
 
34
  private function __construct()
35
  {
 
36
  }
37
 
38
  public function init()
@@ -177,6 +178,9 @@ class PriceAlert {
177
  case 'unsubscribe':
178
  $this->actionUnsubscribeAll();
179
  return;
 
 
 
180
  default:
181
  return;
182
  }
@@ -218,6 +222,24 @@ class PriceAlert {
218
  $this->openTickbox(__('You are now unsubscribed from our Price Alerts via email.', 'content-egg-tpl'), __('Unsubscribed!', 'content-egg-tpl'));
219
  }
220
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
221
  public function openTickbox($message, $subject = "")
222
  {
223
  $this->tickbox_message = strip_tags($message);
@@ -242,10 +264,10 @@ class PriceAlert {
242
  if (GeneralConfig::getInstance()->option('from_email'))
243
  \add_filter('wp_mail_from', array(__CLASS__, 'setMailFrom'));
244
  if (GeneralConfig::getInstance()->option('from_name'))
245
- \add_filter('wp_mail_from_name', array(__CLASS__, 'setMailFromName'));
246
-
247
  \wp_mail($to, $subject, $message, $headers, $attachments);
248
-
249
  \remove_filter('wp_mail_content_type', 'setMailContentType');
250
  \remove_filter('wp_mail_from', 'setMailFrom');
251
  \remove_filter('wp_mail_from_name', 'setMailFromName');
@@ -255,7 +277,7 @@ class PriceAlert {
255
  {
256
  return 'text/html';
257
  }
258
-
259
  public static function setMailFrom()
260
  {
261
  return GeneralConfig::getInstance()->option('from_email');
33
 
34
  private function __construct()
35
  {
36
+
37
  }
38
 
39
  public function init()
178
  case 'unsubscribe':
179
  $this->actionUnsubscribeAll();
180
  return;
181
+ case 'delete':
182
+ $this->actionDeleteSubscription();
183
+ return;
184
  default:
185
  return;
186
  }
222
  $this->openTickbox(__('You are now unsubscribed from our Price Alerts via email.', 'content-egg-tpl'), __('Unsubscribed!', 'content-egg-tpl'));
223
  }
224
 
225
+ private function actionDeleteSubscription()
226
+ {
227
+ $email = strtolower(TextHelper::clearId(InputHelper::get('email', null)));
228
+ $key = TextHelper::clear(InputHelper::get('key', null));
229
+
230
+ $where = array(
231
+ 'email = %s AND activkey = %s',
232
+ array($email, $key)
233
+ );
234
+ $alert = PriceAlertModel::model()->find(array('where' => $where));
235
+ if (!$alert)
236
+ return;
237
+ // save
238
+ PriceAlertModel::model()->delete($alert['id']);
239
+ // tickbox
240
+ $this->openTickbox(__('Your subscription has been deleted from our database.', 'content-egg-tpl'), __('Success!', 'content-egg-tpl'));
241
+ }
242
+
243
  public function openTickbox($message, $subject = "")
244
  {
245
  $this->tickbox_message = strip_tags($message);
264
  if (GeneralConfig::getInstance()->option('from_email'))
265
  \add_filter('wp_mail_from', array(__CLASS__, 'setMailFrom'));
266
  if (GeneralConfig::getInstance()->option('from_name'))
267
+ \add_filter('wp_mail_from_name', array(__CLASS__, 'setMailFromName'));
268
+
269
  \wp_mail($to, $subject, $message, $headers, $attachments);
270
+
271
  \remove_filter('wp_mail_content_type', 'setMailContentType');
272
  \remove_filter('wp_mail_from', 'setMailFrom');
273
  \remove_filter('wp_mail_from_name', 'setMailFromName');
277
  {
278
  return 'text/html';
279
  }
280
+
281
  public static function setMailFrom()
282
  {
283
  return GeneralConfig::getInstance()->option('from_email');
application/WooIntegrator.php CHANGED
@@ -25,7 +25,7 @@ class WooIntegrator {
25
 
26
  public static function initAction()
27
  {
28
- if (!function_exists('\wc_get_product'))
29
  return;
30
 
31
  \add_action('woocommerce_before_single_product', array(__CLASS__, 'touchEmptyPost'), 10);
@@ -155,7 +155,7 @@ class WooIntegrator {
155
 
156
  if ($item['description'] && !$product->get_short_description())
157
  {
158
- if (!\apply_filters('cegg_dont_touch_short_description', false))
159
  $product->set_short_description($item['description']);
160
  }
161
 
25
 
26
  public static function initAction()
27
  {
28
+ if (!class_exists('\WooCommerce'))
29
  return;
30
 
31
  \add_action('woocommerce_before_single_product', array(__CLASS__, 'touchEmptyPost'), 10);
155
 
156
  if ($item['description'] && !$product->get_short_description())
157
  {
158
+ if (!\apply_filters('cegg_dont_touch_short_description', false))
159
  $product->set_short_description($item['description']);
160
  }
161
 
application/admin/AeIntegrationConfig.php CHANGED
@@ -36,7 +36,7 @@ class AeIntegrationConfig extends Config {
36
  if (!self::isAEIntegrationPosible())
37
  return array();
38
 
39
- $aff_egg_modules = \Keywordrush\AffiliateEgg\ShopManager::getInstance()->getSearchableItemsList(true, false, true);
40
  return array(
41
  'modules' => array(
42
  'title' => __('Activate modules', 'content-egg'),
36
  if (!self::isAEIntegrationPosible())
37
  return array();
38
 
39
+ $aff_egg_modules = \Keywordrush\AffiliateEgg\ShopManager::getInstance()->getSearchableItemsList(true, false, false);
40
  return array(
41
  'modules' => array(
42
  'title' => __('Activate modules', 'content-egg'),
application/admin/GeneralConfig.php CHANGED
@@ -134,7 +134,7 @@ class GeneralConfig extends Config {
134
  array(
135
  'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
136
  'arg' => 365,
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'),
134
  array(
135
  'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
136
  'arg' => 365,
137
+ 'message' => sprintf(__('The field "%s" can\'t be more than %d.', 'content-egg'), __('Price history', 'content-egg'), 365),
138
  ),
139
  ),
140
  'section' => __('Price alerts', 'content-egg'),
application/admin/PluginAdmin.php CHANGED
@@ -99,7 +99,11 @@ class PluginAdmin {
99
 
100
  public function add_admin_menu()
101
  {
102
- \add_menu_page('Content Egg', 'Content Egg', 'publish_posts', Plugin::slug, null, 'dashicons-screenoptions');
 
 
 
 
103
  }
104
 
105
  public static function render($view_name, $_data = null)
99
 
100
  public function add_admin_menu()
101
  {
102
+ $icon_svg = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAUCAYAAABvVQZ0AAAACXBIWXMAAC4jAAAuIwF4pT92AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA1dJREFUeNqNVElMU1EUfQShIIkYNUETBkUIRoNGRUwxYWMUQoxGwSnCBkIUcGRuS39/p99+OkBpy9gCZSodgIImQIACKtGtG+OGhIXRBFmQ4EKjpt77BVILDSzu4v/33rnnnnvuJTRNE/+QQFAQWoGIGCtrSZGeTeMPtDPZVlMpTVHEXFlDpBIJdy/w7RYgjHphHamSy2KSPLaXofPu73unHcthXtdq1Izz882WxnwNJJJSWwG3gOHFhxrVWfJ25Gfcq15vsVadIabpqGqF7MiVTnMVeTfqS+9v02trRYQOYPgfkEpUR14winiy4PFl9LbKdbVCwgJLOZSnFItJQ42APFErUyCR73KnqUIL59uCIW0E2zdpXzzltNrwoX8pGxJggkIde5EsjPgAOJGBNxJ/MPzALFkWY0norGtNXicmcjG1rcj4DxOlOiydcaM9MyiLBMrdBJNBGVKKCgn1utZutDTeD6QfCKaEZNVy2X4y5/5VWs8kM/DNgeEh6pJrbri1Z8a5isD4zYqChxqiuaKGnHBZB9P625o4dhtg9UIROTbSPX56sMOKmjxo0l7Na264nWcOHvkG7e0zDoslcmrwiwKYQWWEKEAbGoTmTTu+3THprmOJicPd49FTjqXoSXvQgEYtHZoY+Ai6vRbIpBFYKseqnFHEhMy6f0D9KagHWgGT7Cb04Dc5kMGp4Vr9SKM6iWAVjDwGL+C47BQySsI1LhfkeK5SxnHMtAIhecwyx8n80J+nauVR5XpndgoZJKUAFN757hl1OYZqASFoOpGUDoc2/75r1F3DsiW7AMOkIM9htEcZyyRpoFxuvtAKsaM9s/Ee27QeyqaDbAV/r+FWyWk3FKOdsJNocu4AfVOoZy+Q92O+gkZNJjp8Y3y2A1LAnGJFPK9zhd/bqtz0GXcBmOCP9L42DW4FAL6EgGqRmBMamWJgl1GGeribMtzl5HldK/A/bGP0NrPhUOMlfl8riwxTXVZbiUZ17t8CEBMVaETRkvACgyb74KT9A2/OvQIbJkEdOOibgOsMi3QsP2GsZzrC61o+MDHwCYz5JnasZwHMuhjpdX49b+8w18GO8wcKumkNUKIJ1vMzsEqmrUWUPNztSRnqcmVZTWXQ+ciW8hpOAipAz788QXuyosK+HQAAAABJRU5ErkJggg==';
103
+ $title = 'Content Egg';
104
+ if (Plugin::isPro())
105
+ $title .= ' Pro';
106
+ \add_menu_page($title, $title, 'publish_posts', Plugin::slug, null, $icon_svg);
107
  }
108
 
109
  public static function render($view_name, $_data = null)
application/admin/ToolsController.php CHANGED
@@ -67,6 +67,21 @@ class ToolsController {
67
  continue;
68
  $csv_line[$key] = $s;
69
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  $csv_arr[] = $csv_line;
71
  }
72
  $filename = 'subscribers-' . date('d-m-Y') . '.csv';
67
  continue;
68
  $csv_line[$key] = $s;
69
  }
70
+
71
+ $unsubscribe_all_url = \add_query_arg(array(
72
+ 'ceggaction' => 'unsubscribe',
73
+ 'email' => urlencode($subscriber['email']),
74
+ 'key' => urlencode($subscriber['activkey']),
75
+ ), \get_site_url());
76
+ $delete_url = \add_query_arg(array(
77
+ 'ceggaction' => 'delete',
78
+ 'email' => urlencode($subscriber['email']),
79
+ 'key' => urlencode($subscriber['activkey']),
80
+ ), \get_site_url());
81
+
82
+ $csv_line['unsubscribe_url'] = $unsubscribe_all_url;
83
+ $csv_line['delete_url'] = $delete_url;
84
+
85
  $csv_arr[] = $csv_line;
86
  }
87
  $filename = 'subscribers-' . date('d-m-Y') . '.csv';
application/components/ContentManager.php CHANGED
@@ -118,6 +118,7 @@ class ContentManager {
118
  if (empty($d['img_file']))
119
  continue;
120
  $img_file = ImageHelper::getFullImgPath($d['img_file']);
 
121
  if (is_file($img_file))
122
  @unlink($img_file);
123
  }
118
  if (empty($d['img_file']))
119
  continue;
120
  $img_file = ImageHelper::getFullImgPath($d['img_file']);
121
+
122
  if (is_file($img_file))
123
  @unlink($img_file);
124
  }
application/components/FeaturedImage.php CHANGED
@@ -73,7 +73,7 @@ class FeaturedImage {
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
 
@@ -116,6 +116,8 @@ class FeaturedImage {
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,
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
 
116
 
117
  public static function attachThumbnail($img_file, $post_id, $title = '')
118
  {
119
+ require_once(ABSPATH . 'wp-admin/includes/image.php');
120
+
121
  $filetype = \wp_check_filetype(basename($img_file), null);
122
  $attachment = array(
123
  'guid' => $img_file,
application/components/ParserModule.php CHANGED
@@ -57,6 +57,8 @@ abstract class ParserModule extends Module {
57
  if (($post && wp_is_post_revision($post_id)) || $post_id < 0)
58
  return $data;
59
 
 
 
60
  foreach ($data as $key => $item)
61
  {
62
  // fill domain
@@ -80,8 +82,13 @@ abstract class ParserModule extends Module {
80
  // save img
81
  if ($this->config('save_img') && !wp_is_post_revision($post_id))
82
  {
83
- // check old_data also. need for fix behavior with "preview changes" button
84
- if ($item['img'] && empty($item['img_file']) && empty($old_data[$key]['img_file']))
 
 
 
 
 
85
  {
86
  $local_img_name = ImageHelper::saveImgLocaly($item['img'], $item['title']);
87
  if ($local_img_name)
@@ -90,8 +97,8 @@ abstract class ParserModule extends Module {
90
  $item['img'] = $uploads['url'] . '/' . $local_img_name;
91
  $item['img_file'] = ltrim(trailingslashit($uploads['subdir']), '\/') . $local_img_name;
92
  }
93
- $data[$key] = $item;
94
  }
 
95
  }
96
  }
97
  return $data;
57
  if (($post && wp_is_post_revision($post_id)) || $post_id < 0)
58
  return $data;
59
 
60
+ $old_data = ContentManager::getData($post_id, $this->getId());
61
+
62
  foreach ($data as $key => $item)
63
  {
64
  // fill domain
82
  // save img
83
  if ($this->config('save_img') && !wp_is_post_revision($post_id))
84
  {
85
+ // check old_data also. need for fix behavior with "preview changes" button and by keyword update
86
+ if (isset($old_data[$key]) && !empty($old_data[$key]['img_file']) && file_exists(ImageHelper::getFullImgPath($old_data[$key]['img_file'])))
87
+ {
88
+ // image exists
89
+ $item['img'] = $old_data[$key]['img'];
90
+ $item['img_file'] = $old_data[$key]['img_file'];
91
+ } elseif ($item['img'] && empty($item['img_file']))
92
  {
93
  $local_img_name = ImageHelper::saveImgLocaly($item['img'], $item['title']);
94
  if ($local_img_name)
97
  $item['img'] = $uploads['url'] . '/' . $local_img_name;
98
  $item['img_file'] = ltrim(trailingslashit($uploads['subdir']), '\/') . $local_img_name;
99
  }
 
100
  }
101
+ $data[$key] = $item;
102
  }
103
  }
104
  return $data;
application/helpers/CurrencyHelper.php CHANGED
@@ -278,6 +278,15 @@ class CurrencyHelper {
278
  'num_decimals' => 2,
279
  'name' => 'Indonesian Rupiah',
280
  ),
 
 
 
 
 
 
 
 
 
281
  );
282
  }
283
 
@@ -369,6 +378,7 @@ class CurrencyHelper {
369
  {
370
  $transient_name = 'cegg-currency-rates-ecb';
371
  $rates = \get_transient($transient_name);
 
372
  if ($rates === false || $force)
373
  {
374
  $url = 'http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml';
@@ -392,13 +402,12 @@ class CurrencyHelper {
392
  }
393
 
394
  if ($from == 'EUR' && isset($rates[$to]))
395
- {
396
  return $rates[$to];
397
- } elseif (isset($rates[$from]) && isset($rates[$to]))
398
- {
399
- $rate = $rates[$to] / $rates[$from];
400
- return $rate;
401
- } else
402
  return 0;
403
  }
404
 
278
  'num_decimals' => 2,
279
  'name' => 'Indonesian Rupiah',
280
  ),
281
+ 'PKR' => array(
282
+ 'currency_symbol' => 'PKR.',
283
+ 'currency_pos' => 'left',
284
+ 'thousand_sep' => ',',
285
+ 'decimal_sep' => '.',
286
+ 'num_decimals' => 2,
287
+ 'name' => 'Pakistani Rupee',
288
+ ),
289
+
290
  );
291
  }
292
 
378
  {
379
  $transient_name = 'cegg-currency-rates-ecb';
380
  $rates = \get_transient($transient_name);
381
+
382
  if ($rates === false || $force)
383
  {
384
  $url = 'http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml';
402
  }
403
 
404
  if ($from == 'EUR' && isset($rates[$to]))
 
405
  return $rates[$to];
406
+ elseif ($to == 'EUR' && isset($rates[$from]))
407
+ return 1 / $rates[$from];
408
+ elseif (isset($rates[$from]) && isset($rates[$to]))
409
+ return $rates[$to] / $rates[$from];
410
+ else
411
  return 0;
412
  }
413
 
application/helpers/TextHelper.php CHANGED
@@ -308,7 +308,11 @@ class TextHelper {
308
  if ($to_int)
309
  $p = number_format($p, 2, '', '');
310
  else
 
 
 
311
  $p = number_format(preg_replace("/(\d+)(\d{2}$)/msi", '${1}.${2}', $p), 2, '.', '');
 
312
 
313
  return $p;
314
  }
@@ -392,7 +396,7 @@ class TextHelper {
392
 
393
  public static function parseCurrencyCode($money)
394
  {
395
- $currencies = array('$' => 'USD', '£' => 'GBP', 'EUR' => 'EUR', '₹' => 'INR', '€' => 'EUR', 'руб' => 'RUR', 'грн' => 'UAH');
396
  foreach ($currencies as $symbol => $code)
397
  {
398
  if (strstr($money, $symbol))
308
  if ($to_int)
309
  $p = number_format($p, 2, '', '');
310
  else
311
+ {
312
+ if (strlen($p) == 2) // Under $1
313
+ $p = '00' . $p;
314
  $p = number_format(preg_replace("/(\d+)(\d{2}$)/msi", '${1}.${2}', $p), 2, '.', '');
315
+ }
316
 
317
  return $p;
318
  }
396
 
397
  public static function parseCurrencyCode($money)
398
  {
399
+ $currencies = array('$' => 'USD', '£' => 'GBP', 'EUR' => 'EUR', '₹' => 'INR', 'Rs.' => 'INR', '€' => 'EUR', 'руб' => 'RUR', 'грн' => 'UAH');
400
  foreach ($currencies as $symbol => $code)
401
  {
402
  if (strstr($money, $symbol))
application/libs/gdeslon/GdeSlonApi.php ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\libs\gdeslon;
4
+
5
+ use ContentEgg\application\libs\RestClient;
6
+
7
+ /**
8
+ * GdeSlonApi class file
9
+ *
10
+ * @author keywordrush.com <support@keywordrush.com>
11
+ * @link http://www.keywordrush.com/
12
+ * @copyright Copyright &copy; 2015 keywordrush.com
13
+ *
14
+ * @link: https://www.gdeslon.ru/affiliate-examples/xml-api
15
+ */
16
+ require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'RestClient.php';
17
+
18
+ class GdeSlonApi extends RestClient {
19
+
20
+ const API_URI_BASE = 'http://api.gdeslon.ru';
21
+
22
+ protected $_api_key;
23
+
24
+ /**
25
+ * @var array Response Format Types
26
+ */
27
+ protected $_responseTypes = array(
28
+ 'xml',
29
+ );
30
+
31
+ /**
32
+ * Constructor
33
+ * @param string $responseType
34
+ */
35
+ public function __construct($api_key)
36
+ {
37
+ $this->setApiKey($api_key);
38
+ $this->setResponseType('xml');
39
+ $this->setUri(self::API_URI_BASE);
40
+ }
41
+
42
+ public function setApiKey($api_key)
43
+ {
44
+ $this->_api_key = $api_key;
45
+ }
46
+
47
+ public function getApiKey()
48
+ {
49
+ return $this->_api_key;
50
+ }
51
+
52
+ /**
53
+ * Products
54
+ */
55
+ public function search($keywords, array $options)
56
+ {
57
+ $options['q'] = $keywords;
58
+ $options['_gs_at'] = $this->getApiKey();
59
+
60
+ $path = '/api/search.xml';
61
+ // Костыль для задания нескольких магазинов
62
+ if (!empty($options['m']) && is_array($options['m']))
63
+ {
64
+ /**
65
+ * Zend http client использует http_build_query
66
+ * This function is wrong for http!
67
+ arrays in http is like this:
68
+ files[]=1&files[]=2&...
69
+ but function makes like this
70
+ files[0]=1&files[1]=2&...
71
+ *
72
+ */
73
+ $p = '?m%5B%5D=' . join('&m%5B%5D=', $options['m']);
74
+ $path .= $p;
75
+ unset($options['m']);
76
+ }
77
+ if (!empty($options['tid']) && is_array($options['tid']))
78
+ {
79
+ if (strstr('?', $path))
80
+ $path .= '&';
81
+ else
82
+ $path .= '?';
83
+ $p = 'tid%5B%5D=' . join('&tid%5B%5D=', $options['tid']);
84
+ $path .= $p;
85
+ unset($options['tid']);
86
+ }
87
+ $response = $this->restGet($path, $options);
88
+ return $this->_decodeResponse($response);
89
+ }
90
+
91
+ public function product($product_id)
92
+ {
93
+ if (!is_array($product_id))
94
+ $product_id = join(',', $product_id);
95
+
96
+ $options = array();
97
+ $options['articles'] = $product_id;
98
+ $options['_gs_at'] = $this->getApiKey();
99
+
100
+ $response = $this->restGet('/api/search.xml', $options);
101
+ return $this->_decodeResponse($response);
102
+ }
103
+
104
+ public function getMerhants()
105
+ {
106
+ $response = $this->restGet('/merchants.json');
107
+ return json_decode($response, true);
108
+ }
109
+
110
+ }
application/models/AutoblogModel.php CHANGED
@@ -384,6 +384,9 @@ class AutoblogModel extends Model {
384
 
385
  if (\term_exists($categ_id, 'product_cat'))
386
  \wp_set_object_terms($post_id, (int) $categ_id, 'product_cat');
 
 
 
387
  }
388
 
389
 
384
 
385
  if (\term_exists($categ_id, 'product_cat'))
386
  \wp_set_object_terms($post_id, (int) $categ_id, 'product_cat');
387
+
388
+ if ($tags_input)
389
+ \wp_set_object_terms($post_id, explode(',', $tags_input), 'product_tag');
390
  }
391
 
392
 
application/modules/AE/AEModule.php CHANGED
@@ -11,7 +11,6 @@ use ContentEgg\application\components\LinkHandler;
11
  use ContentEgg\application\components\ContentManager;
12
  use \Keywordrush\AffiliateEgg\ParserManager;
13
  use ContentEgg\application\helpers\TemplateHelper;
14
- use ContentEgg\application\helpers\FormValidator;
15
 
16
  /**
17
  * AEModule class file
@@ -34,6 +33,9 @@ class AEModule extends AffiliateParserModule {
34
  {
35
  $name = \Keywordrush\AffiliateEgg\ShopManager::getInstance()->getShopName($this->getMyShortId());
36
  $uri = $this->getShopHost();
 
 
 
37
  return array(
38
  'name' => 'AE:' . $name,
39
  'description' => sprintf(__('Affiliate Egg parser for %s', 'content-egg'), $uri),
11
  use ContentEgg\application\components\ContentManager;
12
  use \Keywordrush\AffiliateEgg\ParserManager;
13
  use ContentEgg\application\helpers\TemplateHelper;
 
14
 
15
  /**
16
  * AEModule class file
33
  {
34
  $name = \Keywordrush\AffiliateEgg\ShopManager::getInstance()->getShopName($this->getMyShortId());
35
  $uri = $this->getShopHost();
36
+ $shop = \Keywordrush\AffiliateEgg\ShopManager::getInstance()->getItem($this->getMyShortId());
37
+ if (method_exists($shop, 'isDeprecated') && $shop->isDeprecated())
38
+ $name .= ' (deprecated)';
39
  return array(
40
  'name' => 'AE:' . $name,
41
  'description' => sprintf(__('Affiliate Egg parser for %s', 'content-egg'), $uri),
application/modules/Amazon/AmazonModule.php CHANGED
@@ -447,8 +447,6 @@ class AmazonModule extends AffiliateParserModule {
447
  }
448
  }
449
 
450
- // Заполняем стандартные поля: title, description, url, price
451
- // все остальные данные в extra
452
  $content->url = self::formatProductUrl(rawurldecode($r['DetailPageURL'])); // urldecode???
453
 
454
  if (isset($r['ItemAttributes']['Title']))
447
  }
448
  }
449
 
 
 
450
  $content->url = self::formatProductUrl(rawurldecode($r['DetailPageURL'])); // urldecode???
451
 
452
  if (isset($r['ItemAttributes']['Title']))
application/modules/GdeSlon/ExtraDataGdeSlon.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\GdeSlon;
4
+
5
+ use ContentEgg\application\components\ExtraData;
6
+
7
+ /**
8
+ * ExtraDataGdeSlon class file
9
+ *
10
+ * @author keywordrush.com <support@keywordrush.com>
11
+ * @link http://www.keywordrush.com/
12
+ * @copyright Copyright &copy; 2015 keywordrush.com
13
+ */
14
+ class ExtraDataGdeSlon extends ExtraData {
15
+
16
+ public $productId;
17
+ public $gsCategoryId;
18
+ public $merchantId;
19
+ public $gsProductKey;
20
+ public $article;
21
+ public $original_picture;
22
+ public $original_url;
23
+ }
application/modules/GdeSlon/GdeSlonConfig.php ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\GdeSlon;
4
+
5
+ use ContentEgg\application\components\AffiliateParserModuleConfig;
6
+
7
+ /**
8
+ * GdeSlonConfig class file
9
+ *
10
+ * @author keywordrush.com <support@keywordrush.com>
11
+ * @link http://www.keywordrush.com/
12
+ * @copyright Copyright &copy; 2015 keywordrush.com
13
+ */
14
+ class GdeSlonConfig extends AffiliateParserModuleConfig {
15
+
16
+ public function options()
17
+ {
18
+ $optiosn = array(
19
+ 'api_key' => array(
20
+ 'title' => __('API key', 'content-egg') . ' <span class="cegg_required">*</span>',
21
+ 'description' => __('You access key API. Go to -> "Tools" -> "XML API"', 'content-egg'),
22
+ 'callback' => array($this, 'render_input'),
23
+ 'default' => '',
24
+ 'validator' => array(
25
+ 'trim',
26
+ array(
27
+ 'call' => array('\ContentEgg\application\helpers\FormValidator', 'required'),
28
+ 'when' => 'is_active',
29
+ 'message' => __('The "API Key" can not be empty', 'content-egg'),
30
+ ),
31
+ ),
32
+ 'section' => 'default',
33
+ ),
34
+ 'subid' => array(
35
+ 'title' => 'SubID',
36
+ 'description' => __('Numeric or alphabet identificator for segment data about traffic. ', 'content-egg'),
37
+ 'callback' => array($this, 'render_input'),
38
+ 'default' => '',
39
+ 'validator' => array(
40
+ 'trim',
41
+ ),
42
+ 'section' => 'default',
43
+ ),
44
+ 'entries_per_page' => array(
45
+ 'title' => __('Results', 'content-egg'),
46
+ 'description' => __('Number of results for one search query.', 'content-egg'),
47
+ 'callback' => array($this, 'render_input'),
48
+ 'default' => 10,
49
+ 'validator' => array(
50
+ 'trim',
51
+ 'absint',
52
+ array(
53
+ 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
54
+ 'arg' => 100,
55
+ 'message' => __('Field "Results" can not be more than 100.', 'content-egg'),
56
+ ),
57
+ ),
58
+ 'section' => 'default',
59
+ ),
60
+ 'entries_per_page_update' => array(
61
+ 'title' => __('Results for updates ', 'content-egg'),
62
+ 'description' => __('Number of results for automatic updates and autoblogging.', 'content-egg'),
63
+ 'callback' => array($this, 'render_input'),
64
+ 'default' => 6,
65
+ 'validator' => array(
66
+ 'trim',
67
+ 'absint',
68
+ array(
69
+ 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
70
+ 'arg' => 100,
71
+ 'message' => __('Field "Results for autoupdating" can not be more than 100.', 'content-egg'),
72
+ ),
73
+ ),
74
+ 'section' => 'default',
75
+ ),
76
+ 'order' => array(
77
+ 'title' => __('Sorting', 'content-egg'),
78
+ 'description' => '',
79
+ 'callback' => array($this, 'render_dropdown'),
80
+ 'dropdown_options' => array(
81
+ 'default' => __('Default', 'content-egg'),
82
+ 'price' => __('Price', 'content-egg'),
83
+ 'partner_benefit' => __('Convert', 'content-egg'),
84
+ 'newest' => __('New products', 'content-egg'),
85
+ ),
86
+ 'default' => 'default',
87
+ 'section' => 'default',
88
+ ),
89
+ 'search_category' => array(
90
+ 'title' => __('Categories for search', 'content-egg'),
91
+ 'description' => __('Limit search by categories. You can find Category ID <a target="_blank" href="http://api.gdeslon.ru/categories">here</a>. You can set multiple ID with comma.', 'content-egg'),
92
+ 'callback' => array($this, 'render_input'),
93
+ 'default' => '',
94
+ 'validator' => array(
95
+ 'trim',
96
+ ),
97
+ 'section' => 'default',
98
+ ),
99
+ 'merchant_id' => array(
100
+ 'title' => __('Shop ID', 'content-egg'),
101
+ 'description' => __('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.', 'content-egg'),
102
+ 'callback' => array($this, 'render_input'),
103
+ 'default' => '',
104
+ 'validator' => array(
105
+ 'trim',
106
+ ),
107
+ 'section' => 'default',
108
+ ),
109
+ 'save_img' => array(
110
+ 'title' => __('Save images', 'content-egg'),
111
+ 'description' => __('Save images on server', 'content-egg'),
112
+ 'callback' => array($this, 'render_checkbox'),
113
+ 'default' => false,
114
+ 'section' => 'default',
115
+ ),
116
+ 'description_size' => array(
117
+ 'title' => __('Trim description', 'content-egg'),
118
+ 'description' => __('Description size in characters (0 - do not cut)', 'content-egg'),
119
+ 'callback' => array($this, 'render_input'),
120
+ 'default' => '300',
121
+ 'validator' => array(
122
+ 'trim',
123
+ 'absint',
124
+ ),
125
+ 'section' => 'default',
126
+ ),
127
+ );
128
+ return array_merge(parent::options(), $optiosn);
129
+ }
130
+
131
+ }
application/modules/GdeSlon/GdeSlonModule.php ADDED
@@ -0,0 +1,259 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace ContentEgg\application\modules\GdeSlon;
4
+
5
+ use ContentEgg\application\components\AffiliateParserModule;
6
+ use ContentEgg\application\libs\gdeslon\GdeSlonApi;
7
+ use ContentEgg\application\components\ContentProduct;
8
+ use ContentEgg\application\admin\PluginAdmin;
9
+ use ContentEgg\application\helpers\TextHelper;
10
+
11
+ /**
12
+ * GdeSlonModule class file
13
+ *
14
+ * @author keywordrush.com <support@keywordrush.com>
15
+ * @link http://www.keywordrush.com/
16
+ * @copyright Copyright &copy; 2016 keywordrush.com
17
+ */
18
+ class GdeSlonModule extends AffiliateParserModule {
19
+
20
+ private $api_client;
21
+ private $merchants;
22
+
23
+ public function info()
24
+ {
25
+ return array(
26
+ 'name' => 'GdeSlon',
27
+ 'description' => sprintf(__('Adds products from %s.', 'content-egg'), '<a target="_blank" href="http://www.keywordrush.com/go/gdeslon">GdeSlon.ru</a>'),
28
+ );
29
+ }
30
+
31
+ public function getParserType()
32
+ {
33
+ return self::PARSER_TYPE_PRODUCT;
34
+ }
35
+
36
+ public function defaultTemplateName()
37
+ {
38
+ return 'grid';
39
+ }
40
+
41
+ public function isItemsUpdateAvailable()
42
+ {
43
+ return true;
44
+ }
45
+
46
+ public function isFree()
47
+ {
48
+ return true;
49
+ }
50
+
51
+ public function doRequest($keyword, $query_params = array(), $is_autoupdate = false)
52
+ {
53
+ $options = array();
54
+
55
+ if ($is_autoupdate)
56
+ $options['l'] = $this->config('entries_per_page_update');
57
+ else
58
+ $options['l'] = $this->config('entries_per_page');
59
+
60
+ if ($m = $this->config('merchant_id'))
61
+ $options['m'] = self::prepareArrParam($m);
62
+ if ($tid = $this->config('search_category'))
63
+ $options['tid'] = self::prepareArrParam($tid);
64
+
65
+ if ($this->config('order') && $this->config('order') != 'default')
66
+ $options['order'] = $this->config('order');
67
+
68
+ $client = $this->getApiClient();
69
+ $results = $client->search($keyword, $options);
70
+
71
+ if (!isset($results['offers']) || !isset($results['offers']['offer']))
72
+ return array();
73
+ $results = $results['offers']['offer'];
74
+ if (!isset($results[0]) && isset($results['name']))
75
+ $results = array($results);
76
+
77
+ return $this->prepareResults($results);
78
+ }
79
+
80
+ private function prepareResults($results)
81
+ {
82
+ $data = array();
83
+ foreach ($results as $key => $r)
84
+ {
85
+ $content = new ContentProduct;
86
+
87
+ if (!$r['name'] && $r['description'])
88
+ $r['name'] = TextHelper::truncate(strip_tags($r['description']));
89
+
90
+ if (!$r['name'])
91
+ continue;
92
+
93
+ $content->unique_id = $r['@attributes']['gs_product_key'] . $r['@attributes']['id'];
94
+ $content->title = trim($r['name']);
95
+
96
+ if ($r['description'])
97
+ {
98
+ $content->description = strip_tags(trim($r['description']));
99
+ $content->description = preg_replace("/\n\W*\n/msi", "\n", $content->description);
100
+ $content->description = nl2br($content->description);
101
+ }
102
+ if ($max_size = $this->config('description_size'))
103
+ $content->description = TextHelper::truncate($content->description, $max_size);
104
+
105
+ $content->url = $r['url'];
106
+ if ($this->config('subid'))
107
+ $content->url .= '?sub_id=' . urlencode($this->config('subid'));
108
+
109
+ $content->price = (float) $r['price'];
110
+ if (!empty($r['oldprice']))
111
+ $content->priceOld = (float) $r['oldprice'];
112
+ $content->currencyCode = $r['currencyId'];
113
+ $content->currency = TextHelper::currencyTyping($content->currencyCode);
114
+
115
+ if ($r['original_picture'])
116
+ {
117
+ $content->img = $r['original_picture'];
118
+ } elseif ($r['picture'] && $r['picture'] != 'http://www.gdeslon.ru/images/default_picture/small.png')
119
+ {
120
+ $imgs = explode(',', $r['picture']);
121
+ $content->img = $imgs[0];
122
+ }
123
+ $content->availability = (bool) $r['@attributes']['available'];
124
+ $content->manufacturer = $r['vendor'];
125
+
126
+ $content->extra = new ExtraDataGdeSlon;
127
+ $content->extra->productId = $r['@attributes']['id'];
128
+ $content->extra->gsCategoryId = (isset($r['@attributes']['gs_category_id'])) ? (int) $r['@attributes']['gs_category_id'] : '';
129
+ $content->extra->merchantId = (isset($r['@attributes']['merchant_id'])) ? (int) $r['@attributes']['merchant_id'] : '';
130
+ $content->extra->gsProductKey = (isset($r['@attributes']['gs_product_key'])) ? $r['@attributes']['gs_product_key'] : '';
131
+ $content->extra->article = (isset($r['@attributes']['article'])) ? $r['@attributes']['article'] : '';
132
+ if (!empty($r['destination-url-do-not-send-traffic']))
133
+ $content->extra->original_url = $r['destination-url-do-not-send-traffic'];
134
+ if (!empty($r['original_picture']))
135
+ $content->extra->original_url = $r['original_picture'];
136
+ // get merchant info
137
+ $this->fillMerchantInfo($content);
138
+
139
+ $data[] = $content;
140
+ }
141
+ return $data;
142
+ }
143
+
144
+ public function doRequestItems(array $items)
145
+ {
146
+ $product_ids = array();
147
+ foreach ($items as $key => $item)
148
+ {
149
+ if (empty($item['extra']['article']))
150
+ throw new \Exception('doRequestItems request error.');
151
+
152
+ $product_ids[] = $item['extra']['article'];
153
+ }
154
+
155
+ $client = $this->getApiClient();
156
+ $results = $client->product($product_ids);
157
+
158
+ if (!isset($results['shop']['offers']) || !isset($results['shop']['offers']['offer']))
159
+ throw new \Exception('doRequestItems request error.');
160
+ $results = $results['shop']['offers']['offer'];
161
+ if (!isset($results[0]) && isset($results['name']))
162
+ $results = array($results);
163
+
164
+ // article ID not unique?!..
165
+ $ordered_results = array();
166
+ foreach ($results as $r)
167
+ {
168
+ $ordered_results[$r['@attributes']['id']] = $r;
169
+ }
170
+
171
+ // assign new price
172
+ foreach ($items as $key => $item)
173
+ {
174
+ if (!isset($ordered_results[$item['extra']['productId']]))
175
+ continue;
176
+ $r = $ordered_results[$item['extra']['productId']];
177
+ $items[$key]['price'] = (float) $r['price'];
178
+ if (!empty($r['oldprice']))
179
+ $items[$key]['priceOld'] = (float) $r['oldprice'];
180
+ $items[$key]['availability'] = (bool) $r['@attributes']['available'];
181
+ }
182
+ return $items;
183
+ }
184
+
185
+ private static function prepareArrParam($value)
186
+ {
187
+ $m = explode(',', $value);
188
+
189
+ if (count($m) > 1)
190
+ {
191
+ $results = array();
192
+ foreach ($m as $mv)
193
+ {
194
+ $results[] = trim((int) $mv);
195
+ }
196
+ return $results;
197
+ } else
198
+ return $m[0];
199
+ }
200
+
201
+ private function fillMerchantInfo($content)
202
+ {
203
+ $merchant_id = $content->extra->merchantId;
204
+
205
+ if ($this->merchants === null)
206
+ {
207
+ try
208
+ {
209
+ $results = $this->getApiClient()->getMerhants();
210
+ } catch (\Exception $e)
211
+ {
212
+ $results = array();
213
+ }
214
+ if (!is_array($results))
215
+ $results = array();
216
+
217
+ foreach ($results as $r)
218
+ {
219
+ $this->merchants[$r['_id']] = $r['name'];
220
+ }
221
+ }
222
+ if (isset($this->merchants[$merchant_id]))
223
+ {
224
+ $merhant_name = $this->merchants[$merchant_id];
225
+ $merhant_name = preg_replace('/_new$/', '', $merhant_name);
226
+
227
+ if (TextHelper::isValidDomainName($merhant_name))
228
+ $content->domain = $merhant_name;
229
+ elseif (!empty($content->extra->original_url))
230
+ $content->domain = TextHelper::getHostName($content->extra->original_url);
231
+ elseif (!empty($content->extra->original_picture))
232
+ {
233
+ $content->domain = TextHelper::getHostName($content->extra->original_picture);
234
+ if ($content->domain == 'alicdn.com')
235
+ $content->domain = 'aliexpress.com';
236
+ }
237
+ }
238
+ }
239
+
240
+ private function getApiClient()
241
+ {
242
+ if ($this->api_client === null)
243
+ {
244
+ $this->api_client = new GdeSlonApi($this->config('api_key'));
245
+ }
246
+ return $this->api_client;
247
+ }
248
+
249
+ public function renderResults()
250
+ {
251
+ PluginAdmin::render('_metabox_results', array('module_id' => $this->getId()));
252
+ }
253
+
254
+ public function renderSearchResults()
255
+ {
256
+ PluginAdmin::render('_metabox_search_results', array('module_id' => $this->getId()));
257
+ }
258
+
259
+ }
application/modules/GdeSlon/index.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+
3
+ // Silence is golden.
application/modules/GdeSlon/templates/data_grid.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ Name: Grid
5
+ */
6
+
7
+ __('Grid', 'content-egg-tpl');
8
+
9
+ $this->renderPartial('grid');
application/modules/GdeSlon/templates/data_item.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ Name: Product card
5
+ */
6
+
7
+ __('Product card', 'content-egg-tpl');
8
+
9
+ $this->renderPartial('item');
application/modules/GdeSlon/templates/data_list.php ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ Name: List
5
+ */
6
+ __('List', 'content-egg-tpl');
7
+
8
+ $this->renderPartial('list');
application/modules/GdeSlon/templates/data_price_tracker_alert.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ Name: Price tracker & alert
5
+ */
6
+
7
+ __('Price tracker & alert', 'content-egg-tpl');
8
+
9
+ $this->renderPartial('price_tracker_alert');
application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php CHANGED
@@ -63,7 +63,7 @@ class SkimlinksCouponsConfig extends AffiliateParserModuleConfig {
63
  ),
64
  'siteId' => array(
65
  'title' => 'Site ID <span class="cegg_required">*</span>',
66
- 'description' => __('You can find your SiteID <a target="_blank" href="https://hub.skimlinks.com/account">here</a>.', 'content-egg'),
67
  'callback' => array($this, 'render_input'),
68
  'default' => '',
69
  'validator' => array(
@@ -85,6 +85,12 @@ class SkimlinksCouponsConfig extends AffiliateParserModuleConfig {
85
  'validator' => array(
86
  'trim',
87
  'absint',
 
 
 
 
 
 
88
  ),
89
  'section' => 'default',
90
  ),
@@ -96,6 +102,11 @@ class SkimlinksCouponsConfig extends AffiliateParserModuleConfig {
96
  'validator' => array(
97
  'trim',
98
  'absint',
 
 
 
 
 
99
  ),
100
  'section' => 'default',
101
  ),
63
  ),
64
  'siteId' => array(
65
  'title' => 'Site ID <span class="cegg_required">*</span>',
66
+ 'description' => __('You can find your SiteID <a target="_blank" href="https://hub.skimlinks.com/settings/sites">here</a>.', 'content-egg'),
67
  'callback' => array($this, 'render_input'),
68
  'default' => '',
69
  'validator' => array(
85
  'validator' => array(
86
  'trim',
87
  'absint',
88
+ array(
89
+ 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
90
+ 'arg' => 200,
91
+ 'message' => sprintf(__('The field "%s" can not be more than %d.', 'content-egg'), 'Results', 200),
92
+ ),
93
+
94
  ),
95
  'section' => 'default',
96
  ),
102
  'validator' => array(
103
  'trim',
104
  'absint',
105
+ array(
106
+ 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
107
+ 'arg' => 200,
108
+ 'message' => sprintf(__('The field "%s" can not be more than %d.', 'content-egg'), 'Results', 200),
109
+ ),
110
  ),
111
  'section' => 'default',
112
  ),
content-egg.php CHANGED
@@ -5,8 +5,8 @@ namespace ContentEgg;
5
  /*
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: 4.4.3
10
  Author: keywordrush.com
11
  Author URI: http://www.keywordrush.com
12
  Text Domain: content-egg
5
  /*
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: 4.5.0
10
  Author: keywordrush.com
11
  Author URI: http://www.keywordrush.com
12
  Text Domain: content-egg
languages/content-egg.pot CHANGED
@@ -1,10 +1,10 @@
1
- # Copyright (C) 2018 Content Egg
2
- # This file is distributed under the same license as the Content Egg package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Content Egg 4.4.3\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg\n"
7
- "POT-Creation-Date: 2018-01-21 19:46:35+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -264,6 +264,7 @@ msgid "How long save price history. 0 - deactivate price history."
264
  msgstr ""
265
 
266
  #: application/admin/GeneralConfig.php:137
 
267
  msgid "The field \"%s\" can't be more than %d."
268
  msgstr ""
269
 
@@ -875,7 +876,7 @@ msgstr ""
875
  #: application/modules/Pepperjam/PepperjamConfig.php:96
876
  #: application/modules/Pixabay/PixabayConfig.php:108
877
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:57
878
- #: application/modules/Viglink/ViglinkConfig.php:76
879
  msgid "Category "
880
  msgstr ""
881
 
@@ -1368,6 +1369,7 @@ msgid "Lifetime of cache in seconds, after this period products will be updated
1368
  msgstr ""
1369
 
1370
  #: application/components/AffiliateParserModuleConfig.php:33
 
1371
  msgid "Price update"
1372
  msgstr ""
1373
 
@@ -1546,6 +1548,7 @@ msgstr ""
1546
  #: application/modules/GoogleImages/GoogleImagesConfig.php:48
1547
  #: application/modules/GoogleNews/GoogleNewsConfig.php:20
1548
  #: application/modules/Impactradius/ImpactradiusConfig.php:48
 
1549
  #: application/modules/Linkshare/LinkshareConfig.php:35
1550
  #: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:35
1551
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:34
@@ -1596,6 +1599,7 @@ msgstr ""
1596
  #: application/modules/Flipkart/FlipkartConfig.php:61
1597
  #: application/modules/GdeSlon/GdeSlonConfig.php:46
1598
  #: application/modules/Impactradius/ImpactradiusConfig.php:49
 
1599
  #: application/modules/Linkshare/LinkshareConfig.php:36
1600
  #: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:36
1601
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:35
@@ -1680,6 +1684,7 @@ msgstr ""
1680
  #: application/modules/Flipkart/FlipkartConfig.php:77
1681
  #: application/modules/GdeSlon/GdeSlonConfig.php:62
1682
  #: application/modules/Impactradius/ImpactradiusConfig.php:64
 
1683
  #: application/modules/Linkshare/LinkshareConfig.php:47
1684
  #: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:47
1685
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:50
@@ -1688,7 +1693,7 @@ msgstr ""
1688
  #: application/modules/PayTM/PayTMConfig.php:42
1689
  #: application/modules/Pepperjam/PepperjamConfig.php:72
1690
  #: application/modules/Shareasale/ShareasaleConfig.php:77
1691
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:93
1692
  #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:47
1693
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:47
1694
  #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:105
@@ -1731,6 +1736,7 @@ msgstr ""
1731
  #: application/modules/GoogleImages/GoogleImagesConfig.php:179
1732
  #: application/modules/GoogleNews/GoogleNewsConfig.php:52
1733
  #: application/modules/Impactradius/ImpactradiusConfig.php:114
 
1734
  #: application/modules/Linkshare/LinkshareConfig.php:120
1735
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:115
1736
  #: application/modules/Market/MarketConfig.php:170
@@ -1747,7 +1753,7 @@ msgstr ""
1747
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:169
1748
  #: application/modules/Twitter/TwitterConfig.php:125
1749
  #: application/modules/Udemy/UdemyConfig.php:212
1750
- #: application/modules/Viglink/ViglinkConfig.php:123
1751
  #: application/modules/VkNews/VkNewsConfig.php:42
1752
  #: application/modules/Walmart/WalmartConfig.php:157
1753
  #: application/modules/Zanox/ZanoxConfig.php:152
@@ -1775,6 +1781,7 @@ msgstr ""
1775
  #: application/modules/GoogleImages/GoogleImagesConfig.php:180
1776
  #: application/modules/GoogleNews/GoogleNewsConfig.php:53
1777
  #: application/modules/Impactradius/ImpactradiusConfig.php:115
 
1778
  #: application/modules/Linkshare/LinkshareConfig.php:121
1779
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:116
1780
  #: application/modules/Market/MarketConfig.php:171
@@ -1790,14 +1797,14 @@ msgstr ""
1790
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:170
1791
  #: application/modules/Twitter/TwitterConfig.php:126
1792
  #: application/modules/Udemy/UdemyConfig.php:213
1793
- #: application/modules/Viglink/ViglinkConfig.php:124
1794
  #: application/modules/VkNews/VkNewsConfig.php:43
1795
  #: application/modules/Walmart/WalmartConfig.php:158
1796
  #: application/modules/Zanox/ZanoxConfig.php:153
1797
  msgid "Save images on server"
1798
  msgstr ""
1799
 
1800
- #: application/modules/AE/AEModule.php:39
1801
  msgid "Affiliate Egg parser for %s"
1802
  msgstr ""
1803
 
@@ -1879,6 +1886,7 @@ msgstr ""
1879
  #: application/modules/CjProducts/CjProductsConfig.php:96
1880
  #: application/modules/Ebay/EbayConfig.php:301
1881
  #: application/modules/Impactradius/ImpactradiusConfig.php:84
 
1882
  #: application/modules/Optimisemedia/OptimisemediaConfig.php:136
1883
  #: application/modules/PayTM/PayTMConfig.php:69
1884
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:103
@@ -1893,6 +1901,7 @@ msgstr ""
1893
  #: application/modules/CjProducts/CjProductsConfig.php:106
1894
  #: application/modules/Ebay/EbayConfig.php:291
1895
  #: application/modules/Impactradius/ImpactradiusConfig.php:94
 
1896
  #: application/modules/Optimisemedia/OptimisemediaConfig.php:146
1897
  #: application/modules/PayTM/PayTMConfig.php:79
1898
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:113
@@ -1915,6 +1924,7 @@ msgstr ""
1915
  #: application/modules/GoogleBooks/GoogleBooksConfig.php:84
1916
  #: application/modules/GoogleNews/GoogleNewsConfig.php:59
1917
  #: application/modules/Impactradius/ImpactradiusConfig.php:121
 
1918
  #: application/modules/Linkshare/LinkshareConfig.php:127
1919
  #: application/modules/Optimisemedia/OptimisemediaConfig.php:170
1920
  #: application/modules/Ozon/OzonConfig.php:185
@@ -1945,6 +1955,7 @@ msgstr ""
1945
  #: application/modules/GoogleBooks/GoogleBooksConfig.php:85
1946
  #: application/modules/GoogleNews/GoogleNewsConfig.php:60
1947
  #: application/modules/Impactradius/ImpactradiusConfig.php:122
 
1948
  #: application/modules/Linkshare/LinkshareConfig.php:128
1949
  #: application/modules/Optimisemedia/OptimisemediaConfig.php:171
1950
  #: application/modules/Ozon/OzonConfig.php:186
@@ -1989,6 +2000,8 @@ msgstr ""
1989
  #: application/modules/Ebay/views/search_panel.php:1
1990
  #: application/modules/Ebay/views/update_panel.php:1
1991
  #: application/modules/Impactradius/views/search_panel.php:1
 
 
1992
  #: application/modules/Optimisemedia/views/search_panel.php:1
1993
  #: application/modules/PayTM/views/search_panel.php:1
1994
  #: application/modules/TradedoublerProducts/views/search_panel.php:1
@@ -2012,6 +2025,8 @@ msgstr ""
2012
  #: application/modules/Ebay/views/search_panel.php:2
2013
  #: application/modules/Ebay/views/update_panel.php:2
2014
  #: application/modules/Impactradius/views/search_panel.php:2
 
 
2015
  #: application/modules/Optimisemedia/views/search_panel.php:2
2016
  #: application/modules/PayTM/views/search_panel.php:2
2017
  #: application/modules/TradedoublerProducts/views/search_panel.php:2
@@ -2048,6 +2063,7 @@ msgstr ""
2048
  #: application/modules/Flickr/FlickrConfig.php:57
2049
  #: application/modules/GdeSlon/GdeSlonConfig.php:77
2050
  #: application/modules/GoogleBooks/GoogleBooksConfig.php:95
 
2051
  #: application/modules/Linkshare/LinkshareConfig.php:79
2052
  #: application/modules/Ozon/OzonConfig.php:62
2053
  #: application/modules/PayTM/PayTMConfig.php:89
@@ -2066,6 +2082,7 @@ msgstr ""
2066
  #: application/modules/Envato/EnvatoConfig.php:144
2067
  #: application/modules/Envato/EnvatoConfig.php:162
2068
  #: application/modules/GdeSlon/GdeSlonConfig.php:81
 
2069
  #: application/modules/Linkshare/LinkshareConfig.php:83
2070
  #: application/modules/PayTM/PayTMConfig.php:93
2071
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:147
@@ -2199,12 +2216,12 @@ msgid "Max number of partner sales for last month. Example, 456"
2199
  msgstr ""
2200
 
2201
  #: application/modules/Aliexpress/AliexpressConfig.php:235
2202
- #: application/modules/Viglink/ViglinkConfig.php:87
2203
  msgid "Price low to high"
2204
  msgstr ""
2205
 
2206
  #: application/modules/Aliexpress/AliexpressConfig.php:236
2207
- #: application/modules/Viglink/ViglinkConfig.php:88
2208
  msgid "Price high to low"
2209
  msgstr ""
2210
 
@@ -2222,7 +2239,7 @@ msgid "Commission from high to low"
2222
  msgstr ""
2223
 
2224
  #: application/modules/Aliexpress/AliexpressConfig.php:240
2225
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:141
2226
  #: application/modules/SkimlinksCoupons/views/search_panel.php:6
2227
  msgid "Sales"
2228
  msgstr ""
@@ -2247,6 +2264,7 @@ msgstr ""
2247
  #: application/modules/Amazon/views/update_panel.php:1
2248
  #: application/modules/Bolcom/views/update_panel.php:1
2249
  #: application/modules/Ebay/views/update_panel.php:1
 
2250
  #: application/modules/Viglink/views/update_panel.php:1
2251
  #: application/modules/Walmart/views/update_panel.php:1
2252
  msgid "Min. price for automatic update"
@@ -2256,6 +2274,7 @@ msgstr ""
2256
  #: application/modules/Amazon/views/update_panel.php:2
2257
  #: application/modules/Bolcom/views/update_panel.php:2
2258
  #: application/modules/Ebay/views/update_panel.php:2
 
2259
  #: application/modules/Viglink/views/update_panel.php:2
2260
  #: application/modules/Walmart/views/update_panel.php:2
2261
  msgid "Max. price for automatic update"
@@ -2368,10 +2387,12 @@ msgid "Select products that are selling by Amazon. Other sellers are excluded fr
2368
  msgstr ""
2369
 
2370
  #: application/modules/Amazon/AmazonConfig.php:166
 
2371
  msgid "Example, 8.99"
2372
  msgstr ""
2373
 
2374
  #: application/modules/Amazon/AmazonConfig.php:176
 
2375
  msgid "Example, 98.50"
2376
  msgstr ""
2377
 
@@ -2395,6 +2416,7 @@ msgstr ""
2395
  #: application/modules/GoogleImages/GoogleImagesConfig.php:114
2396
  #: application/modules/GoogleImages/GoogleImagesConfig.php:127
2397
  #: application/modules/GoogleImages/GoogleImagesConfig.php:147
 
2398
  #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:71
2399
  msgid "Any"
2400
  msgstr ""
@@ -2588,6 +2610,8 @@ msgstr ""
2588
  #: application/modules/GoogleImages/GoogleImagesConfig.php:73
2589
  #: application/modules/Impactradius/ImpactradiusConfig.php:58
2590
  #: application/modules/Impactradius/ImpactradiusConfig.php:73
 
 
2591
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:44
2592
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:59
2593
  #: application/modules/Pepperjam/PepperjamConfig.php:66
@@ -2596,6 +2620,8 @@ msgstr ""
2596
  #: application/modules/QwantImages/QwantImagesConfig.php:46
2597
  #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:46
2598
  #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:62
 
 
2599
  #: application/modules/Udemy/UdemyConfig.php:74
2600
  #: application/modules/Udemy/UdemyConfig.php:89
2601
  #: application/modules/Walmart/WalmartConfig.php:58
@@ -2725,9 +2751,9 @@ msgstr ""
2725
  #: application/modules/Pixabay/PixabayConfig.php:85
2726
  #: application/modules/Pixabay/PixabayConfig.php:99
2727
  #: application/modules/Pixabay/PixabayConfig.php:112
2728
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:129
2729
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:137
2730
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:152
2731
  #: application/modules/SkimlinksCoupons/views/search_panel.php:2
2732
  #: application/modules/Udemy/UdemyConfig.php:157
2733
  #: application/modules/Udemy/UdemyConfig.php:204
@@ -2962,6 +2988,9 @@ msgstr ""
2962
  #: application/modules/GoogleImages/GoogleImagesConfig.php:43
2963
  #: application/modules/Impactradius/ImpactradiusConfig.php:29
2964
  #: application/modules/Impactradius/ImpactradiusConfig.php:43
 
 
 
2965
  #: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:29
2966
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:29
2967
  #: application/modules/Pepperjam/PepperjamConfig.php:30
@@ -2990,9 +3019,10 @@ msgstr ""
2990
 
2991
  #: application/modules/Bolcom/BolcomConfig.php:63
2992
  #: application/modules/GoogleImages/GoogleImagesConfig.php:63
 
2993
  #: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:46
2994
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:49
2995
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:92
2996
  msgid "Results for updates"
2997
  msgstr ""
2998
 
@@ -3002,8 +3032,8 @@ msgstr ""
3002
 
3003
  #: application/modules/Bolcom/BolcomConfig.php:87
3004
  #: application/modules/GoogleBooks/GoogleBooksConfig.php:67
3005
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:118
3006
- #: application/modules/Viglink/ViglinkConfig.php:70
3007
  msgid "Country"
3008
  msgstr ""
3009
 
@@ -3021,7 +3051,7 @@ msgstr ""
3021
 
3022
  #: application/modules/Bolcom/BolcomConfig.php:97
3023
  #: application/modules/Impactradius/ImpactradiusConfig.php:104
3024
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:127
3025
  #: application/modules/Udemy/UdemyConfig.php:119
3026
  #: application/modules/Walmart/WalmartConfig.php:78
3027
  msgid "Category"
@@ -3046,11 +3076,13 @@ msgid "Sales ranking descending"
3046
  msgstr ""
3047
 
3048
  #: application/modules/Bolcom/BolcomConfig.php:150
 
3049
  #: application/modules/Ozon/OzonConfig.php:80
3050
  msgid "Price ascending"
3051
  msgstr ""
3052
 
3053
  #: application/modules/Bolcom/BolcomConfig.php:151
 
3054
  #: application/modules/Ozon/OzonConfig.php:81
3055
  msgid "Price descending"
3056
  msgstr ""
@@ -3080,7 +3112,9 @@ msgid "Rating descending"
3080
  msgstr ""
3081
 
3082
  #: application/modules/Bolcom/BolcomModule.php:26
 
3083
  #: application/modules/Impactradius/ImpactradiusModule.php:27
 
3084
  #: application/modules/Pepperjam/PepperjamModule.php:27
3085
  #: application/modules/TradetrackerProducts/TradetrackerProductsModule.php:26
3086
  #: application/modules/Walmart/WalmartModule.php:28
@@ -3680,7 +3714,7 @@ msgstr ""
3680
  #: application/modules/Flickr/views/search_panel.php:9
3681
  #: application/modules/GoogleBooks/GoogleBooksConfig.php:99
3682
  #: application/modules/Ozon/OzonConfig.php:66
3683
- #: application/modules/Viglink/ViglinkConfig.php:86
3684
  #: application/modules/Walmart/WalmartConfig.php:92
3685
  #: application/modules/Youtube/YoutubeConfig.php:63
3686
  #: application/modules/Youtube/views/search_panel.php:9
@@ -3882,10 +3916,6 @@ msgstr ""
3882
  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."
3883
  msgstr ""
3884
 
3885
- #: application/modules/GdeSlon/GdeSlonModule.php:27
3886
- msgid "Adds goods from gdeslon.ru."
3887
- msgstr ""
3888
-
3889
  #: application/modules/GoogleBooks/GoogleBooksConfig.php:61
3890
  msgid "Field \"Results for autoblogging\" can not be more than 40."
3891
  msgstr ""
@@ -4048,6 +4078,99 @@ msgstr ""
4048
  msgid "The product category. A list of valid categories can be found here <a href=\"http://dev.impactradius.com/download/attachments/2720450/taxonomy.txt\">taxonomy.txt</a>"
4049
  msgstr ""
4050
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4051
  #: application/modules/Linkshare/LinkshareConfig.php:21
4052
  msgid "Linkshare access key. Go to your account in Linkshare and follow \"LINKS -> Web Service\"."
4053
  msgstr ""
@@ -4574,109 +4697,105 @@ msgid "Once you are approved the same page will display your Public Key, Account
4574
  msgstr ""
4575
 
4576
  #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:66
4577
- msgid "You can find your SiteID <a target=\"_blank\" href=\"https://hub.skimlinks.com/account\">here</a>."
4578
- msgstr ""
4579
-
4580
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:103
4581
- msgid "Merchant ID"
4582
  msgstr ""
4583
 
4584
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:104
4585
  msgid "List offers from this merchant only."
4586
  msgstr ""
4587
 
4588
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:112
4589
  msgid "Favourites"
4590
  msgstr ""
4591
 
4592
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:113
4593
  msgid "Retrieve your favourites only."
4594
  msgstr ""
4595
 
4596
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:119
4597
  msgid "Two character country code."
4598
  msgstr ""
4599
 
4600
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:134
4601
  msgid "Offer type"
4602
  msgstr ""
4603
 
4604
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:138
4605
  #: application/modules/SkimlinksCoupons/views/search_panel.php:3
4606
  msgid "Coupon"
4607
  msgstr ""
4608
 
4609
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:139
4610
  #: application/modules/SkimlinksCoupons/views/search_panel.php:4
4611
  msgid "Sweepstake"
4612
  msgstr ""
4613
 
4614
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:140
4615
  #: application/modules/SkimlinksCoupons/views/search_panel.php:5
4616
  msgid "Hot product"
4617
  msgstr ""
4618
 
4619
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:142
4620
  #: application/modules/SkimlinksCoupons/views/search_panel.php:7
4621
  msgid "Free shipping"
4622
  msgstr ""
4623
 
4624
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:143
4625
  #: application/modules/SkimlinksCoupons/views/search_panel.php:8
4626
  msgid "Seasonal"
4627
  msgstr ""
4628
 
4629
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:149
4630
  msgid "Period"
4631
  msgstr ""
4632
 
4633
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:153
4634
  msgid "Upcoming"
4635
  msgstr ""
4636
 
4637
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:154
4638
  msgid "Ongoing"
4639
  msgstr ""
4640
 
4641
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:155
4642
  msgid "Finished"
4643
  msgstr ""
4644
 
4645
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:156
4646
  msgid "Finishing Soon"
4647
  msgstr ""
4648
 
4649
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:157
4650
  msgid "Not expired"
4651
  msgstr ""
4652
 
4653
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:162
4654
  msgid "Sort by"
4655
  msgstr ""
4656
 
4657
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:165
4658
  msgid "Date added"
4659
  msgstr ""
4660
 
4661
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:166
4662
  msgid "Srart date"
4663
  msgstr ""
4664
 
4665
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:167
4666
  msgid "End date"
4667
  msgstr ""
4668
 
4669
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:172
4670
- #: application/modules/Viglink/ViglinkConfig.php:83
4671
  msgid "Sort order"
4672
  msgstr ""
4673
 
4674
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:175
4675
  #: application/modules/Walmart/WalmartConfig.php:106
4676
  msgid "Asc"
4677
  msgstr ""
4678
 
4679
- #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:176
4680
  #: application/modules/Walmart/WalmartConfig.php:107
4681
  msgid "Desc"
4682
  msgstr ""
@@ -4775,12 +4894,12 @@ msgid "Feed Category Name"
4775
  msgstr ""
4776
 
4777
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:151
4778
- #: application/modules/Viglink/ViglinkConfig.php:93
4779
  msgid "Price From"
4780
  msgstr ""
4781
 
4782
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:160
4783
- #: application/modules/Viglink/ViglinkConfig.php:102
4784
  msgid "Price To"
4785
  msgstr ""
4786
 
@@ -4944,51 +5063,63 @@ msgid "When logged into your dashboard, go to Manage -> Account. Under the My Ca
4944
  msgstr ""
4945
 
4946
  #: application/modules/Viglink/ViglinkConfig.php:71
 
 
 
 
4947
  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."
4948
  msgstr ""
4949
 
4950
- #: application/modules/Viglink/ViglinkConfig.php:77
4951
  msgid "Filter your query by a specific category."
4952
  msgstr ""
4953
 
4954
- #: application/modules/Viglink/ViglinkConfig.php:111
4955
  msgid "Merchant"
4956
  msgstr ""
4957
 
4958
- #: application/modules/Viglink/ViglinkConfig.php:112
4959
  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."
4960
  msgstr ""
4961
 
4962
- #: application/modules/Viglink/ViglinkConfig.php:117
4963
  msgid "Images filter"
4964
  msgstr ""
4965
 
4966
- #: application/modules/Viglink/ViglinkConfig.php:118
4967
  msgid "Products with images"
4968
  msgstr ""
4969
 
4970
- #: application/modules/Viglink/ViglinkConfig.php:118
4971
  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."
4972
  msgstr ""
4973
 
4974
- #: application/modules/Viglink/ViglinkConfig.php:130
 
 
 
 
 
 
 
 
4975
  msgid "Please note: Price update is only available for products added by direct URL (not by keyword search)."
4976
  msgstr ""
4977
 
4978
- #: application/modules/Viglink/ViglinkConfig.php:137
4979
  #: application/modules/Walmart/WalmartConfig.php:82
4980
  msgid "[ All ]"
4981
  msgstr ""
4982
 
4983
- #: application/modules/Viglink/ViglinkModule.php:26
4984
  msgid "Module adds products from <a target=\"_blank\" href=\"%s\">VigLink</a>."
4985
  msgstr ""
4986
 
4987
- #: application/modules/Viglink/ViglinkModule.php:27
4988
  msgid "Search for specific products from a vast catalog of over 350 million products."
4989
  msgstr ""
4990
 
4991
- #: application/modules/Viglink/ViglinkModule.php:28
4992
  msgid "You can search by keyword or product URL."
4993
  msgstr ""
4994
 
@@ -5111,7 +5242,7 @@ msgstr ""
5111
  msgid "Adds products from zanox.com. You must have approval from each program separately."
5112
  msgstr ""
5113
  #. Plugin Name of the plugin/theme
5114
- msgid "Content Egg"
5115
  msgstr ""
5116
 
5117
  #. Plugin URI of the plugin/theme
@@ -5119,7 +5250,7 @@ msgid "http://www.keywordrush.com/contentegg"
5119
  msgstr ""
5120
 
5121
  #. Description of the plugin/theme
5122
- msgid "Easily adding auto updating products from affiliate systems and additional content to posts. [ATTENTION: before update PRO version of plugin, activate plugin!]"
5123
  msgstr ""
5124
 
5125
  #. Author of the plugin/theme
1
+ # Copyright (C) 2018 Content Egg<stripfree> Pro</stripfree>
2
+ # This file is distributed under the same license as the Content Egg<stripfree> Pro</stripfree> package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Content Egg<stripfree> Pro</stripfree> 4.5.0\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg\n"
7
+ "POT-Creation-Date: 2018-03-15 14:24:19+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
264
  msgstr ""
265
 
266
  #: application/admin/GeneralConfig.php:137
267
+ #: application/modules/Kelkoo/KelkooConfig.php:255
268
  msgid "The field \"%s\" can't be more than %d."
269
  msgstr ""
270
 
876
  #: application/modules/Pepperjam/PepperjamConfig.php:96
877
  #: application/modules/Pixabay/PixabayConfig.php:108
878
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:57
879
+ #: application/modules/Viglink/ViglinkConfig.php:86
880
  msgid "Category "
881
  msgstr ""
882
 
1369
  msgstr ""
1370
 
1371
  #: application/components/AffiliateParserModuleConfig.php:33
1372
+ #: application/modules/Kelkoo/KelkooConfig.php:255
1373
  msgid "Price update"
1374
  msgstr ""
1375
 
1548
  #: application/modules/GoogleImages/GoogleImagesConfig.php:48
1549
  #: application/modules/GoogleNews/GoogleNewsConfig.php:20
1550
  #: application/modules/Impactradius/ImpactradiusConfig.php:48
1551
+ #: application/modules/Kelkoo/KelkooConfig.php:86
1552
  #: application/modules/Linkshare/LinkshareConfig.php:35
1553
  #: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:35
1554
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:34
1599
  #: application/modules/Flipkart/FlipkartConfig.php:61
1600
  #: application/modules/GdeSlon/GdeSlonConfig.php:46
1601
  #: application/modules/Impactradius/ImpactradiusConfig.php:49
1602
+ #: application/modules/Kelkoo/KelkooConfig.php:87
1603
  #: application/modules/Linkshare/LinkshareConfig.php:36
1604
  #: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:36
1605
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:35
1684
  #: application/modules/Flipkart/FlipkartConfig.php:77
1685
  #: application/modules/GdeSlon/GdeSlonConfig.php:62
1686
  #: application/modules/Impactradius/ImpactradiusConfig.php:64
1687
+ #: application/modules/Kelkoo/KelkooConfig.php:102
1688
  #: application/modules/Linkshare/LinkshareConfig.php:47
1689
  #: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:47
1690
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:50
1693
  #: application/modules/PayTM/PayTMConfig.php:42
1694
  #: application/modules/Pepperjam/PepperjamConfig.php:72
1695
  #: application/modules/Shareasale/ShareasaleConfig.php:77
1696
+ #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:99
1697
  #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:47
1698
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:47
1699
  #: application/modules/TradetrackerCoupons/TradetrackerCouponsConfig.php:105
1736
  #: application/modules/GoogleImages/GoogleImagesConfig.php:179
1737
  #: application/modules/GoogleNews/GoogleNewsConfig.php:52
1738
  #: application/modules/Impactradius/ImpactradiusConfig.php:114
1739
+ #: application/modules/Kelkoo/KelkooConfig.php:235
1740
  #: application/modules/Linkshare/LinkshareConfig.php:120
1741
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:115
1742
  #: application/modules/Market/MarketConfig.php:170
1753
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:169
1754
  #: application/modules/Twitter/TwitterConfig.php:125
1755
  #: application/modules/Udemy/UdemyConfig.php:212
1756
+ #: application/modules/Viglink/ViglinkConfig.php:139
1757
  #: application/modules/VkNews/VkNewsConfig.php:42
1758
  #: application/modules/Walmart/WalmartConfig.php:157
1759
  #: application/modules/Zanox/ZanoxConfig.php:152
1781
  #: application/modules/GoogleImages/GoogleImagesConfig.php:180
1782
  #: application/modules/GoogleNews/GoogleNewsConfig.php:53
1783
  #: application/modules/Impactradius/ImpactradiusConfig.php:115
1784
+ #: application/modules/Kelkoo/KelkooConfig.php:236
1785
  #: application/modules/Linkshare/LinkshareConfig.php:121
1786
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:116
1787
  #: application/modules/Market/MarketConfig.php:171
1797
  #: application/modules/TradetrackerProducts/TradetrackerProductsConfig.php:170
1798
  #: application/modules/Twitter/TwitterConfig.php:126
1799
  #: application/modules/Udemy/UdemyConfig.php:213
1800
+ #: application/modules/Viglink/ViglinkConfig.php:140
1801
  #: application/modules/VkNews/VkNewsConfig.php:43
1802
  #: application/modules/Walmart/WalmartConfig.php:158
1803
  #: application/modules/Zanox/ZanoxConfig.php:153
1804
  msgid "Save images on server"
1805
  msgstr ""
1806
 
1807
+ #: application/modules/AE/AEModule.php:41
1808
  msgid "Affiliate Egg parser for %s"
1809
  msgstr ""
1810
 
1886
  #: application/modules/CjProducts/CjProductsConfig.php:96
1887
  #: application/modules/Ebay/EbayConfig.php:301
1888
  #: application/modules/Impactradius/ImpactradiusConfig.php:84
1889
+ #: application/modules/Kelkoo/KelkooConfig.php:161
1890
  #: application/modules/Optimisemedia/OptimisemediaConfig.php:136
1891
  #: application/modules/PayTM/PayTMConfig.php:69
1892
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:103
1901
  #: application/modules/CjProducts/CjProductsConfig.php:106
1902
  #: application/modules/Ebay/EbayConfig.php:291
1903
  #: application/modules/Impactradius/ImpactradiusConfig.php:94
1904
+ #: application/modules/Kelkoo/KelkooConfig.php:171
1905
  #: application/modules/Optimisemedia/OptimisemediaConfig.php:146
1906
  #: application/modules/PayTM/PayTMConfig.php:79
1907
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:113
1924
  #: application/modules/GoogleBooks/GoogleBooksConfig.php:84
1925
  #: application/modules/GoogleNews/GoogleNewsConfig.php:59
1926
  #: application/modules/Impactradius/ImpactradiusConfig.php:121
1927
+ #: application/modules/Kelkoo/KelkooConfig.php:224
1928
  #: application/modules/Linkshare/LinkshareConfig.php:127
1929
  #: application/modules/Optimisemedia/OptimisemediaConfig.php:170
1930
  #: application/modules/Ozon/OzonConfig.php:185
1955
  #: application/modules/GoogleBooks/GoogleBooksConfig.php:85
1956
  #: application/modules/GoogleNews/GoogleNewsConfig.php:60
1957
  #: application/modules/Impactradius/ImpactradiusConfig.php:122
1958
+ #: application/modules/Kelkoo/KelkooConfig.php:225
1959
  #: application/modules/Linkshare/LinkshareConfig.php:128
1960
  #: application/modules/Optimisemedia/OptimisemediaConfig.php:171
1961
  #: application/modules/Ozon/OzonConfig.php:186
2000
  #: application/modules/Ebay/views/search_panel.php:1
2001
  #: application/modules/Ebay/views/update_panel.php:1
2002
  #: application/modules/Impactradius/views/search_panel.php:1
2003
+ #: application/modules/Kelkoo/views/search_panel.php:1
2004
+ #: application/modules/Kelkoo/views/update_panel.php:1
2005
  #: application/modules/Optimisemedia/views/search_panel.php:1
2006
  #: application/modules/PayTM/views/search_panel.php:1
2007
  #: application/modules/TradedoublerProducts/views/search_panel.php:1
2025
  #: application/modules/Ebay/views/search_panel.php:2
2026
  #: application/modules/Ebay/views/update_panel.php:2
2027
  #: application/modules/Impactradius/views/search_panel.php:2
2028
+ #: application/modules/Kelkoo/views/search_panel.php:2
2029
+ #: application/modules/Kelkoo/views/update_panel.php:2
2030
  #: application/modules/Optimisemedia/views/search_panel.php:2
2031
  #: application/modules/PayTM/views/search_panel.php:2
2032
  #: application/modules/TradedoublerProducts/views/search_panel.php:2
2063
  #: application/modules/Flickr/FlickrConfig.php:57
2064
  #: application/modules/GdeSlon/GdeSlonConfig.php:77
2065
  #: application/modules/GoogleBooks/GoogleBooksConfig.php:95
2066
+ #: application/modules/Kelkoo/KelkooConfig.php:116
2067
  #: application/modules/Linkshare/LinkshareConfig.php:79
2068
  #: application/modules/Ozon/OzonConfig.php:62
2069
  #: application/modules/PayTM/PayTMConfig.php:89
2082
  #: application/modules/Envato/EnvatoConfig.php:144
2083
  #: application/modules/Envato/EnvatoConfig.php:162
2084
  #: application/modules/GdeSlon/GdeSlonConfig.php:81
2085
+ #: application/modules/Kelkoo/KelkooConfig.php:132
2086
  #: application/modules/Linkshare/LinkshareConfig.php:83
2087
  #: application/modules/PayTM/PayTMConfig.php:93
2088
  #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:147
2216
  msgstr ""
2217
 
2218
  #: application/modules/Aliexpress/AliexpressConfig.php:235
2219
+ #: application/modules/Viglink/ViglinkConfig.php:97
2220
  msgid "Price low to high"
2221
  msgstr ""
2222
 
2223
  #: application/modules/Aliexpress/AliexpressConfig.php:236
2224
+ #: application/modules/Viglink/ViglinkConfig.php:98
2225
  msgid "Price high to low"
2226
  msgstr ""
2227
 
2239
  msgstr ""
2240
 
2241
  #: application/modules/Aliexpress/AliexpressConfig.php:240
2242
+ #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:152
2243
  #: application/modules/SkimlinksCoupons/views/search_panel.php:6
2244
  msgid "Sales"
2245
  msgstr ""
2264
  #: application/modules/Amazon/views/update_panel.php:1
2265
  #: application/modules/Bolcom/views/update_panel.php:1
2266
  #: application/modules/Ebay/views/update_panel.php:1
2267
+ #: application/modules/Kelkoo/views/update_panel.php:1
2268
  #: application/modules/Viglink/views/update_panel.php:1
2269
  #: application/modules/Walmart/views/update_panel.php:1
2270
  msgid "Min. price for automatic update"
2274
  #: application/modules/Amazon/views/update_panel.php:2
2275
  #: application/modules/Bolcom/views/update_panel.php:2
2276
  #: application/modules/Ebay/views/update_panel.php:2
2277
+ #: application/modules/Kelkoo/views/update_panel.php:2
2278
  #: application/modules/Viglink/views/update_panel.php:2
2279
  #: application/modules/Walmart/views/update_panel.php:2
2280
  msgid "Max. price for automatic update"
2387
  msgstr ""
2388
 
2389
  #: application/modules/Amazon/AmazonConfig.php:166
2390
+ #: application/modules/Kelkoo/KelkooConfig.php:162
2391
  msgid "Example, 8.99"
2392
  msgstr ""
2393
 
2394
  #: application/modules/Amazon/AmazonConfig.php:176
2395
+ #: application/modules/Kelkoo/KelkooConfig.php:172
2396
  msgid "Example, 98.50"
2397
  msgstr ""
2398
 
2416
  #: application/modules/GoogleImages/GoogleImagesConfig.php:114
2417
  #: application/modules/GoogleImages/GoogleImagesConfig.php:127
2418
  #: application/modules/GoogleImages/GoogleImagesConfig.php:147
2419
+ #: application/modules/Kelkoo/KelkooConfig.php:185
2420
  #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:71
2421
  msgid "Any"
2422
  msgstr ""
2610
  #: application/modules/GoogleImages/GoogleImagesConfig.php:73
2611
  #: application/modules/Impactradius/ImpactradiusConfig.php:58
2612
  #: application/modules/Impactradius/ImpactradiusConfig.php:73
2613
+ #: application/modules/Kelkoo/KelkooConfig.php:96
2614
+ #: application/modules/Kelkoo/KelkooConfig.php:111
2615
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:44
2616
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:59
2617
  #: application/modules/Pepperjam/PepperjamConfig.php:66
2620
  #: application/modules/QwantImages/QwantImagesConfig.php:46
2621
  #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:46
2622
  #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:62
2623
+ #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:91
2624
+ #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:108
2625
  #: application/modules/Udemy/UdemyConfig.php:74
2626
  #: application/modules/Udemy/UdemyConfig.php:89
2627
  #: application/modules/Walmart/WalmartConfig.php:58
2751
  #: application/modules/Pixabay/PixabayConfig.php:85
2752
  #: application/modules/Pixabay/PixabayConfig.php:99
2753
  #: application/modules/Pixabay/PixabayConfig.php:112
2754
+ #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:140
2755
+ #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:148
2756
+ #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:163
2757
  #: application/modules/SkimlinksCoupons/views/search_panel.php:2
2758
  #: application/modules/Udemy/UdemyConfig.php:157
2759
  #: application/modules/Udemy/UdemyConfig.php:204
2988
  #: application/modules/GoogleImages/GoogleImagesConfig.php:43
2989
  #: application/modules/Impactradius/ImpactradiusConfig.php:29
2990
  #: application/modules/Impactradius/ImpactradiusConfig.php:43
2991
+ #: application/modules/Kelkoo/KelkooConfig.php:29
2992
+ #: application/modules/Kelkoo/KelkooConfig.php:43
2993
+ #: application/modules/Kelkoo/KelkooConfig.php:81
2994
  #: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:29
2995
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:29
2996
  #: application/modules/Pepperjam/PepperjamConfig.php:30
3019
 
3020
  #: application/modules/Bolcom/BolcomConfig.php:63
3021
  #: application/modules/GoogleImages/GoogleImagesConfig.php:63
3022
+ #: application/modules/Kelkoo/KelkooConfig.php:101
3023
  #: application/modules/LomadeeCoupons/LomadeeCouponsConfig.php:46
3024
  #: application/modules/LomadeeProducts/LomadeeProductsConfig.php:49
3025
+ #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:98
3026
  msgid "Results for updates"
3027
  msgstr ""
3028
 
3032
 
3033
  #: application/modules/Bolcom/BolcomConfig.php:87
3034
  #: application/modules/GoogleBooks/GoogleBooksConfig.php:67
3035
+ #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:129
3036
+ #: application/modules/Viglink/ViglinkConfig.php:80
3037
  msgid "Country"
3038
  msgstr ""
3039
 
3051
 
3052
  #: application/modules/Bolcom/BolcomConfig.php:97
3053
  #: application/modules/Impactradius/ImpactradiusConfig.php:104
3054
+ #: application/modules/SkimlinksCoupons/SkimlinksCouponsConfig.php:138
3055
  #: application/modules/Udemy/UdemyConfig.php:119
3056
  #: application/modules/Walmart/WalmartConfig.php:78
3057
  msgid "Category"
3076
  msgstr ""
3077
 
3078
  #: application/modules/Bolcom/BolcomConfig.php:150
3079
+ #: application/modules/Kelkoo/KelkooConfig.php:120
3080
  #: application/modules/Ozon/OzonConfig.php:80
3081
  msgid "Price ascending"
3082
  msgstr ""
3083
 
3084
  #: application/modules/Bolcom/BolcomConfig.php:151
3085
+ #: application/modules/Kelkoo/KelkooConfig.php:121
3086
  #: application/modules/Ozon/OzonConfig.php:81
3087
  msgid "Price descending"
3088
  msgstr ""
3112
  msgstr ""
3113
 
3114
  #: application/modules/Bolcom/BolcomModule.php:26
3115
+ #: application/modules/GdeSlon/GdeSlonModule.php:27
3116
  #: application/modules/Impactradius/ImpactradiusModule.php:27
3117
+ #: application/modules/Kelkoo/KelkooModule.php:28
3118
  #: application/modules/Pepperjam/PepperjamModule.php:27
3119
  #: application/modules/TradetrackerProducts/TradetrackerProductsModule.php:26
3120
  #: application/modules/Walmart/WalmartModule.php:28
3714
  #: application/modules/Flickr/views/search_panel.php:9
3715
  #: application/modules/GoogleBooks/GoogleBooksConfig.php:99
3716
  #: application/modules/Ozon/OzonConfig.php:66
3717
+ #: application/modules/Viglink/ViglinkConfig.php:96
3718
  #: application/modules/Walmart/WalmartConfig.php:92
3719
  #: application/modules/Youtube/YoutubeConfig.php:63
3720
  #: application/modules/Youtube/views/search_panel.php:9
3916
  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."
3917
  msgstr ""
3918