Content Egg - Version 2.8.1

Version Description

Download this release

Release Info

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

Code changes from version 2.8.0 to 2.8.1

Files changed (191) hide show
  1. application/Plugin.php +1 -1
  2. {trunk/application → application}/PriceAlert.php +0 -0
  3. {trunk/application → application}/helpers/CurrencyHelper.php +0 -0
  4. {trunk/application → application}/models/PriceAlertModel.php +0 -0
  5. {trunk/application → application}/models/PriceHistoryModel.php +0 -0
  6. {trunk/application → application}/modules/AE/templates/data_price_tracker_alert.php +0 -0
  7. {trunk/application → application}/modules/AdmitadProducts/templates/data_price_tracker_alert.php +0 -0
  8. {trunk/application → application}/modules/Amazon/templates/data_price_tracker_alert.php +0 -0
  9. {trunk/application → application}/templates/blocks/price_alert_inline.php +0 -0
  10. {trunk/application → application}/templates/blocks/price_history.php +0 -0
  11. {trunk/application → application}/templates/data_price_tracker_alert.php +0 -0
  12. content-egg.php +1 -1
  13. readme.txt +1 -1
  14. {trunk/res → res}/js/morris.js/README.md +0 -0
  15. {trunk/res → res}/js/morris.js/morris.min.css +0 -0
  16. {trunk/res → res}/js/morris.js/morris.min.js +0 -0
  17. {trunk/res → res}/js/morris.js/raphael.min.js +0 -0
  18. {trunk/res → res}/js/price_alert.js +0 -0
  19. trunk/.htaccess +0 -7
  20. trunk/application/AutoblogScheduler.php +0 -66
  21. trunk/application/BlockShortcode.php +0 -127
  22. trunk/application/EggShortcode.php +0 -104
  23. trunk/application/Installer.php +0 -141
  24. trunk/application/LocalRedirect.php +0 -110
  25. trunk/application/ModuleUpdater.php +0 -157
  26. trunk/application/ModuleViewer.php +0 -138
  27. trunk/application/Plugin.php +0 -163
  28. trunk/application/admin/AdminNotice.php +0 -98
  29. trunk/application/admin/AeIntegrationConfig.php +0 -70
  30. trunk/application/admin/AutoblogController.php +0 -352
  31. trunk/application/admin/AutoblogTable.php +0 -98
  32. trunk/application/admin/EggMetabox.php +0 -253
  33. trunk/application/admin/GeneralConfig.php +0 -165
  34. trunk/application/admin/ImportExportController.php +0 -71
  35. trunk/application/admin/MyListTable.php +0 -196
  36. trunk/application/admin/PluginAdmin.php +0 -113
  37. trunk/application/admin/PrefillController.php +0 -191
  38. trunk/application/admin/index.php +0 -1
  39. trunk/application/admin/views/_metabox_autoblog.php +0 -351
  40. trunk/application/admin/views/_metabox_results.php +0 -19
  41. trunk/application/admin/views/_metabox_search_results.php +0 -16
  42. trunk/application/admin/views/_metabox_search_results_images.php +0 -7
  43. trunk/application/admin/views/_promo_box.php +0 -66
  44. trunk/application/admin/views/ae_integration.php +0 -35
  45. trunk/application/admin/views/autoblog_edit.php +0 -61
  46. trunk/application/admin/views/autoblog_index.php +0 -57
  47. trunk/application/admin/views/import_export.php +0 -37
  48. trunk/application/admin/views/metabox_general.php +0 -45
  49. trunk/application/admin/views/metabox_module.php +0 -86
  50. trunk/application/admin/views/prefill.php +0 -92
  51. trunk/application/admin/views/settings.php +0 -87
  52. trunk/application/components/AffiliateParserModule.php +0 -48
  53. trunk/application/components/AffiliateParserModuleConfig.php +0 -51
  54. trunk/application/components/BlockTemplateManager.php +0 -66
  55. trunk/application/components/Config.php +0 -368
  56. trunk/application/components/Content.php +0 -23
  57. trunk/application/components/ContentCoupon.php +0 -17
  58. trunk/application/components/ContentManager.php +0 -223
  59. trunk/application/components/ContentProduct.php +0 -31
  60. trunk/application/components/EggAutoblogger.php +0 -86
  61. trunk/application/components/ExtraData.php +0 -37
  62. trunk/application/components/FeaturedImage.php +0 -129
  63. trunk/application/components/LinkHandler.php +0 -72
  64. trunk/application/components/Module.php +0 -211
  65. trunk/application/components/ModuleApi.php +0 -84
  66. trunk/application/components/ModuleConfig.php +0 -76
  67. trunk/application/components/ModuleManager.php +0 -309
  68. trunk/application/components/ModuleTemplateManager.php +0 -66
  69. trunk/application/components/ParserModule.php +0 -99
  70. trunk/application/components/ParserModuleConfig.php +0 -95
  71. trunk/application/components/Shortcoded.php +0 -51
  72. trunk/application/components/TemplateManager.php +0 -204
  73. trunk/application/components/index.php +0 -1
  74. trunk/application/helpers/ArrayHelper.php +0 -66
  75. trunk/application/helpers/FormValidator.php +0 -560
  76. trunk/application/helpers/ImageHelper.php +0 -93
  77. trunk/application/helpers/InputHelper.php +0 -31
  78. trunk/application/helpers/TemplateHelper.php +0 -351
  79. trunk/application/helpers/TextHelper.php +0 -406
  80. trunk/application/helpers/index.php +0 -1
  81. trunk/application/index.php +0 -1
  82. trunk/application/libs/ParserClient.php +0 -199
  83. trunk/application/libs/RestClient.php +0 -259
  84. trunk/application/libs/WpHttpClient.php +0 -460
  85. trunk/application/libs/admitad/AdmitadProducts.php +0 -60
  86. trunk/application/libs/affilinet/AffilinetCoupons.php +0 -101
  87. trunk/application/libs/amazon/AmazonProduct.php +0 -415
  88. trunk/application/libs/bing/BingSearch.php +0 -143
  89. trunk/application/libs/cj/CjLinksRest.php +0 -52
  90. trunk/application/libs/google/FreebaseRest.php +0 -133
  91. trunk/application/libs/google/ImagesSearch.php +0 -75
  92. trunk/application/libs/google/YouTubeSearch.php +0 -82
  93. trunk/application/libs/index.php +0 -1
  94. trunk/application/libs/pixabay/PixabaySearch.php +0 -61
  95. trunk/application/libs/rss/RssParser.php +0 -57
  96. trunk/application/models/AutoblogModel.php +0 -346
  97. trunk/application/models/Model.php +0 -225
  98. trunk/application/modules/AE/AEConfig.php +0 -76
  99. trunk/application/modules/AE/AEModule.php +0 -178
  100. trunk/application/modules/AE/ExtraDataAE.php +0 -21
  101. trunk/application/modules/AE/index.php +0 -1
  102. trunk/application/modules/AE/templates/data_grid.php +0 -65
  103. trunk/application/modules/AE/templates/data_item.php +0 -110
  104. trunk/application/modules/AE/templates/data_list.php +0 -50
  105. trunk/application/modules/AdmitadProducts/AdmitadProductsConfig.php +0 -198
  106. trunk/application/modules/AdmitadProducts/AdmitadProductsModule.php +0 -159
  107. trunk/application/modules/AdmitadProducts/ExtraDataAdmitadProducts.php +0 -21
  108. trunk/application/modules/AdmitadProducts/index.php +0 -1
  109. trunk/application/modules/AdmitadProducts/templates/data_grid.php +0 -59
  110. trunk/application/modules/AdmitadProducts/templates/data_item.php +0 -77
  111. trunk/application/modules/AdmitadProducts/templates/data_list.php +0 -49
  112. trunk/application/modules/AffilinetCoupons/AffilinetCouponsConfig.php +0 -172
  113. trunk/application/modules/AffilinetCoupons/AffilinetCouponsModule.php +0 -156
  114. trunk/application/modules/AffilinetCoupons/ExtraDataAffilinetCoupons.php +0 -24
  115. trunk/application/modules/AffilinetCoupons/index.php +0 -1
  116. trunk/application/modules/AffilinetCoupons/templates/data_coupons.php +0 -53
  117. trunk/application/modules/AffilinetCoupons/views/search_panel.php +0 -15
  118. trunk/application/modules/Amazon/AmazonConfig.php +0 -348
  119. trunk/application/modules/Amazon/AmazonModule.php +0 -598
  120. trunk/application/modules/Amazon/ExtraAmazonCustomerReviews.php +0 -21
  121. trunk/application/modules/Amazon/ExtraDataAmazon.php +0 -151
  122. trunk/application/modules/Amazon/index.php +0 -1
  123. trunk/application/modules/Amazon/templates/data_compare.php +0 -260
  124. trunk/application/modules/Amazon/templates/data_grid.php +0 -69
  125. trunk/application/modules/Amazon/templates/data_item.php +0 -142
  126. trunk/application/modules/Amazon/templates/data_list.php +0 -60
  127. trunk/application/modules/Amazon/views/search_panel.php +0 -32
  128. trunk/application/modules/CjLinks/CjLinksConfig.php +0 -317
  129. trunk/application/modules/CjLinks/CjLinksModule.php +0 -184
  130. trunk/application/modules/CjLinks/ExtraDataCjLinks.php +0 -32
  131. trunk/application/modules/CjLinks/index.php +0 -1
  132. trunk/application/modules/CjLinks/templates/data_universal.php +0 -87
  133. trunk/application/modules/CjLinks/views/search_panel.php +0 -18
  134. trunk/application/modules/CjLinks/views/search_results.php +0 -20
  135. trunk/application/modules/Freebase/ExtraDataFreebase.php +0 -27
  136. trunk/application/modules/Freebase/FreebaseConfig.php +0 -88
  137. trunk/application/modules/Freebase/FreebaseModule.php +0 -181
  138. trunk/application/modules/Freebase/index.php +0 -1
  139. trunk/application/modules/Freebase/templates/data_simple.php +0 -37
  140. trunk/application/modules/GoogleImages/ExtraDataGoogleImages.php +0 -16
  141. trunk/application/modules/GoogleImages/GoogleImagesConfig.php +0 -173
  142. trunk/application/modules/GoogleImages/GoogleImagesModule.php +0 -137
  143. trunk/application/modules/GoogleImages/index.php +0 -1
  144. trunk/application/modules/GoogleImages/js/module.js +0 -6
  145. trunk/application/modules/GoogleImages/templates/data_image.php +0 -20
  146. trunk/application/modules/GoogleImages/templates/data_justified_gallery.php +0 -48
  147. trunk/application/modules/GoogleImages/templates/data_simple.php +0 -27
  148. trunk/application/modules/GoogleImages/views/search_panel.php +0 -16
  149. trunk/application/modules/Pixabay/ExtraDataPixabay.php +0 -29
  150. trunk/application/modules/Pixabay/PixabayConfig.php +0 -175
  151. trunk/application/modules/Pixabay/PixabayModule.php +0 -117
  152. trunk/application/modules/Pixabay/index.php +0 -1
  153. trunk/application/modules/Pixabay/templates/data_image.php +0 -20
  154. trunk/application/modules/Pixabay/templates/data_justified_gallery.php +0 -47
  155. trunk/application/modules/RelatedKeywords/RelatedKeywordsConfig.php +0 -72
  156. trunk/application/modules/RelatedKeywords/RelatedKeywordsModule.php +0 -87
  157. trunk/application/modules/RelatedKeywords/index.php +0 -1
  158. trunk/application/modules/RelatedKeywords/templates/data_simple.php +0 -18
  159. trunk/application/modules/RssFetcher/ExtraDataRssFetcher.php +0 -18
  160. trunk/application/modules/RssFetcher/RssFetcherConfig.php +0 -82
  161. trunk/application/modules/RssFetcher/RssFetcherModule.php +0 -164
  162. trunk/application/modules/RssFetcher/index.php +0 -1
  163. trunk/application/modules/RssFetcher/templates/data_simple.php +0 -24
  164. trunk/application/modules/Youtube/ExtraDataYoutube.php +0 -19
  165. trunk/application/modules/Youtube/YoutubeConfig.php +0 -101
  166. trunk/application/modules/Youtube/YoutubeModule.php +0 -132
  167. trunk/application/modules/Youtube/index.php +0 -1
  168. trunk/application/modules/Youtube/js/module.js +0 -60
  169. trunk/application/modules/Youtube/templates/data_responsive_embed.php +0 -24
  170. trunk/application/modules/Youtube/templates/data_simple.php +0 -26
  171. trunk/application/modules/Youtube/templates/data_tile.php +0 -24
  172. trunk/application/modules/Youtube/views/search_panel.php +0 -13
  173. trunk/application/modules/Youtube/views/search_results.php +0 -14
  174. trunk/application/modules/index.php +0 -1
  175. trunk/application/vendor/CVarDumper.php +0 -142
  176. trunk/application/vendor/CrawlerDetect.php +0 -538
  177. trunk/application/vendor/index.php +0 -1
  178. trunk/content-egg.php +0 -35
  179. trunk/index.php +0 -1
  180. trunk/languages/content-egg-en_US.mo +0 -0
  181. trunk/languages/content-egg-en_US.po +0 -4060
  182. trunk/languages/content-egg.pot +0 -3400
  183. trunk/languages/index.php +0 -2
  184. trunk/languages/tpl/content-egg-tpl-DE.mo +0 -0
  185. trunk/languages/tpl/content-egg-tpl-DE.pot +0 -392
  186. trunk/languages/tpl/content-egg-tpl-ES.mo +0 -0
  187. trunk/languages/tpl/content-egg-tpl-ES.po +0 -396
  188. trunk/languages/tpl/content-egg-tpl-IT.mo +0 -0
  189. trunk/languages/tpl/content-egg-tpl-RU.mo +0 -0
  190. trunk/languages/tpl/content-egg-tpl-RU.po +0 -653
  191. trunk/languages/tpl/content-egg-tpl.pot +0 -540
application/Plugin.php CHANGED
@@ -14,7 +14,7 @@ use ContentEgg\application\helpers\CurrencyHelper;
14
  */
15
  class Plugin {
16
 
17
- const version = '2.8.0';
18
  const db_version = 22;
19
  const wp_requires = '4.2.2';
20
  const slug = 'content-egg';
14
  */
15
  class Plugin {
16
 
17
+ const version = '2.8.1';
18
  const db_version = 22;
19
  const wp_requires = '4.2.2';
20
  const slug = 'content-egg';
{trunk/application → application}/PriceAlert.php RENAMED
File without changes
{trunk/application → application}/helpers/CurrencyHelper.php RENAMED
File without changes
{trunk/application → application}/models/PriceAlertModel.php RENAMED
File without changes
{trunk/application → application}/models/PriceHistoryModel.php RENAMED
File without changes
{trunk/application → application}/modules/AE/templates/data_price_tracker_alert.php RENAMED
File without changes
{trunk/application → application}/modules/AdmitadProducts/templates/data_price_tracker_alert.php RENAMED
File without changes
{trunk/application → application}/modules/Amazon/templates/data_price_tracker_alert.php RENAMED
File without changes
{trunk/application → application}/templates/blocks/price_alert_inline.php RENAMED
File without changes
{trunk/application → application}/templates/blocks/price_history.php RENAMED
File without changes
{trunk/application → application}/templates/data_price_tracker_alert.php RENAMED
File without changes
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: 2.8.0
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: 2.8.1
10
  Author: keywordrush.com
11
  Author URI: http://www.keywordrush.com
12
  Text Domain: content-egg
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: keywordrush,koleksii,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, otimisemedia, tradedoubler, flipkart, paytm, price alert, tracker
4
  Requires at least: 4.2.2
5
  Tested up to: 4.7
6
- Stable tag: 2.8.0
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
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, otimisemedia, tradedoubler, flipkart, paytm, price alert, tracker
4
  Requires at least: 4.2.2
5
  Tested up to: 4.7
6
+ Stable tag: 2.8.1
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
{trunk/res → res}/js/morris.js/README.md RENAMED
File without changes
{trunk/res → res}/js/morris.js/morris.min.css RENAMED
File without changes
{trunk/res → res}/js/morris.js/morris.min.js RENAMED
File without changes
{trunk/res → res}/js/morris.js/raphael.min.js RENAMED
File without changes
{trunk/res → res}/js/price_alert.js RENAMED
File without changes
trunk/.htaccess DELETED
@@ -1,7 +0,0 @@
1
- Order Deny,Allow
2
- Deny from All
3
-
4
- <FilesMatch ".(js|css|gif|jpe?g|png)$">
5
- order allow,deny
6
- allow from all
7
- </FilesMatch>
 
 
 
 
 
 
 
trunk/application/AutoblogScheduler.php DELETED
@@ -1,66 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application;
4
-
5
- use ContentEgg\application\models\AutoblogModel;
6
-
7
- /**
8
- * AutoblogScheduler 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 AutoblogScheduler {
15
-
16
- const CRON_TAG = 'cegg_autoblog_cron';
17
- const AUTOBLOG_LIMIT = 1;
18
-
19
- public static function initAction()
20
- {
21
- \add_action(self::CRON_TAG, array('\\ContentEgg\\application\\AutoblogScheduler', 'runAutoblog'));
22
- //\add_action(self::CRON_TAG, array('self', 'runAutoblog'));
23
- }
24
-
25
- public static function addScheduleEvent($check_autoblogs = false)
26
- {
27
- // active autoblog exists?
28
- if ($check_autoblogs)
29
- {
30
- $total_autoblogs = AutoblogModel::model()->count('status = 1');
31
- if (!$total_autoblogs)
32
- return;
33
- }
34
-
35
- if (!\wp_next_scheduled(self::CRON_TAG))
36
- {
37
- \wp_schedule_event(time() + 900, 'hourly', self::CRON_TAG);
38
- }
39
- }
40
-
41
- public static function clearScheduleEvent()
42
- {
43
- if (\wp_next_scheduled(self::CRON_TAG))
44
- {
45
- \wp_clear_scheduled_hook(self::CRON_TAG);
46
- }
47
- }
48
-
49
- public static function runAutoblog()
50
- {
51
- @set_time_limit(1200);
52
- $params = array(
53
- 'select' => 'id',
54
- 'where' => 'status = 1 AND (last_run IS NULL OR TIMESTAMPDIFF(SECOND, last_run, "' . current_time('mysql') . '") > run_frequency)',
55
- 'order' => 'last_run ASC',
56
- 'limit' => self::AUTOBLOG_LIMIT
57
- );
58
- $autoblogs = AutoblogModel::model()->findAll($params);
59
-
60
- foreach ($autoblogs as $autoblog)
61
- {
62
- AutoblogModel::model()->run($autoblog['id']);
63
- }
64
- }
65
-
66
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/BlockShortcode.php DELETED
@@ -1,127 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application;
4
-
5
- use ContentEgg\application\components\ModuleManager;
6
- use ContentEgg\application\components\BlockTemplateManager;
7
- use ContentEgg\application\components\Shortcoded;
8
- use ContentEgg\application\components\ContentManager;
9
-
10
- /**
11
- * BlockShortcode class file
12
- *
13
- * @author keywordrush.com <support@keywordrush.com>
14
- * @link http://www.keywordrush.com/
15
- * @copyright Copyright &copy; 2015 keywordrush.com
16
- */
17
- class BlockShortcode {
18
-
19
- const shortcode = 'content-egg-block';
20
-
21
- private static $instance = null;
22
-
23
- public static function getInstance()
24
- {
25
- if (self::$instance == null)
26
- self::$instance = new self;
27
- return self::$instance;
28
- }
29
-
30
- private function __construct()
31
- {
32
- \add_shortcode(self::shortcode, array($this, 'viewData'));
33
- }
34
-
35
- private function prepareAttr($atts)
36
- {
37
- $a = shortcode_atts(array(
38
- 'modules' => null,
39
- 'template' => '',
40
- 'post_id' => 0,
41
- ), $atts);
42
-
43
- if ($a['modules'])
44
- {
45
- $modules = explode(',', $a['modules']);
46
- $module_ids = array();
47
- foreach ($modules as $key => $module_id)
48
- {
49
- $module_id = trim($module_id);
50
- if (ModuleManager::getInstance()->isModuleActive($module_id))
51
- $module_ids[] = $module_id;
52
- }
53
- $a['modules'] = $module_ids;
54
- } else
55
- $a['modules'] = array();
56
-
57
- if ($a['template'])
58
- {
59
- $a['template'] = BlockTemplateManager::getInstance()->prepareShortcodeTempate($a['template']);
60
- }
61
- $a['post_id'] = (int) $a['post_id'];
62
-
63
- return $a;
64
- }
65
-
66
- public function viewData($atts, $content = "")
67
- {
68
- $a = $this->prepareAttr($atts);
69
-
70
- if (empty($a['post_id']))
71
- {
72
- global $post;
73
- $post_id = $post->ID;
74
- } else
75
- $post_id = $a['post_id'];
76
-
77
- $tpl_manager = BlockTemplateManager::getInstance();
78
- if (empty($a['template']) || !$tpl_manager->isTemplateExists($a['template']))
79
- return;
80
- else
81
- if (!$template_file = $tpl_manager->getViewPath($a['template']))
82
- return '';
83
-
84
- // Get supported modules for this tpl
85
- $headers = \get_file_data($template_file, array('module_ids' => 'Modules', 'module_types' => 'Module Types'));
86
- $supported_module_ids = array();
87
- if ($headers && !empty($headers['module_ids']))
88
- {
89
- $supported_module_ids = explode(',', $headers['module_ids']);
90
- $supported_module_ids = array_map('trim', $supported_module_ids);
91
- } elseif ($headers && !empty($headers['module_types']))
92
- {
93
- $module_types = explode(',', $headers['module_types']);
94
- $module_types = array_map('trim', $module_types);
95
- $supported_module_ids = ModuleManager::getInstance()->getParserModuleIdsByTypes($module_types, true);
96
- }
97
-
98
- // Module IDs from shortcode param. Validated.
99
- if ($a['modules'])
100
- $module_ids = $a['modules'];
101
- else
102
- $module_ids = ModuleManager::getInstance()->getParserModulesIdList(true);
103
-
104
- // Пересечение
105
- if ($supported_module_ids)
106
- {
107
- $module_ids = array_intersect($module_ids, $supported_module_ids);
108
- }
109
-
110
- // Get modules data
111
- $data = array();
112
- foreach ($module_ids as $module_id)
113
- {
114
- $module_data = ContentManager::getViewData($module_id, $post_id);
115
- if ($module_data)
116
- $data[$module_id] = $module_data;
117
-
118
- // shortcoded!
119
- Shortcoded::getInstance($post_id)->setShortcodedModule($module_id);
120
- }
121
- if (!$data)
122
- return;
123
-
124
- return $tpl_manager->render($a['template'], array('data' => $data, 'post_id' => $post_id));
125
- }
126
-
127
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/EggShortcode.php DELETED
@@ -1,104 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application;
4
-
5
- use ContentEgg\application\components\ModuleManager;
6
- use ContentEgg\application\components\ModuleTemplateManager;
7
- use ContentEgg\application\components\Shortcoded;
8
- use ContentEgg\application\helpers\TextHelper;
9
-
10
- /**
11
- * EggShortcode class file
12
- *
13
- * @author keywordrush.com <support@keywordrush.com>
14
- * @link http://www.keywordrush.com/
15
- * @copyright Copyright &copy; 2015 keywordrush.com
16
- */
17
- class EggShortcode {
18
-
19
- const shortcode = 'content-egg';
20
-
21
- private static $instance = null;
22
-
23
- //private $items = array();
24
- //private $item_pointer = array();
25
-
26
- public static function getInstance()
27
- {
28
- if (self::$instance == null)
29
- self::$instance = new self;
30
- return self::$instance;
31
- }
32
-
33
- private function __construct()
34
- {
35
- \add_shortcode(self::shortcode, array($this, 'viewData'));
36
- \add_filter('term_description', 'shortcode_unautop');
37
- \add_filter('term_description', 'do_shortcode');
38
- }
39
-
40
- private function prepareAttr($atts)
41
- {
42
- $a = shortcode_atts(array(
43
- 'module' => null,
44
- 'limit' => 0,
45
- 'offset' => 0,
46
- 'next' => 0,
47
- 'template' => '',
48
- 'locale' => '',
49
- 'title' => '',
50
- 'post_id' => 0,
51
- //'order' => 'asc',
52
- ), $atts);
53
- //$order_allowed = array('rand', 'title', 'price', 'manufacturer', 'in_stock', 'create_date', 'last_update', 'last_in_stock', 'shop_id');
54
-
55
- $a['next'] = (int) $a['next'];
56
- $a['limit'] = (int) $a['limit'];
57
- $a['offset'] = (int) $a['offset'];
58
- $a['module'] = TextHelper::clear($a['module']);
59
- $a['locale'] = TextHelper::clear($a['locale']);
60
- $a['title'] = sanitize_text_field($a['title']);
61
- $a['post_id'] = (int) $a['post_id'];
62
-
63
- if ($a['template'] && $a['module'])
64
- {
65
- $a['template'] = ModuleTemplateManager::getInstance($a['module'])->prepareShortcodeTempate($a['template']);
66
- } else
67
- $a['template'] = '';
68
- return $a;
69
- }
70
-
71
- public function viewData($atts, $content = "")
72
- {
73
- $a = $this->prepareAttr($atts);
74
-
75
- if (empty($a['module']))
76
- return;
77
-
78
- if (empty($a['post_id']))
79
- {
80
- global $post;
81
- $post_id = $post->ID;
82
- } else
83
- $post_id = $a['post_id'];
84
-
85
- $module_id = $a['module'];
86
- if (!ModuleManager::getInstance()->isModuleActive($module_id))
87
- return;
88
-
89
- Shortcoded::getInstance($post_id)->setShortcodedModule($module_id);
90
- return ModuleViewer::getInstance()->viewModuleData($module_id, $post_id, $a);
91
- }
92
-
93
- public static function arraySortByColumn(&$arr, $col, $dir = SORT_ASC)
94
- {
95
- $sort_col = array();
96
- foreach ($arr as $key => $row)
97
- {
98
- $sort_col[$key] = $row[$col];
99
- }
100
-
101
- array_multisort($sort_col, $dir, $arr);
102
- }
103
-
104
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/Installer.php DELETED
@@ -1,141 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application;
4
-
5
- use ContentEgg\application\Plugin;
6
- use ContentEgg\application\admin\LicConfig;
7
-
8
- /**
9
- * Installer class file
10
- *
11
- * @author keywordrush.com <support@keywordrush.com>
12
- * @link http://www.keywordrush.com/
13
- * @copyright Copyright &copy; 2015 keywordrush.com
14
- */
15
- class Installer {
16
-
17
- private static $instance = null;
18
-
19
- public static function getInstance()
20
- {
21
-
22
- if (self::$instance == null)
23
- self::$instance = new self;
24
-
25
- return self::$instance;
26
- }
27
-
28
- private function __construct()
29
- {
30
-
31
- if (!empty($GLOBALS['pagenow']) && $GLOBALS['pagenow'] == 'plugins.php')
32
- {
33
- \add_action('admin_init', array($this, 'requirements'), 0);
34
- }
35
-
36
- \add_action('admin_init', array($this, 'upgrade'));
37
- \add_action('admin_init', array($this, 'redirect_after_activation'));
38
- }
39
-
40
- static public function dbVesrion()
41
- {
42
- return Plugin::db_version;
43
- }
44
-
45
- public static function activate()
46
- {
47
- if (!\current_user_can('activate_plugins'))
48
- return;
49
-
50
- self::requirements();
51
-
52
- AutoblogScheduler::addScheduleEvent(true);
53
- \add_option(Plugin::slug . '_do_activation_redirect', true);
54
- self::upgradeTables();
55
- }
56
-
57
- public static function deactivate()
58
- {
59
- AutoblogScheduler::clearScheduleEvent();
60
- }
61
-
62
- public static function requirements()
63
- {
64
- $php_min_version = '5.3';
65
- $extensions = array(
66
- 'simplexml',
67
- 'mbstring',
68
- 'hash',
69
- );
70
-
71
- $errors = array();
72
- $name = get_file_data(\ContentEgg\PLUGIN_FILE, array('Plugin Name'), 'plugin');
73
-
74
- global $wp_version;
75
- if (version_compare(Plugin::wp_requires, $wp_version, '>'))
76
- $errors[] = sprintf('You are using Wordpress %s. <em>%s</em> requires at least <strong>Wordpress %s</strong>.', $wp_version, $name[0], Plugin::wp_requires);
77
-
78
- $php_current_version = phpversion();
79
- if (version_compare($php_min_version, $php_current_version, '>'))
80
- $errors[] = sprintf('PHP is installed on your server %s. <em>%s</em> requires at least <strong>PHP %s</strong>.', $php_current_version, $name[0], $php_min_version);
81
-
82
- foreach ($extensions as $extension)
83
- {
84
- if (!extension_loaded($extension))
85
- $errors[] = sprintf('Requires extension <strong>%s</strong>.', $extension);
86
- }
87
- if (!$errors)
88
- return;
89
- unset($_GET['activate']);
90
- \deactivate_plugins(\plugin_basename(\ContentEgg\PLUGIN_FILE));
91
- $e = sprintf('<div class="error"><p>%1$s</p><p><em>%2$s</em> ' . 'cannot be installed!' . '</p></div>', join('</p><p>', $errors), $name[0]);
92
- \wp_die($e);
93
- }
94
-
95
- public static function uninstall()
96
- {
97
- global $wpdb;
98
- if (!current_user_can('activate_plugins'))
99
- return;
100
-
101
- \delete_option(Plugin::slug . '_db_version');
102
- if (Plugin::isEnvato())
103
- \delete_option(Plugin::slug . '_env_install');
104
- if (Plugin::isPro())
105
- \delete_option(LicConfig::getInstance()->option_name());
106
- }
107
-
108
- public static function upgrade()
109
- {
110
- $db_version = \get_option(Plugin::slug . '_db_version');
111
- if ((int) $db_version >= (int) self::dbVesrion())
112
- return;
113
- self::upgradeTables();
114
- }
115
-
116
- private static function upgradeTables()
117
- {
118
- $models = array('AutoblogModel', 'PriceHistoryModel', 'PriceAlertModel');
119
- $sql = '';
120
- foreach ($models as $model)
121
- {
122
- $m = "\\ContentEgg\\application\\models\\" . $model;
123
- $sql .= $m::model()->getDump();
124
- $sql .= "\r\n";
125
- }
126
- require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
127
- dbDelta($sql);
128
-
129
- \update_option(Plugin::slug . '_db_version', self::dbVesrion());
130
- }
131
-
132
- public function redirect_after_activation()
133
- {
134
- if (\get_option(Plugin::slug . '_do_activation_redirect', false))
135
- {
136
- \delete_option(Plugin::slug . '_do_activation_redirect');
137
- \wp_redirect(\get_admin_url(\get_current_blog_id(), 'admin.php?page=' . Plugin::slug));
138
- }
139
- }
140
-
141
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/LocalRedirect.php DELETED
@@ -1,110 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application;
4
-
5
- use ContentEgg\application\helpers\InputHelper;
6
- use ContentEgg\application\components\ContentManager;
7
- use ContentEgg\application\components\ModuleManager;
8
-
9
- /**
10
- * LocalRedirect class file
11
- *
12
- * @author keywordrush.com <support@keywordrush.com>
13
- * @link http://www.keywordrush.com/
14
- * @copyright Copyright &copy; 2016 keywordrush.com
15
- */
16
- class LocalRedirect {
17
-
18
- const REDIRECT_PREFIX_PARSER = 'goce';
19
-
20
- public function __construct()
21
- {
22
- $this->initRedirect();
23
- }
24
-
25
- public static function initAction()
26
- {
27
- \add_action('template_redirect', array(__CLASS__, 'go'));
28
- }
29
-
30
- public static function go()
31
- {
32
- if (\get_option('permalink_structure'))
33
- {
34
- global $wp;
35
- if (preg_match("/" . self::REDIRECT_PREFIX_PARSER . "\/(.+?)$/", $wp->request, $match))
36
- $goce = $match[1];
37
- else
38
- $goce = '';
39
- } else
40
- $goce = InputHelper::get(self::REDIRECT_PREFIX_PARSER);
41
-
42
- if (!$goce)
43
- return;
44
-
45
- $goce_parts = explode('_', $goce);
46
-
47
- if (count($goce_parts) == 2)
48
- {
49
- $url = $goce_parts[0];
50
- $code = $goce_parts[1];
51
- } elseif (count($goce_parts) == 3)
52
- {
53
- $url = $goce_parts[1];
54
- $code = $goce_parts[2];
55
- } else
56
- self::send404();
57
-
58
- if ($code != substr(md5($url), 0, 3))
59
- self::send404();
60
-
61
- $url = self::base64_url_decode($url);
62
- \wp_redirect(esc_url_raw($url), 301);
63
- exit;
64
- }
65
-
66
- public static function createRedirectUrl($url, $title, $prefix)
67
- {
68
- if (\get_option('permalink_structure'))
69
- $path = $prefix . '/';
70
- else
71
- $path = '?' . $prefix . '=';
72
-
73
- $r_url = self::base64_url_encode($url);
74
- $secure = substr(md5($r_url), 0, 3);
75
- if ($title)
76
- {
77
- $title = str_replace(' ', '-', trim($title));
78
- $title = preg_replace('/[^a-z0-9A-Z\-]/', '', $title);
79
- $title = trim($title, '-');
80
- $title = explode('-', $title, 4);
81
- $title = array_slice($title, 0, 3);
82
- $title = join('-', $title);
83
- $r_url = $title . '_' . $r_url;
84
- }
85
- $r_url .= '_' . $secure;
86
- $path .= $r_url;
87
-
88
- return \get_site_url(\get_current_blog_id(), $path);
89
- }
90
-
91
- public static function send404()
92
- {
93
- global $wp_query;
94
- $wp_query->set_404();
95
- \status_header(404);
96
- include( \get_query_template('404') );
97
- exit;
98
- }
99
-
100
- public static function base64_url_encode($input)
101
- {
102
- return strtr(base64_encode($input), '+/=', '-~,');
103
- }
104
-
105
- public static function base64_url_decode($input)
106
- {
107
- return base64_decode(strtr($input, '-~,', '+/='));
108
- }
109
-
110
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/ModuleUpdater.php DELETED
@@ -1,157 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application;
4
-
5
- use ContentEgg\application\components\ModuleManager;
6
- use ContentEgg\application\components\ContentManager;
7
- use ContentEgg\application\admin\GeneralConfig;
8
-
9
- /**
10
- * ModuleUpdater class file
11
- *
12
- * @author keywordrush.com <support@keywordrush.com>
13
- * @link http://www.keywordrush.com/
14
- * @copyright Copyright &copy; 2015 keywordrush.com
15
- */
16
- class ModuleUpdater {
17
-
18
- private static $instance = null;
19
-
20
- public static function getInstance()
21
- {
22
- if (self::$instance == null)
23
- self::$instance = new self;
24
-
25
- return self::$instance;
26
- }
27
-
28
- private function __construct()
29
- {
30
-
31
- }
32
-
33
- public function init()
34
- {
35
- if (GeneralConfig::getInstance()->option('filter_bots'))
36
- {
37
- if (!class_exists('\Jaybizzle\CrawlerDetect'))
38
- require_once \ContentEgg\PLUGIN_PATH . 'application/vendor/CrawlerDetect.php';
39
-
40
- $CrawlerDetect = new \Jaybizzle\CrawlerDetect\CrawlerDetect();
41
- // Check the user agent of the current 'visitor'
42
- if ($CrawlerDetect->isCrawler())
43
- {
44
- // true if crawler user agent detected
45
- return;
46
- }
47
- }
48
-
49
- // priority = 10 because ModuleViewer added with a priority of 12
50
- // & do_shortcode() is registered as a default filter on 'the_content' with a priority of 11.
51
- \add_filter('the_content', array($this, 'update'), 10);
52
- }
53
-
54
- public function update($content)
55
- {
56
- if (!is_single() && !is_page())
57
- return $content;
58
-
59
- $this->updateByKeyword();
60
- $this->updateItems();
61
- return $content;
62
- }
63
-
64
- private function updateByKeyword()
65
- {
66
- global $post;
67
-
68
- foreach (ModuleManager::getInstance()->getModules(true) as $module)
69
- {
70
- if (!$module->isAffiliateParser())
71
- continue;
72
-
73
- $ttl = $module->config('ttl');
74
- if (!$ttl)
75
- continue;
76
-
77
- $keyword = \get_post_meta($post->ID, ContentManager::META_PREFIX_KEYWORD . $module->getId(), true);
78
- if (!$keyword)
79
- continue;
80
-
81
- $last_update = (int) \get_post_meta($post->ID, ContentManager::META_PREFIX_LAST_BYKEYWORD_UPDATE . $module->getId(), true);
82
-
83
- if ($last_update && time() - $last_update < $ttl)
84
- continue;
85
-
86
- // update time in any case...
87
- ContentManager::touchUpdateTime($post->ID, $module->getId());
88
-
89
- try
90
- {
91
- $data = $module->doRequest($keyword, array(), true);
92
- // nodata!
93
- if (!$data)
94
- {
95
- //ContentManager::touchUpdateTime($post->ID, $module->getId());
96
- continue;
97
- }
98
- } catch (\Exception $e)
99
- {
100
- // error
101
- //ContentManager::touchUpdateTime($post->ID, $module->getId());
102
- continue;
103
- }
104
-
105
- $data = array_map(array('self', 'object2Array'), $data);
106
- ContentManager::saveData($data, $module->getId(), $post->ID);
107
- }
108
- }
109
-
110
- private function updateItems()
111
- {
112
- global $post;
113
- foreach (ModuleManager::getInstance()->getModules(true) as $module)
114
- {
115
- if (!$module->isAffiliateParser() || !$module->isItemsUpdateAvailable())
116
- continue;
117
-
118
- $ttl_items = $module->config('ttl_items');
119
- if (!$ttl_items)
120
- continue;
121
-
122
- $last_items_update = (int) \get_post_meta($post->ID, ContentManager::META_PREFIX_LAST_ITEMS_UPDATE . $module->getId(), true);
123
-
124
- if (!$last_items_update || time() - $last_items_update < $ttl_items)
125
- continue;
126
-
127
- $items = ContentManager::getData($post->ID, $module->getId());
128
- if (!$items)
129
- continue;
130
-
131
- try
132
- {
133
- $updated_data = $module->doRequestItems($items);
134
- } catch (\Exception $e)
135
- {
136
- // error
137
- ContentManager::touchUpdateItemsTime($post->ID, $module->getId());
138
- continue;
139
- }
140
-
141
- // save & update time
142
- ContentManager::saveData($updated_data, $module->getId(), $post->ID);
143
- ContentManager::touchUpdateItemsTime($post->ID, $module->getId());
144
- }
145
- }
146
-
147
- /**
148
- * Full depth recursive conversion to array
149
- * @param type $object
150
- * @return array
151
- */
152
- public static function object2Array($object)
153
- {
154
- return json_decode(json_encode($object), true);
155
- }
156
-
157
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/ModuleViewer.php DELETED
@@ -1,138 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application;
4
-
5
- use ContentEgg\application\components\ModuleManager;
6
- use ContentEgg\application\components\ContentManager;
7
- use ContentEgg\application\components\ModuleTemplateManager;
8
- use ContentEgg\application\components\Shortcoded;
9
- use ContentEgg\application\helpers\ArrayHelper;
10
-
11
- /**
12
- * ModuleViewer class file
13
- *
14
- * @author keywordrush.com <support@keywordrush.com>
15
- * @link http://www.keywordrush.com/
16
- * @copyright Copyright &copy; 2015 keywordrush.com
17
- */
18
- class ModuleViewer {
19
-
20
- private static $instance = null;
21
- private $module_data_pointer = array();
22
-
23
- public static function getInstance()
24
- {
25
- if (self::$instance == null)
26
- self::$instance = new self;
27
-
28
- return self::$instance;
29
- }
30
-
31
- private function __construct()
32
- {
33
-
34
- }
35
-
36
- public function init()
37
- {
38
- // priority = 12 because do_shortcode() is registered as a default filter on 'the_content' with a priority of 11.
39
- \add_filter('the_content', array($this, 'viewData'), 12);
40
- }
41
-
42
- public function viewData($content)
43
- {
44
- global $post;
45
- /*
46
- if (!is_single() && !is_page)
47
- return $content;
48
- *
49
- */
50
- $top_modules_priorities = array();
51
- $bottom_modules_priorities = array();
52
- foreach (ModuleManager::getInstance()->getModules(true) as $module_id => $module)
53
- {
54
- $embed_at = $module->config('embed_at');
55
- if ($embed_at != 'post_bottom' && $embed_at != 'post_top')
56
- continue;
57
- if (Shortcoded::getInstance($post->ID)->isShortcoded($module->getId()))
58
- continue;
59
-
60
- $priority = (int) $module->config('priority');
61
- if ($embed_at == 'post_top')
62
- $top_modules_priorities[$module_id] = $priority;
63
- elseif ($embed_at == 'post_bottom')
64
- $bottom_modules_priorities[$module_id] = $priority;
65
- }
66
-
67
- // sort by priority, keep module_id order
68
- $top_modules_priorities = ArrayHelper::asortStable($top_modules_priorities);
69
- $bottom_modules_priorities = ArrayHelper::asortStable($bottom_modules_priorities);
70
-
71
- // reverse for corret gluing order
72
- $top_modules_priorities = array_reverse($top_modules_priorities, true);
73
- foreach ($top_modules_priorities as $module_id => $p)
74
- {
75
- $content = $this->viewModuleData($module_id) . $content;
76
- }
77
- foreach ($bottom_modules_priorities as $module_id => $p)
78
- {
79
- $content = $content . $this->viewModuleData($module_id);
80
- }
81
-
82
- return $content;
83
- }
84
-
85
- public function viewModuleData($module_id, $post_id = null, $params = array())
86
- {
87
- if (!$post_id)
88
- {
89
- global $post;
90
- $post_id = $post->ID;
91
- }
92
- $module = ModuleManager::factory($module_id);
93
-
94
- $data = ContentManager::getViewData($module_id, $post_id, $params);
95
- if (!$data)
96
- return '';
97
-
98
- $keyword = \get_post_meta($post_id, ContentManager::META_PREFIX_KEYWORD . $module->getId(), true);
99
-
100
- if (!isset($this->module_data_pointer[$post_id]))
101
- $this->module_data_pointer[$post_id] = array();
102
- // next param
103
- if (!empty($params['next']))
104
- {
105
- if (!isset($this->module_data_pointer[$post_id][$module_id]))
106
- $this->module_data_pointer[$post_id][$module_id] = 0;
107
-
108
- $data = array_splice($data, $this->module_data_pointer[$post_id][$module_id], $params['next']);
109
- if (count($data) < $params['next'])
110
- $params['next'] = count($data);
111
-
112
- $this->module_data_pointer[$post_id][$module_id] += $params['next'];
113
- } elseif (!empty($params['limit']))
114
- {
115
- if (!isset($params['offset']))
116
- $params['offset'] = 0;
117
-
118
- $data = array_splice($data, $params['offset'], $params['limit']);
119
- $this->module_data_pointer[$post_id][$module_id] = $params['offset'] + $params['limit'];
120
- }
121
- if (!$data)
122
- return;
123
-
124
- // template
125
- $tpl_manager = ModuleTemplateManager::getInstance($module_id);
126
- if (!empty($params['template']) && $tpl_manager->isTemplateExists($params['template']))
127
- $template = $params['template'];
128
- else
129
- $template = $module->config('template');
130
-
131
- if (!empty($params['title']))
132
- $title = $params['title'];
133
- else
134
- $title = $module->config('tpl_title');
135
- return $tpl_manager->render($template, array('items' => $data, 'title' => $title, 'keyword' => $keyword, 'post_id' => $post_id, 'module_id' => $module_id));
136
- }
137
-
138
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/Plugin.php DELETED
@@ -1,163 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application;
4
-
5
- use ContentEgg\application\admin\GeneralConfig;
6
- use ContentEgg\application\helpers\CurrencyHelper;
7
-
8
- /**
9
- * Plugin class file
10
- *
11
- * @author keywordrush.com <support@keywordrush.com>
12
- * @link http://www.keywordrush.com/
13
- * @copyright Copyright &copy; 2016 keywordrush.com
14
- */
15
- class Plugin {
16
-
17
- const version = '2.8.0';
18
- const db_version = 22;
19
- const wp_requires = '4.2.2';
20
- const slug = 'content-egg';
21
- const api_base = 'http://www.keywordrush.com/api/v1';
22
- const api_base2 = 'http://209.59.164.45/api/v1';
23
- const product_id = 302;
24
-
25
- private static $instance = null;
26
- private static $is_pro = null;
27
- private static $is_envato = null;
28
-
29
- public static function getInstance()
30
- {
31
- if (self::$instance == null)
32
- self::$instance = new self;
33
-
34
- return self::$instance;
35
- }
36
-
37
- private function __construct()
38
- {
39
- $this->loadTextdomain();
40
- if (self::isFree() || (self::isPro() && self::isActivated()) || self::isEnvato())
41
- {
42
- if (!\is_admin())
43
- {
44
- \add_action('wp_enqueue_scripts', array($this, 'registerScripts'));
45
- EggShortcode::getInstance();
46
- BlockShortcode::getInstance();
47
- ModuleViewer::getInstance()->init();
48
- ModuleUpdater::getInstance()->init();
49
- LocalRedirect::initAction();
50
- CurrencyHelper::getInstance(GeneralConfig::getInstance()->option('lang'));
51
- }
52
- PriceAlert::getInstance()->init();
53
- AutoblogScheduler::initAction();
54
- }
55
- }
56
-
57
- public function registerScripts()
58
- {
59
- \wp_register_style('egg-bootstrap', \ContentEgg\PLUGIN_RES . '/bootstrap/css/egg-bootstrap.css');
60
- \wp_register_script('bootstrap', \ContentEgg\PLUGIN_RES . '/bootstrap/js/bootstrap.min.js', array('jquery'), null, false);
61
- \wp_register_style('content-egg-products', \ContentEgg\PLUGIN_RES . '/css/products.css');
62
- \wp_register_script('raphaeljs', \ContentEgg\PLUGIN_RES . '/js/morris.js/raphael.min.js', array('jquery'));
63
- \wp_register_script('morrisjs', \ContentEgg\PLUGIN_RES . '/js/morris.js/morris.min.js', array('raphaeljs'));
64
- \wp_register_style('morrisjs', \ContentEgg\PLUGIN_RES . '/js/morris.js/morris.min.css');
65
- }
66
-
67
- static public function version()
68
- {
69
- return self::version;
70
- }
71
-
72
- static public function slug()
73
- {
74
- return self::slug;
75
- }
76
-
77
- public static function getApiBase()
78
- {
79
- return self::api_base;
80
- }
81
-
82
- public static function isFree()
83
- {
84
- return !self::isPro();
85
- }
86
-
87
- public static function isPro()
88
- {
89
- if (self::$is_pro === null)
90
- {
91
- if (class_exists("\\ContentEgg\\application\\Autoupdate", true))
92
- self::$is_pro = true;
93
- else
94
- self::$is_pro = false;
95
- }
96
- return self::$is_pro;
97
- }
98
-
99
- public static function isEnvato()
100
- {
101
- if (self::$is_envato === null)
102
- {
103
- if (class_exists("\\ContentEgg\\application\\admin\\EnvatoConfig", true) || \get_option(Plugin::slug . '_env_install'))
104
- self::$is_envato = true;
105
- else
106
- self::$is_envato = false;
107
- }
108
- return self::$is_envato;
109
- }
110
-
111
- public static function isActivated()
112
- {
113
- if (self::isPro() && \ContentEgg\application\admin\LicConfig::getInstance()->option('license_key'))
114
- return true;
115
- else
116
- return false;
117
- }
118
-
119
- public static function isInactiveEnvato()
120
- {
121
- if (self::isEnvato() && !self::isActivated())
122
- return true;
123
- else
124
- return false;
125
- }
126
-
127
- public static function apiRequest($params = array())
128
- {
129
- $api_urls = array(self::api_base, self::api_base2);
130
- foreach ($api_urls as $api_url)
131
- {
132
- $response = \wp_remote_post($api_url, $params);
133
- if (\is_wp_error($response))
134
- continue; // try alternative api uri
135
-
136
- $response_code = (int) \wp_remote_retrieve_response_code($response);
137
- if ($response_code == 200)
138
- return $response;
139
- else
140
- return false;
141
- }
142
- return false;
143
- }
144
-
145
- private function loadTextdomain()
146
- {
147
- // plugin backend
148
- $locale = \get_locale();
149
- $mo_file = \ContentEgg\PLUGIN_PATH . 'languages/content-egg-' . $locale . '.mo';
150
- if (file_exists($mo_file) && is_readable($mo_file))
151
- \load_textdomain('content-egg', $mo_file);
152
- elseif (!in_array($locale, array('ru_RU', 'uk')))
153
- \load_textdomain('content-egg', \ContentEgg\PLUGIN_PATH . 'languages/content-egg-en_US.mo');
154
-
155
- // frontend templates
156
- $lang = GeneralConfig::getInstance()->option('lang');
157
- $lang = strtoupper($lang);
158
- $mo_file = \ContentEgg\PLUGIN_PATH . 'languages/tpl/content-egg-tpl-' . $lang . '.mo';
159
- if (file_exists($mo_file) && is_readable($mo_file))
160
- $v = \load_textdomain('content-egg-tpl', $mo_file);
161
- }
162
-
163
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/AdminNotice.php DELETED
@@ -1,98 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\admin;
4
-
5
- /**
6
- * AdminNotice class file
7
- *
8
- * @author keywordrush.com <support@keywordrush.com>
9
- * @link http://www.keywordrush.com/
10
- * @copyright Copyright &copy; 2016 keywordrush.com
11
- */
12
- class AdminNotice {
13
-
14
- const GET_NOTICE_PARAM = 'egg-notice';
15
- const GET_LEVEL_PARAM = 'egg-notice-level';
16
- const GET_ID_PARAM = 'egg-notice-id';
17
-
18
- protected static $instance = null;
19
-
20
- public function getMassages()
21
- {
22
- return array(
23
- 'autoblog_saved' => __('Задание автоблоггинга сохранено.', 'content-egg') . ' <a href="?page=content-egg-autoblog&action=run&id=%%ID%%">' . __('Запустить сейчас', 'content-egg') . '</a>',
24
- 'autoblog_create_error' => __('При сохранении задания автоблоггинга возникла ошибка.', 'content-egg'),
25
- 'autoblog_csv_file_error' => __('Ошибка при обработке файла с ключевыми словами.', 'content-egg'),
26
- 'autoblog_batch_created' => __('Заданий автоблоггинга сохранено:', 'content-egg') . ' %%ID%%.',
27
- 'license_reset_error' => __('Лицензия не может быть откреплена. Обратитесь в поддержку плагина.', 'content-egg'),
28
- 'license_reset_success' => __('Лицензия была откреплена. Вы должны деактивировать и удалить плагин с текущего домена.', 'content-egg'),
29
- // 'license_reset_error_info' => __('Лицензия не может быть откреплена.', 'content-egg') . ' %%ID%%.',
30
- );
31
- }
32
-
33
- public static function getInstance()
34
- {
35
- if (self::$instance == null)
36
- self::$instance = new self;
37
-
38
- return self::$instance;
39
- }
40
-
41
- private function __construct()
42
- {
43
- //$this->adminInit();
44
- }
45
-
46
- public function adminInit()
47
- {
48
- \add_action('admin_notices', array($this, 'displayNotice'));
49
- }
50
-
51
- public function getMessage($message_id = null)
52
- {
53
- if (!$message_id && !empty($_GET[self::GET_NOTICE_PARAM]))
54
- $message_id = $_GET[self::GET_NOTICE_PARAM];
55
- else
56
- return '';
57
-
58
- $all = $this->getMassages();
59
- if (!array_key_exists($message_id, $all))
60
- return '';
61
-
62
- $message = $all[$message_id];
63
-
64
- if (!empty($_GET[self::GET_ID_PARAM]))
65
- {
66
- $id = (int) $_GET[self::GET_ID_PARAM];
67
- $message = str_replace('%%ID%%', $id, $message);
68
- }
69
-
70
- return $message;
71
- }
72
-
73
- public function displayNotice()
74
- {
75
- if (empty($_GET[self::GET_NOTICE_PARAM]))
76
- return;
77
-
78
- $level = 'info';
79
- if (!empty($_GET[self::GET_LEVEL_PARAM]))
80
- {
81
- $level = $_GET[self::GET_LEVEL_PARAM];
82
- if (!in_array($level, array('error', 'warning', 'info', 'success')))
83
- $level = 'info';
84
- }
85
- echo '<div class="notice notice-' . $level . ' is-dismissible"><p>' . $this->getMessage() . '</p></div>';
86
- }
87
-
88
- public static function add2Url($url, $message, $level = null, $id = null)
89
- {
90
- $url = add_query_arg(self::GET_NOTICE_PARAM, $message, $url);
91
- if ($level)
92
- $url = add_query_arg(self::GET_LEVEL_PARAM, $level, $url);
93
- if ($id)
94
- $url = add_query_arg(self::GET_ID_PARAM, $id, $url);
95
- return $url;
96
- }
97
-
98
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/AeIntegrationConfig.php DELETED
@@ -1,70 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\admin;
4
-
5
- use ContentEgg\application\components\Config;
6
- use ContentEgg\application\Plugin;
7
-
8
- /**
9
- * AeIntegrationConfig class file
10
- *
11
- * @author keywordrush.com <support@keywordrush.com>
12
- * @link http://www.keywordrush.com/
13
- * @copyright Copyright &copy; 2016 keywordrush.com
14
- */
15
- class AeIntegrationConfig extends Config {
16
-
17
- const MIN_AE_VERSION = '7.1.0';
18
-
19
- public function page_slug()
20
- {
21
- return Plugin::slug . '-ae-integration';
22
- }
23
-
24
- public function option_name()
25
- {
26
- return Plugin::slug . '_ae_integration';
27
- }
28
-
29
- public function add_admin_menu()
30
- {
31
- \add_submenu_page(Plugin::slug, __('AE интеграция', 'content-egg') . ' &lsaquo; Content Egg', __('AE интеграция', 'content-egg'), 'manage_options', $this->page_slug(), array($this, 'settings_page'));
32
- }
33
-
34
- protected function options()
35
- {
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' => __('Активировать модули', 'content-egg'),
43
- 'description' => '',
44
- 'checkbox_options' => $aff_egg_modules,
45
- 'callback' => array($this, 'render_checkbox_list'),
46
- 'default' => array(),
47
- 'section' => 'default',
48
- ),
49
- );
50
- }
51
-
52
- public function settings_page()
53
- {
54
- PluginAdmin::render('ae_integration', array('page_slug' => $this->page_slug()));
55
- }
56
-
57
- public static function isAEIntegrationPosible()
58
- {
59
- if (!class_exists('\Keywordrush\AffiliateEgg\ShopManager'))
60
- return false;
61
-
62
- $v = \Keywordrush\AffiliateEgg\AffiliateEgg::version();
63
-
64
- if (version_compare(self::MIN_AE_VERSION, $v, '>'))
65
- return false;
66
-
67
- return true;
68
- }
69
-
70
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/AutoblogController.php DELETED
@@ -1,352 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\admin;
4
-
5
- use ContentEgg\application\Plugin;
6
- use ContentEgg\application\models\AutoblogModel;
7
- use ContentEgg\application\helpers\TextHelper;
8
- use ContentEgg\application\AutoblogScheduler;
9
-
10
- /**
11
- * AutoblogController class file
12
- *
13
- * @author keywordrush.com <support@keywordrush.com>
14
- * @link http://www.keywordrush.com/
15
- * @copyright Copyright &copy; 2015 keywordrush.com
16
- */
17
- class AutoblogController {
18
-
19
- const slug = 'content-egg-autoblog';
20
-
21
- private $amazon_categs = array(
22
- 'appliances' => 'Appliances',
23
- 'mobile-apps' => 'Appstore for Android',
24
- 'arts-crafts' => 'Arts, Crafts & Sewing',
25
- 'automotive' => 'Automotive',
26
- 'baby-products' => 'Baby',
27
- 'beauty' => 'Beauty',
28
- 'books' => 'Books',
29
- 'photo' => 'Camera & Photo',
30
- 'wireless' => 'Cell Phones & Accessories',
31
- 'apparel' => 'Clothing',
32
- 'pc' => 'Computers & Accessories',
33
- 'electronics' => 'Electronics',
34
- 'gift-cards' => 'Gift Cards Store',
35
- 'grocery' => 'Grocery & Gourmet Food',
36
- 'hpc' => 'Health & Personal Care',
37
- 'home-garden' => 'Home & Kitchen',
38
- 'hi' => 'Home Improvement',
39
- 'industrial' => 'Industrial & Scientific',
40
- 'jewelry' => 'Jewelry',
41
- 'digital-text' => 'Kindle Store',
42
- 'kitchen' => 'Kitchen & Dining',
43
- 'dmusic' => 'MP3 Downloads',
44
- 'magazines' => 'Magazines',
45
- 'movies-tv' => 'Movies & TV',
46
- 'music' => 'Music',
47
- 'musical-instruments' => 'Musical Instruments',
48
- 'office-products' => 'Office Products',
49
- 'lawn-garden' => 'Patio, Lawn & Garden',
50
- 'pet-supplies' => 'Pet Supplies',
51
- 'shoes' => 'Shoes',
52
- 'software' => 'Software',
53
- 'sporting-goods' => 'Sports & Outdoors',
54
- 'toys-and-games' => 'Toys & Games',
55
- 'videogames' => 'Video Games',
56
- 'watches' => 'Watches',
57
- );
58
-
59
- public function __construct()
60
- {
61
- \add_action('admin_menu', array($this, 'add_admin_menu'));
62
-
63
- if ($GLOBALS['pagenow'] == 'admin.php' && !empty($_GET['page']) && $_GET['page'] == 'content-egg-autoblog-edit')
64
- {
65
- \wp_enqueue_script('contentegg-keywords', \ContentEgg\PLUGIN_RES . '/js/keywords.js', array('jquery'));
66
- // tabs
67
- \wp_enqueue_script('jquery-ui-tabs');
68
- \wp_enqueue_script('jquery-ui-button');
69
- \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);
70
- }
71
- }
72
-
73
- public function add_admin_menu()
74
- {
75
- \add_submenu_page(Plugin::slug, __('Автоблоггинг', 'content-egg') . ' &lsaquo; Content Egg', __('Автоблоггинг', 'content-egg'), 'manage_options', self::slug, array($this, 'actionIndex'));
76
- \add_submenu_page(Plugin::slug, __('Добавить автоблоггинг', 'content-egg') . ' &lsaquo; Content Egg', __('Добавить автоблоггинг', 'content-egg'), 'manage_options', 'content-egg-autoblog-edit', array($this, 'actionUpdate'));
77
- \add_submenu_page(null, __('Добавить автоблоггинг - пакетный режим', 'content-egg') . ' &lsaquo; Content Egg', __('Добавить автоблоггинг - пакетный режим', 'content-egg'), 'manage_options', 'content-egg-autoblog-batch-create', array($this, 'actionUpdate'));
78
- }
79
-
80
- public function actionIndex()
81
- {
82
- if (!empty($_GET['action']) && $_GET['action'] == 'run')
83
- {
84
- @set_time_limit(180);
85
- AutoblogModel::model()->run((int) $_GET['id']);
86
- }
87
- \wp_enqueue_script('content-egg-blockUI', \ContentEgg\PLUGIN_RES . '/js/jquery.blockUI.js', array('jquery'));
88
- PluginAdmin::getInstance()->render('autoblog_index', array('table' => new AutoblogTable(AutoblogModel::model())));
89
- }
90
-
91
- public function actionUpdate()
92
- {
93
- if ($GLOBALS['pagenow'] == 'admin.php' && !empty($_GET['page']) && $_GET['page'] == 'content-egg-autoblog-batch-create')
94
- $batch = true;
95
- else
96
- $batch = false;
97
-
98
- $_POST = array_map('stripslashes_deep', $_POST);
99
-
100
- $default = array(
101
- 'id' => 0,
102
- 'name' => '',
103
- 'status' => 1,
104
- 'run_frequency' => 86400,
105
- 'keywords_per_run' => 1,
106
- 'post_status' => 1,
107
- 'user_id' => \get_current_user_id(),
108
- 'template_body' => '',
109
- 'template_title' => '%KEYWORD%',
110
- 'keywords' => array(),
111
- 'category' => \get_option('default_category'),
112
- 'include_modules' => array(),
113
- 'exclude_modules' => array(),
114
- 'required_modules' => array(),
115
- 'autoupdate_modules' => array(),
116
- 'min_modules_count' => 1,
117
- );
118
-
119
- $message = '';
120
- $notice = '';
121
-
122
- if (!empty($_POST['nonce']) && \wp_verify_nonce($_POST['nonce'], basename(__FILE__)) && !empty($_POST['item']))
123
- {
124
- $item = array();
125
- $item['id'] = (int) $_POST['item']['id'];
126
- $item['name'] = trim(strip_tags($_POST['item']['name']));
127
- $item['status'] = absint($_POST['item']['status']);
128
- $item['keywords_per_run'] = absint($_POST['item']['keywords_per_run']);
129
- $item['run_frequency'] = absint($_POST['item']['run_frequency']);
130
- $item['post_status'] = absint($_POST['item']['post_status']);
131
- $item['user_id'] = absint($_POST['item']['user_id']);
132
- $item['template_body'] = trim(\wp_kses_post($_POST['item']['template_body']));
133
- $item['template_title'] = trim(\wp_strip_all_tags($_POST['item']['template_title']));
134
- $item['category'] = (isset($_POST['item']['category'])) ? (int) $_POST['item']['category'] : null;
135
- $item['include_modules'] = (isset($_POST['item']['include_modules'])) ? $_POST['item']['include_modules'] : array();
136
- $item['exclude_modules'] = (isset($_POST['item']['exclude_modules'])) ? $_POST['item']['exclude_modules'] : array();
137
- $item['required_modules'] = (isset($_POST['item']['required_modules'])) ? $_POST['item']['required_modules'] : array();
138
- $item['autoupdate_modules'] = (isset($_POST['item']['autoupdate_modules'])) ? $_POST['item']['autoupdate_modules'] : array();
139
- $item['min_modules_count'] = absint($_POST['item']['min_modules_count']);
140
- $item['keywords'] = (isset($_POST['item']['keywords'])) ? explode("\r\n", $_POST['item']['keywords']) : null;
141
-
142
- $redirect_url = \get_admin_url(\get_current_blog_id(), 'admin.php?page=content-egg-autoblog');
143
- if ($batch)
144
- {
145
- $created_count = $this->createBatchAutoblog($item);
146
- if ($created_count === false)
147
- $redirect_url = AdminNotice::add2Url($redirect_url, 'autoblog_csv_file_error', 'error');
148
- elseif (!$created_count)
149
- $redirect_url = AdminNotice::add2Url($redirect_url, 'autoblog_create_error', 'error');
150
- else
151
- $redirect_url = AdminNotice::add2Url($redirect_url, 'autoblog_batch_created', 'success', $created_count);
152
- } else
153
- {
154
- // single create mode
155
- $item['id'] = $this->createAutoblog($item);
156
-
157
- if ($item['id'])
158
- $redirect_url = AdminNotice::add2Url($redirect_url, 'autoblog_saved', 'success', $item['id']);
159
- else
160
- $redirect_url = AdminNotice::add2Url($redirect_url, 'autoblog_create_error', 'error');
161
- }
162
-
163
- // redirect to table list
164
- \wp_redirect($redirect_url);
165
- exit;
166
- } else
167
- {
168
- // view page
169
- if (isset($_GET['dublicate_id']))
170
- {
171
- $dublicate = AutoblogModel::model()->findByPk((int) $_GET['dublicate_id']);
172
- if ($dublicate)
173
- {
174
- foreach ($default as $key => $val)
175
- {
176
- if (!isset($dublicate))
177
- continue;
178
- $item[$key] = $dublicate[$key];
179
- if (is_array($val))
180
- $item[$key] = unserialize($item[$key]);
181
- }
182
- $item['id'] = 0;
183
- } else
184
- $item = $default;
185
- } else
186
- $item = $default;
187
- if (isset($_GET['id']))
188
- {
189
- $item = AutoblogModel::model()->findByPk((int) $_GET['id']);
190
- if (!$item)
191
- {
192
- $item = $default;
193
- $notice = __('Автоблоггинг не найден', 'content-egg');
194
- } else
195
- {
196
- $item['keywords'] = unserialize($item['keywords']);
197
- $item['include_modules'] = unserialize($item['include_modules']);
198
- $item['exclude_modules'] = unserialize($item['exclude_modules']);
199
- $item['required_modules'] = unserialize($item['required_modules']);
200
- $item['autoupdate_modules'] = unserialize($item['autoupdate_modules']);
201
- }
202
- }
203
- }
204
-
205
- $item['keywords'] = join("\n", $item['keywords']);
206
-
207
- \add_meta_box('autoblog_metabox', 'Autoblog data', array($this, 'metaboxAutoblogCreateHandler'), 'autoblog_create', 'normal', 'default');
208
-
209
- $item['amazon_categs'] = $this->amazon_categs;
210
-
211
- PluginAdmin::getInstance()->render('autoblog_edit', array(
212
- 'item' => $item,
213
- 'notice' => $notice,
214
- 'message' => $message,
215
- 'nonce' => \wp_create_nonce(basename(__FILE__)),
216
- 'batch' => $batch
217
- ));
218
- }
219
-
220
- private function createAutoblog($item)
221
- {
222
- $item['keywords'] = TextHelper::prepareKeywords($item['keywords']);
223
-
224
- // save
225
- $item['id'] = AutoblogModel::model()->save($item);
226
-
227
- // add sheduler
228
- if ($item['status'])
229
- {
230
- AutoblogScheduler::addScheduleEvent();
231
- }
232
-
233
- return $item['id'];
234
- }
235
-
236
- private function createBatchAutoblog($item)
237
- {
238
- @set_time_limit(180);
239
-
240
- if (empty($_FILES['item']['name']) || empty($_FILES['item']['name']['keywords_file']))
241
- return false;
242
-
243
- $file_name = $_FILES['item']['name']['keywords_file'];
244
- $file_path = $_FILES['item']['tmp_name']['keywords_file'];
245
-
246
- // Get the file type of the upload
247
- $supported_types = array('text/csv', 'text/plain');
248
- $arr_file_type = \wp_check_filetype(basename($file_name));
249
- $uploaded_type = $arr_file_type['type'];
250
-
251
- // Check if the type is supported. If not, throw an error.
252
- if (!in_array($uploaded_type, $supported_types))
253
- return false;
254
-
255
- $handle = fopen($file_path, "r");
256
- if (!$handle)
257
- return false;
258
-
259
- $separator = ';';
260
-
261
- $i = 0;
262
- $keywords = array();
263
- $category_keywords = array();
264
- while (($data = fgetcsv($handle, 1000, $separator)) !== false)
265
- {
266
- $num = count($data);
267
-
268
- // first line
269
- if ($i == 0)
270
- {
271
- // remove UTF-8 BOM
272
- if (substr($data[0], 0, 3) == pack("CCC", 0xef, 0xbb, 0xbf))
273
- $data[0] = substr($data[0], 3);
274
-
275
- // only keywords list
276
- if ($num == 1 && $item['category'] == -1)
277
- {
278
- $item['category'] = \get_option('default_category');
279
- }
280
- }
281
-
282
- $data[0] = trim($data[0]);
283
- if (!$data[0])
284
- continue;
285
-
286
- if ($num == 1)
287
- $keywords[] = trim($data[0]);
288
- elseif ($num >= 2)
289
- $category_keywords[trim($data[0])][] = trim($data[1]);
290
- $i++;
291
- }
292
- fclose($handle);
293
-
294
- // create
295
- if ($keywords)
296
- {
297
- $item['keywords'] = $keywords;
298
- $id = $this->createAutoblog($item);
299
- if ($id)
300
- return 1; //1 count
301
- else
302
- return false;
303
- }
304
-
305
- // create by categ
306
- $created_count = 0;
307
- if ($category_keywords)
308
- {
309
- foreach ($category_keywords as $c_name => $keywords)
310
- {
311
- $c_name = \sanitize_text_field($c_name);
312
- $new_item = $item;
313
-
314
- // need create category
315
- if ($item['category'] == -1)
316
- {
317
- // If the category already exists, it is not duplicated.The ID of the original existing category is returned without error.
318
- $c_id = \wp_create_category($c_name);
319
- if (!$c_id)
320
- continue;
321
-
322
- $new_item['category'] = $c_id;
323
- }
324
- if ($new_item['name'])
325
- $new_item['name'] .= ' - ';
326
- $new_item['name'] .= $c_name;
327
-
328
- $new_item['keywords'] = $keywords;
329
- $a_id = $this->createAutoblog($new_item);
330
- if ($a_id)
331
- $created_count++;
332
- }
333
- }
334
- return $created_count;
335
- }
336
-
337
- /**
338
- * This function renders our custom meta box
339
- */
340
- public function metaboxAutoblogCreateHandler($item)
341
- {
342
- if (!isset($item['batch']))
343
- $batch = false;
344
- else
345
- {
346
- $batch = (bool) $item['batch'];
347
- unset($item['batch']);
348
- }
349
- PluginAdmin::getInstance()->render('_metabox_autoblog', array('item' => $item, 'batch' => $batch));
350
- }
351
-
352
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/AutoblogTable.php DELETED
@@ -1,98 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\admin;
4
-
5
- use ContentEgg\application\models\AutoblogModel;
6
-
7
- /**
8
- * AutoblogTable 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 AutoblogTable extends MyListTable {
15
-
16
- const per_page = 15;
17
-
18
- function get_columns()
19
- {
20
- $columns = array_merge(
21
- array(
22
- 'cb' => '<input type="checkbox" />',
23
- ), array(
24
- 'name' => AutoblogModel::model()->getAttributeLabel('name'),
25
- 'create_date' => AutoblogModel::model()->getAttributeLabel('create_date'),
26
- 'last_run' => AutoblogModel::model()->getAttributeLabel('last_run'),
27
- 'status' => AutoblogModel::model()->getAttributeLabel('status'),
28
- 'keywords' => AutoblogModel::model()->getAttributeLabel('keywords'),
29
- 'post_count' => AutoblogModel::model()->getAttributeLabel('post_count'),
30
- 'last_error' => AutoblogModel::model()->getAttributeLabel('last_error'),
31
- )
32
- );
33
- return $columns;
34
- }
35
-
36
- /*
37
- function default_orderby()
38
- {
39
- return 'status';
40
- }
41
- *
42
- */
43
-
44
- function column_name($item)
45
- {
46
- if (!trim($item['name']))
47
- $item['name'] = __('(без названия)', 'content-egg');
48
-
49
- $edit_url = '?page=content-egg-autoblog-edit&id=%d';
50
- $dublicate_url = '?page=content-egg-autoblog-edit&dublicate_id=%d';
51
-
52
- $actions = array(
53
- 'edit' => sprintf('<a href="' . $edit_url . '">%s</a>', $item['id'], __('Редактировать', 'content-egg')),
54
- 'run' => sprintf('<a class="run_avtoblogging" href="?page=content-egg-autoblog&action=run&id=%d">%s</a>', $item['id'], __('Запустить сейчас', 'content-egg')),
55
- 'dublicate' => sprintf('<a href="' . $dublicate_url . '">%s</a>', $item['id'], __('Дублировать', 'content-egg')),
56
- 'delete' => sprintf('<a class="content-egg-delete" href="?page=content-egg-autoblog&action=delete&id=%d">%s</a>', $item['id'], __('Удалить', 'content-egg')),
57
- );
58
- $row_text = sprintf('<strong><a title="' . __('Редактировать', 'content-egg') . '" class="row-title" href="' . $edit_url . '">' . esc_html($item['name']) . '</a></strong>', $item['id']);
59
- return sprintf('%s %s', $row_text, $this->row_actions($actions));
60
- }
61
-
62
- function column_status($item)
63
- {
64
- if ($item['status'])
65
- return '<span style="color:green">' . __('Работает', 'content-egg') . '</span>';
66
- else
67
- return '<span style="color:red">' . __('Остановлен', 'content-egg') . '</span>';
68
- }
69
-
70
- function column_keywords($item)
71
- {
72
- $item['keywords'] = unserialize($item['keywords']);
73
-
74
- $active = 0;
75
- foreach ($item['keywords'] as $keyword)
76
- {
77
- if (AutoblogModel::isActiveKeyword($keyword))
78
- $active++;
79
- }
80
-
81
- $abbr_title = __('активных:', 'content-egg') . ' ' . $active . ', ' . __('всего:', 'content-egg') . ' ' . count($item['keywords']);
82
- return '<abbr title="' . esc_attr($abbr_title) . '">' . $active . ' / ' . count($item['keywords']) . '</abbr>';
83
- }
84
-
85
- function get_sortable_columns()
86
- {
87
- $sortable_columns = array(
88
- 'id' => array('id', true),
89
- 'name' => array('name', true),
90
- 'create_date' => array('create_date', true),
91
- 'last_run' => array('last_run', true),
92
- 'status' => array('status', true),
93
- 'post_count' => array('post_count', true)
94
- );
95
- return $sortable_columns;
96
- }
97
-
98
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/EggMetabox.php DELETED
@@ -1,253 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\admin;
4
-
5
- use ContentEgg\application\components\ModuleManager;
6
- use ContentEgg\application\helpers\InputHelper;
7
- use ContentEgg\application\helpers\TextHelper;
8
- use ContentEgg\application\components\ContentManager;
9
-
10
- /**
11
- * EggMetabox class file
12
- *
13
- * @author keywordrush.com <support@keywordrush.com>
14
- * @link http://www.keywordrush.com/
15
- * @copyright Copyright &copy; 2015 keywordrush.com
16
- */
17
- class EggMetabox {
18
-
19
- private $app_params = array();
20
-
21
- public function __construct()
22
- {
23
- \add_action('add_meta_boxes', array($this, 'addMetabox'));
24
- \add_action('save_post', array($this, 'saveMeta'));
25
- }
26
-
27
- private function addAppParam($param, $value)
28
- {
29
- $this->app_params[$param] = $value;
30
- }
31
-
32
- private function getAppParams()
33
- {
34
- return $this->app_params;
35
- }
36
-
37
- public function addMetabox($post_type)
38
- {
39
- if (!in_array($post_type, GeneralConfig::getInstance()->option('post_types')))
40
- return;
41
-
42
- if (!ModuleManager::getInstance()->getModules(true))
43
- {
44
- \add_meta_box('content_meta_box', 'Content Egg', array($this, 'renderBlankMetabox'), $post_type, 'normal', 'high');
45
- return;
46
- }
47
- $this->modulesOptionsInit();
48
- $this->metadataInit();
49
- \add_meta_box('content_meta_box', 'Content Egg', array($this, 'renderMetabox'), $post_type, 'normal', 'high');
50
- $this->angularInit();
51
- }
52
-
53
- /**
54
- * Render Meta Box content.
55
- *
56
- * @param WP_Post $post The post object.
57
- */
58
- public function renderMetabox($post)
59
- {
60
- echo '<div ng-app="contentEgg" class="egg-container" id="content-egg" ng-cloak>';
61
- echo '<div ng-controller="ContentEggController" class="container-fluid">';
62
-
63
- PluginAdmin::render('metabox_general');
64
-
65
- foreach (ModuleManager::getInstance()->getModules(true) as $module)
66
- {
67
- $module->enqueueScripts();
68
- PluginAdmin::render('metabox_module', array('module_id' => $module->getId(), 'module' => $module));
69
- }
70
- echo '</div>';
71
- echo '</div>';
72
- }
73
-
74
- public function renderBlankMetabox($post)
75
- {
76
- _e('Настройте и активируйте модули Content Egg плагин.', 'content-egg');
77
- }
78
-
79
- private function metadataInit()
80
- {
81
- global $post;
82
-
83
- $modules = ModuleManager::getInstance()->getModules(true);
84
-
85
- // modules data
86
- $init_data = array();
87
- foreach ($modules as $module)
88
- {
89
- $post_meta = ContentManager::getData($post->ID, $module->getId());
90
- if (!$post_meta)
91
- continue;
92
- foreach ($post_meta as $key => $meta)
93
- {
94
- if ($meta['description'])
95
- $post_meta[$key]['description'] = TextHelper::br2nl($meta['description']);
96
- }
97
- $init_data[$module->getId()] = array_values($post_meta);
98
- }
99
- $this->addAppParam('initData', $init_data);
100
-
101
- // keywords
102
- $init_keywords = array();
103
- foreach ($modules as $module)
104
- {
105
- if (!$module->isAffiliateParser())
106
- continue;
107
- $keywords_meta = \get_post_meta($post->ID, ContentManager::META_PREFIX_KEYWORD . $module->getId(), true);
108
- if (!$keywords_meta)
109
- continue;
110
- $init_keywords[$module->getId()] = $keywords_meta;
111
- }
112
- $this->addAppParam('initKeywords', $init_keywords);
113
- }
114
-
115
- private function modulesOptionsInit()
116
- {
117
- $init_options = array();
118
- foreach (ModuleManager::getInstance()->getModules(true) as $module)
119
- {
120
- $init_options[$module->getId()] = array();
121
- foreach ($module->getConfigInstance()->options() as $option_name => $option)
122
- {
123
- if (isset($option['metaboxInit']) && $option['metaboxInit'])
124
- {
125
- $init_options[$module->getId()][$option_name] = $module->config($option_name);
126
- }
127
-
128
- }
129
- }
130
- $this->addAppParam('modulesOptions', $init_options);
131
- }
132
-
133
- private function angularInit()
134
- {
135
- // Justified gallery jquery plugin
136
- \wp_enqueue_script('justified-gallery', \ContentEgg\PLUGIN_RES . '/justified_gallery/jquery.justifiedGallery.min.js', array('jquery'), null, false);
137
- \wp_enqueue_style('justified-gallery', \ContentEgg\PLUGIN_RES . '/justified_gallery/justifiedGallery.min.css');
138
-
139
- // Angular core
140
- \wp_enqueue_script('angularjs', '//ajax.googleapis.com/ajax/libs/angularjs/1.4.0-rc.1/angular.min.js', array('jquery'), null, false);
141
-
142
- // ContentEgg angular application
143
- \wp_enqueue_style('contentegg-admin', \ContentEgg\PLUGIN_RES . '/css/admin.css');
144
- \wp_enqueue_script('angular-ui-bootstrap', \ContentEgg\PLUGIN_RES . '/app/vendor/angular-ui-bootstrap/ui-bootstrap-tpls-0.13.3.min.js', array('angularjs'), null, false);
145
- \wp_enqueue_script('angular-sortable', \ContentEgg\PLUGIN_RES . '/app/vendor/angular-sortable.js', array('angularjs', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-mouse', 'jquery-ui-sortable'), null, false);
146
- \wp_register_script('contentegg-metabox-app', \ContentEgg\PLUGIN_RES . '/app/app.js', array('angularjs'), null, false);
147
- \wp_enqueue_script('contentegg-metabox-service', \ContentEgg\PLUGIN_RES . '/app/ModuleService.js', array('contentegg-metabox-app'), null, false);
148
-
149
- // Bootstrap
150
- \wp_enqueue_style('egg-bootstrap', \ContentEgg\PLUGIN_RES . '/bootstrap/css/egg-bootstrap.css');
151
- \wp_enqueue_script('bootstrap', \ContentEgg\PLUGIN_RES . '/bootstrap/js/bootstrap.min.js', array('jquery'), null, false);
152
-
153
- // ContentEgg application params
154
- $this->addAppParam('active_modules', ModuleManager::getInstance()->getModulesIdList(true));
155
- $this->addAppParam('nonce', \wp_create_nonce('contentegg-metabox'));
156
-
157
- \wp_localize_script('contentegg-metabox-app', 'contentegg_params', $this->getAppParams());
158
- }
159
-
160
- /**
161
- * Save the meta when the post is saved.
162
- *
163
- * @param int $post_id The ID of the post being saved.
164
- */
165
- public function saveMeta($post_id)
166
- {
167
- if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
168
- return;
169
-
170
- if (!isset($_POST['contentegg_nonce']))
171
- return;
172
-
173
- /*
174
- * why shouldn't i save metadata when its a revision?
175
- *
176
- * Apparently *_post_meta functions will automatically change
177
- * to parent post id if passed revision post id. So you might modify original post,
178
- * thinking you are modifying revision.
179
- *
180
- if (\wp_is_post_revision($post_id))
181
- return;
182
- *
183
- */
184
-
185
- \check_admin_referer('contentegg_metabox', 'contentegg_nonce');
186
-
187
- // Check the user's permissions.
188
- if ($_POST['post_type'] == 'page')
189
- {
190
- if (!current_user_can('edit_page', $post_id))
191
- return;
192
- } else
193
- {
194
- if (!current_user_can('edit_post', $post_id))
195
- return;
196
- }
197
-
198
- // need stripslashes? wp bug with revision post type?
199
- if (\wp_is_post_revision($post_id))
200
- $stripslashes = false;
201
- else
202
- $stripslashes = true;
203
-
204
- // keywords for automatic updates
205
- $keywords = InputHelper::post('cegg_updateKeywords', array(), $stripslashes);
206
- foreach ($keywords as $module_id => $keyword)
207
- {
208
- if (!ModuleManager::getInstance()->moduleExists($module_id) || !ModuleManager::getInstance()->isModuleActive($module_id))
209
- continue;
210
-
211
- $module = ModuleManager::getInstance()->factory($module_id);
212
- if (!$module->isAffiliateParser())
213
- continue;
214
-
215
- $keyword = \sanitize_text_field($keyword);
216
- if ($keyword)
217
- {
218
- \update_post_meta($post_id, ContentManager::META_PREFIX_KEYWORD . $module_id, $keyword);
219
- } else
220
- {
221
- \delete_post_meta($post_id, ContentManager::META_PREFIX_KEYWORD . $module_id);
222
- }
223
- }
224
-
225
- // save content data
226
- $content = InputHelper::post('cegg_data', array(), $stripslashes);
227
- if (!is_array($content))
228
- return;
229
-
230
- foreach ($content as $module_id => $data)
231
- {
232
- if (!ModuleManager::getInstance()->moduleExists($module_id) || !ModuleManager::getInstance()->isModuleActive($module_id))
233
- continue;
234
-
235
- $data = json_decode($data, true);
236
- $data = $this->dataPrepare($data);
237
- ContentManager::saveData($data, $module_id, $post_id);
238
- }
239
- }
240
-
241
- private function dataPrepare($data)
242
- {
243
- if (!is_array($data))
244
- return array();
245
- foreach ($data as $key => $d)
246
- {
247
- if ($key == 'description')
248
- $data[$key] = TextHelper::nl2br($d);
249
- }
250
- return $data;
251
- }
252
-
253
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/GeneralConfig.php DELETED
@@ -1,165 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\admin;
4
-
5
- use ContentEgg\application\components\Config;
6
- use ContentEgg\application\Plugin;
7
- use ContentEgg\application\admin\PluginAdmin;
8
- use ContentEgg\application\models\PriceAlertModel;
9
-
10
- /**
11
- * GeneralSettings class file
12
- *
13
- * @author keywordrush.com <support@keywordrush.com>
14
- * @link http://www.keywordrush.com/
15
- * @copyright Copyright &copy; 2015 keywordrush.com
16
- */
17
- class GeneralConfig extends Config {
18
-
19
- public function page_slug()
20
- {
21
- return Plugin::slug() . '';
22
- }
23
-
24
- public function option_name()
25
- {
26
- return 'contentegg_options';
27
- }
28
-
29
- public function add_admin_menu()
30
- {
31
- \add_submenu_page(Plugin::slug, __('Настройки', 'content-egg') . ' &lsaquo; Content Egg', __('Настройки', 'content-egg'), 'manage_options', $this->page_slug, array($this, 'settings_page'));
32
- }
33
-
34
- public static function langs()
35
- {
36
- return array(
37
- 'ar' => 'Arabic',
38
- 'bg' => 'Bulgarian',
39
- 'ca' => 'Catalan',
40
- //'zh_CN' => 'Chinese (simplified)',
41
- //'zh_TW' => 'Chinese (traditional)',
42
- 'hr' => 'Croatian',
43
- 'cs' => 'Czech',
44
- 'da' => 'Danish',
45
- 'nl' => 'Dutch',
46
- 'en' => 'English',
47
- 'et' => 'Estonian',
48
- 'tl' => 'Filipino',
49
- 'fi' => 'Finnish',
50
- 'fr' => 'French',
51
- 'de' => 'German',
52
- 'el' => 'Greek',
53
- 'iw' => 'Hebrew',
54
- 'hi' => 'Hindi',
55
- 'hu' => 'Hungarian',
56
- 'is' => 'Icelandic',
57
- 'id' => 'Indonesian',
58
- 'it' => 'Italian',
59
- 'ja' => 'Japanese',
60
- 'ko' => 'Korean',
61
- 'lv' => 'Latvian',
62
- 'lt' => 'Lithuanian',
63
- 'ms' => 'Malay',
64
- 'no' => 'Norwegian',
65
- 'fa' => 'Persian',
66
- 'pl' => 'Polish',
67
- 'pt' => 'Portuguese',
68
- 'ro' => 'Romanian',
69
- 'ru' => 'Russian',
70
- 'sr' => 'Serbian',
71
- 'sk' => 'Slovak',
72
- 'sl' => 'Slovenian',
73
- 'es' => 'Spanish',
74
- 'sv' => 'Swedish',
75
- 'th' => 'Thai',
76
- 'tr' => 'Turkish',
77
- 'uk' => 'Ukrainian',
78
- 'ur' => 'Urdu',
79
- 'vi' => 'Vietnamese',
80
- );
81
- }
82
-
83
- protected function options()
84
- {
85
-
86
- $post_types = get_post_types(array('public' => true), 'names');
87
- if (isset($post_types['attachment']))
88
- unset($post_types['attachment']);
89
-
90
- $total_price_alerts = PriceAlertModel::model()->count('status = ' . PriceAlertModel::STATUS_ACTIVE);
91
- $sent_price_alerts = PriceAlertModel::model()->count('status = ' . PriceAlertModel::STATUS_DELETED
92
- . ' AND TIMESTAMPDIFF( DAY, complet_date, "' . \current_time('mysql') . '") <= ' . PriceAlertModel::CLEAN_DELETED_DAYS);
93
-
94
- return array(
95
- 'lang' => array(
96
- 'title' => __('Язык сайта', 'content-egg'),
97
- 'description' => __('Модули, которые имеют поддержку мультиязычности, будут отдавать предпочтение контенту на этом языке. Также эта настройка указывает на язык для локализации шаблонов.', 'content-egg'),
98
- 'dropdown_options' => self::langs(),
99
- 'callback' => array($this, 'render_dropdown'),
100
- 'default' => self::getDefaultLang(),
101
- 'section' => 'default',
102
- ),
103
- 'post_types' => array(
104
- 'title' => 'Post Types',
105
- 'description' => __('К каким типам постов добавить Content Egg metabox?', 'content-egg') . ' ' .
106
- __('Эта настройка также показывает к каким типам постов применять автозаполнение на странице "Заполнить".', 'content-egg'),
107
- 'checkbox_options' => $post_types,
108
- 'callback' => array($this, 'render_checkbox_list'),
109
- 'default' => array('post', 'page'),
110
- 'section' => 'default',
111
- ),
112
- 'filter_bots' => array(
113
- 'title' => __('Фильтровать ботов', 'content-egg'),
114
- 'description' => __('Боты не могут запускать парсеры.', 'content-egg') .
115
- '<p class="description">' . __('Обновление цены, а также обновление выдачи по ключевому слову происходит при открытии страницы поста. Если мы определим по useragent, что на страницу зашел один из известных ботов, никакие парсеры запускаться не будут.', 'content-egg') . '</p>',
116
- 'checkbox_options' => $post_types,
117
- 'callback' => array($this, 'render_checkbox'),
118
- 'default' => true,
119
- 'section' => 'default',
120
- ),
121
- 'price_history_days' => array(
122
- 'title' => __('История изменения цены', 'content-egg'),
123
- 'description' => __('Сколько дней хранить историю изменения цены для товаров. 0 - не сохранять историю.', 'content-egg'),
124
- 'callback' => array($this, 'render_input'),
125
- 'default' => 180,
126
- 'validator' => array(
127
- 'trim',
128
- 'absint',
129
- array(
130
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
131
- 'arg' => 365,
132
- 'message' => sprintf(__('Поле "%s" не может быть больше %d.', 'content-egg'), __('История изменения цены', 'content-egg'), 362),
133
- ),
134
- ),
135
- ),
136
- 'price_alert_enabled' => array(
137
- 'title' => 'Price alert',
138
- 'description' => __('Разрешить посетителям подписываться на уведомления по email о снижении цены.', 'content-egg') .
139
- '<p class="description">' .sprintf(__('Активных подписок сейчас: <b>%d</b>', 'content-egg'), $total_price_alerts) .
140
- '. ' . sprintf(__('Отправлено уведомлений за последнии %d дней: <b>%d</b>', 'content-egg'), PriceAlertModel::CLEAN_DELETED_DAYS, $sent_price_alerts) . '.</p>' .
141
- '<p class="description">' . __('Для работы этой опции "История изменения цены" также должна быть включена.', 'content-egg') . '</p>',
142
- 'checkbox_options' => $post_types,
143
- 'callback' => array($this, 'render_checkbox'),
144
- 'default' => true,
145
- 'section' => 'default',
146
- ),
147
- );
148
- }
149
-
150
- public static function getDefaultLang()
151
- {
152
- $locale = \get_locale();
153
- $lang = explode('_', $locale);
154
- if (array_key_exists($lang[0], self::langs()))
155
- return $lang[0];
156
- else
157
- return 'en';
158
- }
159
-
160
- public function settings_page()
161
- {
162
- PluginAdmin::render('settings', array('page_slug' => $this->page_slug()));
163
- }
164
-
165
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/ImportExportController.php DELETED
@@ -1,71 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\admin;
4
-
5
- use ContentEgg\application\Plugin;
6
- use ContentEgg\application\components\ModuleManager;
7
-
8
- /**
9
- * ImportExportController class file
10
- *
11
- * @author keywordrush.com <support@keywordrush.com>
12
- * @link http://www.keywordrush.com/
13
- * @copyright Copyright &copy; 2016 keywordrush.com
14
- */
15
- class ImportExportController {
16
-
17
- const slug = 'content-egg-import-export';
18
-
19
- public function __construct()
20
- {
21
- \add_action('admin_menu', array($this, 'add_admin_menu'));
22
- }
23
-
24
- public function add_admin_menu()
25
- {
26
- \add_submenu_page(Plugin::slug, __('Импорт/Экспорт', 'content-egg') . ' &lsaquo; Content Egg', __('Импорт/Экспорт', 'content-egg'), 'manage_options', self::slug, array($this, 'actionIndex'));
27
- }
28
-
29
- public function actionIndex()
30
- {
31
- $_POST = array_map('stripslashes_deep', $_POST);
32
- $message = '';
33
- $notice = '';
34
-
35
- $all_options = array();
36
- // main settings
37
- $all_options[GeneralConfig::getInstance()->option_name()] = GeneralConfig::getInstance()->getOptionValues();
38
- // modules
39
- $all_options = array_merge($all_options, ModuleManager::getInstance()->getOptionsList());
40
-
41
- if (!empty($_POST['nonce']) && \wp_verify_nonce($_POST['nonce'], basename(__FILE__)) && !empty($_POST['import_str']))
42
- {
43
- $import = json_decode($_POST['import_str'], true);
44
- if ($import)
45
- {
46
- foreach ($import as $option => $values)
47
- {
48
- if (!array_key_exists($option, $all_options))
49
- continue;
50
- $save = $all_options[$option];
51
- foreach ($save as $k => $v)
52
- {
53
- if (isset($values[$k]))
54
- $save[$k] = $values[$k];
55
- }
56
- \update_option($option, $save);
57
- $all_options[$option] = $save;
58
- }
59
- $message = __('Опции были сохранены.', 'content-egg') . ' <a href="?page=content-egg">' . __('Страница настроек', 'content-egg') . '</a>';
60
- } else
61
- $notice = __('Неверный формат.', 'content-egg');
62
- }
63
- PluginAdmin::getInstance()->render('import_export', array(
64
- 'export_str' => json_encode($all_options),
65
- 'notice' => $notice,
66
- 'message' => $message,
67
- 'nonce' => \wp_create_nonce(basename(__FILE__)),
68
- ));
69
- }
70
-
71
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/MyListTable.php DELETED
@@ -1,196 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\admin;
4
-
5
- use ContentEgg\application\Plugin;
6
- use ContentEgg\application\models\Model;
7
- use ContentEgg\application\helpers\TemplateHelper;
8
-
9
- /**
10
- * MyListTable class file
11
- *
12
- * @author keywordrush.com <support@keywordrush.com>
13
- * @link http://www.keywordrush.com/
14
- * @copyright Copyright &copy; 2015 keywordrush.com
15
- */
16
- if (!class_exists('\WP_List_Table'))
17
- {
18
- require_once( \ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
19
- }
20
-
21
- class MyListTable extends \WP_List_Table {
22
-
23
- const per_page = 15;
24
-
25
- private $numeric_search = true;
26
- private $owner_check = false;
27
- private $model;
28
-
29
- function __construct(Model $model, array $config = array())
30
- {
31
- global $status, $page;
32
-
33
- /*
34
- if (isset($config['numeric_search']))
35
- $this->numeric_search = (bool) $config['numeric_search'];
36
- if (isset($config['owner_check']))
37
- $this->owner_check = (bool) $config['owner_check'];
38
- *
39
- */
40
-
41
- $this->model = $model;
42
- parent::__construct(array(
43
- 'singular' => Plugin::slug . '-table',
44
- 'plural' => Plugin::slug . '-all-tables',
45
- 'screen' => get_current_screen()
46
- ));
47
- }
48
-
49
- function default_orderby()
50
- {
51
- return 'id';
52
- }
53
-
54
- function prepare_items()
55
- {
56
- global $wp_version;
57
- global $wpdb;
58
-
59
- $user_id = get_current_user_id();
60
- $columns = $this->get_columns();
61
- $where = '';
62
- $where_count = '';
63
-
64
- if ($this->owner_check && !is_super_admin())
65
- {
66
- $where = 'user_id = ' . $user_id;
67
- $where_count = "user_id = " . $user_id;
68
- }
69
-
70
- $hidden = array();
71
- $sortable = $this->get_sortable_columns();
72
- $this->_column_headers = array($columns, $hidden, $sortable);
73
- $this->process_bulk_action();
74
- $total_items = $this->model->count($where_count);
75
-
76
- if (!empty($_REQUEST['s']))
77
- {
78
- if ($this->numeric_search && is_numeric($_REQUEST['s']))
79
- {
80
- if ($where)
81
- $where .= ' AND ';
82
- $where .= 'id = ' . (int) $_REQUEST['s'];
83
- } else
84
- {
85
- if ($where)
86
- $where .= ' AND ';
87
- $where = array($where);
88
- $where[0] .= 'name LIKE %s';
89
- $where[1] = array('%' . sanitize_text_field($_REQUEST['s']) . '%');
90
- }
91
- }
92
- $paged = isset($_REQUEST['paged']) ? max(0, intval($_REQUEST['paged']) - 1) : 0;
93
- $orderby = (isset($_REQUEST['orderby']) && in_array($_REQUEST['orderby'], array_keys($this->get_sortable_columns()))) ? $_REQUEST['orderby'] : $this->default_orderby();
94
- $order = (isset($_REQUEST['order']) && in_array($_REQUEST['order'], array('asc', 'desc'))) ? $_REQUEST['order'] : 'desc';
95
-
96
- $params = array(
97
- 'where' => $where,
98
- 'limit' => self::per_page,
99
- 'offset' => $paged * self::per_page,
100
- 'order' => $orderby . ' ' . $order,
101
- );
102
- $this->items = $this->model->findAll($params);
103
-
104
- $this->set_pagination_args(
105
- array(
106
- 'total_items' => $total_items,
107
- 'per_page' => self::per_page,
108
- 'total_pages' => ceil($total_items / self::per_page)
109
- ));
110
- }
111
-
112
- function column_default($item, $column_name)
113
- {
114
- return esc_html($item[$column_name]);
115
- }
116
-
117
- private function view_column_datetime($item, $col_name)
118
- {
119
-
120
- if ($item[$col_name] == '0000-00-00 00:00:00')
121
- return ' - ';
122
-
123
- $modified_timestamp = strtotime($item[$col_name]);
124
- $current_timestamp = current_time('timestamp');
125
- $time_diff = $current_timestamp - $modified_timestamp;
126
- if ($time_diff >= 0 && $time_diff < DAY_IN_SECONDS)
127
- $time_diff = human_time_diff($modified_timestamp, $current_timestamp) . __(' назад', 'content-egg');
128
- else
129
- $time_diff = TemplateHelper::formatDatetime($item[$col_name], 'mysql', '<br />');
130
-
131
- $readable_time = TemplateHelper::formatDatetime($item[$col_name], 'mysql', ' ');
132
- return '<abbr title="' . esc_attr($readable_time) . '">' . $time_diff . '</abbr>';
133
- }
134
-
135
- function column_create_date($item)
136
- {
137
- return $this->view_column_datetime($item, 'create_date');
138
- }
139
-
140
- function column_update_date($item)
141
- {
142
- return $this->view_column_datetime($item, 'update_date');
143
- }
144
-
145
- function column_last_check($item)
146
- {
147
- return $this->view_column_datetime($item, 'last_check');
148
- }
149
-
150
- function column_last_run($item)
151
- {
152
- return $this->view_column_datetime($item, 'last_run');
153
- }
154
-
155
- function column_cb($item)
156
- {
157
- return sprintf(
158
- '<input type="checkbox" name="id[]" value="%d" />', $item['id']
159
- );
160
- }
161
-
162
- function get_bulk_actions()
163
- {
164
- $actions = array(
165
- 'delete' => __('Удалить', 'content-egg')
166
- );
167
- return $actions;
168
- }
169
-
170
- function process_bulk_action()
171
- {
172
- if ($this->current_action() === 'delete')
173
- {
174
- $ids = isset($_GET['id']) ? $_REQUEST['id'] : array();
175
- if (!is_array($ids))
176
- $ids = (array) $ids;
177
- foreach ($ids as $id)
178
- {
179
- $id = (int) $id;
180
- /*
181
- if ($this->owner_check && !is_super_admin())
182
- {
183
- $egg = EggModel::model()->findByPk($id);
184
- if (!$egg || $egg['user_id'] != get_current_user_id())
185
- {
186
- \wp_die(__('You do not have sufficient permissions to access this page.', 'default'));
187
- }
188
- }
189
- *
190
- */
191
- $this->model->delete($id);
192
- }
193
- }
194
- }
195
-
196
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/PluginAdmin.php DELETED
@@ -1,113 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\admin;
4
-
5
- use ContentEgg\application\Plugin;
6
- use ContentEgg\application\helpers\TextHelper;
7
- use ContentEgg\application\admin\GeneralConfig;
8
- use ContentEgg\application\components\ModuleManager;
9
- use ContentEgg\application\components\ModuleApi;
10
- use ContentEgg\application\components\FeaturedImage;
11
-
12
- /**
13
- * PluginAdmin class file
14
- *
15
- * @author keywordrush.com <support@keywordrush.com>
16
- * @link http://www.keywordrush.com/
17
- * @copyright Copyright &copy; 2016 keywordrush.com
18
- */
19
- class PluginAdmin {
20
-
21
- protected static $instance = null;
22
-
23
- public static function getInstance()
24
- {
25
- if (self::$instance == null)
26
- self::$instance = new self;
27
-
28
- return self::$instance;
29
- }
30
-
31
- private function __construct()
32
- {
33
- if (!\is_admin())
34
- die('You are not authorized to perform the requested action.');
35
-
36
- \add_action('admin_menu', array($this, 'add_admin_menu'));
37
- \add_action('admin_enqueue_scripts', array($this, 'admin_load_scripts'));
38
-
39
- if (isset($GLOBALS['pagenow']) && $GLOBALS['pagenow'] == 'plugins.php')
40
- {
41
- \add_filter('plugin_row_meta', array($this, 'add_plugin_row_meta'), 10, 2);
42
- }
43
- if (Plugin::isFree() || (Plugin::isPro() && Plugin::isActivated()) || Plugin::isEnvato())
44
- {
45
- GeneralConfig::getInstance()->adminInit();
46
- new ImportExportController;
47
- ModuleManager::getInstance()->adminInit();
48
- AdminNotice::getInstance()->adminInit();
49
- new EggMetabox;
50
- new ModuleApi;
51
- new FeaturedImage;
52
- new PrefillController;
53
- new AutoblogController;
54
- AeIntegrationConfig::getInstance()->adminInit();
55
- }
56
- if (Plugin::isEnvato() && !Plugin::isActivated() && !\get_option(Plugin::slug . '_env_install'))
57
- EnvatoConfig::getInstance()->adminInit();
58
- elseif (Plugin::isPro())
59
- LicConfig::getInstance()->adminInit();
60
- if (Plugin::isPro() && Plugin::isActivated())
61
- {
62
- new \ContentEgg\application\Autoupdate(Plugin::version(), plugin_basename(\ContentEgg\PLUGIN_FILE), Plugin::getApiBase(), Plugin::slug);
63
- }
64
- }
65
-
66
- function admin_load_scripts()
67
- {
68
- if ($GLOBALS['pagenow'] != 'admin.php' || empty($_GET['page']))
69
- return;
70
-
71
- $page_pats = explode('-', $_GET['page']);
72
-
73
- if (count($page_pats) < 2 || $page_pats[0] . '-' . $page_pats[1] != 'content-egg')
74
- return;
75
- \wp_enqueue_script('content_egg_common', \ContentEgg\PLUGIN_RES . '/js/common.js', array('jquery'));
76
- \wp_localize_script('content_egg_common', 'contenteggL10n', array(
77
- 'are_you_shure' => __('Вы уверены?', 'content-egg'),
78
- 'sitelang' => GeneralConfig::getInstance()->option('lang'),
79
- ));
80
-
81
- //\wp_enqueue_style('egg-bootstrap', \ContentEgg\PLUGIN_RES . '/bootstrap/css/egg-bootstrap.css');
82
- \wp_enqueue_style('contentegg-admin', \ContentEgg\PLUGIN_RES . '/css/admin.css');
83
- }
84
-
85
- public function add_plugin_row_meta(array $links, $file)
86
- {
87
- if ($file == plugin_basename(\ContentEgg\PLUGIN_FILE) && (Plugin::isActivated() || Plugin::isFree()))
88
- {
89
- return array_merge(
90
- $links, array(
91
- '<a href="' . get_bloginfo('wpurl') . '/wp-admin/admin.php?page=content-egg">' . __('Настройки', 'content-egg') . '</a>',
92
- )
93
- );
94
- }
95
- return $links;
96
- }
97
-
98
- public function add_admin_menu()
99
- {
100
- \add_menu_page('Content Egg', 'Content Egg', 'publish_posts', Plugin::slug, null, 'dashicons-screenoptions');
101
- }
102
-
103
- public static function render($view_name, $_data = null)
104
- {
105
- if (is_array($_data))
106
- extract($_data, EXTR_PREFIX_SAME, 'data');
107
- else
108
- $data = $_data;
109
-
110
- include \ContentEgg\PLUGIN_PATH . 'application/admin/views/' . TextHelper::clear($view_name) . '.php';
111
- }
112
-
113
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/PrefillController.php DELETED
@@ -1,191 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\admin;
4
-
5
- use ContentEgg\application\Plugin;
6
- use ContentEgg\application\components\ModuleManager;
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
14
- *
15
- * @author keywordrush.com <support@keywordrush.com>
16
- * @link http://www.keywordrush.com/
17
- * @copyright Copyright &copy; 2016 keywordrush.com
18
- */
19
- class PrefillController {
20
-
21
- const slug = 'content-egg-prefill';
22
-
23
- public function __construct()
24
- {
25
- \add_action('admin_menu', array($this, 'add_admin_menu'));
26
- \add_action('wp_ajax_' . self::slug, array($this, 'addApiEntry'));
27
-
28
- if ($GLOBALS['pagenow'] == 'admin.php' && !empty($_GET['page']) && $_GET['page'] == self::slug)
29
- {
30
- \wp_enqueue_script('contentegg-prefill', \ContentEgg\PLUGIN_RES . '/js/prefill.js', array('jquery'));
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
- 'post_ids' =>
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
- }
45
- }
46
-
47
- public function add_admin_menu()
48
- {
49
- \add_submenu_page(Plugin::slug, __('Заполнить', 'content-egg') . ' &lsaquo; Content Egg', __('Заполнить', 'content-egg'), 'publish_posts', self::slug, array($this, 'actionIndex'));
50
- }
51
-
52
- public function actionIndex()
53
- {
54
- PluginAdmin::getInstance()->render('prefill', array(
55
- //'nonce' => \wp_create_nonce(basename(__FILE__)),
56
- ));
57
- }
58
-
59
- public static function apiBase()
60
- {
61
- return self::slug;
62
- }
63
-
64
- public function addApiEntry()
65
- {
66
- if (!\current_user_can('edit_posts'))
67
- throw new \Exception("Access denied.");
68
-
69
- \check_ajax_referer('contentegg-prefill', 'nonce');
70
-
71
- if (empty($_GET['module_id']))
72
- throw new \Exception("Module is undefined.");
73
- if (empty($_GET['post_id']))
74
- throw new \Exception("Post ID is undefined.");
75
-
76
- $module_id = TextHelper::clear($_GET['module_id']);
77
- $post_id = (int) $_GET['post_id'];
78
- $keyword_source = InputHelper::get('keyword_source');
79
- $autoupdate = InputHelper::get('autoupdate');
80
- $keyword_count = (int) InputHelper::get('keyword_count');
81
-
82
- $parser = ModuleManager::getInstance()->parserFactory($module_id);
83
- if (!$parser->isActive())
84
- throw new \Exception("Parser module " . $parser->getId() . " is inactive.");
85
-
86
- if (!$post = \get_post($post_id))
87
- throw new \Exception("Post does not exists.");
88
-
89
- $log = 'Post ID: ' . $post->ID;
90
- $log .= ' (' . TextHelper::truncate($post->post_title) . ').';
91
-
92
- // data exists?
93
- if (ContentManager::isDataExists($post->ID, $parser->getId()))
94
- {
95
- $log .= ' - ' . __('Данные уже существуют.', 'content-egg');
96
- $this->printResult($log);
97
- }
98
-
99
- $keyword = $this->getKeyword($post_id, $keyword_source, $keyword_count);
100
-
101
- if (!$keyword)
102
- $this->printResult($log . ' - ' . __('Невозможно определить ключевое слово.', 'content-egg'));
103
-
104
- $log .= ' Keyword: "' . $keyword . '"';
105
-
106
- // autoupdate keyword
107
- if ($autoupdate && $parser->isAffiliateParser())
108
- {
109
- // exists?
110
- if (\get_post_meta($post->ID, ContentManager::META_PREFIX_KEYWORD . $parser->getId(), true))
111
- $this->printResult($log . ' - ' . __('Ключевое слово для автоапдейта уже существует.', 'content-egg'));
112
-
113
- // save & exit...
114
- \update_post_meta($post->ID, ContentManager::META_PREFIX_KEYWORD . $parser->getId(), $keyword);
115
- $this->printResult($log . ' - ' . __('Ключевое слово для автоапдейта сохранено.', 'content-egg'));
116
- }
117
-
118
- try
119
- {
120
- $data = $parser->doRequest($keyword, array(), true);
121
- } catch (\Exception $e)
122
- {
123
- // error
124
- $log .= ' - ' . __('Ошибка:', 'content-egg') . ' ' . $e->getMessage();
125
- $this->printResult($log);
126
- }
127
-
128
- // nodata!
129
- if (!$data)
130
- {
131
- $log .= ' - ' . __('Данные не найдены.', 'content-egg');
132
- $this->printResult($log);
133
- }
134
-
135
- // save
136
- ContentManager::saveData($data, $parser->getId(), $post->ID);
137
- $log .= ' - ' . __('Данные сохранены:', 'content-egg') . ' ' . count($data) . '.';
138
- $this->printResult($log);
139
- }
140
-
141
- private function printResult($mess)
142
- {
143
- $res = array();
144
- $res['log'] = htmlspecialchars($mess);
145
- header('Content-Type: application/json; charset=UTF-8');
146
- echo json_encode($res);
147
- \wp_die();
148
- }
149
-
150
- private function getKeyword($post_id, $keyword_source, $keyword_count)
151
- {
152
- $keyword = '';
153
- if ($keyword_source == '_title')
154
- {
155
- $post = \get_post($post_id);
156
- $keyword = $post->post_title;
157
- } elseif ($keyword_source == '_density')
158
- {
159
- $kd = new KeywordDensity(GeneralConfig::getInstance()->option('lang'));
160
- $kd->setText($this->getDensText($post_id));
161
- $popular = $kd->getPopularWords($keyword_count);
162
- $keyword = join(' ', $popular);
163
- } elseif (ModuleManager::getInstance()->moduleExists($keyword_source))
164
- {
165
- $keyword = \get_post_meta($post_id, ContentManager::META_PREFIX_KEYWORD . $keyword_source, true);
166
- }
167
-
168
- // split into words
169
- $wordlist = preg_split('/\W/u', $keyword, 0, PREG_SPLIT_NO_EMPTY);
170
-
171
- // returns only words that have minimum 2 chars
172
- $wordlist = array_filter($wordlist, function($val) {
173
- return mb_strlen($val, 'UTF-8') >= 2;
174
- });
175
-
176
- $wordlist = array_slice($wordlist, 0, $keyword_count);
177
-
178
- return join(' ', $wordlist);
179
- }
180
-
181
- private function getDensText($post_id)
182
- {
183
- $post = \get_post($post_id);
184
- $text = $post->post_title . ' ' . $post->post_content;
185
-
186
- $pattern = get_shortcode_regex();
187
- $text = preg_replace('/' . $pattern . '/s', ' ', $text);
188
- return $text;
189
- }
190
-
191
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/application/admin/views/_metabox_autoblog.php DELETED
@@ -1,351 +0,0 @@
1
- <?php
2
-
3
- use ContentEgg\application\components\ModuleManager;
4
- ?>
5
- <table cellspacing="2" cellpadding="5" style="width: 100%;" class="form-table">
6
- <tbody>
7
-
8
- <tr class="form-field">
9
- <th valign="top" scope="row">
10
- <label for="name"><?php _e('Название', 'content-egg'); ?></label>
11
- </th>
12
- <td>
13
- <input id="name" name="item[name]" type="text" value="<?php echo esc_attr($item['name']) ?>"
14
- size="50" class="code" placeholder="<?php _e('Название для автоблоггинга (необязательно)', 'content-egg'); ?>">
15
- </td>
16
- </tr>
17
-
18
- <tr class="form-field">
19
- <th valign="top" scope="row">
20
- <label for="status"><?php _e('Статус задания', 'content-egg'); ?></label>
21
- </th>
22
- <td>
23
- <select id="status" name="item[status]">
24
- <option value="1"<?php if ($item['status']) echo ' selected="selected"'; ?>><?php _e('Работает', 'content-egg'); ?></option>
25
- <option value="0"<?php if (!$item['status']) echo ' selected="selected"'; ?>><?php _e('Остановлен', 'content-egg'); ?></option>
26
- </select>
27
- <p class="description"><?php _e('Aвтоблоггинг можно приостановить.', 'content-egg'); ?></p>
28
- </td>
29
- </tr>
30
-
31
- <tr class="form-field">
32
- <th valign="top" scope="row">
33
- <label for="run_frequency"><?php _e('Периодичность запуска', 'content-egg'); ?></label>
34
- </th>
35
- <td>
36
- <select id="run_frequency" name="item[run_frequency]">
37
- <option value="3600"<?php if ($item['run_frequency'] == 3600) echo ' selected="selected"'; ?>><?php _e('Каждый час', 'content-egg'); ?></option>
38
- <option value="17280"<?php if ($item['run_frequency'] == 17280) echo ' selected="selected"'; ?>><?php _e('Пять раз в сутки', 'content-egg'); ?></option>
39
- <option value="43200"<?php if ($item['run_frequency'] == 43200) echo ' selected="selected"'; ?>><?php _e('Два раза в сутки', 'content-egg'); ?></option>
40
- <option value="86400"<?php if ($item['run_frequency'] == 86400) echo ' selected="selected"'; ?>><?php _e('Один раз в сутки', 'content-egg'); ?></option>
41
- <option value="259200"<?php if ($item['run_frequency'] == 259200) echo ' selected="selected"'; ?>><?php _e('Каждые три дня', 'content-egg'); ?></option>
42
- <option value="604800"<?php if ($item['run_frequency'] == 604800) echo ' selected="selected"'; ?>><?php _e('Один раз в неделю', 'content-egg'); ?></option>
43
- <option value="1209600"<?php if ($item['run_frequency'] == 1209600) echo ' selected="selected"'; ?>><?php _e('Один раз в две недели', 'content-egg'); ?></option>
44
- </select>
45
- <p class="description"><?php _e('Как часто запускать это задание автоблоггинга.', 'content-egg'); ?></p>
46
- </td>
47
- </tr>
48
- <?php if(!$batch): ?>
49
- <tr class="form-field">
50
- <th valign="top" scope="row">
51
- <label for="keywords"><?php _e('Ключевые слова', 'content-egg'); ?></label>
52
- </th>
53
- <td>
54
-
55
- <table width='100%'>
56
- <tr>
57
- <td valign="top" style="vertical-align: top;" width="50%">
58
- <div style="margin-bottom: 10px;">
59
- <button id="tool_capitalise" title="<?php _e('Заглавная Первая Буква Каждого Слова', 'content-egg'); ?>"><?php _e('Заглавная Первая Буква Каждого Слова', 'content-egg'); ?></button>
60
- <button href="#" id="tool_upper_first" title="<?php _e('Заглавная первая буква', 'content-egg'); ?>"><?php _e('Заглавная первая буква', 'content-egg'); ?></button>
61
- <button href="#" id="tool_sort" title="<?php _e('Сортировать в алфавитном порядке', 'content-egg'); ?>"><?php _e('Сортировать в алфавитном порядке', 'content-egg'); ?></button>
62
- <button href="#" id="tool_add_minus" title="<?php _e('Все слова неактивные', 'content-egg'); ?>"><?php _e('Все слова неактивные', 'content-egg'); ?></button>
63
- <button href="#" id="tool_del_minus" title="<?php _e('Все слова активные', 'content-egg'); ?>"><?php _e('Все слова активные', 'content-egg'); ?></button>
64
- <button href="#" id="tool_delete" title="<?php _e('Очистить список', 'content-egg'); ?>"><?php _e('Очистить список', 'content-egg'); ?></button>
65
- </div>
66
- <textarea rows="28" id="keywords" name="item[keywords]" class="small-text"><?php echo esc_html($item['keywords']) ?></textarea>
67
- <div>
68
- <?php _e('Всего', 'content-egg'); ?>: <b><span id="k_count">0</span></b>
69
- </div>
70
- </td>
71
- <td valign="top" style="vertical-align: top;">
72
- <div id="cegg-parsers-tabs">
73
- <ul>
74
- <li><a href="#fragment-1"><?php _e('Подсказки', 'content-egg'); ?></a></li>
75
- <li><a href="#fragment-2"><?php _e('Тренды', 'content-egg'); ?></a></a></li>
76
- <li><a href="#fragment-3"><?php _e('Товары', 'content-egg'); ?></a></a></li>
77
- </ul>
78
- <div id="fragment-1">
79
- <div id="sug_btn_group" class="btn-group" style="margin-bottom: 10px;">
80
- <input id="sug_google" name="sug_radio" value="sug_google" type="radio" checked="checked"><label for="sug_google">Google</label>
81
- <input id="sug_amazon" name="sug_radio" value="sug_amazon" type="radio"><label for="sug_amazon">Amazon</label>
82
- <?php if (\ContentEgg\application\admin\GeneralConfig::getInstance()->option('lang') == 'ru'): ?>
83
- <input id="sug_yandex" name="sug_radio" value="sug_yandex" type="radio"><label for="sug_yandex"><?php _e('Яндекс', 'content-egg'); ?></label>
84
- <input id="sug_market" name="sug_radio" value="sug_market" type="radio"><label for="sug_market"><?php _e('Я.Маркет', 'content-egg'); ?></label>
85
- <?php endif; ?>
86
- </div>
87
- <input type="text" id="sug_query" placeholder="<?php _e('Начните вводить ключевое слово', 'content-egg'); ?>" />
88
- <select multiple="multiple" id="sug_keywords" style="width: 98%" size="23"></select>
89
- </div>
90
- <div id="fragment-2">
91
- <div style="margin-bottom: 10px;">
92
- <button id="trend_google" type="button">Hot Trends...</button>
93
- </div>
94
- <select multiple="multiple" id="trend_keywords" style="width: 98%" size="24"></select>
95
- </div>
96
- <div id="fragment-3">
97
- <div style="margin-bottom: 10px;">
98
-
99
- <select id='amazon_categ'>
100
- <?php foreach ($item['amazon_categs'] as $ac_value => $ac_name): ?>
101
- <option value='<?php echo $ac_value; ?>'><?php echo $ac_name; ?></option>
102
- <?php endforeach; ?>
103
- </select>
104
- <select id='amazon_section'>
105
- <option value='bestsellers'>Bestsellers</option>
106
- <option value='new-releases'>New Releases</option>
107
- <option value='movers-and-shakers'>Movers and Shakers</option>
108
- <option value='top-rated'>Top Rated</option>
109
- <option value='most-wished-for'>Most Wished For</option>
110
- <option value='most-gifted'>Most Gifted</option>
111
- </select>
112
- <button id="trend_goods" type="button"><?php _e('Загрузить...', 'content-egg'); ?></button>
113
-
114
- </div>
115
- <select multiple="multiple" id="goods_keywords" style="width: 98%" size="24"></select>
116
-
117
-
118
- </div>
119
- </div>
120
- </td>
121
- </tr>
122
- </table>
123
- <p class="">
124
- <?php _e('Каждое слово - с новой строки.', 'content-egg'); ?>
125
- <?php _e('Одно ключевое слово - это один пост.', 'content-egg'); ?>
126
- <?php _e('Обработанные слова отмечены [квадратными скобками].', 'content-egg'); ?>
127
- <?php _e('Когда обработка всех слов закончится, задание будет остановлено.', 'content-egg'); ?>
128
- </p>
129
-
130
- </td>
131
- </tr>
132
- <?php endif; ?>
133
- <?php if($batch): ?>
134
-
135
-
136
-
137
- <tr class="form-field">
138
- <th valign="top" scope="row">
139
- <label for="keywords_file"><?php _e('Ключевые слова', 'content-egg'); ?></label>
140
- </th>
141
-
142
- <td>
143
- <input id="keywords_file" type="file" name="item[keywords_file]" value="" />
144
-
145
- <p class="description">
146
-
147
- <?php _e('Поддерживаются два вида файлов:', 'content-egg'); ?>
148
- <br>
149
- <br>
150
- <b>1. <?php _e('CSV файлы в формате:', 'content-egg'); ?></b>
151
- <br>
152
- category 1;keyword 1<br>
153
- category 1;keyword 2<br>
154
- category 2;keyword 1<br>
155
- category 2;keyword 2<br>
156
- ...
157
- <br>
158
- <?php _e('Разделитель - ";" - точка с запятой.', 'content-egg'); ?><br>
159
- <?php _e('Для каждой категории будет создано отдельное задание автоблоггинга.', 'content-egg'); ?>
160
- <br><br>
161
- <b>2. <?php _e('TXT файлы:', 'content-egg'); ?></b><br>
162
- - <?php _e('обычный текстовый файл со списком ключевых слов (каждое слово - с новой строки).', 'content-egg'); ?>
163
- <br>
164
- <?php _e('Кодировка файлов должна быть UTF-8.', 'content-egg'); ?>
165
- </p>
166
- </td>
167
- </tr>
168
-
169
- <?php endif; ?>
170
-
171
- <tr class="form-field">
172
- <th valign="top" scope="row">
173
- <label for="keywords_per_run"><?php _e('Обрабатывать ключевых слов', 'content-egg'); ?></label>
174
- </th>
175
- <td>
176
- <input id="keywords_per_run" name="item[keywords_per_run]" value="<?php echo esc_attr($item['keywords_per_run']) ?>"
177
- type="number" class="small-text">
178
- <p class="description"><?php _e('Сколько ключевых слов обрабатывать за однин раз. Не рекомендуется устанавливать это значение более 5, чтобы излишне не нагружать сервер.', 'content-egg'); ?></p>
179
- </td>
180
- </tr>
181
-
182
- <tr class="form-field">
183
- <th valign="top" scope="row">
184
- <label for="include_modules"><?php _e('Только выбранные модули', 'content-egg'); ?></label>
185
- </th>
186
- <td>
187
- <div class="cegg-checkboxgroup">
188
- <?php foreach (ModuleManager::getInstance()->getParserModules(false) as $module): ?>
189
- <div class="cegg-checkbox">
190
- <label><input <?php if (in_array($module->getId(), $item['include_modules'])) echo 'checked'; ?> value="<?php echo esc_attr($module->getId()); ?>" type="checkbox" name="item[include_modules][]" /><?php echo $module->getName(); ?></label>
191
- </div>
192
- <?php endforeach; ?>
193
- </div>
194
- <p class="description">
195
- <?php _e('Запускать только выбранные модули для этого задания.', 'content-egg'); ?>
196
- <?php _e('Если ничего не выбрано, то подразумевается все активные модули на момент запуска автоблоггинга.', 'content-egg'); ?>
197
- </p>
198
- </td>
199
- </tr>
200
-
201
- <tr class="form-field">
202
- <th valign="top" scope="row">
203
- <label for="exclude_modules"><?php _e('Исключить модули', 'content-egg'); ?></label>
204
- </th>
205
- <td>
206
- <div class="cegg-checkboxgroup">
207
- <?php foreach (ModuleManager::getInstance()->getParserModules(false) as $module): ?>
208
- <div class="cegg-checkbox">
209
- <label><input <?php if (in_array($module->getId(), $item['exclude_modules'])) echo 'checked'; ?> value="<?php echo esc_attr($module->getId()); ?>" type="checkbox" name="item[exclude_modules][]" /><?php echo $module->getName(); ?></label>
210
- </div>
211
- <?php endforeach; ?>
212
- </div>
213
- <p class="description">
214
- <?php _e('Выбранные модули в этой конфигурации не будут запускаться.', 'content-egg'); ?>
215
- </p>
216
- </td>
217
- </tr>
218
-
219
- <tr class="form-field">
220
- <th valign="top" scope="row">
221
- <label for="template_title"><?php _e('Шаблон заголовка', 'content-egg'); ?></label>
222
- </th>
223
- <td>
224
-
225
- <input id="template_title" name="item[template_title]" value="<?php echo esc_attr($item['template_title']) ?>"
226
- type="text" class="regular-text ltr">
227
- <p class="description">
228
- <?php _e('Шаблон для заголовка поста.', 'content-egg'); ?>
229
- <?php _e('Используйте теги:', 'content-egg'); ?> %KEYWORD%.<br>
230
- <?php _e('Для обображения данных плагина используйте специальные теги, например:', 'content-egg'); ?> %Amazon.title%.<br>
231
- <?php _e('Вы также можете задать порядковый индекс для доступа к данным плагина:', 'content-egg'); ?> %Amazon.0.price%.<br>
232
- <?php _e('Вы можете использовать "формулы" с перечислением синонимов, из которых будет выбран один случайный вариант, например, {Скидка|Распродажа|Дешево}.', 'content-egg'); ?>
233
- </p>
234
- </td>
235
- </tr>
236
-
237
- <tr class="form-field">
238
- <th valign="top" scope="row">
239
- <label for="template_body"><?php _e('Шаблон поста', 'content-egg'); ?></label>
240
- </th>
241
- <td>
242
-
243
- <textarea rows="4" id="template_body" name="item[template_body]"><?php echo esc_html($item['template_body']) ?></textarea>
244
- <p class="description">
245
- <?php _e('Шаблон тела поста.', 'content-egg'); ?><br>
246
- <?php _e('Вы можете использовать шорткоды, точно также, как вы делаете это в обычных постах, например: ', 'content-egg'); ?>
247
- [content-egg module=Amazon template=grid]<br>
248
- <?php _e('"Форумлы", а также все теги из шаблона заголовка, также будут работать и здесь.', 'content-egg'); ?><br>
249
-
250
- </p>
251
- </td>
252
- </tr>
253
-
254
- <tr class="form-field">
255
- <th valign="top" scope="row">
256
- <label for="post_status"><?php _e('Статус поста', 'content-egg'); ?></label>
257
- </th>
258
- <td>
259
- <select id="post_status" name="item[post_status]">
260
- <option value="1"<?php if ($item['post_status'] == 1) echo ' selected="selected"'; ?>>Publish</option>
261
- <option value="0"<?php if ($item['post_status'] == 0) echo ' selected="selected"'; ?>>Pending</option>
262
- </select>
263
- </td>
264
- </tr>
265
-
266
- <tr class="form-field">
267
- <th valign="top" scope="row">
268
- <label for="user_id"><?php _e('Пользователь', 'content-egg'); ?></label>
269
- </th>
270
- <td>
271
- <?php
272
- wp_dropdown_users(array('name' => 'item[user_id]',
273
- 'who' => 'authors', 'id' => 'user_id', 'selected' => $item['user_id']));
274
- ?>
275
- <p class="description"><?php _e('От имени этого пользователя будут публиковаться посты.', 'content-egg'); ?></p>
276
- </td>
277
- </tr>
278
-
279
- <tr class="form-field">
280
- <th valign="top" scope="row">
281
- <label for="category"><?php _e('Категория', 'content-egg'); ?></label>
282
- </th>
283
- <td>
284
- <?php
285
- $opt = array('name' => 'item[category]', 'id' => 'category', 'selected' => $item['category'], 'hide_empty' => false);
286
- if($batch)
287
- {
288
- $opt['show_option_none'] = __('Создать автоматически', 'content-egg'); // -1
289
- $opt['selected'] = -1;
290
- }
291
- \wp_dropdown_categories($opt);
292
- ?>
293
- <p class="description">
294
- <?php _e('Категория для постов.', 'content-egg'); ?>
295
- <?php if($batch): ?>
296
- <?php _e('"Создать автоматически" - означает, что категории будут созданы на основании данных CSV файла с ключевыми словами и категориями.', 'content-egg'); ?>
297
- <?php endif; ?>
298
- </p>
299
- </td>
300
- </tr>
301
-
302
-
303
- <tr class="form-field">
304
- <th valign="top" scope="row">
305
- <label for="min_modules_count"><?php _e('Требуется минимум модулей', 'content-egg'); ?></label>
306
- </th>
307
- <td>
308
- <input id="min_modules_count" name="item[min_modules_count]" value="<?php echo esc_attr($item['min_modules_count']) ?>"
309
- type="number" class="small-text">
310
- <p class="description"><?php _e('Пост не будет опубликован, если контент не найден для этого количества модулей. ', 'content-egg'); ?></p>
311
- </td>
312
- </tr>
313
-
314
- <tr class="form-field">
315
- <th valign="top" scope="row">
316
- <label for="required_modules"><?php _e('Обязательные модули', 'content-egg'); ?></label>
317
- </th>
318
- <td>
319
- <div class="cegg-checkboxgroup">
320
- <?php foreach (ModuleManager::getInstance()->getParserModules(false) as $module): ?>
321
- <div class="cegg-checkbox">
322
- <label><input <?php if (in_array($module->getId(), $item['required_modules'])) echo 'checked'; ?> value="<?php echo esc_attr($module->getId()); ?>" type="checkbox" name="item[required_modules][]" /><?php echo $module->getName(); ?></label>
323
- </div>
324
- <?php endforeach; ?>
325
- </div>
326
- <p class="description">
327
- <?php _e('Пост опубликован не будет, если результаты для этих модулей не найдены.', 'content-egg'); ?>
328
- </p>
329
- </td>
330
- </tr>
331
-
332
- <tr class="form-field">
333
- <th valign="top" scope="row">
334
- <label for="autoupdate_modules"><?php _e('Автоматическое обновление', 'content-egg'); ?></label>
335
- </th>
336
- <td>
337
- <div class="cegg-checkboxgroup">
338
- <?php foreach (ModuleManager::getInstance()->getAffiliateParsers(false) as $module): ?>
339
- <div class="cegg-checkbox">
340
- <label><input <?php if (in_array($module->getId(), $item['autoupdate_modules'])) echo 'checked'; ?> value="<?php echo esc_attr($module->getId()); ?>" type="checkbox" name="item[autoupdate_modules][]" /><?php echo $module->getName(); ?></label>
341
- </div>
342
- <?php endforeach; ?>
343
- </div>
344
- <p class="description">
345
- <?php _e('Для выбранных модулей текущее ключевое слово будет задано как ключевое слово для автообновления. Выдача модуля будет переодически обновляться в соотвествии с настройкой времени жизни кэша.', 'content-egg'); ?>
346
- </p>
347
- </td>
348
- </tr>
349
-
350
- </tbody>
351
- </table>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/views/_metabox_results.php DELETED
@@ -1,19 +0,0 @@
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">
4
- <div class="row" style="padding: 5px;">
5
- <div class="col-md-1" ng-if="data.img">
6
- <img ng-src="{{data.img}}" class="img-responsive" style="max-height: 100px;" />
7
- </div>
8
- <div ng-class="data.img ? 'col-md-10' : 'col-md-11'">
9
- <input type="text" placeholder="<?php _e('Заголовок', 'content-egg'); ?>" ng-model="data.title" class="form-control" style="margin-bottom: 5px;">
10
- <textarea type="text" placeholder="<?php _e('Описание', 'content-egg'); ?>" rows="2" ng-model="data.description" class="col-sm-12 "></textarea>
11
- </div>
12
- <div class="col-md-1">
13
- <a href="{{data.url}}" target="_blank"><?php _e('Перейти', 'content-egg'); ?></a><br><br>
14
- <a ng-click="delete(data, '<?php echo $module_id; ?>')"><?php _e('Удалить', 'content-egg'); ?></a>
15
- </div>
16
- </div>
17
- </div>
18
- </div>
19
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/views/_metabox_search_results.php DELETED
@@ -1,16 +0,0 @@
1
- <div class="search_results" ng-show="models.<?php echo $module_id; ?>.results.length > 0 && !models.<?php echo $module_id; ?>.processing">
2
- <div class="row search_results_row" ng-class="{'result_added' : result.added}" ng-click="add(result, '<?php echo $module_id; ?>')" repeat-done ng-repeat="result in models.<?php echo $module_id; ?>.results">
3
- <div class="col-md-1" ng-if="result.img">
4
- <img ng-src="{{result.img}}" class="img-thumbnail" />
5
- </div>
6
- <div ng-class="result.img ? 'col-md-11' : 'col-md-12'">
7
- <strong ng-show="result.title">{{result.title}}</strong>
8
- <p ng-show="result.description">{{result.description| limitTo: 200}}{{result.description.length > 200 ? '&hellip;' : ''}}</p>
9
- <p ng-show="result.price">{{result.currencyCode}} <strike ng-show="result.priceOld">{{result.priceOld}}</strike> {{result.price}}</p>
10
- <div ng-show="result.code">
11
- <?php _e('Код купона:', 'content-egg'); ?> <em>{{result.code}}</em>
12
- - <span ng-show="result.startDate">{{result.startDate * 1000 |date:'mediumDate'}} - {{result.endDate * 1000 |date:'mediumDate'}}</span>
13
- </div>
14
- </div>
15
- </div>
16
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/views/_metabox_search_results_images.php DELETED
@@ -1,7 +0,0 @@
1
- <div class="search_results" ng-show="models.<?php echo $module_id; ?>.results.length > 0 && !models.<?php echo $module_id; ?>.processing">
2
- <div justified-gallery="{rowHeight: 160}">
3
- <a ng-class="{'result_added' : result.added}" ng-click="add(result, '<?php echo $module_id; ?>')" repeat-done ng-repeat="result in models.<?php echo $module_id; ?>.results">
4
- <img alt="{{result.title}}" ng-src="{{result.img}}"/>
5
- </a>
6
- </div>
7
- </div>
 
 
 
 
 
 
 
trunk/application/admin/views/_promo_box.php DELETED
@@ -1,66 +0,0 @@
1
- <div class="cegg-rightcol">
2
- <?php if (\ContentEgg\application\Plugin::isFree()): ?>
3
- <div class="cegg-box" style="margin-top: 95px;">
4
- <h2><?php _e('Работай, как профи', 'content-egg'); ?></h2>
5
-
6
- <img src="<?php echo ContentEgg\PLUGIN_RES; ?>/img/ce_pro_header.png" class="cegg-imgcenter" />
7
- <?php
8
- /*
9
- <a href="http://www.keywordrush.com/<?php if (!in_array(\get_locale(), array('ru_RU', 'uk'))) echo 'en/' ?>contentegg">
10
- <img src="<?php echo ContentEgg\PLUGIN_RES; ?>/img/ce_pro_coupon.png" class="cegg-imgcenter" />
11
- </a>
12
- */
13
- ?>
14
- <h4><?php _e('Все включено: контент + монетизация.', 'content-egg'); ?></h4>
15
-
16
- <?php /*
17
- <h3><?php _e('Монетизация:', 'content-egg'); ?></h3>
18
- <ul>
19
- <li>Aliexpress</li>
20
- <?php if (\ContentEgg\application\admin\GeneralConfig::getInstance()->option('lang') == 'ru'): ?>
21
- <li>Где Слон</li>
22
- <li>Cityads</li>
23
- <li>Ozon.ru</li>
24
- <?php endif; ?>
25
- <li>eBay</li>
26
- <li>CJ Products</li>
27
- <li>Affilinet</li>
28
- <li>Linkshare</li>
29
- <li>Shareasale</li>
30
- <li>Zanox</li>
31
- <li>ClickBank</li>
32
- <li>...</li>
33
- </ul>
34
-
35
- <h3><?php _e('Контент модули:', 'content-egg'); ?></h3>
36
- <ul>
37
- <li><?php _e('Bing картинки', 'content-egg'); ?></li>
38
- <li><?php _e('Flickr фотографии', 'content-egg'); ?></li>
39
- <li><?php _e('Google книги', 'content-egg'); ?></li>
40
- <li><?php _e('Google новости', 'content-egg'); ?></li>
41
- <li><?php _e('Яндекс.Маркет', 'content-egg'); ?></li>
42
- <li>Twitter</li>
43
- <li><?php _e('ВКонтакте новости', 'content-egg'); ?></li>
44
- <li>...</li>
45
- </ul>
46
- *
47
- */
48
- ?>
49
- <p>
50
- <a target="_blank" class="button-cegg-banner" href="http://www.keywordrush.com/<?php if (!in_array(\get_locale(), array('ru_RU', 'uk'))) echo 'en/' ?>contentegg">Get it now!</a>
51
- </p>
52
- </div>
53
- <?php endif; ?>
54
- <?php if (\ContentEgg\application\Plugin::isEnvato()): ?>
55
- <div class="cegg-box" style="margin-top: 95px;">
56
- <h2><?php _e('Активируйте плагин', 'content-egg'); ?></h2>
57
- <p><?php _e('Активируйте плагин, чтобы получить срочные автоматические апдейты в админ-панели Wordpress и официальную поддержку от авторов плагина.', 'content-egg'); ?></p>
58
-
59
- <p>
60
- <a class="button-cegg-banner" href="<?php echo get_admin_url(\get_current_blog_id(), 'admin.php?page=content-egg-lic'); ?>"><?php _e('Перейти', 'content-egg');?></a>
61
- </p>
62
-
63
-
64
- </div>
65
- <?php endif; ?>
66
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/views/ae_integration.php DELETED
@@ -1,35 +0,0 @@
1
- <?php if (\ContentEgg\application\Plugin::isFree() || \ContentEgg\application\Plugin::isInactiveEnvato()): ?>
2
- <div class="cegg-maincol">
3
- <?php endif; ?>
4
- <div class="wrap">
5
- <h2><?php _e('Интеграция с Affiliate Egg плагин', 'content-egg') ?></h2>
6
- <?php settings_errors(); ?>
7
-
8
- <p>
9
- <?php _e('Вы можете подключить веб-парсеры <a href="http://www.keywordrush.com/affiliateegg">Affiliate Egg плагина</a> в качестве модулей Content Egg.', 'content-egg'); ?>
10
- <?php _e('Для поиска по ключевому слову будет использоваться "родной" поиск на сайте магазина.', 'content-egg'); ?>
11
- </p>
12
-
13
- <?php if (!ContentEgg\application\admin\AeIntegrationConfig::isAEIntegrationPosible()):?>
14
- <p>
15
- <b><?php _e('Для начала работы выполните следующие действия:', 'content-egg'); ?></b>
16
- <ul>
17
- <li><?php _e('Установите и активируйте <a href="http://www.keywordrush.com/affiliateegg">Affiliate Egg плагин</a>', 'content-egg'); ?></li>
18
- <li><?php _e('Версия Affiliate Egg должна быть не ниже', 'content-egg'); ?> <?php echo ContentEgg\application\admin\AeIntegrationConfig::MIN_AE_VERSION; ?>
19
- </li>
20
- </ul>
21
- </p>
22
- <?php else: ?>
23
- <form action="options.php" method="POST">
24
- <?php settings_fields($page_slug); ?>
25
- <table class="form-table">
26
- <?php do_settings_fields($page_slug, 'default'); ?>
27
- </table>
28
- <?php submit_button(); ?>
29
- </form>
30
- <?php endif; ?>
31
- </div>
32
- <?php if (\ContentEgg\application\Plugin::isFree() || \ContentEgg\application\Plugin::isInactiveEnvato()): ?>
33
- </div>
34
- <?php include('_promo_box.php'); ?>
35
- <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/views/autoblog_edit.php DELETED
@@ -1,61 +0,0 @@
1
- <?php if (\ContentEgg\application\Plugin::isFree() || \ContentEgg\application\Plugin::isInactiveEnvato()): ?>
2
- <div class="cegg-maincol">
3
- <?php endif; ?>
4
- <div class="wrap">
5
- <h2>
6
- <?php if ($item['id']): ?>
7
- <?php _e('Редактировать автоблоггинг', 'content-egg'); ?>
8
- <?php else: ?>
9
- <?php _e('Добавить автоблоггинг', 'content-egg'); ?>
10
- <?php if ($batch): ?>
11
- - <?php _e('пакетное добавление', 'content-egg'); ?>
12
- <?php endif; ?>
13
- <?php endif; ?>
14
- <?php if (!$batch && !$item['id']): ?>
15
- <a class="add-new-h2 button-primary" href="<?php echo get_admin_url(get_current_blog_id(), 'admin.php?page=content-egg-autoblog-batch-create'); ?>"><?php _e('Пакетное добавление', 'content-egg'); ?></a>
16
- <?php endif; ?>
17
- <a class="add-new-h2" href="<?php echo get_admin_url(get_current_blog_id(), 'admin.php?page=content-egg-autoblog'); ?>"><?php _e('Назад к списку', 'content-egg'); ?></a>
18
- </h2>
19
-
20
- <?php if (!empty($notice)): ?>
21
- <div id="notice" class="error"><p><?php echo $notice ?></p></div>
22
- <?php endif; ?>
23
- <?php if (!empty($message)): ?>
24
- <div id="message" class="updated"><p><?php echo $message ?></p></div>
25
- <?php endif; ?>
26
-
27
- <div id="poststuff">
28
- <p>
29
- </p>
30
- </div>
31
- <form action="<?php echo add_query_arg('noheader', 'true'); ?>" id="form" method="POST"<?php if ($batch) echo ' enctype="multipart/form-data" accept-charset="utf-8"'; ?>>
32
- <input type="hidden" name="nonce" value="<?php echo $nonce; ?>"/>
33
- <input type="hidden" name="item[id]" value="<?php echo $item['id']; ?>"/>
34
- <div class="metabox-holder" id="poststuff">
35
- <div id="post-body">
36
- <div id="post-body-content">
37
- <?php $item['batch'] = $batch; ?>
38
- <?php do_meta_boxes('autoblog_create', 'normal', $item); ?>
39
- <input type="submit" value="<?php _e('Сохранить', 'content-egg'); ?>" id="autoblog_submit" class="button-primary" name="submit">
40
-
41
- &nbsp;&nbsp;&nbsp;<?php if ($batch): ?><em><?php _e('Будьте терпеливы, если файл с ключевыми словами имеет большой размер. Не закрывайте страницу до завершения процесса.', 'content-egg'); ?></em><?php endif; ?>
42
-
43
- </div>
44
- </div>
45
- </div>
46
- </form>
47
- </div>
48
-
49
- <script>
50
- jQuery(document).ready(function() {
51
- jQuery("#form").submit(function() {
52
- jQuery("#autoblog_submit").attr("disabled", true);
53
- return true;
54
- });
55
- });
56
- </script>
57
-
58
- <?php if (\ContentEgg\application\Plugin::isFree() || \ContentEgg\application\Plugin::isInactiveEnvato()): ?>
59
- </div>
60
- <?php include('_promo_box.php'); ?>
61
- <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/views/autoblog_index.php DELETED
@@ -1,57 +0,0 @@
1
- <div id="cegg_waiting_products" style="display:none; text-align: center;">
2
- <h2><?php _e('Работа автоблоггинга', 'content-egg');?></h2>
3
- <p>
4
- <img src="<?php echo \ContentEgg\PLUGIN_RES; ?>/img/egg_waiting.gif" />
5
- <br>
6
- <?php _e('Пожалуйста, дождитесь окончания работы автоблоггинга.', 'content-egg');?>
7
-
8
- </p>
9
- </div>
10
- <script type="text/javascript">
11
- var $j = jQuery.noConflict();
12
- $j(document).ready(function() {
13
- $j('.run_avtoblogging').click(function() {
14
- $j.blockUI({ message: $j('#cegg_waiting_products') });
15
- test();
16
- });
17
- });
18
- </script>
19
- <?php
20
- $table->prepare_items();
21
-
22
- $message = '';
23
- if ($table->current_action() == 'delete' && !empty($_GET['id']))
24
- $message = '<div class="updated below-h2" id="message"><p>' . sprintf(__('Удалено заданий автоблоггинга:', 'content-egg') . ' %d', count($_GET['id'])) . '</p></div>';
25
- if ($table->current_action() == 'run')
26
- $message = '<div class="updated below-h2" id="message"><p>' . __('Автоблоггинг закончил работу', 'content-egg') . '</p></div>';
27
- ?>
28
-
29
- <?php if (\ContentEgg\application\Plugin::isFree() || \ContentEgg\application\Plugin::isInactiveEnvato()): ?>
30
- <div class="cegg-maincol">
31
- <?php endif; ?>
32
-
33
-
34
- <div class="wrap">
35
-
36
- <h2>
37
- <?php _e('Автоблоггинг', 'content-egg');?>
38
- <a class="add-new-h2" href="<?php echo get_admin_url(get_current_blog_id(), 'admin.php?page=content-egg-autoblog-edit'); ?>"><?php _e('Добавить автоблоггинг', 'content-egg');?></a>
39
- </h2>
40
- <?php echo $message; ?>
41
-
42
- <div id="poststuff">
43
- <p>
44
- <?php _e('С помощью автоблоггинга вы можете настроить автоматическое создание постов.', 'content-egg');?>
45
- </p>
46
- </div>
47
-
48
- <form id="eggs-table" method="GET">
49
- <input type="hidden" name="page" value="<?php echo $_REQUEST['page'] ?>"/>
50
- <?php $table->display() ?>
51
- </form>
52
- </div>
53
-
54
- <?php if (\ContentEgg\application\Plugin::isFree() || \ContentEgg\application\Plugin::isInactiveEnvato()): ?>
55
- </div>
56
- <?php include('_promo_box.php');?>
57
- <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/views/import_export.php DELETED
@@ -1,37 +0,0 @@
1
- <?php if (\ContentEgg\application\Plugin::isFree() || \ContentEgg\application\Plugin::isInactiveEnvato()): ?>
2
- <div class="cegg-maincol">
3
- <?php endif; ?>
4
- <div class="wrap">
5
- <h2>
6
- <?php _e('Экспорт / Импорт настроек', 'content-egg'); ?>
7
- </h2>
8
-
9
- <?php if (!empty($notice)): ?>
10
- <div id="notice" class="error"><p><?php echo $notice ?></p></div>
11
- <?php endif; ?>
12
- <?php if (!empty($message)): ?>
13
- <div id="message" class="updated"><p><?php echo $message ?></p></div>
14
- <?php endif; ?>
15
-
16
- <div id="poststuff">
17
- <p>
18
- </p>
19
- </div>
20
-
21
- <h3><?php _e('Сохранить настройки', 'content-egg');?></h3>
22
- <p><?php _e('Для переноса настроек плагина и модулей Content Egg скопируйте сожержимое поля (Ctrl+C) и выполните импорт на новом сайте.', 'content-egg');?></p>
23
- <textarea rows="8" cols="70" onclick="this.focus();this.select()" readonly="readonly"><?php echo esc_html($export_str); ?></textarea>
24
-
25
- <br><br>
26
- <h3><?php _e('Загрузить настройки', 'content-egg');?></h3>
27
- <p><?php _e('Скопируйте настройки с другого сайта и нажмите кнопку "Импорт".', 'content-egg');?></p>
28
- <form id="form" method="POST">
29
- <input type="hidden" name="nonce" value="<?php echo $nonce; ?>"/>
30
- <textarea name="import_str" rows="8" cols="70"></textarea>
31
- <p><input type="submit" value="<?php _e('Импорт', 'content-egg'); ?>" id="config_submit" class="button-primary" name="submit"></p>
32
- </form>
33
- </div>
34
- <?php if (\ContentEgg\application\Plugin::isFree() || \ContentEgg\application\Plugin::isInactiveEnvato()): ?>
35
- </div>
36
- <?php include('_promo_box.php'); ?>
37
- <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/views/metabox_general.php DELETED
@@ -1,45 +0,0 @@
1
- <?php \wp_nonce_field('contentegg_metabox', 'contentegg_nonce'); ?>
2
-
3
- <div clas="row">
4
- <div class="col-sm-5">
5
- <div class="input-group">
6
-
7
- <input ng-disabled="processCounter" type="text" ng-model="global_keywords" select-on-click on-enter="global_findAll()" class="form-control col-md-6" placeholder="<?php _e('Введите ключевое слово', 'content-egg'); ?>" aria-label="<?php _e('Введите ключевое слово', 'content-egg'); ?>">
8
- <div class="input-group-btn">
9
- <button ng-disabled='processCounter || !global_keywords' ng-click="global_findAll()" type="button" class="btn btn-info"><?php _e('Найти все', 'content-egg'); ?></button>
10
- </div>
11
- </div>
12
- </div>
13
- <div class="col-sm-1">
14
- </div>
15
-
16
- <div class="col-sm-5">
17
- <?php
18
- $tpl_manager = ContentEgg\application\components\BlockTemplateManager::getInstance();
19
- $templates = $tpl_manager->getTemplatesList(true);
20
- ?>
21
-
22
- <div class="row">
23
- <div class="col-sm-6">
24
- <input ng-model="blockShortcode" select-on-click readonly type="text" class="form-control input-sm" />
25
- </div>
26
- <div class="col-sm-6" ng-init="selectedBlockTemplate = '<?php echo key($templates);?>';buildBlockShortcode();">
27
- <select ng-model="selectedBlockTemplate" ng-change="buildBlockShortcode();">
28
- <?php foreach ($templates as $id => $name): ?>
29
- <option value="<?php echo esc_attr($id); ?>"><?php echo esc_html($name); ?></option>
30
- <?php endforeach; ?>
31
- </select>
32
-
33
- </div>
34
- </div>
35
-
36
- </div>
37
-
38
- <div class="col-sm-1 text-right">
39
- <button ng-show='!processCounter && global_isSearchResults()' ng-click="global_addAll()" type="button" class="btn btn-default btn-sm"><?php _e('Добавить все', 'content-egg'); ?></button>
40
- <button ng-show='global_isAddedResults()' ng-click="global_deleteAll()" ng-confirm-click="<?php _e('Вы действительно хотите удалить результаты всех модулей?', 'content-egg'); ?>" type="button" class="btn btn-default btn-sm"><?php _e('Удалить все', 'content-egg'); ?></button>
41
- </div>
42
- </div>
43
- <div class="row">
44
- <div class="col-sm-12"><hr></div>
45
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/views/metabox_module.php DELETED
@@ -1,86 +0,0 @@
1
- <div ng-controllerTMP="<?php echo $module_id; ?>Controller">
2
-
3
- <input type="hidden" name="cegg_data[<?php echo $module_id; ?>]" ng-value="models.<?php echo $module_id; ?>.added | json" />
4
- <input type="hidden" name="cegg_updateKeywords[<?php echo $module_id; ?>]" ng-value="updateKeywords.<?php echo $module_id; ?>" />
5
- <tabset>
6
- <tab active="activeResultTabs.<?php echo $module_id; ?>">
7
- <tab-heading>
8
- <strong><?php echo $module->getName(); ?></strong>
9
- <span ng-show="models.<?php echo $module_id; ?>.added.length" class="label" ng-class="{'label-danger':models.<?php echo $module_id; ?>.added_changed, 'label-default':!models.<?php echo $module_id; ?>.added_changed}">{{models.<?php echo $module_id; ?>.added.length}}</span>
10
- </tab-heading>
11
-
12
- <div class="data_panel">
13
-
14
- <div clas="row">
15
- <div class="col-sm-3">
16
- <input ng-model="shortcodes.<?php echo $module_id; ?>" select-on-click readonly type="text" class="form-control input-sm" />
17
- </div>
18
-
19
- <div class="col-sm-3">
20
- <?php
21
- $tpl_manager = ContentEgg\application\components\ModuleTemplateManager::getInstance($module_id);
22
- $templates = $tpl_manager->getTemplatesList(true);
23
- ?>
24
- <?php if($templates): ?>
25
- <select ng-model="selectedTemplate_<?php echo $module_id; ?>" ng-change="buildShortcode('<?php echo $module_id; ?>', selectedTemplate_<?php echo $module_id; ?>);">
26
- <option value="">- <?php _e('Шаблон для шорткода', 'content-egg');?> -</option>
27
- <?php foreach ($templates as $id => $name):?>
28
- <option value="<?php echo esc_attr($id);?>"><?php echo esc_html($name);?></option>
29
- <?php endforeach; ?>
30
- </select>
31
- <?php endif;?>
32
- </div>
33
-
34
- <?php if ($module->isAffiliateParser()): ?>
35
- <div class="col-md-3">
36
- <input id="updateKeyword_<?php echo $module_id; ?>" type="text" ng-model="updateKeywords.<?php echo $module_id; ?>" class="form-control" placeholder="<?php _e('Ключевое слово для автоматического обновления данных', 'content-egg'); ?>" />
37
- </div>
38
- <?php endif; ?>
39
- <div class="col-sm-<?php if ($module->isAffiliateParser()) echo 3; else echo 6; ?> text-right">
40
- <a class='btn btn-default btn-sm' ng-click="deleteAll('<?php echo $module_id; ?>')" ng-confirm-click="<?php _e('Вы действительно хотите удалить все результаты?', 'content-egg'); ?>" ng-show='models.<?php echo $module_id; ?>.added.length'><?php _e('Удалить все', 'content-egg'); ?></a>
41
- </div>
42
- </div>
43
- </div>
44
- <div class="clearfix"></div>
45
- <p ng-show="!models.<?php echo $module_id; ?>.added.length && !models.<?php echo $module_id; ?>.processing" class="bg-warning text-center"><br><?php _e('Данные не найдены...', 'content-egg'); ?><br><br></p>
46
- <?php $module->renderResults(); ?>
47
- </tab>
48
-
49
- <tab active="activeSearchTabs.<?php echo $module_id; ?>" heading="<?php _e('Поиск', 'content-egg'); ?>">
50
- <div class="search_panel">
51
- <div clas="row">
52
- <div class="col-md-5">
53
-
54
- <div class="input-group" ng-show="!models.<?php echo $module_id; ?>.processing">
55
- <input type="text" select-on-click ng-model="keywords.<?php echo $module_id; ?>" on-enter="find('<?php echo $module_id; ?>')" class="form-control col-md-6" placeholder="<?php _e('Ключевое слово для поиска', 'content-egg'); ?>" />
56
- <div class="input-group-btn">
57
- <button ng-disabled="!keywords.<?php echo $module_id; ?>" ng-click="find('<?php echo $module_id; ?>')" type="button" class="btn btn-info"><?php _e('Найти', 'content-egg'); ?></button>
58
- <?php if ($module->isAffiliateParser()): ?>
59
- <button ng-disabled="!keywords.<?php echo $module_id; ?>" ng-click="setUpdateKeyword('<?php echo $module_id; ?>')" type="button" class="btn btn-info">&rarr;</button>
60
- <?php endif; ?>
61
- </div>
62
- </div>
63
- <img ng-show="models.<?php echo $module_id; ?>.processing" src="<?php echo \ContentEgg\PLUGIN_RES . '/img/loader.gif' ?>" />
64
- </div>
65
- <div class="col-md-6">
66
- <div ng-show="!models.<?php echo $module_id; ?>.processing">
67
- <?php $module->renderSearchPanel(); ?>
68
- </div>
69
- </div>
70
- <div class="col-sm-1 text-right">
71
- <a class='btn btn-default btn-sm' ng-click="addAll('<?php echo $module_id; ?>')" ng-show='models.<?php echo $module_id; ?>.results.length > 0 && !models.<?php echo $module_id; ?>.processing'><?php _e('Добавить все', 'content-egg'); ?></a>
72
- </div>
73
- </div>
74
- </div>
75
- <div class="clearfix"></div>
76
-
77
- <?php $module->renderSearchResults(); ?>
78
-
79
- <p ng-show="!models.<?php echo $module_id; ?>.processing && models.<?php echo $module_id; ?>.loaded && models.<?php echo $module_id; ?>.results.length == 0" class="bg-warning text-center"><br><?php _e('Не найдено...', 'content-egg'); ?><br><br></p>
80
- <p ng-show="models.<?php echo $module_id; ?>.error" class="bg-danger text-center"><br><?php _e('Ошибка: ', 'content-egg'); ?> {{models.<?php echo $module_id; ?>.error}}<br><br></p>
81
- </tab>
82
- </tabset>
83
- <div class="row">
84
- <div class="col-sm-12"><br></div>
85
- </div>
86
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/views/prefill.php DELETED
@@ -1,92 +0,0 @@
1
- <?php
2
-
3
- use ContentEgg\application\components\ModuleManager;
4
- ?>
5
-
6
- <?php if (\ContentEgg\application\Plugin::isFree() || \ContentEgg\application\Plugin::isInactiveEnvato()): ?>
7
- <div class="cegg-maincol">
8
- <?php endif; ?>
9
- <div class="wrap">
10
- <h2>
11
- <?php _e('Заполнить', 'content-egg'); ?>
12
- </h2>
13
-
14
- <p>
15
- <?php _e('Эта утилита заполняет данные модулей для всех существующих постов.', 'content-egg'); ?>
16
- <?php _e('Существующие данные и ключевые слова для автообновления не перезатираются!', 'content-egg'); ?>
17
-
18
- </p>
19
-
20
- <table class="form-table">
21
-
22
- <tr>
23
- <th scope="row"><label for="module_id"><?php _e('Добавить данные для модуля', 'content-egg'); ?></label></th>
24
- <td>
25
- <select id="module_id">
26
- <?php foreach (ModuleManager::getInstance()->getParserModules() as $module): ?>
27
- <option value="<?php echo $module->getId(); ?>"><?php echo esc_html($module->getName()); ?></option>
28
- <?php endforeach; ?>
29
- </select>
30
- </td>
31
- </tr>
32
-
33
-
34
- <tr>
35
- <th scope="row"><label for="keyword_source"><?php _e('Источник ключевого слова', 'content-egg'); ?></label></th>
36
- <td>
37
- <select id="keyword_source">
38
- <option value="_density"><?php _e('Вычислить на основании плотности ключевых слов поста', 'content-egg'); ?></option>
39
- <option value="_title"><?php _e('Заголовк поста', 'content-egg'); ?></option>
40
- <?php foreach (ModuleManager::getInstance()->getAffiliateParsers() as $module): ?>
41
- <option value="<?php echo $module->getId(); ?>"><?php _e('Копировать с', 'content-egg'); ?> <?php echo esc_html($module->getName()); ?></option>
42
- <?php endforeach; ?>
43
- </select>
44
- </td>
45
- </tr>
46
-
47
- <tr>
48
- <th scope="row"><label for="autoupdate"><?php _e('Автообновление', 'content-egg'); ?></label></th>
49
- <td>
50
- <label><input id="autoupdate" type="checkbox" checked="1" value="1"> <?php _e('Добавить ключевое слово для автообновления', 'content-egg'); ?></label>
51
- <p class="description"><?php _e('Только для модулей, которые имеют функцию автообновления.', 'content-egg'); ?></p>
52
- </td>
53
- </tr>
54
-
55
- <tr>
56
- <th scope="row"><label for="keyword_count"><?php _e('Количество слов', 'content-egg'); ?></label></th>
57
- <td>
58
- <select id="keyword_count">
59
- <?php for ($i = 1; $i <= 10; $i++): ?>
60
- <option value="<?php echo $i; ?>"<?php if ($i == 5) echo ' selected="selected"'; ?>><?php echo $i; ?></option>
61
- <?php endfor; ?>
62
- </select>
63
- <p class="description"><?php _e('Максимум слов в поисковом запросе.', 'content-egg'); ?></p>
64
-
65
- </td>
66
- </tr>
67
- </table>
68
-
69
-
70
- <div id="progressbar" name="progressbar"></div>
71
-
72
- <div>
73
- <br>
74
- <button class="button-primary" type="button" id="start_prefill"><?php _e('Старт', 'content-egg'); ?></button>
75
- <button class="button-primary" type="button" id="start_prefill_begin"><?php _e('Начать сначала', 'content-egg'); ?></button>
76
- <button class="button-secondary" type="button" id="stop_prefill" disabled><?php _e('Стоп', 'content-egg'); ?></button>
77
-
78
- <span id="ajaxWaiting__" style="display:none;"><img src="<?php echo \ContentEgg\PLUGIN_RES . '/img/ajax-loader.gif' ?>" /></span>
79
- <span id="ajaxBusy" style="display:none;"><img src="<?php echo \ContentEgg\PLUGIN_RES . '/img/ajax-loader.gif' ?>" /></span>
80
-
81
-
82
- </div>
83
-
84
- <div class="egg-prefill-log" id="logs"></div>
85
-
86
-
87
-
88
- </div>
89
- <?php if (\ContentEgg\application\Plugin::isFree() || \ContentEgg\application\Plugin::isInactiveEnvato()): ?>
90
- </div>
91
- <?php include('_promo_box.php'); ?>
92
- <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/admin/views/settings.php DELETED
@@ -1,87 +0,0 @@
1
- <?php
2
- /*
3
- * Некоторые иконы Yusuke Kamiyamane. Доступно по лицензии Creative Commons Attribution 3.0.
4
- * @link: http://p.yusukekamiyamane.com
5
- */
6
- ?>
7
-
8
- <?php if (\ContentEgg\application\Plugin::isFree() || \ContentEgg\application\Plugin::isInactiveEnvato()): ?>
9
- <div class="cegg-maincol">
10
- <?php endif; ?>
11
- <div class="wrap">
12
- <h2>
13
- <?php _e('Content Egg Настройки', 'content-egg'); ?>
14
- <?php if (\ContentEgg\application\Plugin::isPro()): ?>
15
- <span class="cegg-pro-label">pro</span>
16
- <?php endif; ?>
17
- </h2>
18
-
19
- <?php $modules = \ContentEgg\application\components\ModuleManager::getInstance()->getConfigurableModules(); ?>
20
- <h2 class="nav-tab-wrapper">
21
- <a href="?page=content-egg"
22
- class="nav-tab<?php if (!empty($_GET['page']) && $_GET['page'] == 'content-egg') echo ' nav-tab-active'; ?>">
23
- <?php _e('Общие настройки', 'content-egg'); ?>
24
- </a>
25
- <?php foreach ($modules as $module): ?>
26
- <?php $config = $module->getConfigInstance(); ?>
27
- <a href="?page=<?php echo esc_attr($config->page_slug()); ?>"
28
- class="nav-tab<?php if (!empty($_GET['page']) && $_GET['page'] == $config->page_slug()) echo ' nav-tab-active'; ?>">
29
- <img src="<?php echo ContentEgg\PLUGIN_RES; ?>/img/status-<?php echo $module->isActive() ? 'active' : 'inactive' ?>.png" />
30
- <?php echo esc_html($module->getName()); ?>
31
- </a>
32
- <?php endforeach; ?>
33
- </h2>
34
-
35
- <div class="ui-sortable meta-box-sortables">
36
- <div class="postbox1">
37
- <div class="inside">
38
-
39
- <div class="cegg-wrap">
40
-
41
- <div class="cegg-maincol">
42
-
43
- <h3>
44
- <?php
45
- if (!empty($_GET['page']) && $_GET['page'] == 'content-egg')
46
- _e('Общие настройки', 'content-egg');
47
- else
48
- echo esc_html($header);
49
- ?>
50
- </h3>
51
-
52
- <?php settings_errors(); ?>
53
- <form action="options.php" method="POST">
54
- <?php settings_fields($page_slug); ?>
55
- <table class="form-table">
56
- <?php do_settings_fields($page_slug, 'default'); ?>
57
- </table>
58
- <?php submit_button(); ?>
59
- </form>
60
-
61
- </div>
62
-
63
- <div class="cegg-rightcol">
64
- <div>
65
- <?php
66
- if (!empty($description))
67
- echo '<p>' . $description . '</p>';
68
-
69
- if (!empty($api_agreement))
70
- echo '<div style="text-align: right;"><small><a href="' . $api_agreement . '" target="_blank">' . __('Условия', 'content-egg') . '</a></small></div>';
71
- ?>
72
-
73
- </div>
74
- </div>
75
- </div>
76
-
77
-
78
- </div>
79
- </div>
80
- </div>
81
- </div>
82
-
83
-
84
- <?php if (\ContentEgg\application\Plugin::isFree() || \ContentEgg\application\Plugin::isInactiveEnvato()): ?>
85
- </div>
86
- <?php include('_promo_box.php');?>
87
- <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/AffiliateParserModule.php DELETED
@@ -1,48 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- use ContentEgg\application\helpers\ImageHelper;
6
-
7
- /**
8
- * AffiliateParserModule abstract 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
- abstract class AffiliateParserModule extends ParserModule {
15
-
16
- final public function isAffiliateParser()
17
- {
18
- return true;
19
- }
20
-
21
- public function isItemsUpdateAvailable()
22
- {
23
- return false;
24
- }
25
-
26
- public function doRequestItems(array $items)
27
- {
28
- throw new \Exception('doRequestItems method not implemented yet');
29
- }
30
-
31
- public function presavePrepare($data, $post_id)
32
- {
33
- $data = parent::presavePrepare($data, $post_id);
34
- foreach ($data as $key => $item)
35
- {
36
- if (!isset($item['percentageSaved']))
37
- $item['percentageSaved'] = 0;
38
- if (!isset($item['priceOld']))
39
- $item['priceOld'] = 0;
40
- if (!$item['percentageSaved'] && $item['priceOld'] && $item['price'] && $item['price'] != $item['priceOld'])
41
- {
42
- $data[$key]['percentageSaved'] = floor(((float) $item['priceOld'] - (float) $item['price']) / (float) $item['priceOld'] * 100);
43
- }
44
- }
45
- return $data;
46
- }
47
-
48
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/AffiliateParserModuleConfig.php DELETED
@@ -1,51 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- /**
6
- * ParserModuleConfig abstract class file
7
- *
8
- * @author keywordrush.com <support@keywordrush.com>
9
- * @link http://www.keywordrush.com/
10
- * @copyright Copyright &copy; 2015 keywordrush.com
11
- */
12
- abstract class AffiliateParserModuleConfig extends ParserModuleConfig {
13
-
14
- public function options()
15
- {
16
- $options = array(
17
- 'ttl' => array(
18
- 'title' => __('Автоматическое обновление', 'content-egg'),
19
- 'description' => __('Время жини кэша в секундах, через которое необходимо обновить товары, если задано ключевое слово для обновления. 0 - никогда не обновлять.', 'content-egg'),
20
- 'callback' => array($this, 'render_input'),
21
- 'default' => 2592000,
22
- 'validator' => array(
23
- 'trim',
24
- 'absint',
25
- ),
26
- 'section' => 'default',
27
- ),
28
- );
29
-
30
- if ($this->getModuleInstance()->isItemsUpdateAvailable())
31
- {
32
- $options['ttl_items'] = array(
33
- 'title' => __('Обновить товары', 'content-egg'),
34
- 'description' => __('Время в секундах, через которое необходимо обновить цену, наличие и некоторую другую информацию по товарам. 0 - никогда не обновлять.', 'content-egg'),
35
- 'callback' => array($this, 'render_input'),
36
- 'default' => 604800,
37
- 'validator' => array(
38
- 'trim',
39
- 'absint',
40
- ),
41
- 'section' => 'default',
42
- );
43
- }
44
-
45
- return
46
- array_merge(
47
- parent::options(), $options
48
- );
49
- }
50
-
51
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/BlockTemplateManager.php DELETED
@@ -1,66 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- /**
6
- * BlockTemplateManager class file
7
- *
8
- * @author keywordrush.com <support@keywordrush.com>
9
- * @link http://www.keywordrush.com/
10
- * @copyright Copyright &copy; 2015 keywordrush.com
11
- */
12
- class BlockTemplateManager extends TemplateManager {
13
-
14
- const TEMPLATE_DIR = 'templates';
15
- const CUSTOM_TEMPLATE_DIR = 'content-egg-templates';
16
- const TEMPLATE_PREFIX = 'block_';
17
-
18
- private $module_id;
19
- private static $instance = null;
20
-
21
- public static function getInstance()
22
- {
23
- if (self::$instance === null)
24
- {
25
- self::$instance = new self;
26
- }
27
- return self::$instance;
28
- }
29
-
30
- private function __construct()
31
- {
32
-
33
- }
34
-
35
- public function getTempatePrefix()
36
- {
37
- return self::TEMPLATE_PREFIX;
38
- }
39
-
40
- public function getTempateDir()
41
- {
42
- return \ContentEgg\PLUGIN_PATH . self::TEMPLATE_DIR;
43
- }
44
-
45
- public function getCustomTempateDirs()
46
- {
47
- return array(
48
- \get_stylesheet_directory() . '/' . self::CUSTOM_TEMPLATE_DIR, //child theme
49
- \get_template_directory() . '/' . self::CUSTOM_TEMPLATE_DIR, // theme
50
- \ABSPATH . 'wp-content/' . self::CUSTOM_TEMPLATE_DIR,
51
- );
52
- }
53
-
54
- public function getModuleId()
55
- {
56
- return $this->module_id;
57
- }
58
-
59
- public function getTemplatesList($short_mode = false)
60
- {
61
- $templates = parent::getTemplatesList($short_mode);
62
- $templates = \apply_filters('content_egg_block_templates', $templates);
63
- return $templates;
64
- }
65
-
66
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/Config.php DELETED
@@ -1,368 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- /**
6
- * Config class file
7
- *
8
- * @author keywordrush.com <support@keywordrush.com>
9
- * @link http://www.keywordrush.com/
10
- * @copyright Copyright &copy; 2015 keywordrush.com
11
- */
12
- abstract class Config {
13
-
14
- protected $page_slug;
15
- protected $option_name;
16
- protected $option_values = array();
17
- protected $options = array();
18
- protected $input = array();
19
- protected $out = array();
20
- private static $_instances = array();
21
-
22
- public static function getInstance($id = null)
23
- {
24
- $class = get_called_class();
25
- if ($id)
26
- $instance_id = $id;
27
- else
28
- $instance_id = $class;
29
-
30
- if (!isset(self::$_instances[$instance_id]))
31
- {
32
- self::$_instances[$instance_id] = new $class($id);
33
- }
34
- return self::$_instances[$instance_id];
35
- }
36
-
37
- protected function __construct()
38
- {
39
- $values = \get_option($this->option_name());
40
- // prevent call validators twice for first time. Settings API bug?
41
- if ($values === false)
42
- \add_option($this->option_name(), '');
43
-
44
- $this->option_name = $this->option_name();
45
- $this->options = $this->options();
46
- $this->option_values = $values;
47
- $this->page_slug = $this->page_slug();
48
- }
49
-
50
- public function option($opt_name)
51
- {
52
- return $this->get_current($opt_name);
53
- }
54
-
55
- public function adminInit()
56
- {
57
- global $pagenow;
58
- \add_action('admin_menu', array($this, 'add_admin_menu'));
59
-
60
- if ($pagenow == 'options.php' || (!empty($_GET['page']) && $_GET['page'] == $this->page_slug))
61
- {
62
- \add_action('admin_init', array($this, 'register_settings'));
63
- }
64
- }
65
-
66
- abstract public function page_slug();
67
-
68
- abstract public function option_name();
69
-
70
- abstract protected function options();
71
-
72
- abstract public function add_admin_menu();
73
-
74
- public function get_page_slug()
75
- {
76
- return $this->page_slug;
77
- }
78
-
79
- protected function get_default($option)
80
- {
81
- if (isset($this->options[$option]) && isset($this->options[$option]['default']))
82
- return $this->options[$option]['default'];
83
- else
84
- return '';
85
- }
86
-
87
- protected function get_validator($option)
88
- {
89
- if (isset($this->options[$option]) && isset($this->options[$option]['validator']))
90
- return $this->options[$option]['validator'];
91
- else
92
- return null;
93
- }
94
-
95
- protected function get_current($option)
96
- {
97
- if (isset($this->option_values[$option]))
98
- return $this->option_values[$option];
99
- elseif ($this->option_values && $this->is_checkbox($option))
100
- {
101
- return false;
102
- } else
103
- return $this->get_default($option);
104
- }
105
-
106
- public function register_settings()
107
- {
108
- \register_setting(
109
- $this->page_slug, // group, used for settings_fields()
110
- $this->option_name, // option name, used as key in database
111
- array($this, 'validate') // validation callback
112
- );
113
-
114
- // reinit options for later plugin binding
115
- $this->options = $this->options();
116
-
117
- foreach ($this->options as $id => $field)
118
- {
119
- if (empty($field['title']))
120
- $field['title'] = '';
121
- if (empty($field['description']))
122
- $field['description'] = '';
123
- $params = array(
124
- 'name' => $id, // value for 'name' attribute
125
- 'title' => $field['title'],
126
- 'description' => $field['description'],
127
- 'value' => $this->get_current($id),
128
- 'option_name' => $this->option_name,
129
- 'label_for' => 'label-' . $id,
130
- );
131
- if (!empty($field['dropdown_options']))
132
- $params['dropdown_options'] = $field['dropdown_options'];
133
- if (!empty($field['checkbox_options']))
134
- $params['checkbox_options'] = $field['checkbox_options'];
135
-
136
- if (!empty($field['render_after']))
137
- $params['render_after'] = $field['render_after'];
138
- if (empty($field['section']))
139
- $field['section'] = 'default';
140
- \add_settings_field(
141
- $id, $field['title'], $field['callback'], $this->page_slug, // menu slug
142
- $field['section'], $params
143
- );
144
- }
145
- }
146
-
147
- public function render_input($args)
148
- {
149
- echo '<input name="' . esc_attr($args['option_name']) . '['
150
- . esc_attr($args['name']) . ']" id="'
151
- . esc_attr($args['label_for']) . '" value="'
152
- . esc_attr($args['value']) . '" class="regular-text" />';
153
- if (!empty($args['render_after']))
154
- echo $args['render_after'];
155
- if ($args['description'])
156
- {
157
- echo '<p class="description">' . $args['description'] . '</p>';
158
- }
159
- }
160
-
161
- public function render_checkbox($args)
162
- {
163
- if ((bool) $args['value'])
164
- $checked = ' checked="checked" ';
165
- else
166
- $checked = '';
167
- echo '<label for="' . esc_attr($args['label_for']) . '">';
168
- echo '<input type="checkbox" name="' . esc_attr($args['option_name']) . '['
169
- . esc_attr($args['name']) . ']" id="'
170
- . esc_attr($args['label_for']), '"'
171
- . $checked . ' value="1" />';
172
- if ($args['description'])
173
- {
174
- echo ' ' . $args['description'];
175
- }
176
- echo '</label>';
177
- }
178
-
179
- public function render_dropdown($args)
180
- {
181
- echo '<select name="' . esc_attr($args['option_name']) . '['
182
- . esc_attr($args['name']) . ']" id="'
183
- . esc_attr($args['label_for']) . '" value="'
184
- . esc_attr($args['value']) . '" >';
185
- foreach ($args['dropdown_options'] as $option_value => $option_name)
186
- {
187
- if ($option_value === $args['value'])
188
- $selected = ' selected="selected" ';
189
- else
190
- $selected = '';
191
- echo '<option value="' . esc_attr($option_value) . '"' . $selected . '>' . esc_html($option_name) . '</option>';
192
- }
193
- echo '</select>';
194
-
195
- if (!empty($args['render_after']))
196
- echo $args['render_after'];
197
- if ($args['description'])
198
- {
199
- echo '<p class="description">' . $args['description'] . '</p>';
200
- }
201
- }
202
-
203
- public function render_checkbox_list($args)
204
- {
205
-
206
- echo '<div class="cegg-checkboxgroup">';
207
- foreach ($args['checkbox_options'] as $value => $name)
208
- {
209
- if (in_array($value, $args['value']))
210
- $checked = ' checked="checked" ';
211
- else
212
- $checked = '';
213
-
214
- echo '<div class="cegg-checkbox">';
215
- echo '<label for="' . esc_attr($args['label_for'] . '-' . $value) . '">';
216
- echo '<input type="checkbox" name="' . esc_attr($args['option_name']) . '['
217
- . esc_attr($args['name']) . '][' . esc_attr($value) . ']" id="'
218
- . esc_attr($args['label_for'] . '-' . $value), '"'
219
- . $checked . ' value="' . esc_attr($value) . '" />';
220
- echo $name;
221
- echo '</label>';
222
- echo '</div>';
223
- }
224
- echo '</div>';
225
- if ($args['description'])
226
- {
227
- echo '<p class="description">' . $args['description'] . '</p>';
228
- }
229
- }
230
-
231
- public function render_hidden($args)
232
- {
233
- echo '<input type="hidden" name="' . esc_attr($args['option_name']) . '['
234
- . esc_attr($args['name']) . '] value="'
235
- . esc_attr($args['value']) . '" />';
236
- }
237
-
238
- public function option_exists($option)
239
- {
240
- if (array_key_exists($option, $this->options))
241
- return true;
242
- else
243
- return false;
244
- }
245
-
246
- public function validate($input)
247
- {
248
- $this->input = $input;
249
-
250
- if (!is_array($this->input))
251
- return;
252
- //$out = array();
253
- foreach ($this->input as $option => $value)
254
- {
255
- if (!$this->option_exists($option))
256
- continue;
257
-
258
- if (!is_array($value))
259
- $value = trim($value);
260
- if ($validator = $this->get_validator($option))
261
- {
262
- if (!is_array($validator))
263
- continue;
264
- foreach ($validator as $v)
265
- {
266
- if (!is_array($v))
267
- {
268
- if ($v == 'allow_empty')
269
- {
270
- if ($value === '')
271
- break;
272
- else
273
- continue;
274
- }
275
-
276
- // filter
277
- $value = call_user_func($v, $value);
278
- } else
279
- {
280
- // check 'when' condition
281
- if (!empty($v['when']))
282
- {
283
- $when_value = $this->get_submitted_value($v['when']);
284
- if (!$when_value)
285
- continue;
286
- }
287
-
288
- if (!empty($v['type']) && $v['type'] == 'filter')
289
- {
290
- // filter
291
- $value = call_user_func($v['call'], $value);
292
- } else
293
- {
294
- // validator
295
- if (empty($v['arg']))
296
- $res = call_user_func($v['call'], $value);
297
- else
298
- $res = call_user_func($v['call'], $value, $v['arg']);
299
- if (!$res)
300
- {
301
- \add_settings_error($option, $option, $v['message']);
302
- $value = $this->get_current($option);
303
-
304
- if (!empty($v['when']))
305
- {
306
- $out[$v['when']] = $this->get_current($v['when']);
307
- }
308
-
309
- break;
310
- }
311
- } // .validator
312
- }
313
- }
314
- }
315
- $this->out[$option] = $value;
316
- }
317
- return $this->out;
318
- }
319
-
320
- public function is_checkbox($option)
321
- {
322
- if ($this->options[$option]['callback'][1] == 'render_checkbox')
323
- return true;
324
- else
325
- return false;
326
- }
327
-
328
- /**
329
- * Current submitted value
330
- */
331
- public function get_submitted_value($option, $input = array(), $out = array())
332
- {
333
- if (!$input)
334
- $input = $this->input;
335
- if (!$out)
336
- $out = $this->out;
337
-
338
- if (!$this->option_exists($option))
339
- throw new \Exception('Options "' . $option . '" does not exists.');
340
-
341
- if (!isset($input[$option]) && $this->is_checkbox($option))
342
- return false;
343
-
344
- if (!isset($input[$option]))
345
- throw new \Exception('Options "' . $option . '" does not exists.');
346
-
347
- if (isset($out[$option]))
348
- return $out[$option];
349
- else
350
- return $input[$option];
351
- }
352
-
353
- public function getOptionsList()
354
- {
355
- return array_keys($this->options());
356
- }
357
-
358
- public function getOptionValues()
359
- {
360
- $result = array();
361
- foreach ($this->getOptionsList() as $option_name)
362
- {
363
- $result[$option_name] = $this->get_current($option_name);
364
- }
365
- return $result;
366
- }
367
-
368
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/Content.php DELETED
@@ -1,23 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- /**
6
- * Content class file
7
- *
8
- * @author keywordrush.com <support@keywordrush.com>
9
- * @link http://www.keywordrush.com/
10
- * @copyright Copyright &copy; 2015 keywordrush.com
11
- */
12
- class Content {
13
-
14
- public $unique_id;
15
- public $title;
16
- public $description;
17
- public $img;
18
- public $url;
19
- //public $redirect;
20
- public $last_update;
21
- public $extra;
22
-
23
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/ContentCoupon.php DELETED
@@ -1,17 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- /**
6
- * ContentCoupon class file
7
- *
8
- * @author keywordrush.com <support@keywordrush.com>
9
- * @link http://www.keywordrush.com/
10
- * @copyright Copyright &copy; 2015 keywordrush.com
11
- */
12
- class ContentCoupon extends Content {
13
-
14
- public $code;
15
- public $startDate;
16
- public $endDate;
17
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/ContentManager.php DELETED
@@ -1,223 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- use ContentEgg\application\helpers\ImageHelper;
6
- use ContentEgg\application\helpers\ArrayHelper;
7
- use ContentEgg\application\LocalRedirect;
8
- use ContentEgg\application\admin\GeneralConfig;
9
- use ContentEgg\application\models\PriceHistoryModel;
10
- use ContentEgg\application\PriceAlert;
11
-
12
- /**
13
- * ContentManager class file
14
- *
15
- * @author keywordrush.com <support@keywordrush.com>
16
- * @link http://www.keywordrush.com/
17
- * @copyright Copyright &copy; 2015 keywordrush.com
18
- */
19
- class ContentManager {
20
-
21
- const META_PREFIX_DATA = '_cegg_data_';
22
- const META_PREFIX_LAST_ITEMS_UPDATE = '_cegg_last_update_';
23
- const META_PREFIX_KEYWORD = '_cegg_keyword';
24
- const META_PREFIX_LAST_BYKEYWORD_UPDATE = '_cegg_last_bykeyword_update';
25
-
26
- public static function saveData(array $data, $module_id, $post_id)
27
- {
28
- if (!$data)
29
- {
30
- self::deleteData($module_id, $post_id);
31
- return;
32
- }
33
- foreach ($data as $i => $d)
34
- {
35
- if (is_object($d))
36
- $data[$i] = ArrayHelper::object2Array($d);
37
- }
38
-
39
- $data = self::setIds($data);
40
- $old_data = ContentManager::getData($post_id, $module_id);
41
-
42
- if (!$old_data)
43
- $old_data = array();
44
- $outdated = array();
45
- $data_changed = true;
46
-
47
- if ($old_data)
48
- {
49
- $outdated = array_diff_key($old_data, $data);
50
- $new = array_diff_key($data, $old_data);
51
-
52
- if (!$outdated && !$new)
53
- $data_changed = false;
54
-
55
- /*
56
- * we need force data update because title or description can be edited manually or items price update
57
- if (!$data_changed)
58
- return;
59
- *
60
- */
61
- }
62
- // Sanitize content for allowed HTML tags and more.
63
- array_walk_recursive($data, array('self', 'sanitizeData'));
64
- $module = ModuleManager::getInstance()->factory($module_id);
65
- $data = $module->presavePrepare($data, $post_id);
66
-
67
- // save data
68
- \update_post_meta($post_id, self::META_PREFIX_DATA . $module_id, $data);
69
- self::clearData($outdated);
70
-
71
- // touch last update time only if data changed?
72
- if ($data_changed)
73
- {
74
- self::touchUpdateTime($post_id, $module_id);
75
- }
76
-
77
- // save price history
78
- if (GeneralConfig::getInstance()->option('price_history_days'))
79
- {
80
- PriceHistoryModel::model()->saveData($data, $module_id, $post_id);
81
- // ...and send price alerts
82
- if (GeneralConfig::getInstance()->option('price_alert_enabled'))
83
- PriceAlert::getInstance()->sendAlerts($data, $module_id, $post_id);
84
- }
85
-
86
- \do_action('content_egg_save_data', $data, $module_id, $post_id);
87
- }
88
-
89
- public static function deleteData($module_id, $post_id)
90
- {
91
- $data = ContentManager::getData($post_id, $module_id);
92
- if (!$data)
93
- return;
94
-
95
- \delete_post_meta($post_id, self::META_PREFIX_DATA . $module_id);
96
- \delete_post_meta($post_id, self::META_PREFIX_LAST_BYKEYWORD_UPDATE . $module_id);
97
- \delete_post_meta($post_id, self::META_PREFIX_LAST_ITEMS_UPDATE . $module_id);
98
-
99
- self::clearData($data);
100
-
101
- \do_action('content_egg_save_data', array(), $module_id, $post_id);
102
- }
103
-
104
- private static function clearData($data)
105
- {
106
- // delete old img files if needed
107
- foreach ($data as $d)
108
- {
109
- if (empty($d['img_file']))
110
- continue;
111
- $img_file = ImageHelper::getFullImgPath($d['img_file']);
112
- if (is_file($img_file))
113
- @unlink($img_file);
114
- }
115
- }
116
-
117
- private static function setIds($data)
118
- {
119
- $results = array();
120
- foreach ($data as $d)
121
- {
122
- $results[$d['unique_id']] = $d;
123
- }
124
- return $results;
125
- }
126
-
127
- public static function touchUpdateTime($post_id, $module_id)
128
- {
129
- $time = time();
130
- \update_post_meta($post_id, self::META_PREFIX_LAST_BYKEYWORD_UPDATE . $module_id, $time);
131
- self::touchUpdateItemsTime($post_id, $module_id, $time);
132
- }
133
-
134
- public static function touchUpdateItemsTime($post_id, $module_id, $time = null)
135
- {
136
- if (!$time)
137
- $time = time();
138
- \update_post_meta($post_id, self::META_PREFIX_LAST_ITEMS_UPDATE . $module_id, $time);
139
- }
140
-
141
- private static function sanitizeData(&$data, $key)
142
- {
143
- if (in_array((string) $key, array('img', 'url', 'IFrameURL', 'orig_url')))
144
- {
145
- //$data = \esc_url_raw($data);
146
- //@todo... This filter allows all letters, digits and $-_.+!*'(),{}|\\^~[]`"><#%;/?:@&=
147
- $data = filter_var($data, FILTER_SANITIZE_URL);
148
- } elseif ($key === 'description')
149
- {
150
- $data = \wp_kses_post($data);
151
- } elseif ($key === 'linkHtml')
152
- {
153
- $data; //cj link
154
- } elseif ($key === 'title')
155
- {
156
- $data = \sanitize_text_field($data);
157
- } elseif ($key === 'last_update' && !$data)
158
- {
159
- $data = time();
160
- } else
161
- $data = \strip_tags($data);
162
- }
163
-
164
- public static function isDataExists($post_id, $module_id)
165
- {
166
- return (bool) \get_post_meta($post_id, self::META_PREFIX_LAST_BYKEYWORD_UPDATE . $module_id, true);
167
- }
168
-
169
- public static function getData($post_id, $module_id)
170
- {
171
- return self::fixData(\get_post_meta($post_id, ContentManager::META_PREFIX_DATA . $module_id, true), $module_id);
172
- }
173
-
174
- public static function fixData($data, $module_id)
175
- {
176
- if (!$data || !is_array($data))
177
- return $data;
178
-
179
- if ($module_id == 'Amazon')
180
- {
181
- $data = \ContentEgg\application\modules\Amazon\AmazonModule::fixUniqueIds($data);
182
- }
183
- return $data;
184
- }
185
-
186
- public static function getViewData($module_id, $post_id, $params = array())
187
- {
188
- $data = self::getData($post_id, $module_id);
189
- if (!$data)
190
- return array();
191
-
192
- // locale fix...
193
- if (!empty($params['locale']))
194
- {
195
- foreach ($data as $key => $d)
196
- {
197
- if (isset($d['extra']['locale']) && strtolower($d['extra']['locale']) != strtolower($params['locale']))
198
- unset($data[$key]);
199
- }
200
- }
201
-
202
- // local redirect
203
- $module = ModuleManager::getInstance()->factory($module_id);
204
- if ($module->isParser() && $module->config('set_local_redirect'))
205
- {
206
- foreach ($data as $key => $d)
207
- {
208
- $data[$key]['url'] = LocalRedirect::createRedirectUrl($d['url'], $d['title'], LocalRedirect::REDIRECT_PREFIX_PARSER);
209
- }
210
- }
211
- return $data;
212
- }
213
-
214
- public static function getProductbyUniqueId($unique_id, $module_id, $post_id)
215
- {
216
- $data = self::getViewData($module_id, $post_id);
217
- if ($data && isset($data[$unique_id]))
218
- return $data[$unique_id];
219
- else
220
- return null;
221
- }
222
-
223
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/ContentProduct.php DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- /**
6
- * ContentProduct class file
7
- *
8
- * @author keywordrush.com <support@keywordrush.com>
9
- * @link http://www.keywordrush.com/
10
- * @copyright Copyright &copy; 2015 keywordrush.com
11
- */
12
- class ContentProduct extends Content {
13
-
14
- public $price;
15
- public $priceOld;
16
- public $percentageSaved;
17
- public $currency;
18
- public $currencyCode;
19
- public $manufacturer;
20
- public $category;
21
- public $merchant;
22
- public $rating;
23
- public $reviewsCount;
24
- public $availability;
25
- public $orig_url;
26
- public $ean;
27
- public $upc;
28
- public $sku;
29
- public $isbn;
30
-
31
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/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 &copy; 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
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/ExtraData.php DELETED
@@ -1,37 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- /**
6
- * ExtraData class file
7
- *
8
- * @author keywordrush.com <support@keywordrush.com>
9
- * @link http://www.keywordrush.com/
10
- * @copyright Copyright &copy; 2015 keywordrush.com
11
- */
12
- class ExtraData {
13
-
14
- public $date;
15
- public $author;
16
- public $source;
17
- public $domain;
18
-
19
- public static function fillAttributes($object_or_array, array $data)
20
- {
21
- foreach ($data as $key => $d)
22
- {
23
- if (is_object($object_or_array) && property_exists($object_or_array, $key))
24
- {
25
- if (is_array($d) && !is_array($object_or_array->$key))
26
- continue; //?
27
- $object_or_array->$key = $d;
28
- } elseif (is_array($object_or_array))
29
- {
30
- $object_or_array[$key] = $d;
31
- }
32
- }
33
-
34
- return $object_or_array;
35
- }
36
-
37
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/FeaturedImage.php DELETED
@@ -1,129 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- use ContentEgg\application\components\ModuleManager;
6
- use ContentEgg\application\components\ContentManager;
7
- use ContentEgg\application\helpers\ImageHelper;
8
-
9
- /**
10
- * FeaturedImage class file
11
- *
12
- * @author keywordrush.com <support@keywordrush.com>
13
- * @link http://www.keywordrush.com/
14
- * @copyright Copyright &copy; 2015 keywordrush.com
15
- */
16
- class FeaturedImage {
17
-
18
- private $app_params = array();
19
-
20
- public function __construct()
21
- {
22
- if (\is_admin())
23
- $this->adminInit();
24
- }
25
-
26
- public function adminInit()
27
- {
28
- // priority 11 - after meta save
29
- \add_action('save_post', array($this, 'setImage'), 11, 2);
30
- }
31
-
32
- public function setImage($post_id)
33
- {
34
- if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
35
- return;
36
-
37
- if (\get_post_status($post_id) == 'auto-draft' || \wp_is_post_revision($post_id))
38
- return;
39
-
40
- if (\has_post_thumbnail($post_id))
41
- return;
42
-
43
- $modules_ids = ModuleManager::getInstance()->getParserModulesIdList();
44
- foreach ($modules_ids as $module_id)
45
- {
46
- if (self::setFuturedImageByModule($post_id, $module_id))
47
- return;
48
- }
49
- }
50
-
51
- public static function setFuturedImageByModule($post_id, $module_id)
52
- {
53
- $module = ModuleManager::factory($module_id);
54
- $featured_image = $module->config('featured_image', false);
55
- if (!$featured_image)
56
- return false;
57
-
58
- $data = ContentManager::getData($post_id, $module->getId());
59
- if (!$data)
60
- return false;
61
-
62
- if ($featured_image == 'second' && isset($data[1]))
63
- unset($data[0]);
64
- elseif ($featured_image == 'last')
65
- $data = array_reverse($data);
66
- elseif ($featured_image == 'rand')
67
- shuffle($data);
68
-
69
- require_once( \ABSPATH . 'wp-admin/includes/image.php' );
70
-
71
- foreach ($data as $d)
72
- {
73
- $img_file = self::getImgFile($d);
74
- if (!$img_file)
75
- continue;
76
- $filetype = \wp_check_filetype(basename($img_file), null);
77
- $attachment = array(
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
- private static function getImgFile($item)
96
- {
97
- if (empty($item['img']))
98
- return false;
99
-
100
- // already saved? dublicate image file
101
- if (isset($item['img_file']) && $item['img_file'])
102
- {
103
- $img_file = ImageHelper::getFullImgPath($item['img_file']);
104
- if (!is_file($img_file))
105
- return false;
106
-
107
- $uploads = \wp_upload_dir();
108
- $dublicate_name = \wp_unique_filename($uploads['path'], basename($item['img_file']));
109
- $dublicate_file = $uploads['path'] . '/' . $dublicate_name;
110
-
111
- if (!copy($img_file, $dublicate_file))
112
- return false;
113
-
114
- return $dublicate_file;
115
- } else
116
- {
117
- // save image localy
118
- $file_name = ImageHelper::saveImgLocaly($item['img'], $item['title']);
119
- if (!$file_name)
120
- return false;
121
- $uploads = \wp_upload_dir();
122
- $image = ltrim(trailingslashit($uploads['subdir']), '\/') . $file_name;
123
- return ImageHelper::getFullImgPath($image);
124
- }
125
-
126
- return $img_file;
127
- }
128
-
129
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/LinkHandler.php DELETED
@@ -1,72 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- /**
6
- * LinkHandler class file
7
- *
8
- * @author keywordrush.com <support@keywordrush.com>
9
- * @link http://www.keywordrush.com/
10
- * @copyright Copyright &copy; 2016 keywordrush.com
11
- */
12
- class LinkHandler {
13
-
14
- private static $instance = null;
15
-
16
- public static function getInstance()
17
- {
18
- if (self::$instance == null)
19
- self::$instance = new self;
20
-
21
- return self::$instance;
22
- }
23
-
24
- /**
25
- * Deeplink & more...
26
- */
27
- public static function createAffUrl($url, $deeplink, $subid = '')
28
- {
29
- if (!$deeplink)
30
- {
31
- return $url;
32
- } elseif (strstr($deeplink, '{{') && strstr($deeplink, '}}'))
33
- {
34
- // teplate deeplink
35
- return self::getUrlTemplate($url, $deeplink);
36
- } elseif (!preg_match('/^https?:\/\//i', $deeplink))
37
- {
38
- // url with tail
39
- return self::getUrlWithTail($url, $deeplink);
40
- } else
41
- {
42
- // deeplink
43
- // @todo: subid
44
- //if ($subid)
45
- //$deeplink = Cpa::deeplinkSetSubid($deeplink, $subid);
46
- return $deeplink . urlencode($url);
47
- }
48
- }
49
-
50
- public static function getUrlWithTail($url, $tail)
51
- {
52
- $tail = preg_replace('/^[?&]/', '', $tail);
53
-
54
- $query = parse_url($url, PHP_URL_QUERY);
55
- if ($query)
56
- $url .= '&';
57
- else
58
- $url .= '?';
59
-
60
- parse_str($tail, $tail_array);
61
- $url .= http_build_query($tail_array);
62
- return $url;
63
- }
64
-
65
- public static function getUrlTemplate($url, $template)
66
- {
67
- $template = str_replace('{{url}}', $url, $template);
68
- $template = str_replace('{{url_encoded}}', urlencode($url), $template);
69
- return $template;
70
- }
71
-
72
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/Module.php DELETED
@@ -1,211 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- use ContentEgg\application\components\ModuleManager;
6
- use ContentEgg\application\helpers\TextHelper;
7
-
8
- /**
9
- * Module abstract class file
10
- *
11
- * @author keywordrush.com <support@keywordrush.com>
12
- * @link http://www.keywordrush.com/
13
- * @copyright Copyright &copy; 2015 keywordrush.com
14
- */
15
- abstract class Module {
16
-
17
- private $id;
18
- private $dir;
19
- protected $is_active;
20
- protected $name;
21
- protected $api_agreement;
22
- protected $description;
23
- private $is_custom;
24
- private $is_configurable;
25
-
26
- public function __construct($module_id = null)
27
- {
28
- if ($module_id)
29
- {
30
- $this->id = $module_id;
31
- } else
32
- {
33
- $parts = explode('\\', get_class($this));
34
- $this->id = $parts[count($parts) - 2];
35
- }
36
-
37
- $info = $this->info();
38
- if (!empty($info['name']))
39
- $this->name = $info['name'];
40
- else
41
- $this->name = $this->id;
42
- if (!empty($info['api_agreement']))
43
- $this->api_agreement = $info['api_agreement'];
44
- if (!empty($info['description']))
45
- $this->description = $info['description'];
46
- }
47
-
48
- public function info()
49
- {
50
- return array();
51
- }
52
-
53
- final public function getId()
54
- {
55
- return $this->id;
56
- }
57
-
58
- public function getName()
59
- {
60
- return $this->name;
61
- }
62
-
63
- public function getDir()
64
- {
65
- if ($this->dir === null)
66
- {
67
- $rc = new \ReflectionClass(get_class($this));
68
- $this->dir = dirname($rc->getFileName()) . DIRECTORY_SEPARATOR;
69
- }
70
- return $this->dir;
71
- }
72
-
73
- public function isActive()
74
- {
75
- if ($this->is_active === null)
76
- {
77
- // @todo
78
- $this->is_active = true;
79
- }
80
- return $this->is_active;
81
- }
82
-
83
- final public function isCustom()
84
- {
85
- if ($this->is_custom === null)
86
- {
87
- // @todo
88
- $this->is_custom = false;
89
- }
90
- return $this->is_custom;
91
- }
92
-
93
- public function isConfigurable()
94
- {
95
- if ($this->is_configurable === null)
96
- {
97
- if (is_file($this->getDir() . $this->getMyPathId() . 'Config.php'))
98
- $this->is_configurable = true;
99
- else
100
- $this->is_configurable = false;
101
- }
102
- return $this->is_configurable;
103
- }
104
-
105
- public function isFree()
106
- {
107
- return false;
108
- }
109
-
110
- public function renderResults()
111
- {
112
-
113
- }
114
-
115
- public function renderSearchResults()
116
- {
117
-
118
- }
119
-
120
- public function renderSearchPanel()
121
- {
122
-
123
- }
124
-
125
- public function enqueueScripts()
126
- {
127
-
128
- }
129
-
130
- public function presavePrepare($data, $post_id)
131
- {
132
- return $data;
133
- }
134
-
135
- public function getConfigInstance()
136
- {
137
- return ModuleManager::configFactory($this->getId());
138
- }
139
-
140
- public function config($opt_name, $default = null)
141
- {
142
- if (!$this->getConfigInstance()->option_exists($opt_name))
143
- return $default;
144
- else
145
- return $this->getConfigInstance()->option($opt_name);
146
- }
147
-
148
- public function render($view_name, $_data = null)
149
- {
150
- if (is_array($_data))
151
- extract($_data, EXTR_PREFIX_SAME, 'data');
152
- else
153
- $data = $_data;
154
-
155
- include \ContentEgg\PLUGIN_PATH . 'application/modules/' . $this->getMyPathId() . '/views/' . TextHelper::clear($view_name) . '.php';
156
- }
157
-
158
- public function getJsUri()
159
- {
160
- return \plugins_url('\application\modules\\' . $this->getMyPathId() . '\js', \ContentEgg\PLUGIN_FILE);
161
- }
162
-
163
- public function getApiAgreement()
164
- {
165
- return $this->api_agreement;
166
- }
167
-
168
- public function getDescription()
169
- {
170
- return $this->description;
171
- }
172
-
173
- public function isAffiliateParser()
174
- {
175
- return false;
176
- }
177
-
178
- public function isParser()
179
- {
180
- return false;
181
- }
182
-
183
- public function getMyPathId()
184
- {
185
- return self::getPathId($this->getId());
186
- }
187
-
188
- public function getMyShortId()
189
- {
190
- return self::getShortId($this->getId());
191
- }
192
-
193
- public static function getPathId($module_id)
194
- {
195
- // AE module?
196
- $parts = explode('__', $module_id);
197
- return $parts[0];
198
- }
199
-
200
- public function getShortId($module_id)
201
- {
202
- // AE module?
203
- $parts = explode('__', $module_id);
204
- if (count($parts) == 2)
205
- return $parts[1];
206
- else
207
- return $module_id;
208
- }
209
-
210
-
211
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/ModuleApi.php DELETED
@@ -1,84 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- use ContentEgg\application\Plugin;
6
- use ContentEgg\application\components\ModuleManager;
7
- use ContentEgg\application\helpers\TextHelper;
8
- use ContentEgg\application\helpers\InputHelper;
9
-
10
- /**
11
- * ModuleApi class file
12
- *
13
- * @author keywordrush.com <support@keywordrush.com>
14
- * @link http://www.keywordrush.com/
15
- * @copyright Copyright &copy; 2015 keywordrush.com
16
- */
17
- class ModuleApi {
18
-
19
- const API_BASE = '-module-api';
20
-
21
- public function __construct()
22
- {
23
- \add_action('wp_ajax_content-egg-module-api', array($this, 'addApiEntry'));
24
- }
25
-
26
- public static function apiBase()
27
- {
28
- return Plugin::slug . self::API_BASE;
29
- }
30
-
31
- public function addApiEntry()
32
- {
33
- if (!\current_user_can('edit_posts'))
34
- throw new \Exception("Access denied.");
35
-
36
- if (empty($_GET['module']))
37
- throw new \Exception("Module is undefined.");
38
-
39
- $module_id = TextHelper::clear($_GET['module']);
40
-
41
- \check_ajax_referer('contentegg-metabox', '_contentegg_nonce');
42
-
43
- $parser = ModuleManager::getInstance()->parserFactory($module_id);
44
-
45
- if (!$parser->isActive())
46
- throw new \Exception("Parser module " . $parser->getId() . " is inactive.");
47
-
48
- $query = stripslashes (InputHelper::get('query', ''));
49
- $query = json_decode($query, true);
50
-
51
- if (!$query)
52
- throw new \Exception("Error: 'query' parameter cannot be empty.");
53
- if (empty($query['keyword']) || !($keyword = TextHelper::clear_utf8($query['keyword'])))
54
- throw new \Exception("Error: 'keyword' parameter cannot be empty.");
55
-
56
- try
57
- {
58
- $data = $parser->doRequest($keyword, $query);
59
- foreach ($data as $key => $item)
60
- {
61
- if (!$item->unique_id)
62
- throw new \Exception('Item data "unique_id" must be specified.');
63
-
64
- if ($item->description)
65
- {
66
- $item->description = TextHelper::br2nl($item->description);
67
- $item->description = TextHelper::removeExtraBreaks($item->description);
68
- }
69
- }
70
- $this->formatJson(array('results' => $data, 'error' => ''));
71
- } catch (\Exception $e)
72
- {
73
- $this->formatJson(array('error' => $e->getMessage()));
74
- }
75
- }
76
-
77
- public function formatJson($data)
78
- {
79
- header('Content-Type: application/json; charset=UTF-8');
80
- echo json_encode($data);
81
- \wp_die();
82
- }
83
-
84
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/ModuleConfig.php DELETED
@@ -1,76 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- use ContentEgg\application\Plugin;
6
- use ContentEgg\application\admin\PluginAdmin;
7
-
8
- /**
9
- * ModuleConfig abstract class file
10
- *
11
- * @author keywordrush.com <support@keywordrush.com>
12
- * @link http://www.keywordrush.com/
13
- * @copyright Copyright &copy; 2015 keywordrush.com
14
- */
15
- abstract class ModuleConfig extends Config {
16
-
17
- protected $module_id;
18
-
19
- protected function __construct($module_id = null)
20
- {
21
- if ($module_id)
22
- {
23
- $this->module_id = $module_id;
24
- } else
25
- {
26
- $parts = explode('\\', get_class($this));
27
- $this->module_id = $parts[count($parts) - 2];
28
- }
29
- parent::__construct();
30
- }
31
-
32
- public function getModuleId()
33
- {
34
- return $this->module_id;
35
- }
36
-
37
- public function getModuleName()
38
- {
39
- return $this->getModuleInstance()->getName();
40
- }
41
-
42
- public function getModuleInstance()
43
- {
44
- return ModuleManager::factory($this->getModuleId());
45
- }
46
-
47
- public function page_slug()
48
- {
49
- return Plugin::slug() . '-' . $this->getModuleId();
50
- }
51
-
52
- public function option_name()
53
- {
54
- return Plugin::slug() . '_' . $this->getModuleId();
55
- }
56
-
57
- public function add_admin_menu()
58
- {
59
- \add_submenu_page(null, $this->getModuleId() . ' ' . __('настройки', 'content-egg') . ' &lsaquo; Content Egg', '', 'manage_options', $this->page_slug, array($this, 'settings_page'));
60
- }
61
-
62
- public function settings_page()
63
- {
64
- PluginAdmin::render('settings', array('page_slug' => $this->page_slug(),
65
- 'header' => $this->getModuleName() . ' ' . __('настройки', 'content-egg'),
66
- 'api_agreement' => $this->getModuleInstance()->getApiAgreement(),
67
- 'description' => $this->getModuleInstance()->getDescription(),
68
- ));
69
- }
70
-
71
- public function options()
72
- {
73
- return array();
74
- }
75
-
76
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/ModuleManager.php DELETED
@@ -1,309 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- use \ContentEgg\application\Plugin;
6
- use \ContentEgg\application\helpers\TextHelper;
7
- use \ContentEgg\application\admin\AeIntegrationConfig;
8
-
9
- /**
10
- * ModuleManager class file
11
- *
12
- * @author keywordrush.com <support@keywordrush.com>
13
- * @link http://www.keywordrush.com/
14
- * @copyright Copyright &copy; 2016 keywordrush.com
15
- */
16
- class ModuleManager {
17
-
18
- const MODULES_DIR = 'application/modules';
19
- const AE_MODULES_PREFIX = 'AE';
20
-
21
- private static $modules = array();
22
- private static $active_modules = array();
23
- private static $configs = array();
24
- private static $instance = null;
25
- // hidden system modules
26
- private static $hidden_modules = array('AE');
27
-
28
- public static function getInstance()
29
- {
30
- if (self::$instance == null)
31
- self::$instance = new self;
32
-
33
- return self::$instance;
34
- }
35
-
36
- private function __construct()
37
- {
38
- $this->initModules();
39
- }
40
-
41
- public function adminInit()
42
- {
43
- \add_action('parent_file', array($this, 'highlightAdminMenu'));
44
- foreach ($this->getConfigurableModules() as $module)
45
- {
46
- $config = self::configFactory($module->getId());
47
- $config->adminInit();
48
- }
49
- }
50
-
51
- /**
52
- * Highlight the proper submenu item
53
- */
54
- public function highlightAdminMenu($parent_file)
55
- {
56
- global $plugin_page;
57
- if (!$parent_file)
58
- $plugin_page = Plugin::slug;
59
- return $parent_file;
60
- }
61
-
62
- private function initModules()
63
- {
64
- // 1. Scan standart modules
65
- $modules_ids = $this->scanForModules();
66
- sort($modules_ids);
67
-
68
- // 2. Aff Egg modules
69
- $ae_modules_ids = $this->getAffEggModules();
70
- sort($ae_modules_ids);
71
-
72
- $modules_ids = array_merge($modules_ids, $ae_modules_ids);
73
- $modules_ids = \apply_filters('content_egg_modules', $modules_ids);
74
-
75
- // create modules
76
- foreach ($modules_ids as $module_id)
77
- {
78
- // create module
79
- self::factory($module_id);
80
- }
81
-
82
- // fill active modules
83
- foreach (self::$modules as $module)
84
- {
85
- if ($module->isActive())
86
- self::$active_modules[$module->getId()] = $module;
87
- }
88
- }
89
-
90
- private function scanForModules($path = null)
91
- {
92
- if (!$path)
93
- $path = \ContentEgg\PLUGIN_PATH . self::MODULES_DIR . DIRECTORY_SEPARATOR;
94
-
95
- $folder_handle = @opendir($path);
96
- if ($folder_handle === false)
97
- return;
98
-
99
- $founded_modules = array();
100
-
101
- while (($m_dir = readdir($folder_handle)) !== false)
102
- {
103
- if ($m_dir == '.' || $m_dir == '..')
104
- continue;
105
- $module_path = $path . $m_dir;
106
- if (!is_dir($module_path))
107
- continue;
108
-
109
- $module_id = $m_dir;
110
- if (in_array($module_id, self::$hidden_modules))
111
- continue;
112
-
113
- $founded_modules[] = TextHelper::clear($module_id);
114
- }
115
- closedir($folder_handle);
116
- return $founded_modules;
117
- }
118
-
119
- private function getAffEggModules()
120
- {
121
- if (!AeIntegrationConfig::isAEIntegrationPosible())
122
- return array();
123
-
124
- $module_ids = AeIntegrationConfig::getInstance()->option('modules');
125
- if (!$module_ids)
126
- return array();
127
- $result = array();
128
- foreach ($module_ids as $module_id)
129
- {
130
- $result[] = self::AE_MODULES_PREFIX . '__' . $module_id;
131
- }
132
- return $result;
133
- }
134
-
135
- public static function factory($module_id)
136
- {
137
- if (!isset(self::$modules[$module_id]))
138
- {
139
- $path_prefix = Module::getPathId($module_id);
140
- $module_class = "\\ContentEgg\\application\\modules\\" . $path_prefix . "\\" . $path_prefix . 'Module';
141
-
142
- if (class_exists($module_class, true) === false)
143
- {
144
- throw new \Exception("Unable to load module class: '{$module_class}'.");
145
- }
146
-
147
- $module = new $module_class($module_id);
148
-
149
- if (!($module instanceof \ContentEgg\application\components\Module))
150
- {
151
- throw new \Exception("The module '{$module_id}' must inherit from Module.");
152
- }
153
-
154
- if (Plugin::isFree() && !$module->isFree())
155
- return false;
156
-
157
- self::$modules[$module_id] = $module;
158
- }
159
- return self::$modules[$module_id];
160
- }
161
-
162
- public static function parserFactory($module_id)
163
- {
164
- $module = self::factory($module_id);
165
- if (!($module instanceof \ContentEgg\application\components\ParserModule))
166
- {
167
- throw new \Exception("The parser module '{$module_id}' must inherit from ParserModule.");
168
- }
169
- return $module;
170
- }
171
-
172
- public static function configFactory($module_id)
173
- {
174
- if (!isset(self::$configs[$module_id]))
175
- {
176
- $path_prefix = Module::getPathId($module_id);
177
- $config_class = "\\ContentEgg\\application\\modules\\" . $path_prefix . "\\" . $path_prefix . 'Config';
178
-
179
- if (class_exists($config_class, true) === false)
180
- {
181
- throw new \Exception("Unable to load module config class: '{$config_class}'.");
182
- }
183
-
184
- $config = $config_class::getInstance($module_id);
185
-
186
- if (self::factory($module_id)->isParser())
187
- {
188
- if (!($config instanceof \ContentEgg\application\components\ParserModuleConfig))
189
- {
190
- throw new \Exception("The parser module config '{$config_class}' must inherit from ParserModuleConfig.");
191
- }
192
- } else
193
- {
194
- if (!($config instanceof \ContentEgg\application\components\ModuleConfig))
195
- {
196
- throw new \Exception("The module config '{$config_class}' must inherit from ModuleConfig.");
197
- }
198
- }
199
-
200
- self::$configs[$module_id] = $config;
201
- }
202
-
203
- return self::$configs[$module_id];
204
- }
205
-
206
- public function getModules($only_active = false)
207
- {
208
- if ($only_active)
209
- return self::$active_modules;
210
- else
211
- return self::$modules;
212
- }
213
-
214
- public function getModulesIdList($only_active = false)
215
- {
216
- return array_keys($this->getModules($only_active));
217
- }
218
-
219
- public function getParserModules($only_active = false)
220
- {
221
- $modules = $this->getModules($only_active);
222
- $parsers = array();
223
- foreach ($modules as $module)
224
- {
225
- if ($module->isParser())
226
- $parsers[$module->getId()] = $module;
227
- }
228
- return $parsers;
229
- }
230
-
231
- public function getAffiliateParsers($only_active = false)
232
- {
233
- $modules = $this->getModules($only_active);
234
- $parsers = array();
235
- foreach ($modules as $module)
236
- {
237
- if ($module->isAffiliateParser())
238
- $parsers[$module->getId()] = $module;
239
- }
240
- return $parsers;
241
- }
242
-
243
- public function getParserModulesIdList($only_active = false)
244
- {
245
- return array_keys($this->getParserModules($only_active));
246
- }
247
-
248
- public function getParserModulesByTypes($types, $only_active = true)
249
- {
250
- if ($types == 'ALL')
251
- $types = null;
252
-
253
- if ($types && !is_array($types))
254
- $types = array($types);
255
- $res = array();
256
- foreach ($this->getParserModules($only_active) as $module)
257
- {
258
- if ($types && !in_array($module->getParserType(), $types))
259
- continue;
260
- $res[$module->getId()] = $module;
261
- }
262
- return $res;
263
- }
264
-
265
- public function getParserModuleIdsByTypes($types, $only_active = true)
266
- {
267
- return array_keys($this->getParserModulesByTypes($types, $only_active));
268
- }
269
-
270
- public function getConfigurableModules()
271
- {
272
- $result = array();
273
- foreach ($this->getModules() as $module)
274
- {
275
- if ($module->isConfigurable())
276
- $result[] = $module;
277
- }
278
- return $result;
279
- }
280
-
281
- public function moduleExists($module_id)
282
- {
283
- if (isset(self::$modules[$module_id]))
284
- return true;
285
- else
286
- return false;
287
- }
288
-
289
- public function isModuleActive($module_id)
290
- {
291
- if (isset(self::$active_modules[$module_id]))
292
- return true;
293
- else
294
- return false;
295
- }
296
-
297
- public function getOptionsList()
298
- {
299
- $options = array();
300
- foreach ($this->getConfigurableModules() as $module)
301
- {
302
- $config = $module->getConfigInstance();
303
- $options[$config->option_name()] = $config->getOptionValues();
304
- //$opt_name = $module->getConfigInstance()->option_name();
305
- //$options[$opt_name] = \get_option($opt_name);
306
- }
307
- return $options;
308
- }
309
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/ModuleTemplateManager.php DELETED
@@ -1,66 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- /**
6
- * ModuleTemplateManager class file
7
- *
8
- * @author keywordrush.com <support@keywordrush.com>
9
- * @link http://www.keywordrush.com/
10
- * @copyright Copyright &copy; 2015 keywordrush.com
11
- */
12
- class ModuleTemplateManager extends TemplateManager {
13
-
14
- const TEMPLATE_DIR = 'templates';
15
- const CUSTOM_TEMPLATE_DIR = 'content-egg-templates';
16
- const TEMPLATE_PREFIX = 'data_';
17
-
18
- private $module_id;
19
- private static $instances = array();
20
-
21
- public static function getInstance($module_id)
22
- {
23
- if (!isset(self::$instances[$module_id]))
24
- {
25
- self::$instances[$module_id] = new self($module_id);
26
- }
27
- return self::$instances[$module_id];
28
- }
29
-
30
- private function __construct($module_id)
31
- {
32
- $this->module_id = $module_id;
33
- }
34
-
35
- public function getTempatePrefix()
36
- {
37
- return self::TEMPLATE_PREFIX;
38
- }
39
-
40
- public function getTempateDir()
41
- {
42
- return \ContentEgg\PLUGIN_PATH . 'application/modules/' . Module::getPathId($this->module_id) . '/' . self::TEMPLATE_DIR;
43
- }
44
-
45
- public function getCustomTempateDirs()
46
- {
47
- return array(
48
- \get_stylesheet_directory() . '/' . self::CUSTOM_TEMPLATE_DIR . '/' . Module::getPathId($this->module_id), //child theme
49
- \get_template_directory() . '/' . self::CUSTOM_TEMPLATE_DIR . '/' . Module::getPathId($this->module_id), // theme
50
- \ABSPATH . 'wp-content/' . self::CUSTOM_TEMPLATE_DIR . '/' . Module::getPathId($this->module_id),
51
- );
52
- }
53
-
54
- public function getModuleId()
55
- {
56
- return $this->module_id;
57
- }
58
-
59
- public function getTemplatesList($short_mode = false)
60
- {
61
- $templates = parent::getTemplatesList($short_mode);
62
- $templates = \apply_filters('content_egg_module_templates', $templates, $this->getModuleId());
63
- return $templates;
64
- }
65
-
66
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/ParserModule.php DELETED
@@ -1,99 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- use ContentEgg\application\helpers\ImageHelper;
6
- use ContentEgg\application\LocalRedirect;
7
-
8
- /**
9
- * ParserModule abstract class file
10
- *
11
- * @author keywordrush.com <support@keywordrush.com>
12
- * @link http://www.keywordrush.com/
13
- * @copyright Copyright &copy; 2015 keywordrush.com
14
- */
15
- abstract class ParserModule extends Module {
16
-
17
- const PARSER_TYPE_CONTENT = 'CONTENT';
18
- const PARSER_TYPE_PRODUCT = 'PRODUCT';
19
- const PARSER_TYPE_COUPON = 'COUPON';
20
- const PARSER_TYPE_IMAGE = 'IMAGE';
21
- const PARSER_TYPE_VIDEO = 'VIDEO';
22
- const PARSER_TYPE_OTHER = 'OTHER';
23
-
24
- abstract public function doRequest($keyword, $query_params = array(), $is_autoupdate = false);
25
-
26
- abstract public function getParserType();
27
-
28
- public function isActive()
29
- {
30
- if ($this->is_active === null)
31
- {
32
- if ($this->getConfigInstance()->option('is_active'))
33
- $this->is_active = true;
34
- else
35
- $this->is_active = false;
36
- }
37
- return $this->is_active;
38
- }
39
-
40
- final public function isParser()
41
- {
42
- return true;
43
- }
44
-
45
- public function presavePrepare($data, $post_id)
46
- {
47
- global $post;
48
-
49
- $data = parent::presavePrepare($data, $post_id);
50
-
51
- // do not save images for revisions
52
- if ($post && wp_is_post_revision($post_id))
53
- return $data;
54
-
55
- foreach ($data as $key => $item)
56
- {
57
- // save img
58
- if ($this->config('save_img') && !wp_is_post_revision($post_id))
59
- {
60
- // check old_data also. need for fix behavior with "preview changes" button
61
- if ($item['img'] && empty($item['img_file']) && empty($old_data[$key]['img_file']))
62
- {
63
- $local_img_name = ImageHelper::saveImgLocaly($item['img'], $item['title']);
64
- if ($local_img_name)
65
- {
66
- $uploads = \wp_upload_dir();
67
- $item['img'] = $uploads['url'] . '/' . $local_img_name;
68
- $item['img_file'] = ltrim(trailingslashit($uploads['subdir']), '\/') . $local_img_name;
69
- }
70
- $data[$key] = $item;
71
- }
72
- }
73
-
74
- // fill extra domain
75
- if (!empty($item['orig_url']))
76
- $url = $item['orig_url'];
77
- else
78
- $url = $item['url'];
79
- if ($url)
80
- $data[$key]['extra']['domain'] = str_ireplace('www.', '', parse_url($url, PHP_URL_HOST));
81
-
82
- //if (empty($item['redirect']))
83
- // $data[$key]['redirect'] = LocalRedirect::createRedirectUrl($item['url'], $item['title'], LocalRedirect::REDIRECT_PREFIX_PARSER);
84
- }
85
- return $data;
86
- }
87
-
88
- public static function getFullImgPath($img_path)
89
- {
90
- $uploads = \wp_upload_dir();
91
- return trailingslashit($uploads['basedir']) . $img_path;
92
- }
93
-
94
- public function defaultTemplateName()
95
- {
96
- return 'data_simple';
97
- }
98
-
99
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/ParserModuleConfig.php DELETED
@@ -1,95 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- /**
6
- * ParserModuleConfig abstract class file
7
- *
8
- * @author keywordrush.com <support@keywordrush.com>
9
- * @link http://www.keywordrush.com/
10
- * @copyright Copyright &copy; 2015 keywordrush.com
11
- */
12
- abstract class ParserModuleConfig extends ModuleConfig {
13
-
14
- public function options()
15
- {
16
- $tpl_manager = ModuleTemplateManager::getInstance($this->module_id);
17
- $options = array(
18
- 'is_active' => array(
19
- 'title' => __('Включить модуль', 'content-egg'),
20
- 'description' => '',
21
- 'callback' => array($this, 'render_checkbox'),
22
- 'default' => 0,
23
- 'section' => 'default',
24
- ),
25
- 'embed_at' => array(
26
- 'title' => __('Добавить', 'content-egg'),
27
- 'description' => __('Куда добавить контент этого модуля? Шорткоды работают всегда в независимости от настройки.', 'content-egg'),
28
- 'callback' => array($this, 'render_dropdown'),
29
- 'dropdown_options' => array(
30
- 'post_bottom' => __('В конец поста', 'content-egg'),
31
- 'post_top' => __('В начало поста', 'content-egg'),
32
- 'shortcode' => __('Только шорткоды', 'content-egg'),
33
- ),
34
- 'default' => 'post_bottom',
35
- 'section' => 'default',
36
- ),
37
- 'priority' => array(
38
- 'title' => __('Приоритет', 'content-egg'),
39
- 'description' => __('Приоритет задает порядок включения модулей в пост. 0 - самый высокий приоритет.', 'content-egg'),
40
- 'callback' => array($this, 'render_input'),
41
- 'default' => 10,
42
- 'validator' => array(
43
- 'trim',
44
- 'absint',
45
- ),
46
- 'section' => 'default',
47
- ),
48
- 'template' => array(
49
- 'title' => __('Шаблон', 'content-egg'),
50
- 'description' => __('Шаблон по-умолчанию.', 'content-egg'),
51
- 'callback' => array($this, 'render_dropdown'),
52
- 'dropdown_options' => $tpl_manager->getTemplatesList(),
53
- 'default' => $this->getModuleInstance()->defaultTemplateName(),
54
- 'section' => 'default',
55
- ),
56
- 'tpl_title' => array(
57
- 'title' => __('Заголовок', 'content-egg'),
58
- 'description' => __('Шаблоны могут использовать заголовок при выводе данных.', 'content-egg'),
59
- 'callback' => array($this, 'render_input'),
60
- 'default' => '',
61
- 'validator' => array(
62
- 'trim',
63
- ),
64
- 'section' => 'default',
65
- ),
66
- 'featured_image' => array(
67
- 'title' => 'Featured image',
68
- 'description' => __('Автоматически установить Featured image для поста.', 'content-egg'),
69
- 'callback' => array($this, 'render_dropdown'),
70
- 'dropdown_options' => array(
71
- '' => __('Не устанавливать', 'content-egg'),
72
- 'first' => __('Первый элемент', 'content-egg'),
73
- 'second' => __('Второй элемент', 'content-egg'),
74
- 'rand' => __('Случайный элемент', 'content-egg'),
75
- 'last' => __('Последний элемент', 'content-egg'),
76
- ),
77
- 'default' => '',
78
- 'section' => 'default',
79
- ),
80
- 'set_local_redirect' => array(
81
- 'title' => __('Редирект', 'content-egg'),
82
- 'description' => __('Ссылки через локальный 301 редирект.', 'content-egg'),
83
- 'callback' => array($this, 'render_checkbox'),
84
- 'default' => 0,
85
- 'section' => 'default',
86
- ),
87
- );
88
-
89
- return
90
- array_merge(
91
- parent::options(), $options
92
- );
93
- }
94
-
95
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/Shortcoded.php DELETED
@@ -1,51 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- /**
6
- * Shortcoded class file
7
- *
8
- * @author keywordrush.com <support@keywordrush.com>
9
- * @link http://www.keywordrush.com/
10
- * @copyright Copyright &copy; 2015 keywordrush.com
11
- */
12
- class Shortcoded {
13
-
14
- private static $instances = array();
15
- private static $shortcoded_module_ids = array();
16
- private $post_id;
17
-
18
- public static function getInstance($post_id)
19
- {
20
- if (!isset(self::$instances[$post_id]))
21
- {
22
- self::$instances[$post_id] = new self($post_id);
23
- self::$shortcoded_module_ids[$post_id] = array();
24
- }
25
- return self::$instances[$post_id];
26
- }
27
-
28
- private function __construct($post_id)
29
- {
30
- $this->post_id = $post_id;
31
- }
32
-
33
- public function getShortcodedModuleIds()
34
- {
35
- return self::$shortcoded_module_ids[$this->post_id];
36
- }
37
-
38
- public function setShortcodedModule($module_id)
39
- {
40
- self::$shortcoded_module_ids[$this->post_id][$module_id] = $module_id;
41
- }
42
-
43
- public function isShortcoded($module_id)
44
- {
45
- if (isset(self::$shortcoded_module_ids[$this->post_id][$module_id]))
46
- return true;
47
- else
48
- return false;
49
- }
50
-
51
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/TemplateManager.php DELETED
@@ -1,204 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\components;
4
-
5
- use ContentEgg\application\helpers\TextHelper;
6
-
7
-
8
- /**
9
- * TemplateManager class file
10
- *
11
- * @author keywordrush.com <support@keywordrush.com>
12
- * @link http://www.keywordrush.com/
13
- * @copyright Copyright &copy; 2015 keywordrush.com
14
- */
15
- abstract class TemplateManager {
16
-
17
- private $templates = null;
18
- private $last_render_data;
19
-
20
- abstract public function getTempatePrefix();
21
-
22
- abstract public function getTempateDir();
23
-
24
- abstract public function getCustomTempateDirs();
25
-
26
- public function getTemplatesList($short_mode = false)
27
- {
28
- $prefix = $this->getTempatePrefix();
29
- if ($this->templates === null)
30
- {
31
- $templates = array();
32
- foreach ($this->getCustomTempateDirs() as $dir)
33
- {
34
- $templates = array_merge($templates, $this->scanTemplates($dir, $prefix, true));
35
- }
36
- $templates = array_merge($templates, $this->scanTemplates($this->getTempateDir(), $prefix, false));
37
- $this->templates = $templates;
38
- }
39
-
40
- if ($short_mode)
41
- {
42
- $list = array();
43
- foreach ($this->templates as $id => $name)
44
- {
45
- $custom = '';
46
- if (self::isCustomTemplate($id))
47
- {
48
- $parts = explode('/', $id);
49
- $custom = 'custom/';
50
- $id = $parts[1];
51
- }
52
-
53
- // del prefix
54
- $list[$custom . substr($id, strlen($prefix))] = $name;
55
- }
56
- return $list;
57
- }
58
-
59
- return $this->templates;
60
- }
61
-
62
- private function scanTemplates($path, $prefix, $custom = false)
63
- {
64
- if ($custom && !is_dir($path))
65
- return array();
66
-
67
- $tpl_files = glob($path . '/' . $prefix . '*.php');
68
- if (!$tpl_files)
69
- return array();
70
-
71
- $templates = array();
72
- foreach ($tpl_files as $file)
73
- {
74
- $template_id = basename($file, '.php');
75
- if ($custom)
76
- $template_id = 'custom/' . $template_id;
77
-
78
- $data = \get_file_data($file, array('name' => 'Name'));
79
- if ($data && !empty($data['name']))
80
- $templates[$template_id] = strip_tags($data['name']);
81
- else
82
- $templates[$template_id] = $template_id;
83
- if ($custom)
84
- $templates[$template_id] .= ' ' . __('[пользовательский]', 'content-egg');
85
- }
86
- return $templates;
87
- }
88
-
89
- public function render($view_name, array $_data = array())
90
- {
91
- $file = $this->getViewPath($view_name);
92
- if (!$file)
93
- return '';
94
-
95
- $this->last_render_data = $_data;
96
- extract($_data, EXTR_PREFIX_SAME, 'data');
97
-
98
- ob_start();
99
- ob_implicit_flush(false);
100
- include $file;
101
- $res = ob_get_clean();
102
- return $res;
103
- }
104
-
105
- public function renderPartial($view_name, array $_data = array(), $block = false)
106
- {
107
- $file = \ContentEgg\PLUGIN_PATH . 'application/templates/';
108
- if ($block)
109
- $file .= 'blocks/';
110
- else
111
- $file .= $this->getTempatePrefix();
112
- $file .= $view_name . '.php';
113
-
114
- if (!$file)
115
- return '';
116
- $_data = array_merge($this->last_render_data, $_data);
117
- extract($_data, EXTR_PREFIX_SAME, 'data');
118
- include $file;
119
- }
120
-
121
- public function renderBlock($view_name, array $data = array())
122
- {
123
- $this->renderPartial($view_name, $data, true);
124
- }
125
-
126
- public function getViewPath($view_name)
127
- {
128
- $view_name = str_replace('.', '', $view_name);
129
- if (substr($view_name, 0, 7) == 'custom/')
130
- {
131
- $view_name = substr($view_name, 7);
132
- foreach ($this->getCustomTempateDirs() as $custom_dir)
133
- {
134
- $tpl_path = $custom_dir;
135
- $file = $tpl_path . DIRECTORY_SEPARATOR . TextHelper::clear($view_name) . '.php';
136
- if (is_file($file) && is_readable($file))
137
- return $file;
138
- }
139
- return false;
140
- } else
141
- {
142
- $tpl_path = $this->getTempateDir();
143
- $file = $tpl_path . DIRECTORY_SEPARATOR . TextHelper::clear($view_name) . '.php';
144
- if (is_file($file) && is_readable($file))
145
- return $file;
146
- else
147
- return false;
148
- }
149
- }
150
-
151
- public function getFullTemplateId($short_id)
152
- {
153
- $prefix = $this->getTempatePrefix();
154
- $custom = '';
155
- if (self::isCustomTemplate($short_id))
156
- {
157
- $parts = explode('/', $short_id);
158
- $custom = 'custom/';
159
- $id = $parts[1];
160
- } else
161
- $id = $short_id;
162
-
163
- // check _data prefix
164
- if (substr($id, 0, strlen($prefix)) != $prefix)
165
- {
166
- $id = $prefix . $id;
167
- }
168
- return $custom . $id;
169
- }
170
-
171
- public static function isCustomTemplate($template_id)
172
- {
173
- if (substr($template_id, 0, 7) == 'custom/')
174
- return true;
175
- else
176
- return false;
177
- }
178
-
179
- public function isTemplateExists($tpl)
180
- {
181
- return array_key_exists($tpl, $this->getTemplatesList());
182
- }
183
-
184
- public function prepareShortcodeTempate($template)
185
- {
186
- if (self::isCustomTemplate($template))
187
- {
188
- $is_custom = true;
189
- // del 'custom/' prefix
190
- $template = substr($template, 7);
191
- } else
192
- $is_custom = false;
193
-
194
- $template = TextHelper::clear($template);
195
- if ($is_custom)
196
- $template = 'custom/' . $template;
197
- if ($template)
198
- $template = $this->getFullTemplateId($template);
199
-
200
- return $template;
201
- }
202
-
203
-
204
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/components/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/application/helpers/ArrayHelper.php DELETED
@@ -1,66 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\helpers;
4
-
5
- /**
6
- * ArrayHelper class file
7
- *
8
- * @author keywordrush.com <support@keywordrush.com>
9
- * @link http://www.keywordrush.com/
10
- * @copyright Copyright &copy; 2015 keywordrush.com
11
- *
12
- */
13
- class ArrayHelper {
14
-
15
- /**
16
- * @link: http://php.net/manual/ru/function.array-diff-assoc.php#111675
17
- */
18
- public static function array_diff_assoc_recursive($array1, $array2)
19
- {
20
- $difference = array();
21
- foreach ($array1 as $key => $value)
22
- {
23
- if (is_array($value))
24
- {
25
- if (!isset($array2[$key]) || !is_array($array2[$key]))
26
- {
27
- $difference[$key] = $value;
28
- } else
29
- {
30
- $new_diff = array_diff_assoc_recursive($value, $array2[$key]);
31
- if (!empty($new_diff))
32
- $difference[$key] = $new_diff;
33
- }
34
- } else if (!array_key_exists($key, $array2) || $array2[$key] !== $value)
35
- {
36
- $difference[$key] = $value;
37
- }
38
- }
39
- return $difference;
40
- }
41
-
42
- /**
43
- * Full depth recursive conversion to array
44
- * @param type $object
45
- * @return array
46
- */
47
- public static function object2Array($object)
48
- {
49
- return json_decode(json_encode($object), true);
50
- }
51
-
52
- public static function asortStable(array $array, $order1 = SORT_ASC, $order2 = SORT_ASC)
53
- {
54
- if (!$array)
55
- return $array;
56
-
57
- foreach ($array as $key => $value)
58
- {
59
- $keys[] = $key;
60
- $data[] = $value;
61
- }
62
- array_multisort($data, $order1, $keys, $order2, $array);
63
- return $array;
64
- }
65
-
66
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/helpers/FormValidator.php DELETED
@@ -1,560 +0,0 @@
1
- <?php
2
- namespace ContentEgg\application\helpers;
3
-
4
- /**
5
- * FormValidator class file
6
- *
7
- * Modified version of: CodeIgniter CI_Form_validation
8
- *
9
- * @author keywordrush.com <support@keywordrush.com>
10
- * @link http://www.keywordrush.com/
11
- * @copyright Copyright &copy; 2014 keywordrush.com
12
- *
13
- *
14
- */
15
-
16
- /**
17
- * CodeIgniter
18
- *
19
- * An open source application development framework for PHP 5.2.4 or newer
20
- *
21
- * NOTICE OF LICENSE
22
- *
23
- * Licensed under the Open Software License version 3.0
24
- *
25
- * This source file is subject to the Open Software License (OSL 3.0) that is
26
- * bundled with this package in the files license.txt / license.rst. It is
27
- * also available through the world wide web at this URL:
28
- * http://opensource.org/licenses/OSL-3.0
29
- * If you did not receive a copy of the license and are unable to obtain it
30
- * through the world wide web, please send an email to
31
- * licensing@ellislab.com so we can send you a copy immediately.
32
- *
33
- * @package CodeIgniter
34
- * @author EllisLab Dev Team
35
- * @copyright Copyright (c) 2008 - 2013, EllisLab, Inc. (http://ellislab.com/)
36
- * @license http://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
37
- * @link http://codeigniter.com
38
- * @since Version 1.0
39
- * @filesource
40
- */
41
- class FormValidator {
42
-
43
- /**
44
- * Required
45
- *
46
- * @param string
47
- * @return bool
48
- */
49
- public static function required($str)
50
- {
51
- return is_array($str) ? (bool) count($str) : (trim($str) !== '');
52
- }
53
-
54
- // --------------------------------------------------------------------
55
-
56
- /**
57
- * Performs a Regular Expression match test.
58
- *
59
- * @param string
60
- * @param string regex
61
- * @return bool
62
- */
63
- public static function regex_match($str, $regex)
64
- {
65
- return (bool) preg_match($regex, $str);
66
- }
67
-
68
- // --------------------------------------------------------------------
69
-
70
- /**
71
- * Match one field to another
72
- *
73
- * @param string $str string to compare against
74
- * @param string $field
75
- * @return bool
76
- */
77
- public static function matches($str, $field)
78
- {
79
- return isset($this->_field_data[$field], $this->_field_data[$field]['postdata']) ? ($str === $this->_field_data[$field]['postdata']) : FALSE;
80
- }
81
-
82
- // --------------------------------------------------------------------
83
-
84
- /**
85
- * Differs from another field
86
- *
87
- * @param string
88
- * @param string field
89
- * @return bool
90
- */
91
- public static function differs($str, $field)
92
- {
93
- return !(isset($this->_field_data[$field]) && $this->_field_data[$field]['postdata'] === $str);
94
- }
95
-
96
- // --------------------------------------------------------------------
97
-
98
- /**
99
- * Minimum Length
100
- *
101
- * @param string
102
- * @param string
103
- * @return bool
104
- */
105
- public static function min_length($str, $val)
106
- {
107
- if (!is_numeric($val))
108
- {
109
- return FALSE;
110
- } else
111
- {
112
- $val = (int) $val;
113
- }
114
-
115
- return (MB_ENABLED === TRUE) ? ($val <= mb_strlen($str)) : ($val <= strlen($str));
116
- }
117
-
118
- // --------------------------------------------------------------------
119
-
120
- /**
121
- * Max Length
122
- *
123
- * @param string
124
- * @param string
125
- * @return bool
126
- */
127
- public static function max_length($str, $val)
128
- {
129
- if (!is_numeric($val))
130
- {
131
- return FALSE;
132
- } else
133
- {
134
- $val = (int) $val;
135
- }
136
-
137
- return (MB_ENABLED === TRUE) ? ($val >= mb_strlen($str)) : ($val >= strlen($str));
138
- }
139
-
140
- // --------------------------------------------------------------------
141
-
142
- /**
143
- * Exact Length
144
- *
145
- * @param string
146
- * @param string
147
- * @return bool
148
- */
149
- public static function exact_length($str, $val)
150
- {
151
- if (!is_numeric($val))
152
- {
153
- return FALSE;
154
- } else
155
- {
156
- $val = (int) $val;
157
- }
158
-
159
- return (MB_ENABLED === TRUE) ? (mb_strlen($str) === $val) : (strlen($str) === $val);
160
- }
161
-
162
- // --------------------------------------------------------------------
163
-
164
- /**
165
- * Valid URL
166
- *
167
- * @param string $str
168
- * @return bool
169
- */
170
- public static function valid_url($str)
171
- {
172
- if (empty($str))
173
- return FALSE;
174
-
175
- $pattern='/^(http|https):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)/i';
176
-
177
- if (is_string($str) && strlen($str) < 2000)
178
- {
179
- if (preg_match($pattern, $str))
180
- return true;
181
- }
182
- return false;
183
-
184
- /*
185
- if (empty($str))
186
- {
187
- return FALSE;
188
- } elseif (preg_match('/^(?:([^:]*)\:)?\/\/(.+)$/', $str, $matches))
189
- {
190
- if (empty($matches[2]))
191
- {
192
- return FALSE;
193
- } elseif (!in_array($matches[1], array('http', 'https'), TRUE))
194
- {
195
- return FALSE;
196
- }
197
-
198
- $str = $matches[2];
199
- }
200
-
201
- $str = 'http://' . $str;
202
-
203
- // There's a bug affecting PHP 5.2.13, 5.3.2 that considers the
204
- // underscore to be a valid hostname character instead of a dash.
205
- // Reference: https://bugs.php.net/bug.php?id=51192
206
- if (version_compare(PHP_VERSION, '5.2.13', '==') === 0 OR version_compare(PHP_VERSION, '5.3.2', '==') === 0)
207
- {
208
- sscanf($str, 'http://%[^/]', $host);
209
- $str = substr_replace($str, strtr($host, array('_' => '-', '-' => '_')), 7, strlen($host));
210
- }
211
-
212
- return (filter_var($str, FILTER_VALIDATE_URL) !== FALSE);
213
- *
214
- */
215
- }
216
-
217
- // --------------------------------------------------------------------
218
-
219
- /**
220
- * Valid Email
221
- *
222
- * @param string
223
- * @return bool
224
- */
225
- public static function valid_email($str)
226
- {
227
- return (bool) filter_var($str, FILTER_VALIDATE_EMAIL);
228
- }
229
-
230
- // --------------------------------------------------------------------
231
-
232
- /**
233
- * Valid Emails
234
- *
235
- * @param string
236
- * @return bool
237
- */
238
- public static function valid_emails($str)
239
- {
240
- if (strpos($str, ',') === FALSE)
241
- {
242
- return $this->valid_email(trim($str));
243
- }
244
-
245
- foreach (explode(',', $str) as $email)
246
- {
247
- if (trim($email) !== '' && $this->valid_email(trim($email)) === FALSE)
248
- {
249
- return FALSE;
250
- }
251
- }
252
-
253
- return TRUE;
254
- }
255
-
256
- // --------------------------------------------------------------------
257
-
258
- /**
259
- * Validate IP Address
260
- *
261
- * @param string
262
- * @param string 'ipv4' or 'ipv6' to validate a specific IP format
263
- * @return bool
264
- */
265
- public static function valid_ip($ip, $which = '')
266
- {
267
- return $this->CI->input->valid_ip($ip, $which);
268
- }
269
-
270
- // --------------------------------------------------------------------
271
-
272
- /**
273
- * Alpha
274
- *
275
- * @param string
276
- * @return bool
277
- */
278
- public static function alpha($str)
279
- {
280
- return ctype_alpha($str);
281
- }
282
-
283
- // --------------------------------------------------------------------
284
-
285
- /**
286
- * Alpha-numeric
287
- *
288
- * @param string
289
- * @return bool
290
- */
291
- public static function alpha_numeric($str)
292
- {
293
- return ctype_alnum((string) $str);
294
- }
295
-
296
- // --------------------------------------------------------------------
297
-
298
- /**
299
- * Alpha-numeric w/ spaces
300
- *
301
- * @param string
302
- * @return bool
303
- */
304
- public static function alpha_numeric_spaces($str)
305
- {
306
- return (bool) preg_match('/^[A-Z0-9 ]+$/i', $str);
307
- }
308
-
309
- // --------------------------------------------------------------------
310
-
311
- /**
312
- * Alpha-numeric with underscores and dashes
313
- *
314
- * @param string
315
- * @return bool
316
- */
317
- public static function alpha_dash($str)
318
- {
319
- return (bool) preg_match('/^[a-z0-9_-]+$/i', $str);
320
- }
321
-
322
- // --------------------------------------------------------------------
323
-
324
- /**
325
- * Numeric
326
- *
327
- * @param string
328
- * @return bool
329
- */
330
- public static function numeric($str)
331
- {
332
- return (bool) preg_match('/^[\-+]?[0-9]*\.?[0-9]+$/', $str);
333
- }
334
-
335
- // --------------------------------------------------------------------
336
-
337
- /**
338
- * Integer
339
- *
340
- * @param string
341
- * @return bool
342
- */
343
- public static function integer($str)
344
- {
345
- return (bool) preg_match('/^[\-+]?[0-9]+$/', $str);
346
- }
347
-
348
- // --------------------------------------------------------------------
349
-
350
- /**
351
- * Decimal number
352
- *
353
- * @param string
354
- * @return bool
355
- */
356
- public static function decimal($str)
357
- {
358
- return (bool) preg_match('/^[\-+]?[0-9]+\.[0-9]+$/', $str);
359
- }
360
-
361
- // --------------------------------------------------------------------
362
-
363
- /**
364
- * Greater than
365
- *
366
- * @param string
367
- * @param int
368
- * @return bool
369
- */
370
- public static function greater_than($str, $min)
371
- {
372
- return is_numeric($str) ? ($str > $min) : FALSE;
373
- }
374
-
375
- // --------------------------------------------------------------------
376
-
377
- /**
378
- * Equal to or Greater than
379
- *
380
- * @param string
381
- * @param int
382
- * @return bool
383
- */
384
- public static function greater_than_equal_to($str, $min)
385
- {
386
- return is_numeric($str) ? ($str >= $min) : FALSE;
387
- }
388
-
389
- // --------------------------------------------------------------------
390
-
391
- /**
392
- * Less than
393
- *
394
- * @param string
395
- * @param int
396
- * @return bool
397
- */
398
- public static function less_than($str, $max)
399
- {
400
- return is_numeric($str) ? ($str < $max) : FALSE;
401
- }
402
-
403
- // --------------------------------------------------------------------
404
-
405
- /**
406
- * Equal to or Less than
407
- *
408
- * @param string
409
- * @param int
410
- * @return bool
411
- */
412
- public static function less_than_equal_to($str, $max)
413
- {
414
- return is_numeric($str) ? ($str <= $max) : FALSE;
415
- }
416
-
417
- // --------------------------------------------------------------------
418
-
419
- /**
420
- * Is a Natural number (0,1,2,3, etc.)
421
- *
422
- * @param string
423
- * @return bool
424
- */
425
- public static function is_natural($str)
426
- {
427
- return ctype_digit((string) $str);
428
- }
429
-
430
- // --------------------------------------------------------------------
431
-
432
- /**
433
- * Is a Natural number, but not a zero (1,2,3, etc.)
434
- *
435
- * @param string
436
- * @return bool
437
- */
438
- public static function is_natural_no_zero($str)
439
- {
440
- return ($str != 0 && ctype_digit((string) $str));
441
- }
442
-
443
- // --------------------------------------------------------------------
444
-
445
- /**
446
- * Valid Base64
447
- *
448
- * Tests a string for characters outside of the Base64 alphabet
449
- * as defined by RFC 2045 http://www.faqs.org/rfcs/rfc2045
450
- *
451
- * @param string
452
- * @return bool
453
- */
454
- public static function valid_base64($str)
455
- {
456
- return (base64_encode(base64_decode($str)) === $str);
457
- }
458
-
459
- // --------------------------------------------------------------------
460
-
461
- /**
462
- * Prep data for form
463
- *
464
- * This function allows HTML to be safely shown in a form.
465
- * Special characters are converted.
466
- *
467
- * @param string
468
- * @return string
469
- */
470
- public static function prep_for_form($data = '')
471
- {
472
- if ($this->_safe_form_data === FALSE OR empty($data))
473
- {
474
- return $data;
475
- }
476
-
477
- if (is_array($data))
478
- {
479
- foreach ($data as $key => $val)
480
- {
481
- $data[$key] = $this->prep_for_form($val);
482
- }
483
-
484
- return $data;
485
- }
486
-
487
- return str_replace(array("'", '"', '<', '>'), array('&#39;', '&quot;', '&lt;', '&gt;'), stripslashes($data));
488
- }
489
-
490
- // --------------------------------------------------------------------
491
-
492
- /**
493
- * Prep URL
494
- *
495
- * @param string
496
- * @return string
497
- */
498
- public static function prep_url($str = '')
499
- {
500
- if ($str === 'http://' OR $str === '')
501
- {
502
- return '';
503
- }
504
-
505
- if (strpos($str, 'http://') !== 0 && strpos($str, 'https://') !== 0)
506
- {
507
- return 'http://' . $str;
508
- }
509
-
510
- return $str;
511
- }
512
-
513
- // --------------------------------------------------------------------
514
-
515
- /**
516
- * Strip Image Tags
517
- *
518
- * @param string
519
- * @return string
520
- */
521
- public static function strip_image_tags($str)
522
- {
523
- return $this->CI->security->strip_image_tags($str);
524
- }
525
-
526
- // --------------------------------------------------------------------
527
-
528
- /**
529
- * XSS Clean
530
- *
531
- * @param string
532
- * @return string
533
- */
534
- public static function xss_clean($str)
535
- {
536
- return $this->CI->security->xss_clean($str);
537
- }
538
-
539
- // --------------------------------------------------------------------
540
-
541
- /**
542
- * Convert PHP tags to entities
543
- *
544
- * @param string
545
- * @return string
546
- */
547
- public static function encode_php_tags($str)
548
- {
549
- return str_replace(array('<?', '?>'), array('&lt;?', '?&gt;'), $str);
550
- }
551
-
552
- }
553
-
554
- if (!function_exists('affegg_intval_bool'))
555
- {
556
- function affegg_intval_bool($str)
557
- {
558
- return intval((bool) $str);
559
- }
560
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/helpers/ImageHelper.php DELETED
@@ -1,93 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\helpers;
4
-
5
- /**
6
- * ImageHelper class file
7
- *
8
- * @author keywordrush.com <support@keywordrush.com>
9
- * @link http://www.keywordrush.com/
10
- * @copyright Copyright &copy; 2015 keywordrush.com
11
- *
12
- */
13
- class ImageHelper {
14
-
15
- public static function saveImgLocaly($img_uri, $title = '', $check_image_type = true)
16
- {
17
- if (!defined('FS_CHMOD_FILE'))
18
- define('FS_CHMOD_FILE', ( fileperms(ABSPATH . 'index.php') & 0777 | 0644));
19
-
20
- $uploads = \wp_upload_dir();
21
-
22
- $ext = pathinfo(basename($img_uri), PATHINFO_EXTENSION);
23
- $newfilename = TextHelper::truncate($title);
24
- $newfilename = TextHelper::rus2latin($newfilename);
25
- $newfilename = preg_replace('/[^a-zA-Z0-9\-]/', '', $newfilename);
26
- $newfilename = strtolower($newfilename);
27
- if (!$newfilename)
28
- $newfilename = time();
29
-
30
- $response = \wp_remote_get($img_uri, array('timeout' => 3, 'redirection' => 1));
31
- if (\is_wp_error($response) || (int) \wp_remote_retrieve_response_code($response) !== 200)
32
- return false;
33
-
34
- if (!$ext)
35
- {
36
- $headers = \wp_remote_retrieve_headers($response);
37
- if (empty($headers['content-type']))
38
- return false;
39
- $types = array_search($headers['content-type'], \wp_get_mime_types());
40
- if (!$types)
41
- return false;
42
-
43
- $exts = explode('|', $types);
44
- $ext = $exts[0];
45
- }
46
-
47
- $newfilename .= '.' . $ext;
48
- $newfilename = \wp_unique_filename($uploads['path'], $newfilename);
49
-
50
- if ($check_image_type)
51
- {
52
- $filetype = \wp_check_filetype($newfilename, null);
53
- if (substr($filetype['type'], 0, 5) != 'image')
54
- return false;
55
- }
56
-
57
- $image_string = \wp_remote_retrieve_body($response);
58
- $file_path = $uploads['path'] . DIRECTORY_SEPARATOR . $newfilename;
59
- if (!file_put_contents($file_path, $image_string))
60
- return false;
61
-
62
- if ($check_image_type)
63
- {
64
- if (!self::isImage($file_path))
65
- {
66
- @unlink($file_path);
67
- return false;
68
- }
69
- }
70
-
71
- @chmod($file_path, FS_CHMOD_FILE);
72
- return $newfilename;
73
- }
74
-
75
- public static function isImage($path)
76
- {
77
- $a = getimagesize($path);
78
- $image_type = $a[2];
79
-
80
- if (in_array($image_type, array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_BMP)))
81
- {
82
- return true;
83
- }
84
- return false;
85
- }
86
-
87
- public static function getFullImgPath($img_path)
88
- {
89
- $uploads = \wp_upload_dir();
90
- return trailingslashit($uploads['basedir']) . $img_path;
91
- }
92
-
93
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/helpers/InputHelper.php DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\helpers;
4
-
5
- /**
6
- * InputHelper class file
7
- *
8
- * @author keywordrush.com <support@keywordrush.com>
9
- * @link http://www.keywordrush.com/
10
- * @copyright Copyright &copy; 2015 keywordrush.com
11
- *
12
- */
13
- class InputHelper {
14
-
15
- public static function get($var, $default = null, $stripslashes = false)
16
- {
17
- if (!isset($_GET[$var]))
18
- return $default;
19
- else
20
- return $stripslashes ? \stripslashes_deep($_GET[$var]) : $_GET[$var];
21
- }
22
-
23
- public static function post($var, $default = null, $stripslashes = false)
24
- {
25
- if (!isset($_POST[$var]))
26
- return $default;
27
- else
28
- return $stripslashes ? \stripslashes_deep($_POST[$var]) : $_POST[$var];
29
- }
30
-
31
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/helpers/TemplateHelper.php DELETED
@@ -1,351 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\helpers;
4
-
5
- use ContentEgg\application\components\ContentManager;
6
- use ContentEgg\application\models\PriceHistoryModel;
7
-
8
- /**
9
- * TemplateHelper class file
10
- *
11
- * @author keywordrush.com <support@keywordrush.com>
12
- * @link http://www.keywordrush.com/
13
- * @copyright Copyright &copy; 2015 keywordrush.com
14
- *
15
- */
16
- class TemplateHelper {
17
-
18
- public static function formatPriceCurrency($price, $currencyCode)
19
- {
20
- $decimal_sep = __('number_format_decimal_point', 'content-egg-tpl');
21
- $thousand_sep = __('number_format_thousands_sep', 'content-egg-tpl');
22
- if ($decimal_sep == 'number_format_decimal_point')
23
- $decimal_sep = null;
24
- if ($thousand_sep == 'number_format_thousands_sep')
25
- $thousand_sep = null;
26
-
27
- return CurrencyHelper::getInstance()->currencyFormat($price, $currencyCode, $thousand_sep, $decimal_sep);
28
- }
29
-
30
- public static function currencyTyping($c)
31
- {
32
- return CurrencyHelper::getInstance()->getSymbol($c);
33
- }
34
-
35
- /*
36
- * @deprecated
37
- */
38
-
39
- public static function number_format_i18n($number, $decimals = 0, $currency = null)
40
- {
41
- $decimal_sep = __('number_format_decimal_point', 'content-egg-tpl');
42
- $thousand_sep = __('number_format_thousands_sep', 'content-egg-tpl');
43
- if ($decimal_sep == 'number_format_decimal_point')
44
- $decimal_sep = null;
45
- if ($thousand_sep == 'number_format_thousands_sep')
46
- $thousand_sep = null;
47
- return CurrencyHelper::getInstance()->numberFormat($number, $currency, $thousand_sep, $decimal_sep, $decimals);
48
- }
49
-
50
- /*
51
- * @deprecated
52
- */
53
-
54
- public static function price_format_i18n($number, $currency = null)
55
- {
56
- return self::number_format_i18n($number, $decimal = null, $currency);
57
- }
58
-
59
- public static function truncate($string, $length = 80, $etc = '...', $charset = 'UTF-8', $break_words = false, $middle = false)
60
- {
61
- if ($length == 0)
62
- return '';
63
-
64
- if (mb_strlen($string, 'UTF-8') > $length)
65
- {
66
- $length -= min($length, mb_strlen($etc, 'UTF-8'));
67
- if (!$break_words && !$middle)
68
- {
69
- $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length + 1, $charset));
70
- }
71
- if (!$middle)
72
- {
73
- return mb_substr($string, 0, $length, $charset) . $etc;
74
- } else
75
- {
76
- return mb_substr($string, 0, $length / 2, $charset) . $etc . mb_substr($string, -$length / 2, $charset);
77
- }
78
- } else
79
- {
80
- return $string;
81
- }
82
- }
83
-
84
- /**
85
- * Возвращает количтсво дней, секунд и минут с текущего момента
86
- * до окончания события
87
- * @param string $end_time_gmt GNU формат даты
88
- * @param bool $return_array вернуть в виде массива или форматированной строки?
89
- * @return mixed false - если $timeleft < 0, массив или строку
90
- */
91
- static public function getTimeLeft($end_time_gmt, $return_array = false)
92
- {
93
-
94
- $current_time = strtotime(gmdate("M d Y H:i:s"));
95
- $timeleft = strtotime($end_time_gmt) - $current_time;
96
- if ($timeleft < 0)
97
- return '';
98
-
99
- $days_left = floor($timeleft / 86400);
100
- $hours_left = floor(($timeleft - $days_left * 86400) / 3600);
101
- $min_left = floor(($timeleft - $days_left * 86400 - $hours_left * 3600) / 60);
102
- // Если нужно вернуть в виде массива
103
- if ($return_array)
104
- {
105
- return array(
106
- 'days' => $days_left,
107
- 'hours' => $hours_left,
108
- 'min' => $min_left,
109
- );
110
- }
111
-
112
- if ($days_left)
113
- return $days_left . __('d', 'content-egg-tpl') . ' ';
114
- elseif ($hours_left)
115
- return $hours_left . __('h', 'content-egg-tpl') . ' ';
116
- elseif ($min_left)
117
- return $min_left . __('m', 'content-egg-tpl');
118
- else
119
- return '<1' . __('m', 'content-egg-tpl');
120
- }
121
-
122
- public static function filterData($data, $field_name, $field_values, $extra = false, $inverse = false)
123
- {
124
- $results = array();
125
- foreach ($data as $key => $d)
126
- {
127
- if ($extra)
128
- {
129
- if (!isset($d['extra']) || !isset($d['extra'][$field_name]))
130
- continue;
131
- $value = $d['extra'][$field_name];
132
- } else
133
- {
134
- if (!isset($d[$field_name]))
135
- continue;
136
- $value = $d[$field_name];
137
- }
138
- if (!is_array($field_values))
139
- $field_values = array($field_values);
140
-
141
- if (!$inverse && in_array($value, $field_values))
142
- $results[$key] = $d;
143
- elseif ($inverse && !in_array($value, $field_values))
144
- $results[$key] = $d;
145
- }
146
- return $results;
147
- }
148
-
149
- public static function formatDatetime($datetime, $type = 'mysql', $separator = ' ')
150
- {
151
- if ('mysql' == $type)
152
- {
153
- return mysql2date(get_option('date_format'), $datetime) . $separator . mysql2date(get_option('time_format'), $datetime);
154
- } else
155
- {
156
- return date_i18n(get_option('date_format'), $datetime) . $separator . date_i18n(get_option('time_format'), $datetime);
157
- }
158
- }
159
-
160
- public static function splitAttributeName($attribute)
161
- {
162
- return trim(preg_replace('/([A-Z])/', ' $1', $attribute));
163
- }
164
-
165
- public static function getAmazonLink(array $itemLinks, $description)
166
- {
167
- foreach ($itemLinks as $link)
168
- {
169
- if ($link['Description'] == $description)
170
- return $link['URL'];
171
- }
172
- return false;
173
- }
174
-
175
- public static function getLastUpdate($module_id, $post_id = null)
176
- {
177
- if (!$post_id)
178
- {
179
- global $post;
180
- $post_id = $post->ID;
181
- }
182
- return \get_post_meta($post_id, ContentManager::META_PREFIX_LAST_ITEMS_UPDATE . $module_id, true);
183
- }
184
-
185
- public static function getLastUpdateFormatted($module_id, $timezone = true, $post_id = null, $time = true)
186
- {
187
- if (!$post_id)
188
- {
189
- global $post;
190
- $post_id = $post->ID;
191
- }
192
-
193
- $format = \get_option('date_format');
194
- if ($time)
195
- $format .= ' ' . \get_option('time_format');
196
- if ($timezone)
197
- $format .= ' T';
198
- // local time
199
- return get_date_from_gmt(date('Y-m-d H:i:s', self::getLastUpdate($module_id, $post_id)), $format);
200
- }
201
-
202
- public static function filterDataByType($data, $type)
203
- {
204
- $results = array();
205
- foreach ($data as $module_id => $items)
206
- {
207
- $module = \ContentEgg\application\components\ModuleManager::getInstance()->factory($module_id);
208
- if ($module->getParserType() == $type)
209
- $results[$module_id] = $items;
210
- }
211
- return $results;
212
- }
213
-
214
- public static function filterDataByModule($data, $module_ids)
215
- {
216
- if (!is_array($module_ids))
217
- $module_ids = array($module_ids);
218
- $results = array();
219
-
220
- foreach ($data as $module_id => $items)
221
- {
222
- if (in_array($module_id, $module_ids))
223
- $results[$module_id] = $items;
224
- }
225
- return $results;
226
- }
227
-
228
- public static function priceHistoryPrices($unique_id, $plugin_id, $limit = 5)
229
- {
230
- $prices = PriceHistoryModel::model()->getLastPrices($unique_id, $plugin_id, $limit);
231
- $results = array();
232
- foreach ($prices as $price)
233
- {
234
- $results[] = array(
235
- 'date' => strtotime($price['create_date']),
236
- 'price' => $price['price'],
237
- );
238
- }
239
- return $results;
240
- }
241
-
242
- public static function priceHistoryMax($unique_id, $module_id)
243
- {
244
- if (!$price = PriceHistoryModel::model()->getMaxPrice($unique_id, $module_id))
245
- return null;
246
- return array('price' => $price['price'], 'date' => strtotime($price['create_date']));
247
- }
248
-
249
- public static function priceHistoryMin($unique_id, $module_id)
250
- {
251
- if (!$price = PriceHistoryModel::model()->getMinPrice($unique_id, $module_id))
252
- return null;
253
- return array('price' => $price['price'], 'date' => strtotime($price['create_date']));
254
- }
255
-
256
- public static function priceHistorySinceDate($unique_id, $module_id)
257
- {
258
- if (!$date = PriceHistoryModel::model()->getFirstDateValue($unique_id, $module_id))
259
- return null;
260
- return strtotime($date);
261
- }
262
-
263
- public static function priceChangesProducts($limit = 5)
264
- {
265
- $params = array(
266
- //'select' => 'DISTINCT unique_id',
267
- 'order' => 'create_date DESC',
268
- 'where' => 'post_id IS NOT NULL',
269
- 'group' => 'unique_id',
270
- 'limit' => $limit,
271
- );
272
- $prices = PriceHistoryModel::model()->findAll($params);
273
- $products = array();
274
- // find products
275
- foreach ($prices as $price)
276
- {
277
- if ($prod = ContentManager::getProductbyUniqueId($price['unique_id'], $price['module_id'], $price['post_id']))
278
- $products[] = $prod;
279
- }
280
- return $products;
281
- }
282
-
283
- public static function priceHistoryMorrisChart($unique_id, $module_id, $days = 180, array $options = array(), $htmlOptions = array())
284
- {
285
- $where = PriceHistoryModel::model()->prepareWhere(
286
- (array('unique_id = %s AND module_id = %s', array($unique_id, $module_id))), false);
287
- $params = array(
288
- 'select' => 'date(create_date) as date, price as price',
289
- 'where' => $where . ' AND TIMESTAMPDIFF( DAY, create_date, "' . current_time('mysql') . '") <= ' . $days,
290
- 'group' => 'date',
291
- 'order' => 'date DESC'
292
- );
293
- $prices = PriceHistoryModel::model()->findAll($params);
294
-
295
- $data = array(
296
- 'chartType' => 'Area',
297
- 'data' => $prices,
298
- 'xkey' => 'date',
299
- 'ykeys' => array('price'),
300
- 'labels' => array(__('Price', 'content-egg-tpl')),
301
- );
302
- $options = array_merge($data, $options);
303
- $id = $module_id . '-' . $unique_id . '-chart';
304
- self::viewMorrisChart($id, $options, $htmlOptions);
305
- }
306
-
307
- public static function viewMorrisChart($id, array $options, $htmlOptions = array('style' => 'height: 250px;'))
308
- {
309
- // morris.js
310
- \wp_enqueue_style('morrisjs');
311
- \wp_enqueue_script('morrisjs');
312
-
313
- if (!empty($options['chartType']) && in_array($options['chartType'], array('Line', 'Area', 'Donut', 'Bar')))
314
- {
315
- $chartType = $options['chartType'];
316
- unset($options['chartType']);
317
- } else
318
- $chartType = 'Line';
319
- $options['element'] = $id;
320
-
321
- $html_attr = '';
322
- foreach ($htmlOptions as $name => $value)
323
- {
324
- $html_attr .= ' ' . esc_attr($name) . '="' . esc_attr($value) . '"';
325
- }
326
-
327
- echo '<div id="' . esc_attr($id) . '"' . $html_attr . '></div>
328
- <script>
329
- jQuery(document).ready(function($) {
330
- new Morris.' . $chartType . '(' . json_encode($options) . ');
331
- });
332
- </script>';
333
- }
334
-
335
- public static function isPriceAlertAllowed($unique_id = null, $module_id = null)
336
- {
337
- return \ContentEgg\application\PriceAlert::isPriceAlertAllowed($unique_id, $module_id);
338
- }
339
-
340
- public static function getCurrencyPos($currency)
341
- {
342
- return CurrencyHelper::getInstance()->getCurrencyPos($currency);
343
- }
344
-
345
- public static function getCurrencySymbol($currency)
346
- {
347
- return CurrencyHelper::getInstance()->getSymbol($currency);
348
- }
349
-
350
-
351
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/helpers/TextHelper.php DELETED
@@ -1,406 +0,0 @@
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 &copy; 2014 keywordrush.com
11
- */
12
- class TextHelper {
13
-
14
- public static function truncate($string, $length = 80, $etc = '...', $charset = 'UTF-8', $break_words = false, $middle = false)
15
- {
16
- if ($length == 0)
17
- return '';
18
-
19
- if (mb_strlen($string, 'UTF-8') > $length)
20
- {
21
- $length -= min($length, mb_strlen($etc, 'UTF-8'));
22
- if (!$break_words && !$middle)
23
- {
24
- $string = preg_replace('/\s+?(\S+)?$/', '', mb_substr($string, 0, $length + 1, $charset));
25
- }
26
- if (!$middle)
27
- {
28
- return mb_substr($string, 0, $length, $charset) . $etc;
29
- } else
30
- {
31
- return mb_substr($string, 0, $length / 2, $charset) . $etc . mb_substr($string, -$length / 2, $charset);
32
- }
33
- } else
34
- {
35
- return $string;
36
- }
37
- }
38
-
39
- /**
40
- * Truncates text.
41
- * Modified version of cakephp truncate.
42
- *
43
- * Cuts a string to the length of $length and replaces the last characters
44
- * with the ellipsis if the text is longer than length.
45
- *
46
- * ### Options:
47
- *
48
- * - `ellipsis` Will be used as Ending and appended to the trimmed string (`ending` is deprecated)
49
- * - `exact` If false, $text will not be cut mid-word
50
- * - `html` If true, HTML tags would be handled correctly
51
- *
52
- * @param string $text String to truncate.
53
- * @param int $length Length of returned string, including ellipsis.
54
- * @param array $options An array of html attributes and options.
55
- * @return string Trimmed string.
56
- * @link http://book.cakephp.org/2.0/en/core-libraries/helpers/text.html#TextHelper::truncate
57
- */
58
- public static function truncateHtml($text, $length = 100, $options = array())
59
- {
60
- $defaults = array(
61
- 'ellipsis' => '...', 'exact' => false, 'html' => true
62
- );
63
- if (isset($options['ending']))
64
- {
65
- $defaults['ellipsis'] = $options['ending'];
66
- } elseif (!empty($options['html']))
67
- {
68
- $defaults['ellipsis'] = "\xe2\x80\xa6";
69
- }
70
- $options += $defaults;
71
- extract($options);
72
-
73
- if (!function_exists('mb_strlen'))
74
- {
75
- class_exists('Multibyte');
76
- }
77
-
78
- if ($html)
79
- {
80
- if (mb_strlen(preg_replace('/<.*?>/', '', $text), 'UTF-8') <= $length)
81
- {
82
- return $text;
83
- }
84
- $totalLength = mb_strlen(strip_tags($ellipsis), 'UTF-8');
85
- $openTags = array();
86
- $truncate = '';
87
-
88
- preg_match_all('/(<\/?([\w+]+)[^>]*>)?([^<>]*)/', $text, $tags, PREG_SET_ORDER);
89
- foreach ($tags as $tag)
90
- {
91
- if (!preg_match('/img|br|input|hr|area|base|basefont|col|frame|isindex|link|meta|param/s', $tag[2]))
92
- {
93
- if (preg_match('/<[\w]+[^>]*>/s', $tag[0]))
94
- {
95
- array_unshift($openTags, $tag[2]);
96
- } elseif (preg_match('/<\/([\w]+)[^>]*>/s', $tag[0], $closeTag))
97
- {
98
- $pos = array_search($closeTag[1], $openTags);
99
- if ($pos !== false)
100
- {
101
- array_splice($openTags, $pos, 1);
102
- }
103
- }
104
- }
105
- $truncate .= $tag[1];
106
-
107
- $contentLength = mb_strlen(preg_replace('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};/i', ' ', $tag[3]), 'UTF-8');
108
- if ($contentLength + $totalLength > $length)
109
- {
110
- $left = $length - $totalLength;
111
- $entitiesLength = 0;
112
- if (preg_match_all('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};/i', $tag[3], $entities, PREG_OFFSET_CAPTURE))
113
- {
114
- foreach ($entities[0] as $entity)
115
- {
116
- if ($entity[1] + 1 - $entitiesLength <= $left)
117
- {
118
- $left--;
119
- $entitiesLength += mb_strlen($entity[0], 'UTF-8');
120
- } else
121
- {
122
- break;
123
- }
124
- }
125
- }
126
-
127
- $truncate .= mb_substr($tag[3], 0, $left + $entitiesLength, 'UTF-8');
128
- break;
129
- } else
130
- {
131
- $truncate .= $tag[3];
132
- $totalLength += $contentLength;
133
- }
134
- if ($totalLength >= $length)
135
- {
136
- break;
137
- }
138
- }
139
- } else
140
- {
141
- if (mb_strlen($text, 'UTF-8') <= $length)
142
- {
143
- return $text;
144
- }
145
- $truncate = mb_substr($text, 0, $length - mb_strlen($ellipsis, 'UTF-8'), 'UTF-8');
146
- }
147
- if (!$exact)
148
- {
149
- $spacepos = mb_strrpos($truncate, ' ', 'UTF-8');
150
- if ($html)
151
- {
152
- $truncateCheck = mb_substr($truncate, 0, $spacepos, 'UTF-8');
153
- $lastOpenTag = mb_strrpos($truncateCheck, '<', 'UTF-8');
154
- $lastCloseTag = mb_strrpos($truncateCheck, '>', 'UTF-8');
155
- if ($lastOpenTag > $lastCloseTag)
156
- {
157
- preg_match_all('/<[\w]+[^>]*>/s', $truncate, $lastTagMatches);
158
- $lastTag = array_pop($lastTagMatches[0]);
159
- $spacepos = mb_strrpos($truncate, $lastTag, 'UTF-8') + mb_strlen($lastTag, 'UTF-8');
160
- }
161
- $bits = mb_substr($truncate, $spacepos, 'UTF-8');
162
- preg_match_all('/<\/([a-z]+)>/', $bits, $droppedTags, PREG_SET_ORDER);
163
- if (!empty($droppedTags))
164
- {
165
- if (!empty($openTags))
166
- {
167
- foreach ($droppedTags as $closingTag)
168
- {
169
- if (!in_array($closingTag[1], $openTags))
170
- {
171
- array_unshift($openTags, $closingTag[1]);
172
- }
173
- }
174
- } else
175
- {
176
- foreach ($droppedTags as $closingTag)
177
- {
178
- $openTags[] = $closingTag[1];
179
- }
180
- }
181
- }
182
- }
183
- $truncate = mb_substr($truncate, 0, $spacepos, 'UTF-8');
184
- }
185
- $truncate .= $ellipsis;
186
-
187
- if ($html)
188
- {
189
- foreach ($openTags as $tag)
190
- {
191
- $truncate .= '</' . $tag . '>';
192
- }
193
- }
194
-
195
- return $truncate;
196
- }
197
-
198
- static function rus2latin($str)
199
- {
200
- $iso = array(
201
- "Є" => "YE", "І" => "I", "Ѓ" => "G", "і" => "i", "№" => "#", "є" => "ye", "ѓ" => "g",
202
- "А" => "A", "Б" => "B", "В" => "V", "Г" => "G", "Д" => "D",
203
- "Е" => "E", "Ё" => "YO", "Ж" => "ZH",
204
- "З" => "Z", "И" => "I", "Й" => "J", "К" => "K", "Л" => "L",
205
- "М" => "M", "Н" => "N", "О" => "O", "П" => "P", "Р" => "R",
206
- "С" => "S", "Т" => "T", "У" => "U", "Ф" => "F", "Х" => "X",
207
- "Ц" => "C", "Ч" => "CH", "Ш" => "SH", "Щ" => "SHH", "Ъ" => "'",
208
- "Ы" => "Y", "Ь" => "", "Э" => "E", "Ю" => "YU", "Я" => "YA",
209
- "а" => "a", "б" => "b", "в" => "v", "г" => "g", "д" => "d",
210
- "е" => "e", "ё" => "yo", "ж" => "zh",
211
- "з" => "z", "и" => "i", "й" => "j", "к" => "k", "л" => "l",
212
- "м" => "m", "н" => "n", "о" => "o", "п" => "p", "р" => "r",
213
- "с" => "s", "т" => "t", "у" => "u", "ф" => "f", "х" => "x",
214
- "ц" => "c", "ч" => "ch", "ш" => "sh", "щ" => "shh", "ъ" => "",
215
- "ы" => "y", "ь" => "", "э" => "e", "ю" => "yu", "я" => "ya",
216
- "'" => "", "\"" => "", " " => "-"
217
- );
218
-
219
- return strtr($str, $iso);
220
- }
221
-
222
- public static function clear($str)
223
- {
224
- return preg_replace('/[^a-zA-Z0-9_]/', '', $str);
225
- }
226
-
227
- public static function clearId($str)
228
- {
229
- return preg_replace('/[^a-zA-Z0-9_\-~\.@]/', '', $str);
230
- }
231
-
232
- public static function clear_utf8($str)
233
- {
234
- $str = preg_replace("/[^\pL\s\d\-\.\+_]+/ui", '', $str);
235
- $str = preg_replace("/\s+/ui", ' ', $str);
236
- return $str;
237
- }
238
-
239
- private static function get_random($matches)
240
- {
241
- $rand = array_rand($split = explode("|", $matches[1]));
242
- return $split[$rand];
243
- }
244
-
245
- public static function spin($str)
246
- {
247
- //$new_str = preg_replace_callback('/\{([^{}]*)\}/uim', array('TextHelper', 'get_random'), $str);
248
- $new_str = preg_replace_callback(
249
- '/\{([^{}]*)\}/uim', function ($matches) {
250
- $rand = array_rand($split = explode("|", $matches[1]));
251
- return $split[$rand];
252
- }
253
- , $str);
254
- if ($new_str !== $str)
255
- $str = TextHelper::spin($new_str);
256
- return $str;
257
- }
258
-
259
- /* bool/array unserialize_xml ( string $input [ , callback $callback ] )
260
- * Unserializes an XML string, returning a multi-dimensional associative array, optionally runs a callback on all non-array data
261
- * Returns false on all failure
262
- * Notes:
263
- * Root XML tags are stripped
264
- * Due to its recursive nature, unserialize_xml() will also support SimpleXMLElement objects and arrays as input
265
- * Uses simplexml_load_string() for XML parsing, see SimpleXML documentation for more info
266
- */
267
-
268
- static public function unserialize_xml($input, $callback = null, $recurse = false)
269
- {
270
- //Отключение ошибок libxml
271
- libxml_use_internal_errors(false);
272
-
273
- // Get input, loading an xml string with simplexml if its the top level of recursion
274
- $data = ((!$recurse) && is_string($input)) ? @simplexml_load_string($input, '\SimpleXMLElement', LIBXML_NOCDATA) : $input;
275
-
276
- // Convert SimpleXMLElements to array
277
- if ($data instanceof \SimpleXMLElement)
278
- $data = (array) $data;
279
-
280
- // Recurse into arrays
281
- if (is_array($data))
282
- foreach ($data as &$item)
283
- $item = self::unserialize_xml($item, $callback, true);
284
- // Run callback and return
285
- return (!is_array($data) && is_callable($callback)) ? call_user_func($callback, $data) : $data;
286
- }
287
-
288
- static public function br2nl($str)
289
- {
290
- return str_ireplace(array("<br />", "<br>", "<br/>"), "\r\n", $str);
291
- }
292
-
293
- static public function nl2br($str)
294
- {
295
- return str_replace(array("\r\n", "\r", "\n"), "<br />", $str);
296
- }
297
-
298
- static public function removeExtraBreaks($str)
299
- {
300
- return trim(preg_replace("/(\r\n)+/i", "\r\n", $str));
301
- }
302
-
303
- /**
304
- * 10.55 -> 1055 & 1055 -> 10.55
305
- */
306
- static public function pricePenniesDenomination($p, $to_int = true)
307
- {
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
- }
315
-
316
- static public function currencyTyping($c)
317
- {
318
- return TemplateHelper::currencyTyping($c);
319
- }
320
-
321
- public static function safeHtml($html, $type)
322
- {
323
- $allowed = array(
324
- 'p' => array(),
325
- 'h1' => array(),
326
- 'h2' => array(),
327
- 'h3' => array(),
328
- 'h4' => array(),
329
- 'h5' => array(),
330
- 'b' => array(),
331
- 'i' => array(),
332
- 'strong' => array(),
333
- 'em' => array(),
334
- 'ul' => array(),
335
- 'ol' => array(),
336
- 'li' => array(),
337
- 'br' => array(),
338
- 'hr' => array(),
339
- 'em' => array(),
340
- );
341
- switch ($type)
342
- {
343
- case 'allow_all':
344
- return $html;
345
- // Безопасный HTML
346
- case 'safe_html':
347
- return \wp_kses_post($html);
348
- // Разрешенные HTML теги
349
- case 'allowed_tags':
350
- return \wp_kses($html, $allowed);
351
- default:
352
- // @todo: add safe strip_tags
353
- return strip_tags($html);
354
- }
355
- }
356
-
357
- public static function commaList($str, $input_delimer = ',', $return_delimer = ',')
358
- {
359
- $parts = explode($input_delimer, $str);
360
- $parts = array_map('trim', $parts);
361
- return join($return_delimer, $parts);
362
- }
363
-
364
- public static function prepareKeywords(array $keywords)
365
- {
366
- $result = array();
367
- foreach ($keywords as $keyword)
368
- {
369
- $keyword = \sanitize_text_field($keyword);
370
- $keyword = trim($keyword);
371
- if (!$keyword)
372
- continue;
373
- $result[] = $keyword;
374
- }
375
- return $result;
376
- }
377
-
378
- public static function parsePriceAmount($money)
379
- {
380
- if (is_float($money) || is_int($money))
381
- return $money;
382
- $cleanString = preg_replace('/([^0-9\.,])/i', '', $money);
383
- $onlyNumbersString = preg_replace('/([^0-9])/i', '', $money);
384
-
385
- $separatorsCountToBeErased = strlen($cleanString) - strlen($onlyNumbersString) - 1;
386
-
387
- $stringWithCommaOrDot = preg_replace('/([,\.])/', '', $cleanString, $separatorsCountToBeErased);
388
- $removedThousendSeparator = preg_replace('/(\.|,)(?=[0-9]{3,}$)/', '', $stringWithCommaOrDot);
389
-
390
- return (float) str_replace(',', '.', $removedThousendSeparator);
391
- }
392
-
393
- public static function randomPassword($len = 8)
394
- {
395
- $alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
396
- $pass = array();
397
- $alphaLength = strlen($alphabet) - 1;
398
- for ($i = 0; $i < $len; $i++)
399
- {
400
- $n = rand(0, $alphaLength);
401
- $pass[] = $alphabet[$n];
402
- }
403
- return implode($pass);
404
- }
405
-
406
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/helpers/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/application/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/application/libs/ParserClient.php DELETED
@@ -1,199 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\libs;
4
-
5
- use ContentEgg\application\helpers\TextHelper;
6
-
7
- /**
8
- * ParserClient 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
- */
15
- class ParserClient {
16
-
17
- protected $charset = 'utf-8';
18
- protected $xpath;
19
- protected $url;
20
- protected static $_httpClient = null;
21
-
22
- // @todo
23
- private function __construct($url = null)
24
- {
25
- if ($url)
26
- $this->setUrl($url);
27
- }
28
-
29
- public function setUrl($url)
30
- {
31
- $this->url = $url;
32
- //$this->xpath = null;
33
- //$this->loadXPath($url);
34
- }
35
-
36
- public function getUrl()
37
- {
38
- return $this->url;
39
- }
40
-
41
- public function getCharset()
42
- {
43
- return $this->charset;
44
- }
45
-
46
- /**
47
- * Gets the HTTP client object.
48
- */
49
- public static function getHttpClient($opts = array())
50
- {
51
- $_opts = array(
52
- 'sslverify' => false,
53
- 'redirection' => 3,
54
- 'timeout' => 5,
55
- 'user-agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9',
56
- );
57
- if ($opts)
58
- $_opts = $opts + $_opts;
59
-
60
- if (self::$_httpClient == null)
61
- {
62
- //Get WP http client
63
- self::$_httpClient = new WpHttpClient();
64
- self::$_httpClient->setHeaders('Accept-Charset', 'ISO-8859-1,utf-8');
65
-
66
- self::$_httpClient->setUserAgent($_opts['user-agent']);
67
- self::$_httpClient->setRedirection($_opts['redirection']);
68
- self::$_httpClient->setTimeout($_opts['timeout']);
69
- self::$_httpClient->setSslVerify($_opts['sslverify']);
70
- }
71
-
72
- return self::$_httpClient;
73
- }
74
-
75
- /**
76
- * Sets the HTTP client object to use for retrieving the feeds. If none
77
- * is set, the default Http_Client will be used.
78
- */
79
- public static function setHttpClient($httpClient)
80
- {
81
- self::$_httpClient = $httpClient;
82
- }
83
-
84
- public function loadXPath($url, $query = null)
85
- {
86
- $this->xpath = $this->getXPath($url, $query);
87
- }
88
-
89
- public function getXPath($url, $query = null)
90
- {
91
- return $xpath = new \DomXPath($this->getDom($url, $query));
92
- }
93
-
94
- public function getDom($url, $query = null)
95
- {
96
- $dom = new \DomDocument();
97
- $dom->preserveWhiteSpace = false;
98
- libxml_use_internal_errors(true);
99
- if (!$dom->loadHTML($this->restGet($url, $query)))
100
- throw new \Exception('Can\'t load DOM Document.');
101
- return $dom;
102
- }
103
-
104
- public function restGet($uri, $query = null)
105
- {
106
- $client = self::getHttpClient();
107
- $client->resetParameters();
108
- $client->setUri($uri);
109
- if ($query)
110
- $client->setParameterGet($query);
111
- $body = $this->getResult($client->request('GET'));
112
- echo $body;
113
- exit;
114
- return $this->decodeCharset($body);
115
-
116
-
117
- /*
118
- $this->xpath = null;
119
- $args = array(
120
- 'timeout' => 5,
121
- 'sslverify' => false,
122
- 'user-agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9'
123
- );
124
-
125
- $response = \wp_remote_get($url, $args);
126
-
127
- if (\is_wp_error($response))
128
- {
129
- $error_message = $response->get_error_message();
130
- throw new \Exception($error_message);
131
- }
132
- $response_code = (int) \wp_remote_retrieve_response_code($response);
133
- if ($response_code != 200)
134
- throw new \Exception('Error in url request. HTTP response code: ' . $response_code);
135
-
136
- $body = \wp_remote_retrieve_body($response);
137
-
138
- return $this->decodeCharset($body);
139
- *
140
- */
141
- }
142
-
143
- protected function getResult($response)
144
- {
145
- if (\is_wp_error($response))
146
- {
147
- $error_mess = "HTTP request fails: " . $response->get_error_code() . " - " . $response->get_error_message() . '.';
148
- throw new \Exception($error_mess);
149
- }
150
-
151
- $response_code = (int) \wp_remote_retrieve_response_code($response);
152
-
153
- if ($response_code != 200)
154
- {
155
- $response_message = \wp_remote_retrieve_response_message($response);
156
- $error_mess = "HTTP request status fails: " . $response_code . " - " . $response_message . '.';
157
- $error_mess .= ' Server replay: ' . \wp_remote_retrieve_body($response);
158
- throw new \Exception($error_mess);
159
- }
160
-
161
- return \wp_remote_retrieve_body($response);
162
- }
163
-
164
- public function decodeCharset($str)
165
- {
166
- $encoding_hint = '<?xml encoding="UTF-8">';
167
-
168
- if (strtolower($this->charset) != 'utf-8')
169
- {
170
- $str = $encoding_hint . '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' . $str;
171
- return iconv($this->charset, 'utf-8', $str);
172
- } else
173
- return $encoding_hint . $str;
174
- }
175
-
176
- protected function xpathScalar($path)
177
- {
178
- $res = $this->xpath->query($path);
179
- if ($res && $res->length > 0)
180
- return trim(strip_tags($res->item(0)->nodeValue));
181
- else
182
- return null;
183
- }
184
-
185
- protected function xpathArray($path)
186
- {
187
- $res = $this->xpath->query($path);
188
- $return = array();
189
- if ($res && $res->length > 0)
190
- {
191
- foreach ($res as $r)
192
- {
193
- $return[] = trim(strip_tags($r->nodeValue));
194
- }
195
- }
196
- return $return;
197
- }
198
-
199
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/libs/RestClient.php DELETED
@@ -1,259 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\libs;
4
-
5
- use ContentEgg\application\helpers\TextHelper;
6
-
7
- /**
8
- * RestClient 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
- * Simple Rest Client
15
- * @todo: PUT/DELETE Request
16
- */
17
- class RestClient {
18
-
19
- protected static $timeout = 15; //sec
20
-
21
- /**
22
- * Endpoint uri of this web service
23
- * @var string
24
- */
25
- protected $_uri = null;
26
-
27
- /**
28
- * @var String Return Type
29
- */
30
- protected $_responseType = null;
31
-
32
- /**
33
- * @var array Response Format Types
34
- */
35
- protected $_responseTypes = array();
36
- protected $_custom_header = array();
37
- protected static $_httpClient = null;
38
-
39
- public function __construct($uri = null)
40
- {
41
- if (!empty($uri))
42
- {
43
- $this->setUri($uri);
44
- }
45
- }
46
-
47
- /**
48
- * Set responseType
49
- */
50
- public function setResponseType($responseType = 'json')
51
- {
52
- if (!in_array($responseType, $this->_responseTypes, TRUE))
53
- {
54
- throw new \Exception('Invalid Response Type');
55
- }
56
- $this->_responseType = $responseType;
57
- }
58
-
59
- /**
60
- * Retrieve responseType
61
- */
62
- public function getResponseType()
63
- {
64
- return $this->_responseType;
65
- }
66
-
67
- /**
68
- * Sets the HTTP client object to use for retrieving the feeds. If none
69
- * is set, the default Http_Client will be used.
70
- */
71
- public static function setHttpClient($httpClient)
72
- {
73
- self::$_httpClient = $httpClient;
74
- }
75
-
76
- /**
77
- * Gets the HTTP client object.
78
- */
79
- public static function getHttpClient($opts = array())
80
- {
81
- $_opts = array(
82
- 'sslverify' => false,
83
- 'redirection' => 3,
84
- 'timeout' => static::$timeout,
85
- 'user-agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9',
86
- );
87
- if ($opts)
88
- $_opts = $opts + $_opts;
89
-
90
- if (self::$_httpClient == null)
91
- {
92
- //Get WP http client
93
- self::$_httpClient = new WpHttpClient();
94
- self::$_httpClient->setHeaders('Accept-Charset', 'ISO-8859-1,utf-8');
95
- self::$_httpClient->setRedirection($_opts['redirection']);
96
- self::$_httpClient->setTimeout($_opts['timeout']);
97
- self::$_httpClient->setSslVerify($_opts['sslverify']);
98
- self::$_httpClient->setUserAgent($_opts['user-agent']);
99
- }
100
-
101
- return self::$_httpClient;
102
- }
103
-
104
- /**
105
- * Set the URI to use in the request
106
- */
107
- public function setUri($uri)
108
- {
109
- $this->_uri = $uri;
110
- }
111
-
112
- public function getUri()
113
- {
114
- return $this->_uri;
115
- }
116
-
117
- public function setCustomHeaders($headers = array())
118
- {
119
- $this->_custom_header = $headers;
120
- }
121
-
122
- /**
123
- * Performs an HTTP GET request
124
- * @param string $path
125
- * @param array $query Array of GET parameters
126
- */
127
- public function restGet($path, array $query = null)
128
- {
129
- $this->_prepareRest($path);
130
- $client = self::getHttpClient();
131
- $client->setParameterGet($query);
132
- return $this->_getResult($client->request('GET'));
133
- }
134
-
135
- private function _prepareRest($path)
136
- {
137
-
138
- if (strstr($path, 'http://') || strstr($path, 'https://'))
139
- {
140
- $uri = $path;
141
- } else
142
- {
143
- $uri = $this->getUri();
144
- if ($path && $path[0] != '/' && $uri[strlen($uri) - 1] != '/')
145
- {
146
- $path = '/' . $path;
147
- }
148
- $uri = $uri . $path;
149
- }
150
-
151
- $client = self::getHttpClient();
152
-
153
- // Обнуляем параметры
154
- $client->resetParameters();
155
- $client->setUri($uri);
156
-
157
- // Установка custom headers
158
- foreach ($this->_custom_header as $header => $value)
159
- {
160
- $client->setHeaders($header, $value);
161
- }
162
- }
163
-
164
- /**
165
- * Performs an HTTP POST request
166
- * @param string $path
167
- * @param mixed $data Raw data to send
168
- * @param string $enctype
169
- */
170
- public function restPost($path, $data = null, $enctype = null, $opts = array())
171
- {
172
- $this->_prepareRest($path);
173
- $client = self::getHttpClient($opts);
174
- if (is_string($data))
175
- {
176
- $client->setRawData($data, $enctype);
177
- } elseif (is_array($data) || is_object($data))
178
- {
179
- $client->setParameterPost((array) $data);
180
- }
181
- return $this->_getResult($client->request('POST'));
182
- }
183
-
184
- final public function get($path, array $query = null)
185
- {
186
- return $this->restGet($path, $query);
187
- }
188
-
189
- protected function _getResult($response)
190
- {
191
- if (\is_wp_error($response))
192
- {
193
- $error_mess = "HTTP request fails: " . $response->get_error_code() . " - " . $response->get_error_message() . '.';
194
- throw new \Exception($error_mess);
195
- }
196
-
197
- $response_code = (int) \wp_remote_retrieve_response_code($response);
198
-
199
- if ($response_code != 200 && $response_code != 206)
200
- {
201
- $response_message = \wp_remote_retrieve_response_message($response);
202
- $error_mess = "HTTP request status fails: " . $response_code . " - " . $response_message . '.';
203
- $error_mess .= ' Server replay: ' . \wp_remote_retrieve_body($response);
204
- throw new \Exception($error_mess);
205
- }
206
-
207
- return \wp_remote_retrieve_body($response);
208
- }
209
-
210
- protected function _decodeResponse($response, $responseType = null)
211
- {
212
- if ($responseType == null)
213
- $responseType = $this->_responseType;
214
-
215
- switch ($responseType)
216
- {
217
- case 'php':
218
- case 'php_serial':
219
- $res = @unserialize($response);
220
- if ($res === false)
221
- throw new \Exception('Response serialization error.');
222
- break;
223
- case 'json':
224
- $res = json_decode($response, true);
225
- break;
226
- case 'xml':
227
- case 'rss':
228
- case 'atom':
229
- $res = TextHelper::unserialize_xml($response);
230
- break;
231
- default :
232
- $res = $response;
233
- }
234
- if (is_array($res))
235
- array_walk_recursive($res, array($this, '_fixUtf8'));
236
- elseif (is_scalar($res))
237
- $this->_fixUtf8($res);
238
-
239
- return $res;
240
- }
241
-
242
- protected function _fixUtf8(&$text)
243
- {
244
- $regex = '/
245
- (
246
- (?: [\x00-\x7F] # single-byte sequences 0xxxxxxx
247
- | [\xC2-\xDF][\x80-\xBF] # double-byte sequences 110xxxxx 10xxxxxx
248
- | \xE0[\xA0-\xBF][\x80-\xBF] # triple-byte sequences 1110xxxx 10xxxxxx * 2
249
- | [\xE1-\xEC][\x80-\xBF]{2}
250
- | \xED[\x80-\x9F][\x80-\xBF]
251
- | [\xEE-\xEF][\x80-\xBF]{2}';
252
- $regex .= '){1,40} # ...one or more times
253
- )
254
- | . # anything else
255
- /x';
256
- $text = preg_replace($regex, '$1', $text);
257
- }
258
-
259
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/libs/WpHttpClient.php DELETED
@@ -1,460 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\libs;
4
-
5
- /**
6
- * WpHttpClient class file
7
- *
8
- * Same code from Zend_Http_Client
9
- * @link: http://framework.zend.com/manual/1.12/ru/zend.http.client.html
10
- *
11
- * @author keywordrush.com <support@keywordrush.com>
12
- * @link http://www.keywordrush.com/
13
- * @copyright Copyright &copy; 2015 keywordrush.com
14
- *
15
- */
16
- class WpHttpClient {
17
-
18
- /**
19
- * HTTP request methods
20
- */
21
- const GET = 'GET';
22
- const POST = 'POST';
23
- const PUT = 'PUT';
24
- const HEAD = 'HEAD';
25
- const DELETE = 'DELETE';
26
- const TRACE = 'TRACE';
27
- const OPTIONS = 'OPTIONS';
28
- const CONNECT = 'CONNECT';
29
-
30
- /**
31
- * POST data encoding methods
32
- */
33
- const ENC_URLENCODED = 'application/x-www-form-urlencoded';
34
- const ENC_FORMDATA = 'multipart/form-data';
35
-
36
- private $timeout;
37
- private $sslverify;
38
- private $useragent;
39
- private $redirection;
40
-
41
- /**
42
- * Request URI
43
- */
44
- protected $uri;
45
-
46
- /**
47
- * Associative array of request headers
48
- *
49
- * @var array
50
- */
51
- protected $headers = array();
52
-
53
- /**
54
- * HTTP request method
55
- *
56
- * @var string
57
- */
58
- protected $method = self::GET;
59
-
60
- /**
61
- * Associative array of GET parameters
62
- *
63
- * @var array
64
- */
65
- protected $paramsGet = array();
66
-
67
- /**
68
- * Assiciative array of POST parameters
69
- *
70
- * @var array
71
- */
72
- protected $paramsPost = array();
73
-
74
- /**
75
- * Request body content type (for POST requests)
76
- *
77
- * @var string
78
- */
79
- protected $enctype = null;
80
-
81
- /**
82
- * The raw post data to send. Could be set by setRawData($data, $enctype).
83
- *
84
- * @var string
85
- */
86
- protected $raw_post_data = null;
87
-
88
- /**
89
- * The last HTTP response received by the client
90
- *
91
- * @var EHttpResponse
92
- */
93
- protected $last_response = null;
94
-
95
- /**
96
- * Set the URI for the next request
97
- */
98
- public function setUri($uri)
99
- {
100
- $this->uri = $uri;
101
- }
102
-
103
- /**
104
- * Get the URI for the next request
105
- */
106
- public function getUri($as_string = false)
107
- {
108
- return $this->uri;
109
- }
110
-
111
- public function setHeaders($name, $value = null)
112
- {
113
- // If we got an array, go recusive!
114
- if (is_array($name))
115
- {
116
- foreach ($name as $k => $v)
117
- {
118
- if (is_string($k))
119
- {
120
- $this->setHeaders($k, $v);
121
- } else
122
- {
123
- $this->setHeaders($v, null);
124
- }
125
- }
126
- } else
127
- {
128
- // Check if $name needs to be split
129
- if ($value === null && (strpos($name, ':') > 0))
130
- list($name, $value) = explode(':', $name, 2);
131
-
132
- // Make sure the name is valid if we are in strict mode
133
- if (!preg_match('/^[a-zA-Z0-9-]+$/', $name))
134
- {
135
- throw new \Exception("{$name} is not a valid HTTP header name");
136
- }
137
-
138
- $normalized_name = strtolower($name);
139
-
140
- // If $value is null or false, unset the header
141
- if ($value === null || $value === false)
142
- {
143
- unset($this->headers[$normalized_name]);
144
- } else
145
- {
146
- // Header names are storred lowercase internally.
147
- if (is_string($value))
148
- $value = trim($value);
149
- $this->headers[$normalized_name] = array($name, $value);
150
- }
151
- }
152
- }
153
-
154
- /**
155
- * Get the value of a specific header
156
- *
157
- * Note that if the header has more than one value, an array
158
- * will be returned.
159
- *
160
- * @param string $key
161
- * @return string|array|null The header value or null if it is not set
162
- */
163
- public function getHeader($key)
164
- {
165
- $key = strtolower($key);
166
- if (isset($this->headers[$key]))
167
- {
168
- return $this->headers[$key][1];
169
- } else
170
- {
171
- return null;
172
- }
173
- }
174
-
175
- /**
176
- * Set the next request's method
177
- */
178
- public function setMethod($method = self::GET)
179
- {
180
-
181
- if ($method !== self::GET && $method !== self::POST)
182
- throw new \Exception('Only GET and POST methods avalible.');
183
-
184
- $this->method = $method;
185
- }
186
-
187
- /**
188
- * Set a GET parameter for the request. Wrapper around _setParameter
189
- *
190
- * @param string|array $name
191
- * @param string $value
192
- * @return EHttpClient
193
- */
194
- public function setParameterGet($name, $value = null)
195
- {
196
- if (is_array($name))
197
- {
198
- foreach ($name as $k => $v)
199
- $this->_setParameter('GET', $k, $v);
200
- } else
201
- {
202
- $this->_setParameter('GET', $name, $value);
203
- }
204
- }
205
-
206
- /**
207
- * Set a POST parameter for the request. Wrapper around _setParameter
208
- *
209
- * @param string|array $name
210
- * @param string $value
211
- */
212
- public function setParameterPost($name, $value = null)
213
- {
214
- if (is_array($name))
215
- {
216
- foreach ($name as $k => $v)
217
- $this->_setParameter('POST', $k, $v);
218
- } else
219
- {
220
- $this->_setParameter('POST', $name, $value);
221
- }
222
- }
223
-
224
- /**
225
- * Set a GET or POST parameter - used by SetParameterGet and SetParameterPost
226
- *
227
- * @param string $type GET or POST
228
- * @param string $name
229
- * @param string $value
230
- * @return null
231
- */
232
- protected function _setParameter($type, $name, $value)
233
- {
234
- $parray = array();
235
- $type = strtolower($type);
236
- switch ($type)
237
- {
238
- case 'get':
239
- $parray = &$this->paramsGet;
240
- break;
241
- case 'post':
242
- $parray = &$this->paramsPost;
243
- break;
244
- }
245
-
246
- if ($value === null)
247
- {
248
- if (isset($parray[$name]))
249
- unset($parray[$name]);
250
- } else
251
- {
252
- $parray[$name] = $value;
253
- }
254
- }
255
-
256
- public function setTimeout($value)
257
- {
258
- $this->timeout = $value;
259
- }
260
-
261
- public function setSslVerify($value)
262
- {
263
- $this->sslverify = $value;
264
- }
265
-
266
- public function setUserAgent($value)
267
- {
268
- $this->useragent = $value;
269
- }
270
-
271
- public function setRedirection($value)
272
- {
273
- $this->redirection = $value;
274
- }
275
-
276
- /**
277
- * Prepare the request body (for POST and PUT requests)
278
- *
279
- * @return string
280
- */
281
- protected function _prepareBody()
282
- {
283
- // According to RFC2616, a TRACE request should not have a body.
284
- if ($this->method == self::TRACE)
285
- {
286
- return '';
287
- }
288
-
289
- // If we have raw_post_data set, just use it as the body.
290
- if (isset($this->raw_post_data))
291
- {
292
- $this->setHeaders('Content-length', strlen($this->raw_post_data));
293
- return $this->raw_post_data;
294
- }
295
-
296
- $body = '';
297
-
298
- // If we have POST parameters, encode and add them to the body
299
- if (count($this->paramsPost) > 0)
300
- {
301
-
302
- // Encode body as application/x-www-form-urlencoded
303
- $this->setHeaders('Content-type', self::ENC_URLENCODED);
304
- $body = http_build_query($this->paramsPost, '', '&');
305
- }
306
-
307
- // Set the content-length if we have a body or if request is POST/PUT
308
- if ($body || $this->method == self::POST || $this->method == self::PUT)
309
- {
310
- $this->setHeaders('Content-length', strlen($body));
311
- }
312
-
313
- return $body;
314
- }
315
-
316
- /**
317
- * Prepare the request headers
318
- *
319
- * @return array
320
- */
321
- protected function _prepareHeaders()
322
- {
323
- $headers = array();
324
- // Set the host header
325
- if (!isset($this->headers['host']))
326
- {
327
- $host = parse_url($this->uri, PHP_URL_HOST);
328
- $headers['Host'] = "{$host}";
329
- }
330
-
331
- // Set the connection header
332
- if (!isset($this->headers['connection']))
333
- {
334
- $headers['Connection'] = "close";
335
- }
336
-
337
- // Set the Accept-encoding header if not set - depending on whether
338
- // zlib is available or not.
339
- if (!isset($this->headers['accept-encoding']))
340
- {
341
- if (function_exists('gzinflate'))
342
- {
343
- $headers['Accept-encoding'] = 'gzip, deflate';
344
- } else
345
- {
346
- $headers['Accept-encoding'] = 'identity';
347
- }
348
- }
349
-
350
- // Set the content-type header
351
- if ($this->method == self::POST &&
352
- (!isset($this->headers['content-type']) && isset($this->enctype)))
353
- {
354
-
355
- $headers['Content-type'] = "{$this->enctype}";
356
- }
357
-
358
- // Add all other user defined headers
359
- foreach ($this->headers as $header)
360
- {
361
- list($name, $value) = $header;
362
- if (is_array($value))
363
- $value = implode(', ', $value);
364
-
365
- $headers[$name] = $value;
366
- }
367
- return $headers;
368
- }
369
-
370
- protected function _prepareParams()
371
- {
372
- $options = array();
373
- $options['method'] = $this->method;
374
-
375
- if ($this->timeout !== null)
376
- $options['timeout'] = $this->timeout;
377
- if ($this->sslverify !== null)
378
- $options['sslverify'] = $this->sslverify;
379
- if ($this->useragent !== null)
380
- $options['user-agent'] = $this->useragent;
381
- if ($this->redirection !== null)
382
- $options['redirection'] = $this->redirection;
383
-
384
- $options['headers'] = $this->_prepareHeaders();
385
- $options['body'] = $this->_prepareBody();
386
- return $options;
387
- }
388
-
389
- public function request($method = null)
390
- {
391
- if (!$this->uri)
392
- throw new \Exception('No valid URI has been passed to the client');
393
-
394
- if ($method)
395
- $this->setMethod($method);
396
-
397
- // Add the additional GET parameters to uri
398
- if (!empty($this->paramsGet))
399
- {
400
- $query = parse_url($this->uri, PHP_URL_QUERY);
401
- if (!empty($query))
402
- $this->uri .= '&';
403
- else
404
- $this->uri .= '?';
405
- $this->uri .= http_build_query($this->paramsGet, null, '&');
406
- }
407
-
408
- $this->last_response = \wp_remote_request($this->uri, $this->_prepareParams());
409
- return $this->last_response;
410
- }
411
-
412
- public function setRawData($data, $enctype = null)
413
- {
414
- $this->raw_post_data = $data;
415
- //$this->setEncType($enctype);
416
- }
417
-
418
- /**
419
- * Clear all GET and POST parameters
420
- *
421
- * Should be used to reset the request parameters if the client is
422
- * used for several concurrent requests.
423
- *
424
- */
425
- public function resetParameters()
426
- {
427
- // Reset parameter data
428
- $this->paramsGet = array();
429
- $this->paramsPost = array();
430
- $this->raw_post_data = null;
431
-
432
- // Reset headers
433
- $allowed_headers = array('accept-charset');
434
- foreach ($this->headers as $header => $val)
435
- {
436
- if (!in_array($header, $allowed_headers))
437
- unset($this->headers[$header]);
438
- }
439
- }
440
-
441
- /**
442
- * Get the last HTTP request as string
443
- */
444
- /*
445
- public function getLastRequest()
446
- {
447
- return $this->last_request;
448
- }
449
- *
450
- */
451
-
452
- /**
453
- * Get the last HTTP response received by this client
454
- */
455
- public function getLastResponse()
456
- {
457
- return $this->last_response;
458
- }
459
-
460
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/libs/admitad/AdmitadProducts.php DELETED
@@ -1,60 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\libs\admitad;
4
-
5
- use ContentEgg\application\libs\RestClient;
6
-
7
- /**
8
- * AdmitadProducts class file
9
- *
10
- * @author keywordrush.com <support@keywordrush.com>
11
- * @link http://www.keywordrush.com/
12
- * @copyright Copyright &copy; 2016 keywordrush.com
13
- *
14
- */
15
- require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'RestClient.php';
16
-
17
- class AdmitadProducts extends RestClient {
18
-
19
- const API_URI_BASE = 'http://185.58.206.88/wp';
20
-
21
- /**
22
- * @var array Response Format Types
23
- */
24
- protected $_responseTypes = array(
25
- 'php',
26
- );
27
-
28
- /**
29
- * Constructor
30
- * @param string $responseType
31
- */
32
- public function __construct()
33
- {
34
- $this->setResponseType('php');
35
- $this->setUri(self::API_URI_BASE);
36
- }
37
-
38
- public function search($keyword, array $options)
39
- {
40
- $options['q'] = $keyword;
41
- //"vendor" => $vendor,
42
- //"offset" => $offset,
43
- $response = $this->restGet('/index.php', $options);
44
- return $this->_decodeResponse($response);
45
- }
46
-
47
- public function update(array $items)
48
- {
49
- $response = $this->restGet('/up.php', array("items" => $items));
50
- return $this->_decodeResponse($response);
51
- }
52
-
53
- public function restGet($path, array $query = null)
54
- {
55
- $query['plugin'] = \ContentEgg\application\Plugin::slug();
56
- $this->setCustomHeaders(array('Referer' => parse_url(\site_url(), PHP_URL_HOST)));
57
- return parent::restGet($path, $query);
58
- }
59
-
60
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/libs/affilinet/AffilinetCoupons.php DELETED
@@ -1,101 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\libs\affilinet;
4
-
5
- use ContentEgg\application\libs\RestClient;
6
-
7
- /**
8
- * AffilinetCoupons 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: http://publisher.affili.net/Solutions/Webservices_Webservices.aspx?nr=1&pnp=54#Voucher
15
- * @link: http://publisher.affili.net/HtmlContent/de/downloads/Web%20Services/Documentation_SearchVoucherCodes.pdf
16
- */
17
- require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'RestClient.php';
18
-
19
- class AffilinetCoupons extends RestClient {
20
-
21
- const API_URI_BASE = 'https://publisher-webservices.affili.net/Publisher/Inbox.asmx';
22
-
23
- protected $password;
24
- protected $publisher_id;
25
-
26
- /**
27
- * @var array Response Format Types
28
- */
29
- protected $_responseTypes = array(
30
- 'xml',
31
- );
32
-
33
- /**
34
- * Constructor
35
- * @param string $responseType
36
- */
37
- public function __construct($password, $publisher_id)
38
- {
39
- $this->setPassword($password);
40
- $this->setPublisherId($publisher_id);
41
- $this->setResponseType('xml');
42
- $this->setUri(self::API_URI_BASE);
43
- }
44
-
45
- public function setPassword($password)
46
- {
47
- $this->password = $password;
48
- }
49
-
50
- public function setPublisherId($publisher_id)
51
- {
52
- $this->publisher_id = $publisher_id;
53
- }
54
-
55
- /**
56
- * @link: http://publisher.affili.net/Solutions/Webservices_Webservices.aspx?nr=1&pnp=54#Voucher
57
- */
58
- public function search($keywords, array $options)
59
- {
60
- $options['PublisherId'] = $this->publisher_id;
61
- $options['Password'] = $this->password;
62
- $options['Query'] = $keywords;
63
-
64
- // All fields are required
65
- $defaults = array(
66
- 'ProgramId' => -1,
67
- 'VoucherCode' => '',
68
- 'VoucherCodeContent' => -1,
69
- 'StartDate' => '',
70
- 'EndDate' => '',
71
- 'VoucherType' => -1,
72
- 'PartnershipStatus' => 0,
73
- 'MinimumOrderValue' => -1,
74
- 'CustomerRestriction' => 0,
75
- 'ExclusivesOnly' => 'false',
76
- 'CurrentPage' => 1,
77
- 'PageSize' => 10,
78
- 'OrderBy' => 1,
79
- 'SortDesc' => 'true',
80
- );
81
-
82
- foreach ($defaults as $key => $value)
83
- {
84
- if (!isset($options[$key]) || $options[$key] === '')
85
- $options[$key] = $value;
86
- }
87
- $response = $this->restGet('/SearchVoucherCodes', $options);
88
- return $this->_decodeResponse($response);
89
- }
90
-
91
-
92
- /**
93
- * @link: http://publisher.affili.net/HtmlContent/de/downloads/Web%20Services/Documentation_GetPrograms.pdf
94
- * @todo
95
- */
96
- public function getPrograms()
97
- {
98
- throw new \Exception('This method not implemented yet.');
99
- }
100
-
101
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/libs/amazon/AmazonProduct.php DELETED
@@ -1,415 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\libs\amazon;
4
-
5
- use ContentEgg\application\libs\RestClient;
6
-
7
- /**
8
- * PHP interface to Amazon Product Advertising API
9
- * Modified version of Services_Amazon pear class
10
- *
11
- * @author keywordrush.com <support@keywordrush.com>
12
- * @link http://www.keywordrush.com/
13
- * @copyright Copyright &copy; 2015 keywordrush.com
14
- *
15
- * @link http://docs.amazonwebservices.com/AWSECommerceService/latest/DG/ Amazon Product Advertising API
16
- */
17
-
18
- /**
19
- * Original PEAR License:
20
- *
21
- * LICENSE: Copyright 2004-2009 John Downey. All rights reserved.
22
- *
23
- * Redistribution and use in source and binary forms, with or without
24
- * modification, are permitted provided that the following conditions are met:
25
- *
26
- * o Redistributions of source code must retain the above copyright notice, this
27
- * list of conditions and the following disclaimer.
28
- * o Redistributions in binary form must reproduce the above copyright notice,
29
- * this list of conditions and the following disclaimer in the documentation
30
- * and/or other materials provided with the distribution.
31
- *
32
- * THIS SOFTWARE IS PROVIDED BY THE FREEBSD PROJECT "AS IS" AND ANY EXPRESS OR
33
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
34
- * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
35
- * EVENT SHALL THE FREEBSD PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
36
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
37
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
38
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
39
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
40
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
41
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
42
- *
43
- * The views and conclusions contained in the software and documentation are
44
- * those of the authors and should not be interpreted as representing official
45
- * policies, either expressed or implied, of The PEAR Group.
46
- *
47
- * @category Web Services
48
- * @package Services_Amazon
49
- * @author John Downey <jdowney@gmail.com>
50
- * @author Tatsuya Tsuruoka <tatsuya.tsuruoka@gmail.com>
51
- * @copyright 2004-2009 John Downey
52
- * @license http://www.freebsd.org/copyright/freebsd-license.html 2 Clause BSD License
53
- * @version CVS: $Id: Amazon.php,v 1.4 2007/12/16 17:27:44 ttsuruoka Exp $
54
- * @link http://pear.php.net/package/Services_Amazon/
55
- * @filesource
56
- */
57
- class AmazonProduct extends RestClient {
58
-
59
- const API_VERSION = '2011-08-01';
60
-
61
- private $_access_key_id;
62
- private $_secret_access_key;
63
- private $_associate_tag;
64
- private $_timestamp = null;
65
- private $_locale;
66
-
67
- /**
68
- * @var array Response Format Types
69
- */
70
- protected $_responseTypes = array(
71
- 'xml',
72
- );
73
-
74
- //private static $_httpClient;
75
-
76
- public function __construct($access_key_id, $secret_access_key, $associate_tag)
77
- {
78
- $this->_access_key_id = $access_key_id;
79
- $this->_secret_access_key = $secret_access_key;
80
- $this->setAssociateTag($associate_tag);
81
- $this->setLocale('us');
82
- $this->setResponseType('xml');
83
- }
84
-
85
- public function setAssociateTag($associate_tag)
86
- {
87
- $this->_associate_tag = $associate_tag;
88
- }
89
-
90
- /**
91
- * Sets the locale passed when making a query to Amazon
92
- * Currently us, uk, de, jp, fr, ca, cn, it, es are supported
93
- * @param string $locale The new locale to use
94
- * @link: http://docs.aws.amazon.com/AWSECommerceService/latest/DG/Locales.html
95
- */
96
- public function setLocale($locale)
97
- {
98
- // не все urls соответствуют документации
99
- // @link: http://docs.aws.amazon.com/AWSECommerceService/latest/DG/AnatomyOfaRESTRequest.html
100
- $urls = array(
101
- 'us' => 'http://ecs.amazonaws.com/onca/xml',
102
- 'uk' => 'http://ecs.amazonaws.co.uk/onca/xml',
103
- 'de' => 'http://ecs.amazonaws.de/onca/xml',
104
- 'jp' => 'http://webservices.amazon.co.jp/onca/xml',
105
- 'cn' => 'http://webservices.amazon.cn/onca/xml',
106
- 'fr' => 'http://ecs.amazonaws.fr/onca/xml',
107
- 'it' => 'http://webservices.amazon.it/onca/xml',
108
- 'es' => 'http://webservices.amazon.es/onca/xml',
109
- 'ca' => 'http://ecs.amazonaws.ca/onca/xml',
110
- 'br' => 'http://webservices.amazon.com.br/onca/xml',
111
- 'in' => 'http://webservices.amazon.in/onca/xml',
112
- );
113
- if (!isset($urls[$locale]))
114
- {
115
- throw new \Exception('Invalid amazon locale');
116
- }
117
- $this->_locale = $locale;
118
- $this->setUri($urls[$locale]);
119
- return true;
120
- }
121
-
122
- /**
123
- * Sets a timestamp (for debugging)
124
- *
125
- * @param integer $time A timestamp
126
- */
127
- public function setTimestamp($time)
128
- {
129
- $this->_timestamp = $time;
130
- }
131
-
132
- /**
133
- * Searches for products
134
- *
135
- * Example:
136
- * <code>
137
- * <?php
138
- * $amazon = new Services_Amazon('[your Access Key ID here]', '[your Secret Access key here]');
139
- * $options = array();
140
- * $options['Keywords'] = 'sushi';
141
- * $options['Sort'] = 'salesrank';
142
- * $options['ResponseGroup'] = 'ItemIds,ItemAttributes,Images';
143
- * $result = $amazon->ItemSearch('Books', $options);
144
- * ?>
145
- * </code>
146
- *
147
- * @access public
148
- * @param string $search_index A search index
149
- * @param array $options The optional parameters
150
- * @return array The array of information returned by the query
151
- */
152
- public function ItemSearch($search_index, $options = array())
153
- {
154
- $params = $options;
155
- $params['Operation'] = 'ItemSearch';
156
- $params['SearchIndex'] = $search_index;
157
-
158
- $response = $this->signedGet('', $params);
159
- $decoded = $this->_decodeResponse($response);
160
- return $this->_parseResult($decoded);
161
- }
162
-
163
- /**
164
- * Retrieves information for products
165
- *
166
- * Example:
167
- * <code>
168
- * <?php
169
- * $amazon = new Services_Amazon('[your Access Key ID here]', '[your Secret Access key here]');
170
- * $options = array();
171
- * $options['ResponseGroup'] = 'Large';
172
- * $result = $amazon->ItemLookup('[ASIN(s)]', $options);
173
- * ?>
174
- * </code>
175
- *
176
- * @access public
177
- * @param string $item_id Product IDs
178
- * @param array $options The optional parameters
179
- * @return array The array of information returned by the query
180
- * @see ItemSearch()
181
- */
182
- function ItemLookup($item_id, $options = array())
183
- {
184
- $params = $options;
185
- $params['Operation'] = 'ItemLookup';
186
- if (is_array($item_id))
187
- {
188
- $item_id = implode(',', $item_id);
189
- }
190
- $params['ItemId'] = $item_id;
191
-
192
- $response = $this->signedGet('', $params);
193
- $decoded = $this->_decodeResponse($response);
194
-
195
- return $this->_parseResult($decoded);
196
- }
197
-
198
- /**
199
- * Encode URL according to RFC 3986
200
- * @param string $str UTF-8 string
201
- * @return string Encoded string
202
- */
203
- private function _urlencode($str)
204
- {
205
- return str_replace('%7E', '~', rawurlencode($str));
206
- }
207
-
208
- /**
209
- * Create an HMAC-SHA256
210
- * @param string $string_to_sign
211
- * @param string $secret_access_key
212
- * @return string hash
213
- */
214
- private function _hash($string_to_sign, $secret_access_key)
215
- {
216
- if (function_exists('hash_hmac'))
217
- {
218
- return hash_hmac('sha256', $string_to_sign, $secret_access_key, true);
219
- } elseif (function_exists('mhash'))
220
- {
221
- return mhash(MHASH_SHA256, $string_to_sign, $secret_access_key);
222
- } else
223
- {
224
- throw new \Exception('hash_hmac or mhash function is required.');
225
- }
226
- }
227
-
228
- /**
229
- * Builds a URL
230
- *
231
- * @access private
232
- * @param array $params
233
- * @return string URL
234
- */
235
- function _buildUrl($params)
236
- {
237
- $params['Service'] = 'AWSECommerceService';
238
- $params['AWSAccessKeyId'] = $this->_access_key_id;
239
- if (!empty($this->_associate_tag))
240
- {
241
- $params['AssociateTag'] = $this->_associate_tag;
242
- }
243
- $params['Timestamp'] = gmdate('Y-m-d\TH:i:s\Z', is_null($this->_timestamp) ? time() : $this->_timestamp);
244
- $params['Version'] = self::API_VERSION;
245
-
246
- // sort parameters
247
- ksort($params);
248
-
249
- // create a canonical string
250
- $canonical_string = '';
251
- foreach ($params as $k => $v)
252
- {
253
- $canonical_string .= '&' . $this->_urlencode($k) . '=' . $this->_urlencode($v);
254
- }
255
- $canonical_string = substr($canonical_string, 1);
256
-
257
- // create a signature for request
258
- $parsed_url = parse_url($this->getUri());
259
- $string_to_sign = "GET\n{$parsed_url['host']}\n{$parsed_url['path']}\n{$canonical_string}";
260
- $signature = $this->_hash($string_to_sign, $this->_secret_access_key);
261
- $signature = base64_encode($signature);
262
-
263
- // create a signed url
264
- $url = $this->getUri() . '?' . $canonical_string . '&Signature=' . $this->_urlencode($signature);
265
-
266
- return $url;
267
- }
268
-
269
- public function signedGet($path, array $query = null)
270
- {
271
- $url = $this->_buildUrl($query);
272
- return $this->restGet($url, $query);
273
- }
274
-
275
- /**
276
- * Parses raw XML result
277
- *
278
- * @param string $raw_result
279
- * @return array amazon items.
280
- */
281
- private function _parseResult($data)
282
- {
283
- // Обработка ошибки
284
- if (isset($data['Items']['Request']['Errors']['Error']))
285
- {
286
- $err_message = 'Unknown error';
287
- $errors = $data['Items']['Request']['Errors']['Error'];
288
- if (isset($errors['Message']))
289
- $err_message = $errors['Message'];
290
-
291
- throw new \Exception($err_message);
292
- }
293
-
294
- if (!isset($data['Items']['Item']))
295
- return array();
296
- if (!isset($data['Items']['Item'][0]) && isset($data['Items']['Item']['ASIN']))
297
- $data['Items']['Item'] = array($data['Items']['Item']);
298
-
299
- return $data;
300
- }
301
-
302
- /**
303
- * Amazon customer reviews parser
304
- * @param string $url iframe reviews url
305
- */
306
- public function parseCustomerReviews($url, $locale = 'us')
307
- {
308
- try
309
- {
310
- $html = $this->restGet($url);
311
- } catch (\Exception $e)
312
- {
313
- return array();
314
- }
315
- if (!$html)
316
- return array();
317
-
318
- // Исправим кодировку
319
- // US, UK - ISO-8859-1
320
- // DE, FR, CA - ISO-8859-15
321
- // JP - Shift_JIS
322
- if ($locale == "jp" && function_exists('iconv'))
323
- $html = iconv("Shift_JIS", "utf-8", $html);
324
- else
325
- $html = utf8_encode($html);
326
-
327
- if (strstr($html, 'There are no customer reviews for this item'))
328
- return array();
329
- $result = array();
330
-
331
- // Сначала парсим общую информацию по обзорам
332
- $totalreviews = $avarage_rating = 0;
333
- preg_match("/=\"crIFrameHeaderLeftColumn.+?=\"crIFrameHeaderHistogram/msi", $html, $header_html);
334
- if ($header_html)
335
- {
336
- $header_html = $header_html[0];
337
-
338
- //prnx($header_html);
339
- // Total Reviews
340
- preg_match('/>([\d,]+)\s.+?\)<\/span>/', $header_html, $matches);
341
- $totalreviews = $matches ? $matches[1] : 0;
342
-
343
- // Avarage Rating
344
- preg_match('/<img.+?alt="(\d\.\d).+?"/', $header_html, $matches);
345
- $avarage_rating = $matches ? $matches[1] : 0;
346
- unset($header_html);
347
- }
348
- $result['AverageRating'] = $avarage_rating;
349
- $result['TotalReviews'] = $totalreviews;
350
-
351
- // Парсим блоки с Review
352
- preg_match_all("/<\!\-\-\sBOUNDARY\s\-\->(.+?)<div\sstyle=\"padding-top:\s10px;\sclear:\sboth;\swidth:\s100%;\">/msi", $html, $matches);
353
- unset($html);
354
- if (!$matches)
355
- return array();
356
-
357
- $reviews = array();
358
- $i = 0;
359
- foreach ($matches[1] as $review_blok)
360
- {
361
- $reviews[$i] = array();
362
-
363
- // Reviews Content
364
- preg_match("/class=\"reviewText\">(.+?)<\/div>/msi", $review_blok, $matches);
365
- if (!$matches)
366
- preg_match("/^.+<\/div>?(.+?)\z/msi", $review_blok, $matches);
367
- if (!$matches)
368
- continue;
369
- $content = '';
370
- $content = $matches[1];
371
- $content = preg_replace("/<a.+?<\/a>/", "", $content);
372
- $content = trim(strip_tags($content));
373
- $content = preg_replace("/\r/", " ", $content);
374
- $content = preg_replace("/\n/", " ", $content);
375
- if (!$content)
376
- continue;
377
- $reviews[$i]['Content'] = $content;
378
-
379
- // Reviews Summary & Date
380
- preg_match("/<b>(.+)<\/b>,\s<nobr>(.+)<\/nobr>/", $review_blok, $matches);
381
- if ($matches)
382
- {
383
- $reviews[$i]['Summary'] = trim(strip_tags($matches[1])); //Summary
384
- $reviews[$i]['Date'] = strtotime(trim(strip_tags($matches[2]))); //Date
385
- if (!$reviews[$i]['Date'])
386
- $reviews[$i]['Date'] = time();
387
- } else
388
- {
389
- $reviews[$i]['Summary'] = '';
390
- $reviews[$i]['Date'] = time();
391
- }
392
-
393
- // Customer Name
394
- preg_match("/<span.+?>(.+?)<\/span><\/a>/", $review_blok, $matches);
395
- if ($matches)
396
- $reviews[$i]['Name'] = trim(strip_tags($matches[1]));
397
- else
398
- $reviews[$i]['Name'] = '';
399
-
400
- // Rating
401
- preg_match('/<img.+?alt="(\d\.\d).+?"/', $review_blok, $matches);
402
- if ($matches)
403
- $reviews[$i]['Rating'] = trim(strip_tags($matches[1]));
404
- else
405
- $reviews[$i]['Rating'] = 4.0;
406
-
407
- $i++;
408
- }
409
- unset($matches);
410
- $result['Reviews'] = $reviews;
411
- //prnx($result);
412
- return $result;
413
- }
414
-
415
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/libs/bing/BingSearch.php DELETED
@@ -1,143 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\libs\bing;
4
-
5
- use ContentEgg\application\libs\RestClient;
6
-
7
- /**
8
- * BingSearch 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://msdn.microsoft.com/en-us/library/dd251056.aspx
15
- * @link: https://onedrive.live.com/view.aspx?resid=9C9479871FBFA822!112&app=Word&authkey=!ANNnJQREB0kDC04
16
- *
17
- */
18
- require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'RestClient.php';
19
-
20
- class BingSearch extends RestClient {
21
-
22
- const API_URI_BASE = 'https://api.datamarket.azure.com';
23
-
24
- private $accountKey = null;
25
- private $serviceOperation = 'Web';
26
-
27
- /**
28
- * @var array Response Format Types
29
- */
30
- protected $_responseTypes = array(
31
- //'xml', //@todo: требуется доработка
32
- 'json'
33
- );
34
-
35
- /**
36
- * Constructor
37
- */
38
- public function __construct($accountKey, $responseType = 'json')
39
- {
40
- $this->setAccountKey($accountKey);
41
- $this->setResponseType($responseType);
42
- $this->setUri(self::API_URI_BASE);
43
- }
44
-
45
- public function setAccountKey($accountKey)
46
- {
47
- $this->accountKey = $accountKey;
48
- }
49
-
50
- public function getAccountKey()
51
- {
52
- return $this->accountKey;
53
- }
54
-
55
- public function setServiceOperation($serviceOperation = 'Web')
56
- {
57
- //@todo: Composite Service Operation
58
- if (!in_array($serviceOperation, array('Web', 'Image', 'News', 'RelatedSearch',
59
- 'SpellingSuggestion', 'Video')))
60
- throw new \Exception('Wrong Service Operation param.');
61
- $this->serviceOperation = $serviceOperation;
62
- }
63
-
64
- public function getServiceOperation()
65
- {
66
- return $this->serviceOperation;
67
- }
68
-
69
- public function search($query, $source = 'Web', array $params = array())
70
- {
71
- $this->setServiceOperation($source);
72
-
73
- $_query = array();
74
- $_query['Query'] = $query;
75
- // Specifies the format of the OData response. Current options are Atom (for XML) or JSON.
76
- $_query['$format'] = $this->getResponseType();
77
- foreach ($params as $key => $param)
78
- {
79
- switch ($key)
80
- {
81
- case '$top': // Specifies the number of results to return.
82
- $_query[$key] = ((int) $param > 50) ? 50 : (int) $param;
83
- break;
84
- case '$skip': // Specifies the offset requested for the starting point of results returned.
85
- $_query[$key] = ((int) $param > 1000) ? 1000 : (int) $param;
86
- break;
87
-
88
- case 'Market':
89
- $_query[$key] = $param;
90
- break;
91
- case 'Adult':
92
- $_query[$key] = (!in_array($param, array('Off', 'Moderate', 'Strict'))) ? 'Moderate' : $param;
93
- break;
94
- case 'ImageFilters':
95
- // format: &Image.Filters=Color:Monochrome&Image.Filters=Style:Photo
96
- $_query[$key] = $param;
97
- break;
98
- case 'NewsSortBy': //for News
99
- case 'NewsCategory': //for News
100
- case 'WebFileType': //for Web
101
- $_query[$key] = $param;
102
- break;
103
- }
104
- }
105
-
106
- $add_url = '';
107
- /*
108
- * В новом API не удалось передать массив фильтров
109
- * Работает только один фильтр
110
- *
111
- // fucking microsoft query format for filters
112
- // ...&Image.Filters=Size:Small&Image.Filters=Color:Monochrome
113
- if (isset($_query['ImageFilters']) && $_query['ImageFilters'])
114
- {
115
- foreach ($_query['ImageFilters'] as $name => $value)
116
- {
117
- if (!$add_url)
118
- $add_url .= '?';
119
- else
120
- $add_url .= '&';
121
- $add_url .= "ImageFilters=" . "'" . $name . ':' . $value . "'";
122
- }
123
- unset($_query['ImageFilters']);
124
- }
125
- *
126
- */
127
-
128
- // Все параметры (кроме начинающихся с $) заключим в одинарные кавычки
129
- foreach ($_query as $k => $q)
130
- {
131
- if (!strstr($k, '$'))
132
- $_query[$k] = "'" . $q . "'";
133
- }
134
-
135
- //$add_url = "?ImageFilters='Style:Photo'&ImageFilters='Size:Small'";
136
- // Bing API Basic Authorization
137
- $this->setCustomHeaders(array('Authorization' => 'Basic ' . base64_encode($this->getAccountKey() . ":" . $this->getAccountKey())));
138
-
139
- $response = $this->restGet('/Bing/Search/' . $this->getServiceOperation() . $add_url, $_query);
140
- return $this->_decodeResponse($response);
141
- }
142
-
143
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/libs/cj/CjLinksRest.php DELETED
@@ -1,52 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\libs\cj;
4
-
5
- use ContentEgg\application\libs\RestClient;
6
-
7
- /**
8
- * CjLinksRest 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: http://cjsupport.custhelp.com/app/answers/detail/a_id/1552/kw/api
15
- *
16
- */
17
- require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'RestClient.php';
18
-
19
- class CjLinksRest extends RestClient {
20
-
21
- const API_URI_BASE = 'https://linksearch.api.cj.com/v2';
22
-
23
- private $dev_key;
24
-
25
- /**
26
- * @var array Response Format Types
27
- */
28
- protected $_responseTypes = array(
29
- 'xml',
30
- );
31
-
32
- /**
33
- * Constructor
34
- * @param string $responseType
35
- */
36
- public function __construct($dev_key, $responseType = 'xml')
37
- {
38
- $this->setResponseType($responseType);
39
- $this->setUri(self::API_URI_BASE);
40
- $this->dev_key = $dev_key;
41
- }
42
-
43
- public function search($query, array $params = array())
44
- {
45
- $params['keywords'] = $query;
46
- $this->setCustomHeaders(array('Authorization' => $this->dev_key));
47
-
48
- $response = $this->restGet('/link-search', $params);
49
- return $this->_decodeResponse($response);
50
- }
51
-
52
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/libs/google/FreebaseRest.php DELETED
@@ -1,133 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\libs\google;
4
-
5
- use ContentEgg\application\libs\RestClient;
6
-
7
- /**
8
- * FreebaseRest class file
9
- *
10
- * @author keywordrush.com <support@keywordrush.com>
11
- * @link http://www.keywordrush.com/
12
- * @copyright Copyright &copy; 2014 keywordrush.com
13
- */
14
- /**
15
- * FreebaseRest класс для работы с Freebase API.
16
- * @link: https://developers.google.com/freebase/index
17
- */
18
- require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'RestClient.php';
19
-
20
- class FreebaseRest extends RestClient {
21
-
22
- const API_URI_BASE = 'https://www.googleapis.com/freebase/v1';
23
-
24
- private $apiKey;
25
-
26
- /**
27
- * @var array Response Format Types
28
- */
29
- protected $_responseTypes = array(
30
- 'json',
31
- );
32
-
33
- /**
34
- * Constructor
35
- * @param string API Key
36
- * @param string $responseType
37
- */
38
- public function __construct($key)
39
- {
40
- $this->setUri(self::API_URI_BASE);
41
- $this->setApiKey($key);
42
- $this->setResponseType('json');
43
- }
44
-
45
- public function setApiKey($key)
46
- {
47
- $this->apiKey = $key;
48
- }
49
-
50
- /**
51
- * Freebase Search API
52
- * @link: https://developers.google.com/freebase/v1/search
53
- * @param string $query
54
- * @param array $params
55
- */
56
- public function search($query, $params)
57
- {
58
- $_query = array();
59
- $_query['query'] = $query;
60
- $_query['key'] = $this->apiKey;
61
- foreach ($params as $key => $param)
62
- {
63
- switch ($key)
64
- {
65
- case 'lang':
66
- case 'filter':
67
- $_query[$key] = $param;
68
- break;
69
- case 'limit':
70
- case 'start':
71
- $_query[$key] = ((int) $param > 100) ? 100 : (int) $param;
72
- break;
73
- }
74
- }
75
- $response = $this->restGet('/search', $_query);
76
- return $this->_decodeResponse($response);
77
- }
78
-
79
- /**
80
- * Freebase Topic API
81
- * @link: https://developers.google.com/freebase/v1/topic-overview
82
- * @param string $topic_id Topic ID
83
- * @param string $filter
84
- */
85
- public function topic($topic_id, $lang = null, $filter = null)
86
- {
87
- $_query = array();
88
- $_query['key'] = $this->apiKey;
89
- if ($lang)
90
- $_query['lang'] = $lang;
91
- if ($filter)
92
- $_query['filter'] = $filter;
93
- $response = $this->restGet('/topic' . $topic_id, $_query);
94
- return $this->_decodeResponse($response);
95
- }
96
-
97
- /**
98
- * Сначала находит ID топиков, а потом запрашивает подробную
99
- * инфу по каждому топику.
100
- * @param string $query
101
- * @param array $params
102
- * @param string $filter
103
- */
104
- public function fullSearch($query, $params, $filter = null)
105
- {
106
-
107
- $results = $this->search($query, $params);
108
- if (empty($results['result']))
109
- return array();
110
-
111
- $data = array();
112
- foreach ($results['result'] as $res)
113
- {
114
- if (empty($res['mid']))
115
- continue;
116
- try
117
- {
118
- if (!empty($params['lang']))
119
- $lang = $params['lang'];
120
- else
121
- $lang = null;
122
- $topic = $this->topic($res['mid'], $lang, $filter);
123
- } catch (Exception $e)
124
- {
125
- // Не получили инфу по топику. Пропускаем?
126
- continue;
127
- }
128
- $data[] = $topic;
129
- }
130
- return $data;
131
- }
132
-
133
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/libs/google/ImagesSearch.php DELETED
@@ -1,75 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\libs\google;
4
-
5
- use ContentEgg\application\libs\RestClient;
6
-
7
- /**
8
- * ImagesSearch 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://developers.google.com/youtube/v3/docs/search/list
15
- *
16
- */
17
- require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'RestClient.php';
18
-
19
- class ImagesSearch extends RestClient {
20
-
21
- const API_URI_BASE = 'https://ajax.googleapis.com/ajax/services/search';
22
- const API_VERSION = '1.0';
23
-
24
- /**
25
- * @var array Response Format Types
26
- */
27
- protected $_responseTypes = array(
28
- 'atom',
29
- 'json',
30
- );
31
-
32
- /**
33
- * Constructor
34
- * @param string $responseType
35
- */
36
- public function __construct($responseType = 'json')
37
- {
38
- $this->setResponseType($responseType);
39
- $this->setUri(self::API_URI_BASE);
40
- }
41
-
42
- public function search($query, array $params = array())
43
- {
44
- $_query = array();
45
- $_query['v'] = self::API_VERSION;
46
- $_query['q'] = $query;
47
-
48
- foreach ($params as $key => $param)
49
- {
50
- switch ($key)
51
- {
52
- case 'as_filetype':
53
- case 'as_rights':
54
- case 'as_sitesearch':
55
- case 'hl':
56
- case 'imgc':
57
- case 'imgcolor':
58
- case 'imgsz':
59
- case 'imgtype':
60
- case 'restrict':
61
- case 'safe':
62
- case 'start':
63
- case 'userip':
64
- $_query[$key] = $param;
65
- break;
66
- case 'rsz':
67
- $_query[$key] = ((int) $param > 8) ? 8 : (int) $param;
68
- break;
69
- }
70
- }
71
- $response = $this->restGet('/images', $_query);
72
- return $this->_decodeResponse($response);
73
- }
74
-
75
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/libs/google/YouTubeSearch.php DELETED
@@ -1,82 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\libs\google;
4
-
5
- use ContentEgg\application\libs\RestClient;
6
-
7
- /**
8
- * YouTubeSearch 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://developers.google.com/youtube/v3/docs/search/list
15
- *
16
- */
17
- require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'RestClient.php';
18
-
19
- class YouTubeSearch extends RestClient {
20
-
21
- const API_URI_BASE = 'https://www.googleapis.com/youtube/v3';
22
-
23
- /**
24
- * @var array Response Format Types
25
- */
26
- protected $_responseTypes = array(
27
- 'atom',
28
- 'json',
29
- );
30
-
31
- /**
32
- * Constructor
33
- * @param string $responseType
34
- */
35
- public function __construct($responseType = 'json')
36
- {
37
- $this->setResponseType($responseType);
38
- $this->setUri(self::API_URI_BASE);
39
- }
40
-
41
- public function search($query, array $params = array())
42
- {
43
- $_query = array();
44
- $_query['q'] = $query;
45
- $_query['part'] = 'snippet';
46
- $_query['videoEmbeddable'] = 'true';
47
- $_query['type'] = 'video';
48
-
49
- // Разработчики обычно добавляют &format=5 в свои запросы, чтобы ограничить
50
- // результаты теми видео, которые могут быть встроены в их сайты.
51
- //$params['format'] = 5;
52
-
53
- foreach ($params as $key => $param)
54
- {
55
- switch ($key)
56
- {
57
- case 'relevanceLanguage':
58
- case 'order':
59
- //case 'format':
60
- case 'key':
61
- case 'part':
62
- case 'safeSearch':
63
- case 'channelId':
64
- case 'videoEmbeddable':
65
- case 'type':
66
- case 'videoLicense':
67
- $_query[$key] = $param;
68
- break;
69
- case 'maxResults':
70
- case 'pageToken':
71
- $_query[$key] = ((int) $param > 50) ? 50 : (int) $param;
72
- break;
73
- case 'strict':
74
- $_query[$key] = ((bool) $param) ? true : false;
75
- break;
76
- }
77
- }
78
- $response = $this->restGet('/search', $_query);
79
- return $this->_decodeResponse($response);
80
- }
81
-
82
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/libs/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/application/libs/pixabay/PixabaySearch.php DELETED
@@ -1,61 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\libs\pixabay;
4
-
5
- use ContentEgg\application\libs\RestClient;
6
-
7
- /**
8
- * PixabaySearch class file
9
- *
10
- * @author keywordrush.com <support@keywordrush.com>
11
- * @link http://www.keywordrush.com/
12
- * @copyright Copyright &copy; 2016 keywordrush.com
13
- *
14
- * @link: https://pixabay.com/api/docs/
15
- *
16
- */
17
- require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'RestClient.php';
18
-
19
- class PixabaySearch extends RestClient {
20
-
21
- const API_URI_BASE = 'https://pixabay.com';
22
-
23
- private $accountKey = null;
24
-
25
- /**
26
- * @var array Response Format Types
27
- */
28
- protected $_responseTypes = array(
29
- 'json'
30
- );
31
-
32
- /**
33
- * Constructor
34
- */
35
- public function __construct($accountKey, $responseType = 'json')
36
- {
37
- $this->setAccountKey($accountKey);
38
- $this->setResponseType($responseType);
39
- $this->setUri(self::API_URI_BASE);
40
- }
41
-
42
- public function setAccountKey($accountKey)
43
- {
44
- $this->accountKey = $accountKey;
45
- }
46
-
47
- public function getAccountKey()
48
- {
49
- return $this->accountKey;
50
- }
51
-
52
- public function search($query, array $params = array())
53
- {
54
- $params['q'] = $query;
55
- $params['key'] = $this->getAccountKey();
56
-
57
- $response = $this->restGet('/api', $params);
58
- return $this->_decodeResponse($response);
59
- }
60
-
61
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/libs/rss/RssParser.php DELETED
@@ -1,57 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\libs\rss;
4
-
5
- use ContentEgg\application\libs\RestClient;
6
-
7
- /**
8
- * RssParser 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
- */
15
- require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'RestClient.php';
16
-
17
- class RssParser extends RestClient {
18
-
19
- /**
20
- * @var array Response Format Types
21
- */
22
- protected $_responseTypes = array(
23
- 'xml'
24
- );
25
-
26
- /**
27
- * Constructor
28
- * @param string $responseType
29
- */
30
- public function __construct()
31
- {
32
- $this->setResponseType('xml');
33
- }
34
-
35
- public function search($query, $uri)
36
- {
37
- $uri = str_replace('%KEYWORD%', urlencode($query), $uri);
38
-
39
- $url_parts = @parse_url($uri);
40
- if (isset($url_parts['scheme']) && isset($url_parts['host']))
41
- {
42
- $uri = $url_parts['scheme'] . '://' . $url_parts['host'];
43
- $this->setUri($uri);
44
- } else
45
- throw new \Exception('No valid URI scheme was provided. ');
46
-
47
- $path = '';
48
- if (isset($url_parts['path']))
49
- $path = $url_parts['path'];
50
- if (isset($url_parts['query']))
51
- $path .= '?' . $url_parts['query'];
52
-
53
- $response = $this->restGet($path);
54
- return $this->_decodeResponse($response);
55
- }
56
-
57
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/models/AutoblogModel.php DELETED
@@ -1,346 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\models;
4
-
5
- use ContentEgg\application\components\ModuleManager;
6
- use ContentEgg\application\components\ContentManager;
7
- use ContentEgg\application\helpers\TextHelper;
8
- use ContentEgg\application\components\FeaturedImage;
9
- use ContentEgg\application\helpers\TemplateHelper;
10
-
11
- /**
12
- * AutoblogModel class file
13
- *
14
- * @author keywordrush.com <support@keywordrush.com>
15
- * @link http://www.keywordrush.com/
16
- * @copyright Copyright &copy; 2015 keywordrush.com
17
- */
18
- class AutoblogModel extends Model {
19
-
20
- const INACTIVATE_AFTER_ERR_COUNT = 5;
21
-
22
- public function tableName()
23
- {
24
- return $this->getDb()->prefix . 'cegg_autoblog';
25
- }
26
-
27
- public function getDump()
28
- {
29
-
30
- return "CREATE TABLE " . $this->tableName() . " (
31
- id int(11) unsigned NOT NULL auto_increment,
32
- create_date datetime NOT NULL,
33
- last_run datetime NOT NULL default '0000-00-00 00:00:00',
34
- status tinyint(1) DEFAULT '0',
35
- name varchar(200) DEFAULT NULL,
36
- run_frequency int(11) NOT NULL,
37
- keywords_per_run tinyint(3) NOT NULL,
38
- post_status tinyint(1) DEFAULT '0',
39
- user_id int(11) DEFAULT NULL,
40
- post_count int(11) DEFAULT '0',
41
- min_modules_count int(11) DEFAULT '0',
42
- template_body text,
43
- template_title text,
44
- keywords text,
45
- include_modules text,
46
- exclude_modules text,
47
- required_modules text,
48
- autoupdate_modules text,
49
- last_error varchar(255) DEFAULT NULL,
50
- category int(11) DEFAULT NULL,
51
- PRIMARY KEY (id),
52
- KEY last_run (status,last_run,run_frequency)
53
- ) $this->charset_collate;";
54
- }
55
-
56
- public static function model($className = __CLASS__)
57
- {
58
- return parent::model($className);
59
- }
60
-
61
- public function attributeLabels()
62
- {
63
- return array(
64
- 'id' => 'ID',
65
- 'name' => __('Название', 'content-egg'),
66
- 'create_date' => __('Дата создания', 'content-egg'),
67
- 'last_run' => __('Последний запуск', 'content-egg'),
68
- 'status' => __('Статус', 'content-egg'),
69
- 'post_count' => __('Всего постов', 'content-egg'),
70
- 'last_error' => __('Последняя ошибка', 'content-egg'),
71
- 'keywords' => __('Ключевые слова', 'content-egg'),
72
- );
73
- }
74
-
75
- public function save(array $item)
76
- {
77
- $item['id'] = (int) $item['id'];
78
-
79
- $serialized_fileds = array(
80
- 'keywords',
81
- 'include_modules',
82
- 'exclude_modules',
83
- 'required_modules',
84
- 'autoupdate_modules'
85
- );
86
- foreach ($serialized_fileds as $field)
87
- {
88
- if (isset($item[$field]) && is_array($item[$field]))
89
- $item[$field] = serialize($item[$field]);
90
- }
91
-
92
- if (!$item['id'])
93
- {
94
- $item['id'] = 0;
95
- $item['create_date'] = current_time('mysql');
96
- $this->getDb()->insert($this->tableName(), $item);
97
- return $this->getDb()->insert_id;
98
- } else
99
- {
100
- $this->getDb()->update($this->tableName(), $item, array('id' => $item['id']));
101
- return $item['id'];
102
- }
103
- }
104
-
105
- public function run($id)
106
- {
107
- $autoblog = self::model()->findByPk($id);
108
- if (!$autoblog)
109
- return false;
110
-
111
- $autoblog['include_modules'] = unserialize($autoblog['include_modules']);
112
- $autoblog['exclude_modules'] = unserialize($autoblog['exclude_modules']);
113
- $autoblog['required_modules'] = unserialize($autoblog['required_modules']);
114
- $autoblog['keywords'] = unserialize($autoblog['keywords']);
115
- $autoblog['autoupdate_modules'] = unserialize($autoblog['autoupdate_modules']);
116
-
117
- $autoblog_save = array();
118
- $autoblog_save['id'] = $autoblog['id'];
119
- $autoblog_save['last_run'] = current_time('mysql');
120
-
121
- // next keyword exists?
122
- $keyword_id = self::getNextKeywordId($autoblog['keywords']);
123
- if ($keyword_id === false)
124
- {
125
- $autoblog_save['status'] = 0;
126
- $this->save($autoblog_save);
127
- return false;
128
- }
129
- // pre save autoblog
130
- $this->save($autoblog_save);
131
-
132
- $keywords_per_run = (int) $autoblog['keywords_per_run'];
133
- if ($keywords_per_run < 1)
134
- $keywords_per_run = 1;
135
-
136
- // create posts
137
- for ($i = 0; $i < $keywords_per_run; $i++)
138
- {
139
- if ($i)
140
- sleep(1);
141
-
142
- $keyword = $autoblog['keywords'][$keyword_id];
143
-
144
- $post_id = null;
145
- try
146
- {
147
- $post_id = $this->createPost($keyword, $autoblog);
148
- } catch (\Exception $e)
149
- {
150
- $error_mess = TemplateHelper::formatDatetime(time(), 'timestamp') . ' [' . $keyword . '] - ';
151
- $autoblog['last_error'] = $error_mess . $e->getMessage();
152
- }
153
-
154
- if ($post_id)
155
- {
156
- $autoblog['post_count'] ++;
157
- \do_action('cegg_autoblog_post_create', $post_id);
158
- }
159
- $autoblog['keywords'][$keyword_id] = self::markKeywordInactive($keyword);
160
- $keyword_id = self::getNextKeywordId($autoblog['keywords']);
161
- if ($keyword_id === false)
162
- {
163
- $autoblog['status'] = 0;
164
- break;
165
- }
166
- } //.for
167
-
168
- $autoblog['last_run'] = current_time('mysql');
169
- $this->save($autoblog);
170
- return true;
171
- }
172
-
173
- public function createPost($keyword, $autoblog)
174
- {
175
- $module_ids = ModuleManager::getInstance()->getParserModulesIdList(true);
176
- if ($autoblog['include_modules'])
177
- $module_ids = array_intersect($module_ids, $autoblog['include_modules']);
178
- if ($autoblog['exclude_modules'])
179
- $module_ids = array_diff($module_ids, $autoblog['exclude_modules']);
180
-
181
- // copy module_ids to keys
182
- $module_ids = array_combine($module_ids, $module_ids);
183
-
184
- // run required modules first
185
- if ($autoblog['required_modules'])
186
- {
187
- foreach ($autoblog['required_modules'] as $required_module)
188
- {
189
- // module not found?
190
- if (!isset($module_ids[$required_module]))
191
- throw new \Exception(sprintf(__('Обязательный модуль %s не будет запущен. Модуль не настроен или исключен.', 'content-egg'), $required_module));
192
-
193
- unset($module_ids[$required_module]);
194
- $module_ids = array($required_module => $required_module) + $module_ids;
195
- }
196
- }
197
- $modules_data = array();
198
- $count = count($module_ids) - 1;
199
- foreach ($module_ids as $module_id)
200
- {
201
- $module = ModuleManager::getInstance()->factory($module_id);
202
- try
203
- {
204
- $data = $module->doRequest($keyword, array(), true);
205
- } catch (\Exception $e)
206
- {
207
- // error
208
- $data = null;
209
- }
210
- if ($data)
211
- {
212
- foreach ($data as $i => $d)
213
- {
214
- $data[$i]->keyword = $keyword;
215
- }
216
- $modules_data[$module->getId()] = $data;
217
- } elseif ($autoblog['required_modules'] && in_array($module_id, $autoblog['required_modules']))
218
- {
219
- throw new \Exception(sprintf(__('Не найдены данные для обязательного модуля %s.', 'content-egg'), $module_id));
220
- }
221
-
222
- // check min count modules
223
- if ($autoblog['min_modules_count'])
224
- {
225
- if (count($modules_data) + $count < $autoblog['min_modules_count'])
226
- throw new \Exception(sprintf(__('Не достигнуто требуемое количество данных. Минимум требуется модулей: %d.', 'content-egg'), $autoblog['min_modules_count']));
227
- }
228
- $count--;
229
- }
230
-
231
- $title = $this->buildTemplate($autoblog['template_title'], $modules_data, $keyword);
232
- if (!$title)
233
- $title = $keyword;
234
- $body = $this->buildTemplate($autoblog['template_body'], $modules_data, $keyword);
235
- if ((bool) $autoblog['post_status'])
236
- $post_status = 'publish';
237
- else
238
- $post_status = 'pending';
239
-
240
- // create post
241
- $post = array(
242
- 'ID' => null,
243
- 'post_title' => $title,
244
- 'post_content' => $body,
245
- 'post_status' => $post_status,
246
- 'post_author' => $autoblog['user_id'],
247
- 'post_category' => array($autoblog['category']),
248
- );
249
-
250
- $post_id = \wp_insert_post($post);
251
-
252
- if (!$post_id)
253
- throw new \Exception(sprintf(__('Пост не может быть создан. Неизвестная ошибка.', 'content-egg'), $autoblog['min_modules_count']));
254
-
255
- // save modules data & keyword for autoupdate
256
- $autoupdate_keyword = \sanitize_text_field($keyword);
257
-
258
- foreach ($modules_data as $module_id => $data)
259
- {
260
- ContentManager::saveData($data, $module_id, $post_id);
261
- if (in_array($module_id, $autoblog['autoupdate_modules']) && $autoupdate_keyword)
262
- {
263
- \update_post_meta($post_id, ContentManager::META_PREFIX_KEYWORD . $module_id, $autoupdate_keyword);
264
- }
265
- }
266
- //\do_action('content_egg_autoblog_create_post', $post_id);
267
-
268
- // set featured image
269
- $fi = new FeaturedImage();
270
- $fi->setImage($post_id);
271
-
272
- return $post_id;
273
- }
274
-
275
- private function buildTemplate($template, array $modules_data, $keyword)
276
- {
277
- if (!$template)
278
- return $template;
279
-
280
- $template = TextHelper::spin($template);
281
- if (!preg_match_all('/%[a-zA-Z0-9_\.]+%/', $template, $matches))
282
- return $template;
283
-
284
- $replace = array();
285
- foreach ($matches[0] as $pattern)
286
- {
287
- if (stristr($pattern, '%KEYWORD%'))
288
- {
289
- $replace[$pattern] = $keyword;
290
- continue;
291
- }
292
- $pattern_parts = explode('.', $pattern);
293
- if (count($pattern_parts) == 3)
294
- {
295
- $index = (int) $pattern_parts[1]; // Amazon.0.title
296
- $var_name = $pattern_parts[2];
297
- } elseif (count($pattern_parts) == 2)
298
- {
299
- $index = 0; // Amazon.title
300
- $var_name = $pattern_parts[1];
301
- } else
302
- {
303
- $replace[$pattern] = '';
304
- continue;
305
- }
306
- $module_id = ltrim($pattern_parts[0], '%');
307
- $var_name = rtrim($var_name, '%');
308
-
309
- if (array_key_exists($module_id, $modules_data) && isset($modules_data[$module_id][$index]) && property_exists($modules_data[$module_id][$index], $var_name))
310
- $replace[$pattern] = $modules_data[$module_id][$index]->$var_name;
311
- else
312
- $replace[$pattern] = '';
313
- }
314
-
315
- return str_ireplace(array_keys($replace), array_values($replace), $template);
316
- }
317
-
318
- public static function getNextKeywordId(array $keywords)
319
- {
320
- foreach ($keywords as $id => $keyword)
321
- {
322
- if (self::isActiveKeyword($keyword))
323
- return $id;
324
- }
325
- return false;
326
- }
327
-
328
- public static function isInactiveKeyword($keyword)
329
- {
330
- if ($keyword[0] == '[')
331
- return true;
332
- else
333
- return false;
334
- }
335
-
336
- public static function isActiveKeyword($keyword)
337
- {
338
- return !self::isInactiveKeyword($keyword);
339
- }
340
-
341
- public static function markKeywordInactive($keyword)
342
- {
343
- return '[' . $keyword . ']';
344
- }
345
-
346
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/models/Model.php DELETED
@@ -1,225 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\models;
4
-
5
- /**
6
- * Model class file
7
- *
8
- * @author keywordrush.com <support@keywordrush.com>
9
- * @link http://www.keywordrush.com/
10
- * @copyright Copyright &copy; 2015 keywordrush.com
11
- */
12
- abstract class Model {
13
-
14
- public static $db;
15
- private static $models = array();
16
- protected $charset_collate = '';
17
-
18
- abstract public function tableName();
19
-
20
- abstract public function getDump();
21
-
22
- public function __construct()
23
- {
24
- if (!empty($this->getDb()->charset))
25
- $this->charset_collate = 'DEFAULT CHARACTER SET ' . $this->getDb()->charset;
26
- if (!empty($this->getDb()->collate))
27
- $this->charset_collate .= ' COLLATE ' . $this->getDb()->collate;
28
- if (!$this->charset_collate)
29
- $this->charset_collate = '';
30
- }
31
-
32
- public function attributeLabels()
33
- {
34
- return array();
35
- }
36
-
37
- public function getDb()
38
- {
39
- if (self::$db !== null)
40
- return self::$db;
41
- else
42
- {
43
- self::$db = $GLOBALS['wpdb'];
44
- return self::$db;
45
- }
46
- }
47
-
48
- public static function model($className = __CLASS__)
49
- {
50
- if (isset(self::$models[$className]))
51
- return self::$models[$className];
52
- else
53
- {
54
- return self::$models[$className] = new $className;
55
- }
56
- }
57
-
58
- public function getAttributeLabel($attribute)
59
- {
60
- $labels = $this->attributeLabels();
61
- if (isset($labels[$attribute]))
62
- return $labels[$attribute];
63
- else
64
- return $this->generateAttributeLabel($attribute);
65
- }
66
-
67
- public function generateAttributeLabel($name)
68
- {
69
- return ucwords(trim(strtolower(str_replace(array('-', '_', '.'), ' ', preg_replace('/(?<![A-Z])[A-Z]/', ' \0', $name)))));
70
- }
71
-
72
- public function find(array $params)
73
- {
74
- return $this->getDb()->get_row($this->prepareFindSql($params), \ARRAY_A);
75
- }
76
-
77
- public function findAll(array $params)
78
- {
79
- return $this->getDb()->get_results($this->prepareFindSql($params), \ARRAY_A);
80
- }
81
-
82
- private function prepareFindSql(array $params)
83
- {
84
- $values = array();
85
- $sql = 'SELECT ';
86
-
87
- if (!empty($params['select']))
88
- $sql .= $params['select'];
89
- else
90
- $sql .= ' *';
91
- $sql .= ' FROM ' . $this->tableName();
92
- if ($params)
93
- {
94
- if (!empty($params['where']))
95
- {
96
- if (is_array($params['where']) && isset($params['where'][0]) && isset($params['where'][1]))
97
- {
98
- $sql .= ' WHERE ' . $params['where'][0];
99
- $values += $params['where'][1];
100
- } elseif (!is_array($params['where']))
101
- $sql .= ' WHERE ' . $params['where'];
102
- }
103
- if (!empty($params['group']))
104
- {
105
- $sql .= ' GROUP BY ' . $params['group'];
106
- }
107
- if (!empty($params['order']))
108
- {
109
- $sql .= ' ORDER BY ' . $params['order'];
110
- }
111
- if (!empty($params['limit']))
112
- {
113
- $sql .= ' LIMIT %d';
114
- $values[] = $params['limit'];
115
- }
116
- if (!empty($params['offset']))
117
- {
118
- $sql .= ' OFFSET %d';
119
- $values[] = $params['offset'];
120
- }
121
-
122
- if ($values)
123
- $sql = $this->getDb()->prepare($sql, $values);
124
- }
125
- return $sql;
126
- }
127
-
128
- public function findByPk($id)
129
- {
130
- return $this->getDb()->get_row($this->getDb()->prepare('SELECT * FROM ' . $this->tableName() . ' WHERE id = %d', $id), ARRAY_A);
131
- }
132
-
133
- public function delete($id)
134
- {
135
- return $this->getDb()->delete($this->tableName(), array('id' => $id), array('%d'));
136
- }
137
-
138
- public function deleteAll($where)
139
- {
140
- $values = array();
141
- $sql = 'DELETE FROM ' . $this->tableName();
142
- $sql .= $this->prepareWhere($where);
143
- return $this->getDb()->query($sql);
144
- }
145
-
146
- public function count($where = null)
147
- {
148
- $sql = "SELECT COUNT(*) FROM " . $this->tableName();
149
- if ($where)
150
- $sql .= $this->prepareWhere($where);
151
- return $this->getDb()->get_var($sql);
152
- }
153
-
154
- public function max($colum, $where = null)
155
- {
156
- $sql = "SELECT MAX(" . $colum . ") FROM " . $this->tableName();
157
- if ($where)
158
- $sql .= $this->prepareWhere($where);
159
- return $this->getDb()->get_var($sql);
160
- }
161
-
162
- public function min($colum, $where = null)
163
- {
164
- $sql = "SELECT MIN(" . $colum . ") FROM " . $this->tableName();
165
- if ($where)
166
- $sql .= $this->prepareWhere($where);
167
- return $this->getDb()->get_var($sql);
168
- }
169
-
170
- public function avg($colum, $where = null)
171
- {
172
- $sql = "SELECT AVG(" . $colum . ") FROM " . $this->tableName();
173
- if ($where)
174
- $sql .= $this->prepareWhere($where);
175
- return $this->getDb()->get_var($sql);
176
- }
177
-
178
- public function prepareWhere($where, $winclude = true)
179
- {
180
- if ($winclude)
181
- $sql = ' WHERE ';
182
- else
183
- $sql = '';
184
- $values = array();
185
- if (is_array($where) && isset($where[0]) && isset($where[1]))
186
- {
187
- $sql .= $where[0];
188
- $values += $where[1];
189
- } elseif (is_string($where))
190
- $sql .= $where;
191
- else
192
- throw new \Exception('Wrong WHERE params.');
193
- if ($values)
194
- $sql = $this->getDb()->prepare($sql, $values);
195
- return $sql;
196
- }
197
-
198
- public function save(array $item)
199
- {
200
- $item['id'] = (int) $item['id'];
201
- if (!$item['id'])
202
- {
203
- $item['id'] = 0;
204
- $this->getDb()->insert($this->tableName(), $item);
205
- return $this->getDb()->insert_id;
206
- } else
207
- {
208
- $this->getDb()->update($this->tableName(), $item, array('id' => $item['id']));
209
- return $item['id'];
210
- }
211
- }
212
-
213
- public function cleanOld($days, $optimize = true, $date_field = 'create_date')
214
- {
215
- $this->deleteAll('TIMESTAMPDIFF( DAY, ' . $date_field . ', "' . \current_time('mysql') . '") > ' . $days);
216
- if ($optimize)
217
- $this->optimizeTable();
218
- }
219
-
220
- public function optimizeTable()
221
- {
222
- $this->getDb()->query('OPTIMIZE TABLE ' . $this->tableName());
223
- }
224
-
225
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/AE/AEConfig.php DELETED
@@ -1,76 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\AE;
4
-
5
- use ContentEgg\application\components\AffiliateParserModuleConfig;
6
-
7
- /**
8
- * AEConfig class file
9
- *
10
- * @author keywordrush.com <support@keywordrush.com>
11
- * @link http://www.keywordrush.com/
12
- * @copyright Copyright &copy; 2016 keywordrush.com
13
- */
14
- class AEConfig extends AffiliateParserModuleConfig {
15
-
16
- public function options()
17
- {
18
- $options = array(
19
- 'deeplink' => array(
20
- 'title' => __('Партнеркая ссылка', 'content-egg'),
21
- 'description' => __('Укажите Deeplink одной из CPA-сетей. Для прямых партнерских программ вы можете использовать параметр вида <em>partner_id=12345</em>, или сформируйте партнерскую ссылку по шаблону, например: <em>{{url}}/partner_id-12345/</em>. Пример ссылки с deeplink: https://ad.admitad.com/g/g8f0qmlavfa/?ulp={{url_encoded}}. {{url}} и {{url_encoded}} - будут заменены на URL текущего товара).', 'content-egg'),
22
- 'callback' => array($this, 'render_input'),
23
- 'default' => '',
24
- 'validator' => array(
25
- 'trim',
26
- ),
27
- 'section' => 'default',
28
- ),
29
- 'entries_per_page' => array(
30
- 'title' => __('Результатов', 'content-egg'),
31
- 'description' => __('Количество результатов для одного поискового запроса.', 'content-egg'),
32
- 'callback' => array($this, 'render_input'),
33
- 'default' => 9,
34
- 'validator' => array(
35
- 'trim',
36
- 'absint',
37
- array(
38
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
39
- 'arg' => 50,
40
- 'message' => __('Поле "Результатов" не может быть больше 50.', 'content-egg'),
41
- ),
42
- ),
43
- 'section' => 'default',
44
- ),
45
- 'entries_per_page_update' => array(
46
- 'title' => __('Результатов для обновления', 'content-egg'),
47
- 'description' => __('Количество результатов для автоматического обновления и автоблоггинга.', 'content-egg'),
48
- 'callback' => array($this, 'render_input'),
49
- 'default' => 6,
50
- 'validator' => array(
51
- 'trim',
52
- 'absint',
53
- array(
54
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
55
- 'arg' => 50,
56
- 'message' => __('Поле "Результатов" не может быть больше 50.', 'content-egg'),
57
- ),
58
- ),
59
- 'section' => 'default',
60
- ),
61
- 'save_img' => array(
62
- 'title' => __('Сохранять картинки', 'content-egg'),
63
- 'description' => __('Сохранять картинки на сервер.', 'content-egg'),
64
- 'callback' => array($this, 'render_checkbox'),
65
- 'default' => false,
66
- 'section' => 'default',
67
- ),
68
- );
69
-
70
- $parent = parent::options();
71
- $parent['ttl']['default'] = 4320000;
72
- $parent['ttl_items']['default'] = 2592000;
73
- return array_merge($parent, $options);
74
- }
75
-
76
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/AE/AEModule.php DELETED
@@ -1,178 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\AE;
4
-
5
- use ContentEgg\application\admin\AeIntegrationConfig;
6
- use ContentEgg\application\components\AffiliateParserModule;
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
- use \Keywordrush\AffiliateEgg\ParserManager;
12
-
13
- /**
14
- * AmazonModule class file
15
- *
16
- * @author keywordrush.com <support@keywordrush.com>
17
- * @link http://www.keywordrush.com/
18
- * @copyright Copyright &copy; 2016 keywordrush.com
19
- */
20
- class AEModule extends AffiliateParserModule {
21
-
22
- public function __construct($module_id = null)
23
- {
24
- if (!AeIntegrationConfig::isAEIntegrationPosible())
25
- throw new \Exception('The required Affiliate Egg plugin is not installed.');
26
-
27
- parent::__construct($module_id);
28
- }
29
-
30
- public function info()
31
- {
32
- $name = \Keywordrush\AffiliateEgg\ShopManager::getInstance()->getShopName($this->getMyShortId());
33
- $uri = \Keywordrush\AffiliateEgg\ShopManager::getInstance()->getShopUri($this->getMyShortId());
34
- $uri = str_replace('http://', '', $uri);
35
- return array(
36
- 'name' => 'AE:' . $name,
37
- 'description' => __('Поиск на основании парсера Affiliate Egg плагина для' . ' ' . $uri . '.', 'content-egg'),
38
- );
39
- }
40
-
41
- public function getParserType()
42
- {
43
- return self::PARSER_TYPE_PRODUCT;
44
- }
45
-
46
- public function defaultTemplateName()
47
- {
48
- return 'data_grid';
49
- }
50
-
51
- public function isItemsUpdateAvailable()
52
- {
53
- return true;
54
- }
55
-
56
- public function isFree()
57
- {
58
- return true;
59
- }
60
-
61
- public function doRequest($keyword, $query_params = array(), $is_autoupdate = false)
62
- {
63
- if ($is_autoupdate)
64
- $entries_per_page = $this->config('entries_per_page_update');
65
- else
66
- $entries_per_page = $this->config('entries_per_page');
67
-
68
- // 1. Parse catalog
69
- $product_urls = ParserManager::getInstance()->parseSearchCatalog($this->getMyShortId(), $keyword, $entries_per_page);
70
- if (!$product_urls || !is_array($product_urls))
71
- return array();
72
-
73
- //2. Parse products
74
- $product_sleep = \Keywordrush\AffiliateEgg\GeneralConfig::getInstance()->option('product_sleep');
75
-
76
- $results = array();
77
- foreach ($product_urls as $key => $url)
78
- {
79
- try
80
- {
81
- $results[] = ParserManager::getInstance()->parseProduct($url);
82
- } catch (\Exception $e)
83
- {
84
- continue;
85
- }
86
-
87
- // sleep
88
- if ($product_sleep && $key < count($product_urls) - 1)
89
- usleep($product_sleep);
90
- }
91
-
92
- return $this->prepareResults($results);
93
- }
94
-
95
- private function prepareResults($results)
96
- {
97
- $data = array();
98
- $deeplink = $this->config('deeplink');
99
-
100
- foreach ($results as $key => $r)
101
- {
102
- $content = new ContentProduct;
103
- $content->unique_id = md5($r['orig_url']);
104
- $content->url = LinkHandler::createAffUrl($r['orig_url'], $deeplink);
105
- $content->orig_url = $r['orig_url'];
106
- $content->img = $r['img'];
107
- $content->title = $r['title'];
108
- $content->description = $r['description'];
109
- $content->price = $r['price'];
110
- $content->priceOld = $r['old_price'];
111
- $content->currencyCode = $r['currency'];
112
- $content->currency = TextHelper::currencyTyping($content->currencyCode);
113
- $content->manufacturer = $r['manufacturer'];
114
- $content->availability = $r['in_stock'];
115
-
116
- $content->extra = new ExtraDataAE;
117
- if (isset($r['extra']['features']))
118
- {
119
- $content->extra->features = $r['extra']['features'];
120
- unset($r['extra']['features']);
121
- }
122
- if (isset($r['extra']['comments']))
123
- {
124
- $content->extra->comments = $r['extra']['comments'];
125
- unset($r['extra']['comments']);
126
- }
127
- if (isset($r['extra']['images']))
128
- {
129
- $content->extra->images = $r['extra']['images'];
130
- unset($r['extra']['images']);
131
- }
132
- $content->extra->data = $r['extra'];
133
-
134
- $data[] = $content;
135
- }
136
- return $data;
137
- }
138
-
139
- public function doRequestItems(array $items)
140
- {
141
- $key = 0;
142
- $product_sleep = \Keywordrush\AffiliateEgg\GeneralConfig::getInstance()->option('product_update_sleep');
143
- foreach ($items as $i => $item)
144
- {
145
- if ($product_sleep && $key > 0)
146
- usleep($product_sleep);
147
- $key++;
148
-
149
- try
150
- {
151
- $r = ParserManager::getInstance()->parseProduct($item['orig_url']);
152
-
153
- // update url if deeplink changed
154
- $items[$i]['url'] = LinkHandler::createAffUrl($r['orig_url'], $this->config('deeplink'));
155
- $items[$i]['price'] = $r['price'];
156
- $items[$i]['priceOld'] = $r['old_price'];
157
- $items[$i]['currencyCode'] = $r['currency'];
158
- $items[$i]['currency'] = TextHelper::currencyTyping($items[$i]['currencyCode']);
159
- } catch (\Exception $e)
160
- {
161
- continue;
162
- }
163
- }
164
-
165
- return $items;
166
- }
167
-
168
- public function renderResults()
169
- {
170
- PluginAdmin::render('_metabox_results', array('module_id' => $this->getId()));
171
- }
172
-
173
- public function renderSearchResults()
174
- {
175
- PluginAdmin::render('_metabox_search_results', array('module_id' => $this->getId()));
176
- }
177
-
178
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/AE/ExtraDataAE.php DELETED
@@ -1,21 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\AE;
4
-
5
- use ContentEgg\application\components\ExtraData;
6
-
7
- /**
8
- * ExtraDataAE class file
9
- *
10
- * @author keywordrush.com <support@keywordrush.com>
11
- * @link http://www.keywordrush.com/
12
- * @copyright Copyright &copy; 2016 keywordrush.com
13
- */
14
- class ExtraDataAE extends ExtraData {
15
-
16
- public $features = array();
17
- public $comments = array();
18
- public $images = array();
19
- public $data = array();
20
-
21
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/AE/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/application/modules/AE/templates/data_grid.php DELETED
@@ -1,65 +0,0 @@
1
- <?php
2
- /*
3
- Name: Grid
4
- */
5
-
6
- __('Grid', 'content-egg-tpl');
7
-
8
- use ContentEgg\application\helpers\TemplateHelper;
9
- ?>
10
-
11
- <?php
12
- \wp_enqueue_style('egg-bootstrap');
13
- \wp_enqueue_style('content-egg-products');
14
- ?>
15
-
16
- <div class="egg-container egg-grid">
17
- <?php if ($title): ?>
18
- <h3><?php echo esc_html($title); ?></h3>
19
- <?php endif; ?>
20
-
21
- <div class="container-fluid">
22
- <?php $i = 0; ?>
23
- <?php foreach ($items as $item): ?>
24
-
25
- <a rel="nofollow" target="_blank" href="<?php echo esc_url($item['url']) ?>">
26
- <div class="col-md-4 productbox">
27
- <?php if ($item['percentageSaved']): ?>
28
- <div class="cegg-promotion">
29
- <span class="cegg-discount">- <?php echo round($item['percentageSaved']); ?>%</span>
30
- </div>
31
- <?php endif; ?>
32
-
33
- <?php if ($item['img']): ?>
34
- <img class="img-responsive" src="<?php echo esc_attr($item['img']) ?>" alt="<?php echo esc_attr($item['title']); ?>" />
35
- <?php endif; ?>
36
-
37
- <div class="producttitle">
38
- <?php if ($item['manufacturer']): ?><?php echo esc_html($item['manufacturer']); ?><?php endif; ?>
39
- <span><?php echo esc_html(TemplateHelper::truncate($item['title'], 80)); ?></span>
40
- </div>
41
-
42
- <?php if (!empty($item['extra']['data']['rating'])): ?>
43
- <div>
44
- <span class="rating_small"><?php echo str_repeat("<span>&#x2605</span>", (int) $item['extra']['data']['rating']);echo str_repeat("<span>☆</span>", 5 - (int) $item['extra']['data']['rating']);?></span>
45
- </div>
46
- <?php endif; ?>
47
-
48
- <div class="productprice">
49
- <?php if ($item['price']): ?>
50
- <?php if ($item['priceOld']): ?><strike>
51
- <?php echo TemplateHelper::formatPriceCurrency($item['priceOld'], $item['currencyCode']); ?>
52
- </strike>&nbsp;<?php endif; ?>
53
- <?php echo TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode']); ?>
54
- <?php endif; ?>
55
- </div>
56
- </div>
57
- </a>
58
-
59
- <?php $i++;
60
- if ($i % 3 == 0): ?>
61
- <div class="clearfix"></div>
62
- <?php endif; ?>
63
- <?php endforeach; ?>
64
- </div>
65
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/AE/templates/data_item.php DELETED
@@ -1,110 +0,0 @@
1
- <?php
2
- /*
3
- Name: Product card
4
- */
5
-
6
- __('Product card', 'content-egg-tpl');
7
-
8
- use ContentEgg\application\helpers\TemplateHelper;
9
- ?>
10
-
11
- <?php
12
- \wp_enqueue_style('egg-bootstrap');
13
- \wp_enqueue_style('content-egg-products');
14
-
15
- ?>
16
-
17
-
18
- <div class="egg-container egg-item">
19
-
20
- <?php if ($title): ?>
21
- <h3><?php echo esc_html($title); ?></h3>
22
- <?php endif; ?>
23
-
24
- <div class="products">
25
-
26
- <?php foreach ($items as $item): ?>
27
- <div class="row">
28
- <div class="col-md-5">
29
- <?php if ($item['img']): ?>
30
- <a rel="nofollow" target="_blank" href="<?php echo $item['url']; ?>">
31
- <img src="<?php echo $item['img']; ?>" alt="<?php echo esc_attr($item['title']); ?>" class="img-responsive" />
32
- </a>
33
- <?php endif; ?>
34
- </div>
35
- <div class="col-md-7">
36
- <h2 class="media-heading"><?php echo $item['title']; ?><?php if ($item['manufacturer']): ?>, <?php echo esc_html($item['manufacturer']); ?><?php endif;?></h2>
37
-
38
- <?php if (!empty($item['extra']['data']['rating'])): ?>
39
- <span class="rating"><?php echo str_repeat("<span>&#x2605</span>", $item['extra']['data']['rating']);
40
- echo str_repeat("<span>☆</span>", 5 - $item['extra']['data']['rating']); ?></span>
41
- <?php endif; ?>
42
-
43
- <div class="well-lg">
44
-
45
- <div class="row">
46
- <div class="col-md-6">
47
- <?php if ($item['priceOld']): ?>
48
- <span class="text-muted">
49
- <strike>
50
- <?php echo TemplateHelper::formatPriceCurrency($item['priceOld'], $item['currencyCode']); ?>
51
- </strike></span><br>
52
- <?php endif; ?>
53
-
54
- <?php if ($item['price']): ?>
55
- <span class="cegg-price">
56
- <?php echo TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode']); ?>
57
- </span>
58
- <?php endif; ?>
59
- </div>
60
- <div class="col-md-6 text-center text-muted">
61
- <a rel="nofollow" target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-success"><?php _e('BUY THIS ITEM', 'content-egg-tpl'); ?></a>
62
- <?php if (!empty($item['extra']['domain'])): ?>
63
- <br>
64
- <small><?php echo $item['extra']['domain']; ?></small>
65
- <?php endif; ?>
66
- </div>
67
-
68
- </div>
69
-
70
- </div>
71
-
72
- </div>
73
- </div>
74
-
75
- <div class="row">
76
- <div class="col-md-12">
77
- <?php if ($item['description']): ?>
78
- <p><?php echo $item['description']; ?></p>
79
- <?php endif; ?>
80
-
81
- <?php if ($item['extra']['features']): ?>
82
- <h4><?php _e('Features', 'content-egg-tpl'); ?></h4>
83
- <ul>
84
- <?php foreach ($item['extra']['features'] as $feature): ?>
85
- <li><?php echo '<strong>' . esc_html($feature['name']) . '</strong>' . ': ' . esc_html($feature['value']); ?></li>
86
- <?php endforeach; ?>
87
- </ul>
88
- <?php endif; ?>
89
-
90
- <?php if (!empty($item['extra']['comments'])): ?>
91
- <h4><?php _e('User reviews', 'content-egg-tpl'); ?></h4>
92
- <?php foreach ($item['extra']['comments'] as $key => $comment): ?>
93
- <blockquote>
94
- <?php if (!empty($comment['rating'])): ?>
95
- <span class="rating_small">
96
- <?php echo str_repeat("<span>&#x2605</span>", (int) $comment['rating']); ?><?php echo str_repeat("<span>☆</span>", 5 - (int) $comment['rating']); ?>
97
- </span>
98
- <?php endif; ?>
99
- <?php echo $comment['comment']; ?>
100
- </blockquote>
101
- <?php endforeach; ?>
102
- <p style="text-align: right;">
103
- <a class="btn btn-info" rel="nofollow" target="_blank" href="<?php echo esc_url($item['url']) ?>"><?php _e('View all reviews', 'content-egg-tpl'); ?></a>
104
- </p>
105
- <?php endif; ?>
106
- </div>
107
- </div>
108
- <?php endforeach; ?>
109
- </div>
110
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/AE/templates/data_list.php DELETED
@@ -1,50 +0,0 @@
1
- <?php
2
- /*
3
- Name: List
4
- */
5
-
6
- __('List', 'content-egg-tpl');
7
-
8
- use ContentEgg\application\helpers\TemplateHelper;
9
- ?>
10
-
11
- <?php
12
- \wp_enqueue_style('egg-bootstrap');
13
- \wp_enqueue_style('content-egg-products');
14
- ?>
15
-
16
- <div class="egg-container egg-list">
17
- <?php if ($title): ?>
18
- <h3><?php echo esc_html($title); ?></h3>
19
- <?php endif; ?>
20
-
21
- <div class="egg-listcontainer">
22
-
23
- <?php foreach ($items as $item): ?>
24
- <div class="row-products">
25
- <div class="col-md-2 col-sm-2 col-xs-12 cegg-image-cell">
26
- <?php if ($item['img']): ?>
27
- <?php $img = str_replace('/spare_covers/', '/c200/', $item['img']);?>
28
- <a rel="nofollow" target="_blank" href="<?php echo $item['url']; ?>">
29
- <img src="<?php echo $img; ?>" alt="<?php echo esc_attr($item['title']); ?>" />
30
- </a>
31
- <?php endif; ?>
32
- </div>
33
- <div class="col-md-7 col-sm-7 col-xs-12 cegg-desc-cell">
34
- <a rel="nofollow" target="_blank" href="<?php echo $item['url']; ?>">
35
- <h4><?php echo $item['title']; ?></h4>
36
- </a>
37
- </div>
38
- <div class="col-md-3 col-sm-3 col-xs-12 offer_price cegg-price-cell">
39
- <?php if ($item['priceOld']): ?>
40
- <span class="text-muted"><strike><?php echo TemplateHelper::formatPriceCurrency($item['priceOld'], $item['currencyCode']); ?></strike></span><br>
41
- <?php endif; ?>
42
-
43
- <?php if ($item['price']): ?>
44
- <?php echo TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode']); ?>
45
- <?php endif; ?>
46
- </div>
47
- </div>
48
- <?php endforeach; ?>
49
- </div>
50
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/AdmitadProducts/AdmitadProductsConfig.php DELETED
@@ -1,198 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\AdmitadProducts;
4
-
5
- use ContentEgg\application\components\AffiliateParserModuleConfig;
6
-
7
- /**
8
- * AdmitadProductsConfig class file
9
- *
10
- * @author keywordrush.com <support@keywordrush.com>
11
- * @link http://www.keywordrush.com/
12
- * @copyright Copyright &copy; 2016 keywordrush.com
13
- */
14
- class AdmitadProductsConfig extends AffiliateParserModuleConfig {
15
-
16
- public function options()
17
- {
18
- $optiosn = array(
19
- 'offer_id' => array(
20
- 'title' => __('ID оффера', 'content-egg') . ' ' . '<span class="cegg_required">*</span>',
21
- 'description' => __('Вы можете работать только с офферами, представленными на <a target="_blank" href="https://www.admitadgoods.ru/offers.php">этой странице</a>.', 'content-egg')
22
- . ' ' . __('ID оффера можно найти в URL, если кликнуть по логотипу оффера.', 'content-egg'),
23
- 'callback' => array($this, 'render_input'),
24
- 'default' => '',
25
- 'validator' => array(
26
- 'trim',
27
- array(
28
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'required'),
29
- 'when' => 'is_active',
30
- 'message' => __('Поле "ID оффера" не может быть пустым.', 'content-egg'),
31
- ),
32
- ),
33
- 'section' => 'default',
34
- ),
35
- 'deeplink' => array(
36
- 'title' => 'Deeplink' . ' ' . '<span class="cegg_required">*</span>',
37
- 'description' => __('Deeplink соотвествующего оффера.', 'content-egg')
38
- . ' ' . __('<a target="_blank" href="http://keywordrush.com/manuals/affegg_manual.pdf">Мануал</a> по настройке Deeplink для различных CPA-сетей.', 'content-egg'),
39
- 'callback' => array($this, 'render_input'),
40
- 'default' => '',
41
- 'validator' => array(
42
- 'trim',
43
- array(
44
- 'call' => array($this, 'deeplinkPrepare'),
45
- 'type' => 'filter'
46
- ),
47
- array(
48
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'required'),
49
- 'when' => 'is_active',
50
- 'message' => __('Поле "Deeplink" не может быть пустым.', 'content-egg'),
51
- ),
52
- ),
53
- 'section' => 'default',
54
- ),
55
- 'entries_per_page' => array(
56
- 'title' => __('Результатов', 'content-egg'),
57
- 'description' => __('Количество результатов для одного поискового запроса.', 'content-egg'),
58
- 'callback' => array($this, 'render_input'),
59
- 'default' => 20,
60
- 'validator' => array(
61
- 'trim',
62
- 'absint',
63
- array(
64
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
65
- 'arg' => 20,
66
- 'message' => __('Поле "Результатов" не может быть больше 20.', 'content-egg'),
67
- ),
68
- ),
69
- 'section' => 'default',
70
- ),
71
- 'entries_per_page_update' => array(
72
- 'title' => __('Результатов для обновления', 'content-egg'),
73
- 'description' => __('Количество результатов для автоматического обновления и автоблоггинга.', 'content-egg'),
74
- 'callback' => array($this, 'render_input'),
75
- 'default' => 6,
76
- 'validator' => array(
77
- 'trim',
78
- 'absint',
79
- array(
80
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
81
- 'arg' => 20,
82
- 'message' => __('Поле "Результатов для обновления" не может быть больше 20.', 'content-egg'),
83
- ),
84
- ),
85
- 'section' => 'default',
86
- ),
87
- 'only_sale' => array(
88
- 'title' => __('Скидка', 'content-egg'),
89
- 'description' => __('Только товары со скидкой.', 'content-egg'),
90
- 'callback' => array($this, 'render_checkbox'),
91
- 'default' => false,
92
- 'section' => 'default',
93
- ),
94
- 'price_from' => array(
95
- 'title' => __('Минимальная цена', 'content-egg'),
96
- 'description' => '',
97
- 'callback' => array($this, 'render_input'),
98
- 'default' => '',
99
- 'validator' => array(
100
- 'trim',
101
- ),
102
- 'section' => 'default',
103
- ),
104
- 'price_to' => array(
105
- 'title' => __('Максимальная цена', 'content-egg'),
106
- 'description' => '',
107
- 'callback' => array($this, 'render_input'),
108
- 'default' => '',
109
- 'validator' => array(
110
- 'trim',
111
- ),
112
- 'section' => 'default',
113
- ),
114
- 'save_img' => array(
115
- 'title' => __('Сохранять картинки', 'content-egg'),
116
- 'description' => __('Сохранять картинки на сервер', 'content-egg'),
117
- 'callback' => array($this, 'render_checkbox'),
118
- 'default' => false,
119
- 'section' => 'default',
120
- ),
121
- 'description_size' => array(
122
- 'title' => __('Обрезать описание', 'content-egg'),
123
- 'description' => __('Размер описания в символах (0 - не обрезать)', 'content-egg'),
124
- 'callback' => array($this, 'render_input'),
125
- 'default' => '300',
126
- 'validator' => array(
127
- 'trim',
128
- 'absint',
129
- ),
130
- 'section' => 'default',
131
- ),
132
- );
133
-
134
- $parent = parent::options();
135
- $parent['ttl_items']['validator'] = array(
136
- 'trim',
137
- 'absint',
138
- array(
139
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'greater_than'),
140
- 'arg' => 86400,
141
- 'message' => sprintf(__('Поле "%s" не может быть меньше %d.', 'content-egg'), __('Обновить товары', 'content-egg'), 86400),
142
- ),
143
- );
144
- $parent['ttl']['validator'] = array(
145
- 'trim',
146
- 'absint',
147
- array(
148
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'greater_than'),
149
- 'arg' => 259200,
150
- 'message' => sprintf(__('Поле "%s" не может быть меньше %d.', 'content-egg'), __('Автоматическое обновление', 'content-egg'), 259200),
151
- ),
152
- );
153
-
154
- return array_merge($parent, $optiosn);
155
- }
156
-
157
- public function deeplinkPrepare($deeplink)
158
- {
159
- $cpa = array(
160
- 'ad.admitad.com' => 'ulp',
161
- 'modato.ru' => 'ulp', // lamoda admitad?
162
- 'f.gdeslon.ru' => 'goto',
163
- 'cityadspix.com' => 'url',
164
- 'www.cityads.ru' => 'url',
165
- 'epnclick.ru' => 'to',
166
- );
167
-
168
- $p = parse_url($deeplink);
169
-
170
- if ($p === false || empty($p['host']))
171
- return $deeplink;
172
-
173
- $host = $p['host'];
174
-
175
- if ($host == 'n.actionpay.ru')
176
- {
177
- return str_replace('url=example.com', 'url=', $deeplink);
178
- }
179
-
180
- if (array_key_exists($host, $cpa))
181
- {
182
- $param = $cpa[$host];
183
- if (!empty($p['query']))
184
- parse_str($p['query'], $query);
185
- else
186
- $query = array();
187
- if (isset($query[$param]))
188
- unset($query[$param]);
189
- $url = $p['scheme'] . '://' . $p['host'] . $p['path'] . '?';
190
- if ($query)
191
- $url .= http_build_query($query) . '&';
192
- $url .= $param . '=';
193
- return $url;
194
- }
195
- return $deeplink;
196
- }
197
-
198
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/AdmitadProducts/AdmitadProductsModule.php DELETED
@@ -1,159 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\AdmitadProducts;
4
-
5
- use ContentEgg\application\components\AffiliateParserModule;
6
- 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
13
- *
14
- * @author keywordrush.com <support@keywordrush.com>
15
- * @link http://www.keywordrush.com/
16
- * @copyright Copyright &copy; 2016 keywordrush.com
17
- */
18
- class AdmitadProductsModule extends AffiliateParserModule {
19
-
20
- public function info()
21
- {
22
- return array(
23
- 'name' => 'Admitad Products',
24
- 'description' => __('Добавляет товары партнерской сети <a href="https://www.admitad.com/ru/promo/?ref=770f943d83">Admitad</a>.', 'content-egg') . ' ' . __('Вы должны получить аппрув в каждой программе отдельно.', 'content-egg')
25
- . '<br>' . __('Используется API <a href="https://www.admitadgoods.ru" target="_blank">Admitad Goods</a> WP плагин.', 'content-egg')
26
- );
27
- }
28
-
29
- public function getParserType()
30
- {
31
- return self::PARSER_TYPE_PRODUCT;
32
- }
33
-
34
- public function defaultTemplateName()
35
- {
36
- return 'data_item';
37
- }
38
-
39
- public function isItemsUpdateAvailable()
40
- {
41
- return true;
42
- }
43
-
44
- public function isFree()
45
- {
46
- return true;
47
- }
48
-
49
- public function doRequest($keyword, $query_params = array(), $is_autoupdate = false)
50
- {
51
- $options = array();
52
-
53
- $offer_id = (int) $this->config('offer_id');
54
- $options['offer_id'] = $offer_id;
55
-
56
- if ($this->config('only_sale'))
57
- $options['only_sale'] = 1;
58
-
59
- if ($this->config('price_from'))
60
- $options['price_from'] = (int) $this->config('price_from');
61
- if ($this->config('price_to'))
62
- $options['price_to'] = (int) $this->config('price_to');
63
-
64
- $client = new AdmitadProducts();
65
- $results = $client->search($keyword, $options);
66
-
67
- if (!is_array($results) || !isset($results['items']))
68
- return array();
69
- if ($is_autoupdate)
70
- $limit = $this->config('entries_per_page_update');
71
- else
72
- $limit = $this->config('entries_per_page');
73
- $results = array_slice($results['items'], 0, $limit);
74
- return $this->prepareResults($results, $offer_id);
75
- }
76
-
77
- public function prepareResults($results, $offer_id)
78
- {
79
- $data = array();
80
-
81
- foreach ($results as $key => $r)
82
- {
83
- $content = new ContentProduct;
84
- $content->unique_id = $offer_id . '-' . $r['id_item'];
85
- $content->category = $r['categoryId'];
86
- $content->currencyCode = $r['currencyId'];
87
- $content->currency = TextHelper::currencyTyping($content->currencyCode);
88
- $content->title = $r['name'];
89
- $content->priceOld = (float) $r['oldprice'];
90
- $content->price = (float) $r['price'];
91
- $content->img = $r['picture'];
92
- $content->manufacturer = $r['vendor'];
93
- $content->orig_url = $this->parseUrl($r['url']);
94
- $content->url = $this->config('deeplink') . urlencode($content->orig_url);
95
- $content->description = $r['description'];
96
- if ($max_size = $this->config('description_size'))
97
- $content->description = TextHelper::truncate($content->description, $max_size);
98
- $content->extra = new ExtraDataAdmitadProducts;
99
- $content->extra->offer_id = $offer_id;
100
- $content->extra->id_item = $r['id_item'];
101
- ExtraDataAdmitadProducts::fillAttributes($content->extra, $r);
102
-
103
- $data[] = $content;
104
- }
105
- return $data;
106
- }
107
-
108
- public function doRequestItems(array $items)
109
- {
110
- $productsToUpdate = array();
111
- foreach ($items as $item)
112
- {
113
- if (empty($item['extra']['offer_id']) || empty($item['extra']['id_item']) || empty($item['extra']['id']))
114
- continue;
115
- $productsToUpdate[$item['extra']['offer_id']][] = $item['extra']['id_item'];
116
- }
117
-
118
- $client = new AdmitadProducts();
119
- $results = $client->update($productsToUpdate);
120
- if (!is_array($results) || !isset($results[0]['id_item']))
121
- throw new \Exception('doRequestItems request error.');
122
-
123
- // assign new price
124
- foreach ($results as $r)
125
- {
126
- foreach ($items as $key => $item)
127
- {
128
- if ((int) $item['extra']['id_item'] == (int) $r['id_item'])
129
- {
130
- $items[$key]['priceOld'] = (float) $r['oldprice'];
131
- $items[$key]['price'] = (float) $r['price'];
132
- //$items['url'] = $this->config('deeplink') . urlencode($content->orig_url); $content->description = $r['description'];
133
- break;
134
- }
135
- }
136
- }
137
- return $items;
138
- }
139
-
140
- public function renderResults()
141
- {
142
- PluginAdmin::render('_metabox_results', array('module_id' => $this->getId()));
143
- }
144
-
145
- public function renderSearchResults()
146
- {
147
- PluginAdmin::render('_metabox_search_results', array('module_id' => $this->getId()));
148
- }
149
-
150
- private function parseUrl($url)
151
- {
152
- $query = parse_url($url, PHP_URL_QUERY);
153
- parse_str($query, $params);
154
- if (empty($params['ulp']))
155
- throw new \Exception('Invalid product URI');
156
- return $params['ulp'];
157
- }
158
-
159
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/AdmitadProducts/ExtraDataAdmitadProducts.php DELETED
@@ -1,21 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\AdmitadProducts;
4
-
5
- use ContentEgg\application\components\ExtraData;
6
-
7
- /**
8
- * ExtraDataAdmitadProducts class file
9
- *
10
- * @author keywordrush.com <support@keywordrush.com>
11
- * @link http://www.keywordrush.com/
12
- * @copyright Copyright &copy; 2016 keywordrush.com
13
- */
14
- class ExtraDataAdmitadProducts extends ExtraData {
15
-
16
- public $offer_id;
17
- public $id_item;
18
- public $model;
19
- public $param = array();
20
- public $id;
21
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/AdmitadProducts/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/application/modules/AdmitadProducts/templates/data_grid.php DELETED
@@ -1,59 +0,0 @@
1
- <?php
2
- /*
3
- Name: Grid
4
- */
5
-
6
- __('Grid', 'content-egg-tpl');
7
-
8
- use ContentEgg\application\helpers\TemplateHelper;
9
- ?>
10
-
11
- <?php
12
- \wp_enqueue_style('egg-bootstrap');
13
- \wp_enqueue_style('content-egg-products');
14
- ?>
15
-
16
- <div class="egg-container egg-grid">
17
- <?php if ($title): ?>
18
- <h3><?php echo esc_html($title); ?></h3>
19
- <?php endif; ?>
20
-
21
- <div class="container-fluid">
22
- <?php $i = 0; ?>
23
- <?php foreach ($items as $item): ?>
24
-
25
- <a rel="nofollow" target="_blank" href="<?php echo esc_url($item['url']) ?>">
26
- <div class="col-md-4 productbox">
27
- <?php if ($item['percentageSaved']): ?>
28
- <div class="cegg-promotion">
29
- <span class="cegg-discount">- <?php echo round($item['percentageSaved']); ?>%</span>
30
- </div>
31
- <?php endif; ?>
32
-
33
- <?php if ($item['img']): ?>
34
- <img class="img-responsive" src="<?php echo esc_attr($item['img']) ?>" alt="<?php echo esc_attr($item['title']); ?>" />
35
- <?php endif; ?>
36
-
37
- <div class="producttitle">
38
- <?php if ($item['manufacturer']): ?><?php echo esc_html($item['manufacturer']); ?><?php endif; ?>
39
- <span><?php echo esc_html(TemplateHelper::truncate($item['title'], 80)); ?></span>
40
- </div>
41
-
42
- <div class="productprice">
43
- <?php if ($item['price']): ?>
44
- <?php if ($item['priceOld']): ?><strike>
45
- <?php echo TemplateHelper::formatPriceCurrency($item['priceOld'], $item['currencyCode']); ?>
46
- </strike>&nbsp;<?php endif; ?>
47
- <?php echo TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode']); ?>
48
- <?php endif; ?>
49
- </div>
50
- </div>
51
- </a>
52
-
53
- <?php $i++;
54
- if ($i % 3 == 0): ?>
55
- <div class="clearfix"></div>
56
- <?php endif; ?>
57
- <?php endforeach; ?>
58
- </div>
59
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/AdmitadProducts/templates/data_item.php DELETED
@@ -1,77 +0,0 @@
1
- <?php
2
- /*
3
- Name: Product card
4
- */
5
-
6
- __('Product card', 'content-egg-tpl');
7
-
8
- use ContentEgg\application\helpers\TemplateHelper;
9
- ?>
10
-
11
- <?php
12
- \wp_enqueue_style('egg-bootstrap');
13
- \wp_enqueue_style('content-egg-products');
14
- ?>
15
-
16
- <div class="egg-container egg-item">
17
- <?php if ($title): ?>
18
- <h3><?php echo esc_html($title); ?></h3>
19
- <?php endif; ?>
20
-
21
- <div class="products">
22
- <?php foreach ($items as $item): ?>
23
- <div class="row">
24
- <div class="col-md-5">
25
- <?php if ($item['img']): ?>
26
- <a rel="nofollow" target="_blank" href="<?php echo $item['url']; ?>">
27
- <img src="<?php echo $item['img']; ?>" alt="<?php echo esc_attr($item['title']); ?>" class="img-responsive" />
28
- </a>
29
- <?php endif; ?>
30
- </div>
31
- <div class="col-md-7">
32
- <h2 class="media-heading"><?php echo $item['title']; ?><?php if ($item['manufacturer']): ?>, <?php echo esc_html($item['manufacturer']); ?><?php endif; ?></h2>
33
-
34
- <div class="well-lg">
35
-
36
- <div class="row">
37
- <div class="col-md-6">
38
- <?php if ($item['priceOld']): ?>
39
- <span class="text-muted">
40
- <strike>
41
- <?php echo TemplateHelper::formatPriceCurrency($item['priceOld'], $item['currencyCode']); ?>
42
- </strike></span><br>
43
- <?php endif; ?>
44
-
45
- <?php if ($item['price']): ?>
46
- <span class="cegg-price">
47
- <?php echo TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode']); ?>
48
- </span>
49
- <?php endif; ?>
50
- </div>
51
- <div class="col-md-6 text-center text-muted">
52
- <a rel="nofollow" target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-success"><?php _e('BUY THIS ITEM', 'content-egg-tpl'); ?></a>
53
- <?php if (!empty($item['extra']['domain'])): ?>
54
- <br>
55
- <small><?php echo esc_html($item['extra']['domain']); ?></small>
56
- <?php endif; ?>
57
- </div>
58
- </div>
59
-
60
- <?php if ($item['description']): ?>
61
- <p><?php echo $item['description']; ?></p>
62
- <?php endif; ?>
63
-
64
- <?php if ($item['extra']['param']): ?>
65
- <h4><?php _e('Features', 'content-egg-tpl'); ?></h4>
66
- <ul>
67
- <?php foreach ($item['extra']['param'] as $fname => $fvalue): ?>
68
- <li><?php echo '<strong>' . esc_html($fname) . '</strong>' . ': ' . esc_html($fvalue); ?></li>
69
- <?php endforeach; ?>
70
- </ul>
71
- <?php endif; ?>
72
- </div>
73
- </div>
74
- </div>
75
- <?php endforeach; ?>
76
- </div>
77
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/AdmitadProducts/templates/data_list.php DELETED
@@ -1,49 +0,0 @@
1
- <?php
2
- /*
3
- Name: List
4
- */
5
-
6
- __('List', 'content-egg-tpl');
7
-
8
- use ContentEgg\application\helpers\TemplateHelper;
9
- ?>
10
-
11
- <?php
12
- \wp_enqueue_style('egg-bootstrap');
13
- \wp_enqueue_style('content-egg-products');
14
- ?>
15
-
16
- <div class="egg-container egg-list">
17
- <?php if ($title): ?>
18
- <h3><?php echo esc_html($title); ?></h3>
19
- <?php endif; ?>
20
-
21
- <div class="egg-listcontainer">
22
-
23
- <?php foreach ($items as $item): ?>
24
- <div class="row-products">
25
- <div class="col-md-2 col-sm-2 col-xs-12 cegg-image-cell">
26
- <?php if ($item['img']): ?>
27
- <a rel="nofollow" target="_blank" href="<?php echo $item['url']; ?>">
28
- <img src="<?php echo $item['img']; ?>" alt="<?php echo esc_attr($item['title']); ?>" />
29
- </a>
30
- <?php endif; ?>
31
- </div>
32
- <div class="col-md-7 col-sm-7 col-xs-12 cegg-desc-cell">
33
- <a rel="nofollow" target="_blank" href="<?php echo $item['url']; ?>">
34
- <h4><?php echo $item['title']; ?></h4>
35
- </a>
36
- </div>
37
- <div class="col-md-3 col-sm-3 col-xs-12 offer_price cegg-price-cell">
38
- <?php if ($item['priceOld']): ?>
39
- <span class="text-muted"><strike><?php echo TemplateHelper::formatPriceCurrency($item['priceOld'], $item['currencyCode']); ?></strike></span><br>
40
- <?php endif; ?>
41
-
42
- <?php if ($item['price']): ?>
43
- <?php echo TemplateHelper::formatPriceCurrency($item['price'], $item['currencyCode']); ?>
44
- <?php endif; ?>
45
- </div>
46
- </div>
47
- <?php endforeach; ?>
48
- </div>
49
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/AffilinetCoupons/AffilinetCouponsConfig.php DELETED
@@ -1,172 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\AffilinetCoupons;
4
-
5
- use ContentEgg\application\components\AffiliateParserModuleConfig;
6
-
7
- /**
8
- * AffilinetCouponsConfig 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 AffilinetCouponsConfig extends AffiliateParserModuleConfig {
15
-
16
- public function options()
17
- {
18
- $optiosn = array(
19
- 'PublisherId' => array(
20
- 'title' => 'Publisher ID <span class="cegg_required">*</span>',
21
- 'description' => 'Ваш Publisher ID. Вы используете его для логина в affili.net.',
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' => __('Поле "Publisher ID" не может быть пустым.', 'content-egg'),
30
- ),
31
- ),
32
- 'section' => 'default',
33
- ),
34
- 'service_password' => array(
35
- 'title' => 'Publisher Webservice Password <span class="cegg_required">*</span>',
36
- 'description' => __('Ключ для доступа к Publisher Webservice. Найти можно <a href="https://publisher.affili.net/Account/techSettingsPublisherWS.aspx">здесь</a>.', 'content-egg'),
37
- 'callback' => array($this, 'render_input'),
38
- 'default' => '',
39
- 'validator' => array(
40
- 'trim',
41
- array(
42
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'required'),
43
- 'when' => 'is_active',
44
- 'message' => __('Поле "Publisher Webservice Password" не может быть пустым.', 'content-egg'),
45
- ),
46
- ),
47
- 'section' => 'default',
48
- ),
49
- 'entries_per_page' => array(
50
- 'title' => __('Результатов', 'content-egg'),
51
- 'description' => __('Количество результатов для одного поискового запроса.', 'content-egg'),
52
- 'callback' => array($this, 'render_input'),
53
- 'default' => 10,
54
- 'validator' => array(
55
- 'trim',
56
- 'absint',
57
- ),
58
- 'section' => 'default',
59
- ),
60
- 'entries_per_page_update' => array(
61
- 'title' => __('Результатов для обновления', 'content-egg'),
62
- 'description' => __('Количество результатов для автоматического обновления и автоблоггинга.', 'content-egg'),
63
- 'callback' => array($this, 'render_input'),
64
- 'default' => 3,
65
- 'validator' => array(
66
- 'trim',
67
- 'absint',
68
- ),
69
- 'section' => 'default',
70
- ),
71
- 'ProgramId' => array(
72
- 'title' => 'Program ID',
73
- 'description' => 'Only vouchers of this program are returned.',
74
- 'callback' => array($this, 'render_input'),
75
- 'default' => '',
76
- 'validator' => array(
77
- 'trim',
78
- ),
79
- 'section' => 'default',
80
- ),
81
- 'VoucherCodeContent' => array(
82
- 'title' => 'Voucher code',
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
- ),
94
- 'VoucherType' => array(
95
- 'title' => 'Voucher type',
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
- ),
111
- 'MinimumOrderValue' => array(
112
- 'title' => 'Minimum order value',
113
- 'description' => 'Many vouchers can only be used on shopping baskets, which exceed a certain minimum value. When you set this parameter, only those vouchers are returned, which have a minimum order value configured and whose minimum order value don’t exceed this amount.',
114
- 'callback' => array($this, 'render_input'),
115
- 'default' => '',
116
- 'validator' => array(
117
- 'trim',
118
- ),
119
- 'section' => 'default',
120
- ),
121
- 'CustomerRestriction' => array(
122
- 'title' => 'Customer restriction',
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(
134
- 'title' => 'Exclusives only',
135
- 'description' => 'Restrict the returned vouchers to exclusives only.',
136
- 'callback' => array($this, 'render_checkbox'),
137
- 'default' => false,
138
- 'section' => 'default',
139
- ),
140
- 'OrderBy' => array(
141
- 'title' => 'Sort',
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(
156
- 'title' => 'Sort order',
157
- 'description' => '',
158
- 'callback' => array($this, 'render_dropdown'),
159
- 'dropdown_options' => array(
160
- 'false' => 'Ascending',
161
- 'true' => 'Descending',
162
- ),
163
- 'default' => 'true',
164
- 'section' => 'default',
165
- ),
166
- );
167
- $parent = parent::options();
168
- unset($parent['featured_image']);
169
- return array_merge($parent, $optiosn);
170
- }
171
-
172
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/AffilinetCoupons/AffilinetCouponsModule.php DELETED
@@ -1,156 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\AffilinetCoupons;
4
-
5
- use ContentEgg\application\components\AffiliateParserModule;
6
- use ContentEgg\application\libs\affilinet\AffilinetCoupons;
7
- use ContentEgg\application\components\ContentCoupon;
8
- use ContentEgg\application\admin\PluginAdmin;
9
-
10
- /**
11
- * AffilinetCouponsModule class file
12
- *
13
- * @author keywordrush.com <support@keywordrush.com>
14
- * @link http://www.keywordrush.com/
15
- * @copyright Copyright &copy; 2015 keywordrush.com
16
- */
17
- class AffilinetCouponsModule extends AffiliateParserModule {
18
-
19
- private $api_client = null;
20
-
21
- public function info()
22
- {
23
- return array(
24
- 'name' => 'Affilinet Coupons',
25
- 'description' => __('Добавляет купоны партнерской сети Affili.net. Вы должны получить аппрув в каждой программе отдельно.', 'content-egg'),
26
- );
27
- }
28
-
29
- public function defaultTemplateName()
30
- {
31
- return 'coupons';
32
- }
33
-
34
- public function getParserType()
35
- {
36
- return self::PARSER_TYPE_COUPON;
37
- }
38
-
39
- public function isFree()
40
- {
41
- return true;
42
- }
43
-
44
- public function doRequest($keyword, $query_params = array(), $is_autoupdate = false)
45
- {
46
- $options = array();
47
-
48
- if ($is_autoupdate)
49
- $options['PageSize'] = $this->config('entries_per_page_update');
50
- else
51
- $options['PageSize'] = $this->config('entries_per_page');
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', 'CustomerRestriction', 'OrderBy', 'SortDesc');
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
71
- $options['PartnershipStatus'] = 1;
72
- $results = $this->getApiClient()->search($keyword, $options);
73
-
74
- if (!is_array($results) || !isset($results['VoucherCodeCollection']['VoucherCodeItem']))
75
- return array();
76
-
77
- if (!isset($results['VoucherCodeCollection']['VoucherCodeItem'][0]) && isset($results['VoucherCodeCollection']['VoucherCodeItem']['Id']))
78
- $results['VoucherCodeCollection']['VoucherCodeItem'] = array($results['VoucherCodeCollection']['VoucherCodeItem']);
79
- return $this->prepareResults($results['VoucherCodeCollection']['VoucherCodeItem']);
80
- }
81
-
82
- private function prepareResults($results)
83
- {
84
- $data = array();
85
-
86
- foreach ($results as $key => $r)
87
- {
88
- $content = new ContentCoupon;
89
- $content->unique_id = $r['Id'];
90
- $content->title = $r['Title'];
91
- $content->img = 'http://logos.affili.net/120x40/' . $r['ProgramId'] . '.gif';
92
- if ($r['Code'])
93
- $content->code = $r['Code'];
94
- if ($r['Description'])
95
- $content->description = $r['Description'];
96
- if ($r['StartDate'])
97
- $content->startDate = strtotime($r['StartDate']);
98
- if ($r['EndDate'])
99
- $content->endDate = strtotime($r['EndDate']);
100
-
101
- // parse link code html
102
- $doc = new \DOMDocument();
103
- @$doc->loadHTML($r['IntegrationCode']);
104
- if ($images = $doc->getElementsByTagName('img'))
105
- {
106
- // pixel img?
107
- if ($images->item(0)->getAttribute('height') != 1)
108
- $content->img = $images->item(0)->getAttribute('src');
109
- }
110
- if ($links = $doc->getElementsByTagName('a'))
111
- {
112
- $content->url = trim($links->item(0)->getAttribute('href'));
113
- }
114
-
115
- $content->extra = new ExtraDataAffilinetCoupons;
116
- $content->extra->ProgramId = $r['ProgramId'];
117
- $content->extra->VoucherType = $r['VoucherTypes']['VoucherType'];
118
- $content->extra->LastChangeDate = strtotime($r['LastChangeDate']);
119
- $content->extra->IntegrationCode = $r['IntegrationCode'];
120
- $content->extra->IsExclusive = (bool) $r['IsExclusive'];
121
-
122
- if ((float) $r['MinimumOrderValue'])
123
- $content->extra->IsExclusive = (float) $r['MinimumOrderValue'];
124
- $content->extra->CustomerRestriction = $r['CustomerRestriction'];
125
-
126
- $data[] = $content;
127
- }
128
-
129
- return $data;
130
- }
131
-
132
- private function getApiClient()
133
- {
134
- if ($this->api_client === null)
135
- {
136
- $this->api_client = new AffilinetCoupons($this->config('service_password'), $this->config('PublisherId'));
137
- }
138
- return $this->api_client;
139
- }
140
-
141
- public function renderResults()
142
- {
143
- PluginAdmin::render('_metabox_results', array('module_id' => $this->getId()));
144
- }
145
-
146
- public function renderSearchResults()
147
- {
148
- PluginAdmin::render('_metabox_search_results', array('module_id' => $this->getId()));
149
- }
150
-
151
- public function renderSearchPanel()
152
- {
153
- $this->render('search_panel', array('module_id' => $this->getId()));
154
- }
155
-
156
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/AffilinetCoupons/ExtraDataAffilinetCoupons.php DELETED
@@ -1,24 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\AffilinetCoupons;
4
-
5
- use ContentEgg\application\components\ExtraData;
6
-
7
- /**
8
- * ExtraDataAffilinetCoupons 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 ExtraDataAffilinetCoupons extends ExtraData {
15
-
16
- public $ProgramId;
17
- public $VoucherType;
18
- public $LastChangeDate;
19
- public $IntegrationCode;
20
- public $IsExclusive;
21
- public $MinimumOrderValue;
22
- public $CustomerRestriction;
23
- public $logo;
24
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/AffilinetCoupons/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/application/modules/AffilinetCoupons/templates/data_coupons.php DELETED
@@ -1,53 +0,0 @@
1
- <?php
2
- /*
3
- Name: Coupons
4
- */
5
-
6
- __('Coupons', 'content-egg-tpl');
7
-
8
- use ContentEgg\application\helpers\TemplateHelper;
9
- ?>
10
-
11
- <?php
12
- \wp_enqueue_style('egg-bootstrap');
13
- \wp_enqueue_style('content-egg-products');
14
- ?>
15
-
16
- <div class="egg-container">
17
- <?php if ($title): ?>
18
- <h3><?php echo esc_html($title); ?></h3>
19
- <?php endif; ?>
20
-
21
- <div class="egg-listcontainer">
22
- <?php foreach ($items as $item): ?>
23
- <div class="row-products">
24
- <div class="col-md-10 col-sm-10 col-xs-12">
25
-
26
- <strong><?php echo esc_html($item['title']); ?></strong><br>
27
-
28
- <?php if ($item['description']): ?>
29
- <div class="small"><?php echo $item['description']; ?></div>
30
- <?php endif; ?>
31
-
32
- <div class="row<?php if ($item['code']) echo ' egg-padding-top15'; ?>">
33
- <div class="col-md-8 col-sm-8 col-xs-12">
34
- <?php if ($item['code']): ?>
35
- <?php _e('Coupon code:', 'content-egg-tpl'); ?>
36
- <span class="label label-info"><?php echo esc_html($item['code']); ?></span><br>
37
- <span class="text-muted"><em><?php _e('Ends:', 'content-egg-tpl'); ?> <?php echo date(get_option('date_format'), $item['endDate']); ?></em></span>
38
- <?php endif; ?>
39
- </div>
40
- <div class="col-md-4 col-sm-4 col-xs-12 text-right text-muted">
41
- <img width="80" src="<?php echo esc_attr($item['img']);?>" />
42
- </div>
43
- </div>
44
- </div>
45
- <div class="col-md-2 col-sm-2 col-xs-12 text-center">
46
- <a rel="nofollow" target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-success"><?php _e('Shop Sale', 'content-egg-tpl'); ?></a>
47
- </div>
48
- </div>
49
- <?php endforeach; ?>
50
- </div>
51
-
52
-
53
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/AffilinetCoupons/views/search_panel.php DELETED
@@ -1,15 +0,0 @@
1
- <select ng-model="query_params.<?php echo $module_id; ?>.VoucherType">
2
- <option value="-1">Any voucher type</option>
3
- <option value="0">All products</option>
4
- <option value="1">Specific products</option>
5
- <option value="2">Multi buy discount</option>
6
- <option value="3">Free shipping</option>
7
- <option value="4">Free product</option>
8
- <option value="5">Competition</option>
9
- </select>
10
-
11
- <select ng-model="query_params.<?php echo $module_id; ?>.VoucherCodeContent">
12
- <option value="0">Any code content</option>
13
- <option value="1">Empty</option>
14
- <option value="2">Filled</option>
15
- </select>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Amazon/AmazonConfig.php DELETED
@@ -1,348 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\Amazon;
4
-
5
- use ContentEgg\application\components\AffiliateParserModuleConfig;
6
- use ContentEgg\application\admin\GeneralConfig;
7
-
8
- /**
9
- * AmazonConfig class file
10
- *
11
- * @author keywordrush.com <support@keywordrush.com>
12
- * @link http://www.keywordrush.com/
13
- * @copyright Copyright &copy; 2015 keywordrush.com
14
- */
15
- class AmazonConfig extends AffiliateParserModuleConfig {
16
-
17
- public function options()
18
- {
19
- $options = array(
20
- 'access_key_id' => array(
21
- 'title' => 'Access Key ID <span class="cegg_required">*</span>',
22
- 'description' => __('Специальный ключ для доступа к Amazon API.', 'content-egg'),
23
- 'callback' => array($this, 'render_input'),
24
- 'default' => '',
25
- 'validator' => array(
26
- 'trim',
27
- array(
28
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'required'),
29
- 'when' => 'is_active',
30
- 'message' => __('Поле "Access Key ID" не может быть пустым.', 'content-egg'),
31
- ),
32
- ),
33
- 'section' => 'default',
34
- ),
35
- 'secret_access_key' => array(
36
- 'title' => 'Secret Access Key <span class="cegg_required">*</span>',
37
- 'description' => __('Еще один специальный ключ для доступа к Amazon API.', 'content-egg'),
38
- 'callback' => array($this, 'render_input'),
39
- 'default' => '',
40
- 'validator' => array(
41
- 'trim',
42
- array(
43
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'required'),
44
- 'when' => 'is_active',
45
- 'message' => __('Поле "Secret Access Key" не может быть пустым.', 'content-egg'),
46
- ),
47
- ),
48
- 'section' => 'default',
49
- ),
50
- 'associate_tag' => array(
51
- 'title' => __('Tracking ID по-умолчанию', 'content-egg') . ' <span class="cegg_required">*</span>',
52
- 'description' => __('Связь с вашим аккаунтом в партнерской программе. Чтобы получать комиссию от продаж, правильно укажите этот параметр.', 'content-egg') . ' ' .
53
- __('Tracking ID должен соотвествовать установке локали по-умолчанию.', 'content-egg') . ' ' .
54
- __('Ниже вы можете задать значения Tracking ID для остальных локалей, если хотите добавить товары более чем с одной локали.', 'content-egg'),
55
- 'callback' => array($this, 'render_input'),
56
- 'default' => '',
57
- 'validator' => array(
58
- 'trim',
59
- array(
60
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'required'),
61
- 'when' => 'is_active',
62
- 'message' => __('Поле "Tracking ID" не может быть пустым.', 'content-egg'),
63
- ),
64
- ),
65
- 'section' => 'default',
66
- 'metaboxInit' => true,
67
- ),
68
- 'locale' => array(
69
- 'title' => __('Локаль по-умолчанию', 'content-egg'),
70
- 'description' => __('Локаль/сайт amazon. Для каждой локали необходима отдельная регистрация в соответствующей партнерской программе.', 'content-egg'),
71
- 'callback' => array($this, 'render_dropdown'),
72
- 'dropdown_options' => self::getLocalesList(),
73
- 'default' => self::getDefaultLocale(),
74
- 'section' => 'default',
75
- ),
76
- 'entries_per_page' => array(
77
- 'title' => __('Результатов', 'content-egg'),
78
- 'description' => __('Количество результатов для одного поискового запроса.', 'content-egg') . ' ' .
79
- __('Получение более 10 результатов потребует дополнительное время на запрос данных.', 'content-egg'),
80
- 'callback' => array($this, 'render_input'),
81
- 'default' => 10,
82
- 'validator' => array(
83
- 'trim',
84
- 'absint',
85
- array(
86
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
87
- 'arg' => 50, // The value you specified for ItemPage is invalid. Valid values must be between 1 and 5.
88
- 'message' => __('Поле "Результатов" не может быть больше 50.', 'content-egg'),
89
- ),
90
- ),
91
- 'section' => 'default',
92
- ),
93
- 'entries_per_page_update' => array(
94
- 'title' => __('Результатов для обновления', 'content-egg'),
95
- 'description' => __('Количество результатов для автоматического обновления и автоблоггинга.', 'content-egg') . ' ' .
96
- __('Получение более 10 результатов потребует дополнительное время на запрос данных.', 'content-egg'),
97
- 'callback' => array($this, 'render_input'),
98
- 'default' => 3,
99
- 'validator' => array(
100
- 'trim',
101
- 'absint',
102
- array(
103
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
104
- 'arg' => 50,
105
- 'message' => __('Поле "Результатов" не может быть больше 50.', 'content-egg'),
106
- ),
107
- ),
108
- 'section' => 'default',
109
- ),
110
- 'link_type' => array(
111
- 'title' => __('Вид ссылок', 'content-egg'),
112
- 'description' => __('Вид партнерских ссылок. Узнайте больше про amazon <a target="_blank" href="https://affiliate-program.amazon.com/gp/associates/help/t2/a11">90 day cookie</a>.', 'content-egg'),
113
- 'callback' => array($this, 'render_dropdown'),
114
- 'dropdown_options' => array(
115
- 'product' => 'Product page',
116
- 'add_to_cart' => 'Add to cart',
117
- ),
118
- 'default' => 'product',
119
- 'section' => 'default',
120
- ),
121
- 'search_index' => array(
122
- 'title' => __('Категория для поиска', 'content-egg'),
123
- 'description' => __('Список категорий для US Amazon. Для локальных филиалов некоторые категории могут быть недоступны. Если Вы не зададите категорию для поиска, то никакие другие опции фильтрации кроме поиска по ключевому слову (например, минимальная цена или сортировка) работать не будут.', 'content-egg'),
124
- 'callback' => array($this, 'render_dropdown'),
125
- 'dropdown_options' => array('All' => '[ All ]', 'Blended' => '[ Blended ]', 'Music' => '[ Music ]', 'Video' => '[ Video ]', 'Apparel' => 'Apparel', 'Automotive' => 'Automotive', 'Baby' => 'Baby', 'Beauty' => 'Beauty', 'Books' => 'Books', 'Classical' => 'Classical', 'DigitalMusic' => 'DigitalMusic', 'DVD' => 'DVD', 'Electronics' => 'Electronics', 'GourmetFood' => 'GourmetFood', 'Grocery' => 'Grocery', 'HealthPersonalCare' => 'HealthPersonalCare', 'HomeGarden' => 'HomeGarden', 'Industrial' => 'Industrial', 'Jewelry' => 'Jewelry', 'KindleStore' => 'KindleStore', 'Kitchen' => 'Kitchen', 'Magazines' => 'Magazines', 'Merchants' => 'Merchants', 'Miscellaneous' => 'Miscellaneous', 'MP3Downloads' => 'MP3Downloads', 'MusicalInstruments' => 'MusicalInstruments', 'MusicTracks' => 'MusicTracks', 'OfficeProducts' => 'OfficeProducts', 'OutdoorLiving' => 'OutdoorLiving', 'PCHardware' => 'PCHardware', 'PetSupplies' => 'PetSupplies', 'Photo' => 'Photo', 'Shoes' => 'Shoes', 'Software' => 'Software', 'SportingGoods' => 'SportingGoods', 'Tools' => 'Tools', 'Toys' => 'Toys', 'UnboxVideo' => 'UnboxVideo', 'VHS' => 'VHS', 'VideoGames' => 'VideoGames', 'Watches' => 'Watches', 'Wireless' => 'Wireless', 'WirelessAccessories' => 'WirelessAccessories'),
126
- 'default' => 'All',
127
- 'section' => 'default',
128
- ),
129
- 'sort' => array(
130
- 'title' => __('Порядок сортировки', 'content-egg'),
131
- 'description' => __('Варианты сортировки зависят от locale и выбранной категории. Список доступных значений можно найти <a href="http://docs.amazonwebservices.com/AWSECommerceService/latest/DG/index.html?APPNDX_SortValuesArticle.html">здесь</a>.', 'content-egg'),
132
- 'callback' => array($this, 'render_input'),
133
- 'default' => '',
134
- 'validator' => array(
135
- 'trim',
136
- ),
137
- 'section' => 'default',
138
- ),
139
- 'brouse_node' => array(
140
- 'title' => __('Brouse node', 'content-egg'),
141
- 'description' => __('Целочисленное ID "узла" на amazon. Поиск будет произведен только в этом "узле".', 'content-egg'),
142
- 'callback' => array($this, 'render_input'),
143
- 'default' => '',
144
- 'validator' => array(
145
- 'trim',
146
- ),
147
- 'section' => 'default',
148
- ),
149
- 'title' => array(
150
- 'title' => __('Поиск в названии', 'content-egg'),
151
- 'description' => __('Поиск будет произведет только по названиям товаров.', 'content-egg'),
152
- 'callback' => array($this, 'render_checkbox'),
153
- 'default' => false,
154
- 'section' => 'default',
155
- ),
156
- 'merchant_id' => array(
157
- 'title' => __('Только Amazon', 'content-egg'),
158
- 'description' => __('Выбрать товары, которые продает Amazon. Другие продавцы исключаются из поиска.', 'content-egg'),
159
- 'callback' => array($this, 'render_checkbox'),
160
- 'default' => false,
161
- 'section' => 'default',
162
- ),
163
- 'minimum_price' => array(
164
- 'title' => __('Минимальная цена', 'content-egg'),
165
- 'description' => __('Например, 8.99', 'content-egg'),
166
- 'callback' => array($this, 'render_input'),
167
- 'default' => '',
168
- 'validator' => array(
169
- 'trim',
170
- ),
171
- 'section' => 'default',
172
- ),
173
- 'maximum_price' => array(
174
- 'title' => __('Максимальная цена', 'content-egg'),
175
- 'description' => __('Например, 98.50', 'content-egg'),
176
- 'callback' => array($this, 'render_input'),
177
- 'default' => '',
178
- 'validator' => array(
179
- 'trim',
180
- ),
181
- 'section' => 'default',
182
- ),
183
- 'min_percentage_off' => array(
184
- 'title' => __('Минимальная скидка', 'content-egg'),
185
- 'description' => __('Выбрать товары со скидкой. Обязательно должна быть задана категория. Обратите внимание, эта опция работает не для всех категорий.', 'content-egg'),
186
- 'callback' => array($this, 'render_dropdown'),
187
- 'dropdown_options' => array(
188
- '' => __('Неважно', 'content-egg'),
189
- '5%' => '5%',
190
- '10%' => '10%',
191
- '15%' => '15%',
192
- '20%' => '20%',
193
- '25%' => '25%',
194
- '30%' => '30%',
195
- '35%' => '35%',
196
- '40%' => '40%',
197
- '45%' => '45%',
198
- '50%' => '50%',
199
- '60%' => '60%',
200
- '70%' => '70%',
201
- '80%' => '80%',
202
- '90%' => '90%',
203
- '95%' => '95%',
204
- ),
205
- 'default' => '',
206
- 'section' => 'default',
207
- 'metaboxInit' => true,
208
- ),
209
- 'customer_reviews' => array(
210
- 'title' => __('Отзывы покупателей', 'content-egg'),
211
- 'description' => __('Получить отзывы покупателей. Отзывы будут показаны в iframe. iframe URL валидный 24 часа, используйте функцию автообноления, чтобы держать URL в актуальном состоянии.', 'content-egg'),
212
- 'callback' => array($this, 'render_checkbox'),
213
- 'default' => false,
214
- 'section' => 'default',
215
- ),
216
- /*
217
- 'customer_reviews_iframe' => array(
218
- 'title' => __('Отзывы в iframe.', 'content-egg'),
219
- 'description' => __('Показывать отзывы покупателей в iframe с amazon (отключение этой опции, возможно, нарушает правила партнерской программы amazon).', 'content-egg'),
220
- 'callback' => array($this, 'render_checkbox'),
221
- 'default' => true,
222
- 'section' => 'default',
223
- ),
224
- */
225
- 'truncate_reviews_at' => array(
226
- 'title' => __('Обрезать отзывы', 'content-egg'),
227
- 'description' => __('Количество символов для одного отзыва. 0 - максимально возможная длина текста.', 'content-egg'),
228
- 'callback' => array($this, 'render_input'),
229
- 'default' => 500,
230
- 'validator' => array(
231
- 'trim',
232
- 'absint',
233
- ),
234
- 'section' => 'default',
235
- ),
236
- /*
237
- 'review_products_number' => array(
238
- 'title' => __('Товар с отзывами', 'content-egg'),
239
- 'description' => __('Отзывы только для заданного количества товаров.', 'content-egg'),
240
- 'callback' => array($this, 'render_input'),
241
- 'default' => 1,
242
- 'validator' => array(
243
- 'trim',
244
- 'absint',
245
- ),
246
- 'section' => 'default',
247
- ),
248
- *
249
- */
250
- 'editorial_reviews' => array(
251
- 'title' => __('Парсить отписание', 'content-egg'),
252
- 'description' => __('Парсить описание товаров от продавца.', 'content-egg'),
253
- 'callback' => array($this, 'render_checkbox'),
254
- 'default' => false,
255
- 'section' => 'default',
256
- ),
257
- 'editorial_reviews_type' => array(
258
- 'title' => __('Вид описания', 'content-egg'),
259
- 'description' => '',
260
- 'callback' => array($this, 'render_dropdown'),
261
- 'dropdown_options' => array(
262
- 'allow_all' => __('Как на Amazon', 'content-egg'),
263
- 'safe_html' => __('Безопасный HTML', 'content-egg'),
264
- 'allowed_tags' => __('Только разрешенные теги HTML', 'content-egg'),
265
- 'text' => __('Только текст', 'content-egg'),
266
- ),
267
- 'default' => 'All',
268
- 'section' => 'default',
269
- ),
270
- 'editorial_reviews_size' => array(
271
- 'title' => __('Размер описания', 'content-egg'),
272
- 'description' => __('Максимальный размер описания товара. 0 - не обрезать.', 'content-egg'),
273
- 'callback' => array($this, 'render_input'),
274
- 'default' => 1000,
275
- 'validator' => array(
276
- 'trim',
277
- 'absint',
278
- ),
279
- 'section' => 'default',
280
- ),
281
- 'https_img' => array(
282
- 'title' => __('Картинки через https', 'content-egg'),
283
- 'description' => __('Перезаписать адреса картинок через https протокол. Включите эту опцию, если вы используете SSL сертификат на своем домене.', 'content-egg'),
284
- 'callback' => array($this, 'render_checkbox'),
285
- 'default' => false,
286
- 'section' => 'default',
287
- ),
288
- 'save_img' => array(
289
- 'title' => __('Сохранять картинки', 'content-egg'),
290
- 'description' => __('Сохранять картинки на сервер.', 'content-egg') . ' ' . __('Включение этой опции возможно нарушает правила API. Используйте на свой страх и риск.', 'content-egg'),
291
- 'callback' => array($this, 'render_checkbox'),
292
- 'default' => false,
293
- 'section' => 'default',
294
- ),
295
- );
296
-
297
- foreach (self::getLocalesList() as $locale_id => $locale_name)
298
- {
299
- $options['associate_tag_' . $locale_id] = array(
300
- 'title' => sprintf(__('Tracking ID для %s локали', 'content-egg'), $locale_name),
301
- 'description' => __('Задайте, если хотите добавлять товары с соответствующего amazon сайта (локали).', 'content-egg'),
302
- 'callback' => array($this, 'render_input'),
303
- 'default' => '',
304
- 'validator' => array(
305
- 'trim',
306
- ),
307
- 'metaboxInit' => true,
308
- );
309
- }
310
-
311
- $parent = parent::options();
312
- $parent['ttl_items']['default'] = 86400;
313
- return array_merge($parent, $options);
314
- }
315
-
316
- public static function getLocalesList()
317
- {
318
- return array('us' => 'US', 'uk' => 'UK', 'de' => 'DE', 'jp' => 'JP', 'cn' => 'CN', 'fr' => 'FR', 'it' => 'IT', 'es' => 'ES', 'ca' => 'CA', 'br' => 'BR', 'in' => 'IN');
319
- }
320
-
321
- public static function getDefaultLocale()
322
- {
323
- $lang = GeneralConfig::getInstance()->option('lang');
324
- if (array_key_exists($lang, self::getLocalesList()))
325
- return $lang;
326
- else
327
- return 'us';
328
- }
329
-
330
- public static function getActiveLocalesList()
331
- {
332
- $locales = self::getLocalesList();
333
- $active = array();
334
-
335
- $default = self::getInstance()->option('locale');
336
- $active[$default] = $locales[$default];
337
-
338
- foreach ($locales as $locale => $name)
339
- {
340
- if ($locale == $default)
341
- continue;
342
- if (self::getInstance()->option('associate_tag_' . $locale))
343
- $active[$locale] = $name;
344
- }
345
- return $active;
346
- }
347
-
348
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Amazon/AmazonModule.php DELETED
@@ -1,598 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\Amazon;
4
-
5
- use ContentEgg\application\components\AffiliateParserModule;
6
- use ContentEgg\application\libs\amazon\AmazonProduct;
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
14
- *
15
- * @author keywordrush.com <support@keywordrush.com>
16
- * @link http://www.keywordrush.com/
17
- * @copyright Copyright &copy; 2015 keywordrush.com
18
- */
19
- class AmazonModule extends AffiliateParserModule {
20
-
21
- private $api_client = null;
22
-
23
- public function info()
24
- {
25
- return array(
26
- 'name' => 'Amazon',
27
- 'api_agreement' => 'https://affiliate-program.amazon.com/gp/advertising/api/detail/agreement.html',
28
- 'description' => __('Добавляет товары amazon.', 'content-egg'),
29
- );
30
- }
31
-
32
- public function getParserType()
33
- {
34
- return self::PARSER_TYPE_PRODUCT;
35
- }
36
-
37
- public function defaultTemplateName()
38
- {
39
- return 'data_item';
40
- }
41
-
42
- public function isItemsUpdateAvailable()
43
- {
44
- return true;
45
- }
46
-
47
- public function isFree()
48
- {
49
- return true;
50
- }
51
-
52
- public function doRequest($keyword, $query_params = array(), $is_autoupdate = false)
53
- {
54
- $options = array();
55
-
56
- $search_index = $this->config('search_index');
57
- // Если не задана категория для поиска, то все остальные опции фильтрации работать не будут!
58
- if ($search_index != 'All' && $search_index != 'Blended')
59
- {
60
- if ($this->config('title'))
61
- $options['Title'] = $keyword;
62
- else
63
- $options['Keywords'] = $keyword;
64
-
65
- $options['Sort'] = $this->config('sort');
66
- if ((int) $this->config('brouse_node'))
67
- $options['BrowseNode'] = (int) $this->config('brouse_node');
68
-
69
- // Specifies the minimum price of the items to return. Prices are in
70
- // terms of the lowest currency denomination, for example, pennies,
71
- // for example, 3241 represents $32.41.
72
- if ($this->config('minimum_price'))
73
- $options['MinimumPrice'] = TextHelper::pricePenniesDenomination($this->config('minimum_price'));
74
- if ($this->config('maximum_price'))
75
- $options['MaximumPrice'] = TextHelper::pricePenniesDenomination($this->config('maximum_price'));
76
-
77
- // Specifies the minimum percentage off for the items to return.
78
- // @link: http://docs.aws.amazon.com/AWSECommerceService/latest/DG/LocaleUS.html
79
- if ($query_params['min_percentage_off'])
80
- $options['MinPercentageOff'] = (int) $query_params['min_percentage_off'];
81
- elseif ($this->config('min_percentage_off'))
82
- $options['MinPercentageOff'] = (int) $this->config('min_percentage_off');
83
- } else
84
- $options['Keywords'] = $keyword; // Для категории "All" работает только поиск по ключевому слову
85
-
86
- if ($this->config('merchant_id'))
87
- $options['MerchantId'] = "Amazon";
88
-
89
- $options['ResponseGroup'] = 'ItemIds,Offers,ItemAttributes,Images';
90
-
91
- // Customer Reviews
92
- if ($this->config('customer_reviews'))
93
- {
94
- $options['ResponseGroup'] .= ',Reviews';
95
- $options['TruncateReviewsAt'] = $this->config('truncate_reviews_at');
96
- //$options['ReviewSort'] = $this->config('review_sort');
97
- $options['IncludeReviewsSummary'] = true;
98
- }
99
- // Editorial Reviews
100
- if ($this->config('editorial_reviews'))
101
- {
102
- $options['ResponseGroup'] .= ',EditorialReview';
103
- }
104
-
105
- // locale
106
- if (!empty($query_params['locale']) && array_key_exists($query_params['locale'], AmazonConfig::getActiveLocalesList()))
107
- $locale = $query_params['locale'];
108
- else
109
- $locale = $this->config('locale');
110
-
111
- // associate tag
112
- if (!empty($query_params['associate_tag']) && $query_params['associate_tag'])
113
- $associate_tag = $query_params['associate_tag'];
114
- else
115
- $associate_tag = $this->getAssociateTagForLocale($locale);
116
-
117
- // api client
118
- $client = $this->getAmazonClient();
119
- $client->setLocale($locale);
120
- $client->setAssociateTag($associate_tag);
121
-
122
- // Paging Through Results
123
- // @link: http://docs.aws.amazon.com/AWSECommerceService/latest/DG/PagingThroughResults.html
124
- if ($is_autoupdate)
125
- $total = $this->config('entries_per_page_update');
126
- else
127
- $total = $this->config('entries_per_page');
128
-
129
- $pages_count = ceil($total / 10);
130
- $results = array();
131
-
132
- for ($i = 0; $i < $pages_count; $i++)
133
- {
134
- $options['ItemPage'] = $i + 1;
135
- $data = $client->ItemSearch($this->config('search_index'), $options);
136
- if (!is_array($data))
137
- break;
138
-
139
- $totalPages = (int) $data['Items']['TotalPages'];
140
- $data = array_slice($data['Items']['Item'], 0, $total - count($results));
141
- $results = array_merge($results, $this->prepareResults($data, $is_autoupdate, $locale, $associate_tag));
142
- if ($totalPages <= $i + 1)
143
- break;
144
- }
145
- return $results;
146
- }
147
-
148
- public function doRequestItems(array $items)
149
- {
150
- $locales = array();
151
- $default_locale = $this->config('locale');
152
-
153
- $items = self::fixUniqueIds($items);
154
-
155
- // find all locales
156
- foreach ($items as $item)
157
- {
158
- if (!empty($item['extra']['locale']))
159
- $locale = $item['extra']['locale'];
160
- else
161
- {
162
- $locale = $default_locale;
163
- $item['extra']['locale'] = $locale;
164
- }
165
-
166
- if (!in_array($locale, $locales))
167
- $locales[] = $locale;
168
- }
169
-
170
- // request by locale
171
- $results = array();
172
- foreach ($locales as $locale)
173
- {
174
- $request = array();
175
- foreach ($items as $item)
176
- {
177
- if ($item['extra']['locale'] == $locale)
178
- $request[] = $item;
179
- }
180
- $results = array_merge($results, $this->requestItems($request, $locale));
181
- }
182
-
183
- // assign new data
184
- foreach ($items as $key => $item)
185
- {
186
- if (isset($results[$item['unique_id']]))
187
- $items[$key] = $results[$item['unique_id']];
188
- }
189
-
190
- return $items;
191
- }
192
-
193
- private function requestItems(array $items, $locale)
194
- {
195
- $options = array();
196
-
197
- $item_ids = array();
198
- foreach ($items as $item)
199
- {
200
- $item_ids[] = $item['extra']['ASIN'];
201
- }
202
-
203
- $options['ResponseGroup'] = 'Offers';
204
-
205
- // update iframe url for customer reviews
206
- //if ($this->config('customer_reviews') && $this->config('customer_reviews_iframe'))
207
- if ($this->config('customer_reviews'))
208
- {
209
- $options['ResponseGroup'] .= ',Reviews';
210
- $options['TruncateReviewsAt'] = $this->config('truncate_reviews_at');
211
- $options['IncludeReviewsSummary'] = true;
212
- }
213
-
214
- // associate tag
215
- $associate_tag = $this->getAssociateTagForLocale($locale);
216
-
217
- // api client
218
- $client = $this->getAmazonClient();
219
- $client->setLocale($locale);
220
- $client->setAssociateTag($associate_tag);
221
-
222
- $results = $client->ItemLookup($item_ids, $options);
223
-
224
- if (!isset($results['Items']))
225
- throw new \Exception('ItemLookup request error.');
226
-
227
- $results = $results['Items']['Item'];
228
-
229
- $i = 0;
230
- $return = array();
231
- foreach ($items as $key => $item)
232
- {
233
- if ($item['extra']['ASIN'] != $results[$i]['ASIN'])
234
- continue;
235
-
236
- // offer
237
- $items[$key] = self::fillOfferVars($results[$i], $item, $item['extra']);
238
- if (!empty($results[$i]['CustomerReviews']))
239
- {
240
- $items[$key]['extra']['customerReviews'] = (array) new ExtraAmazonCustomerReviews;
241
- $items[$key]['extra']['customerReviews'] = ExtraData::fillAttributes($items[$key]['extra']['customerReviews'], $results[$i]['CustomerReviews']);
242
- }
243
-
244
- $return[$item['unique_id']] = $items[$key];
245
- $i++;
246
- }
247
-
248
- return $return;
249
- }
250
-
251
- private function prepareResults($results, $is_autoupdate, $locale, $associate_tag)
252
- {
253
- $data = array();
254
- foreach ($results as $key => $r)
255
- {
256
- $content = new ContentProduct;
257
- $extra = new ExtraDataAmazon;
258
- ExtraData::fillAttributes($extra, $r);
259
- $extra->locale = $locale;
260
- $extra->associate_tag = $associate_tag;
261
-
262
- if (isset($r['ItemLinks']) && isset($r['ItemLinks']['ItemLink']))
263
- {
264
- foreach ($r['ItemLinks']['ItemLink'] as $link_r)
265
- {
266
- $link = new ExtraAmazonItemLinks;
267
- ExtraData::fillAttributes($link, $link_r);
268
- $extra->itemLinks[] = $link;
269
- }
270
- }
271
-
272
- if (!empty($r['ImageSets']) && !empty($r['ImageSets']['ImageSet']))
273
- {
274
- if (!isset($r['ImageSets']['ImageSet'][0]))
275
- $r['ImageSets'] = array($r['ImageSets']['ImageSet']);
276
- else
277
- $r['ImageSets'] = $r['ImageSets']['ImageSet'];
278
-
279
-
280
- foreach ($r['ImageSets'] as $image_r)
281
- {
282
- $image = new ExtraAmazonImageSet;
283
- $image->attributes = $image_r['@attributes'];
284
- $image->SwatchImage = $this->rewriteSslImageUrl($image_r['SwatchImage']['URL']);
285
- $image->SmallImage = $this->rewriteSslImageUrl($image_r['SmallImage']['URL']);
286
- $image->ThumbnailImage = $this->rewriteSslImageUrl($image_r['ThumbnailImage']['URL']);
287
- $image->TinyImage = $this->rewriteSslImageUrl($image_r['TinyImage']['URL']);
288
- $image->MediumImage = $this->rewriteSslImageUrl($image_r['MediumImage']['URL']);
289
- $image->LargeImage = $this->rewriteSslImageUrl($image_r['LargeImage']['URL']);
290
- $extra->imageSet[] = $image;
291
- }
292
- }
293
-
294
- if (isset($r['ItemAttributes']['Feature']) && !is_array($r['ItemAttributes']['Feature']))
295
- $r['ItemAttributes']['Feature'] = array($r['ItemAttributes']['Feature']);
296
-
297
- $extra->itemAttributes = new ExtraAmazonItemAttributes;
298
- ExtraData::fillAttributes($extra->itemAttributes, $r['ItemAttributes']);
299
-
300
- if (isset($r['ItemAttributes']['Category']))
301
- $content->category = $r['ItemAttributes']['Category'];
302
- if (isset($r['ItemAttributes']['Manufacturer']))
303
- $content->manufacturer = $r['ItemAttributes']['Manufacturer'];
304
- if (isset($r['ItemAttributes']['Author']))
305
- $extra->author = $r['ItemAttributes']['Author'];
306
-
307
- // Offers
308
- self::fillOfferVars($r, $content, $extra);
309
-
310
- if (isset($r['CustomerReviews']))
311
- {
312
- $extra->customerReviews = new ExtraAmazonCustomerReviews;
313
- ExtraData::fillAttributes($extra->customerReviews, $r['CustomerReviews']);
314
- }
315
-
316
- // Editorial Reviews
317
- if (isset($r['EditorialReviews']['EditorialReview']))
318
- {
319
- if (!isset($r['EditorialReviews']['EditorialReview'][0]))
320
- $r['EditorialReviews']['EditorialReview'] = array($r['EditorialReviews']['EditorialReview']);
321
-
322
- foreach ($r['EditorialReviews']['EditorialReview'] as $editorialReview_r)
323
- {
324
- $editorialReview = new ExtraAmazonEditorialReviews;
325
- ExtraData::fillAttributes($editorialReview, $editorialReview_r);
326
-
327
- // safe html
328
- $editorialReview->Content = TextHelper::safeHtml($editorialReview->Content, $this->config('editorial_reviews_type'));
329
-
330
- //размер
331
- if ($this->config('editorial_reviews_size'))
332
- {
333
- $editorialReview->Content = TextHelper::truncateHtml($editorialReview->Content, $this->config('editorial_reviews_size'));
334
- }
335
- $extra->editorialReviews[] = $editorialReview;
336
- }
337
- }
338
-
339
- // Заполняем стандартные поля: title, description, url, price
340
- // все остальные данные в extra
341
-
342
- $content->url = urldecode($r['DetailPageURL']); // urldecode???
343
-
344
- if (isset($r['ItemAttributes']['Title']))
345
- $content->title = $r['ItemAttributes']['Title'];
346
-
347
- //MediumImage может и не быть, а только ImageSets, тогда берем картинки с ImageSets
348
- if (isset($r['MediumImage']))
349
- {
350
- $extra->smallImage = $r['SmallImage']['URL'];
351
- $extra->mediumImage = $r['MediumImage']['URL'];
352
- $extra->largeImage = $r['LargeImage']['URL'];
353
- } elseif (!empty($r['ImageSets']))
354
- {
355
- $extra->smallImage = $r['ImageSets'][0]['SmallImage']['URL'];
356
- $extra->mediumImage = $r['ImageSets'][0]['MediumImage']['URL'];
357
- $extra->largeImage = $r['ImageSets'][0]['LargeImage']['URL'];
358
- }
359
-
360
- if (isset($r['LargeImage']))
361
- $content->img = $r['LargeImage']['URL'];
362
- elseif ($extra->largeImage)
363
- $content->img = $extra->largeImage;
364
-
365
- if (!$this->config('save_img'))
366
- {
367
- $content->img = $this->rewriteSslImageUrl($content->img);
368
- }
369
-
370
- $extra->addToCartUrl = $this->getAmazonAddToCartUrl($locale) .
371
- '?ASIN.1=' . $extra->ASIN . '&Quantity.1=1' .
372
- '&AssociateTag=' . $this->getAssociateTagForLocale($locale);
373
-
374
- if ($this->config('link_type') == 'add_to_cart')
375
- {
376
- $content->orig_url = $content->url;
377
- $content->url = $extra->addToCartUrl;
378
- }
379
-
380
- $content->extra = $extra;
381
-
382
- $content->unique_id = $locale . '-' . $extra->ASIN;
383
-
384
- $data[] = $content;
385
- }
386
- return $data;
387
- }
388
-
389
- private function getAmazonClient()
390
- {
391
- if ($this->api_client === null)
392
- {
393
- $access_key_id = $this->config('access_key_id');
394
- $secret_access_key = $this->config('secret_access_key');
395
- $associate_tag = $this->config('associate_tag');
396
- $this->api_client = new AmazonProduct($access_key_id, $secret_access_key, $associate_tag);
397
- //$this->api_client->setLocale($this->config('locale'));
398
- }
399
- return $this->api_client;
400
- }
401
-
402
- static private function fillOfferVars($r, $content, $extra)
403
- {
404
- // dirty tricks with object2array conversation for doRequestItems
405
- $return_array = false;
406
- if (!is_object($content))
407
- {
408
- $return_array = true;
409
- unset($content['extra']);
410
- $content = json_decode(json_encode($content), FALSE);
411
- $extra = json_decode(json_encode($extra), FALSE);
412
- }
413
-
414
- // OfferSummary
415
- if (isset($r['OfferSummary']))
416
- {
417
- if (!empty($r['OfferSummary']['LowestNewPrice']) && isset($r['OfferSummary']['LowestNewPrice']['Amount']))
418
- $extra->lowestNewPrice = TextHelper::pricePenniesDenomination($r['OfferSummary']['LowestNewPrice']['Amount'], false);
419
- if (!empty($r['OfferSummary']['LowestUsedPrice']) && isset($r['OfferSummary']['LowestUsedPrice']['Amount']))
420
- $extra->lowestUsedPrice = TextHelper::pricePenniesDenomination($r['OfferSummary']['LowestUsedPrice']['Amount'], false);
421
- if (!empty($r['OfferSummary']['LowestCollectiblePrice']) && isset($r['OfferSummary']['LowestCollectiblePrice']['Amount']))
422
- $extra->lowestCollectiblePrice = TextHelper::pricePenniesDenomination($r['OfferSummary']['LowestCollectiblePrice']['Amount'], false);
423
- if (!empty($r['OfferSummary']['LowestRefurbishedPrice']) && isset($r['OfferSummary']['LowestRefurbishedPrice']['Amount']))
424
- $extra->lowestRefurbishedPrice = TextHelper::pricePenniesDenomination($r['OfferSummary']['LowestRefurbishedPrice']['Amount'], false);
425
- $extra->totalNew = (int) $r['OfferSummary']['TotalNew'];
426
- $extra->totalUsed = (int) $r['OfferSummary']['TotalUsed'];
427
- $extra->totalCollectible = (int) $r['OfferSummary']['TotalCollectible'];
428
- $extra->totalRefurbished = (int) $r['OfferSummary']['TotalRefurbished'];
429
- }
430
-
431
- // Offers
432
- if (isset($r['Offers']) &&
433
- isset($r['Offers']['Offer']) &&
434
- isset($r['Offers']['Offer']['OfferListing']))
435
- {
436
- // SalePrice for amazon de?
437
- if (isset($r['Offers']['Offer']['OfferListing']['SalePrice']))
438
- $r['Price'] = $r['Offers']['Offer']['OfferListing']['SalePrice'];
439
- else
440
- $r['Price'] = $r['Offers']['Offer']['OfferListing']['Price'];
441
-
442
- if (isset($r['Offers']['Offer']['OfferListing']['AmountSaved']))
443
- {
444
- $extra->AmountSaved = $r['Offers']['Offer']['OfferListing']['AmountSaved']['FormattedPrice'];
445
- if (isset($r['Offers']['Offer']['OfferListing']['PercentageSaved']))
446
- $content->percentageSaved = $r['Offers']['Offer']['OfferListing']['PercentageSaved'];
447
- }
448
-
449
- //@link: http://docs.aws.amazon.com/AWSECommerceService/latest/DG/AvailabilityValues.html
450
- if (isset($r['Offers']['Offer']['OfferListing']['Availability']))
451
- {
452
- $extra->availability = $r['Offers']['Offer']['OfferListing']['Availability'];
453
- }
454
-
455
- if (isset($r['Offers']['Offer']['OfferListing']['IsEligibleForSuperSaverShipping']))
456
- $extra->IsEligibleForSuperSaverShipping = $r['Offers']['Offer']['OfferListing']['IsEligibleForSuperSaverShipping'];
457
- }elseif (isset($r['OfferSummary']['LowestNewPrice']))
458
- $r['Price'] = $r['OfferSummary']['LowestNewPrice'];
459
-
460
-
461
- if ((!isset($r['Price']) || !$r['Price']) && isset($r['ItemAttributes']['ListPrice']))
462
- $r['Price'] = $r['ItemAttributes']['ListPrice'];
463
-
464
- if (isset($r['ItemAttributes']['ListPrice']) &&
465
- $r['ItemAttributes']['ListPrice']['Amount'] &&
466
- ( (isset($r['Price']['Amount']) && $r['ItemAttributes']['ListPrice']['Amount'] > $r['Price']['Amount']) || $r['Price']['FormattedPrice'] == 'Too low to display'))
467
- {
468
- $content->priceOld = TextHelper::pricePenniesDenomination($r['ItemAttributes']['ListPrice']['Amount'], false);
469
- $content->currencyCode = $r['ItemAttributes']['ListPrice']['CurrencyCode'];
470
- $content->currency = TextHelper::currencyTyping($content->currencyCode);
471
- }
472
-
473
- if (isset($r['Price']['FormattedPrice']) && $r['Price']['FormattedPrice'] == 'Too low to display')
474
- $extra->toLowToDisplay = true;
475
-
476
- if (!empty($r['Price']['Amount']))
477
- {
478
- $content->price = TextHelper::pricePenniesDenomination($r['Price']['Amount'], false);
479
- $content->currencyCode = $r['Price']['CurrencyCode'];
480
- $content->currency = TextHelper::currencyTyping($content->currencyCode);
481
- } else
482
- $content->price = 0;
483
-
484
- if ($return_array)
485
- {
486
- $content = json_decode(json_encode($content), true);
487
- $extra = json_decode(json_encode($extra), true);
488
- $content['extra'] = $extra;
489
- return $content;
490
- }
491
- }
492
-
493
- private function getLocaleSite($locale)
494
- {
495
- switch ($locale)
496
- {
497
- case 'uk':
498
- return 'http://www.amazon.co.uk';
499
- case 'de':
500
- return 'http://www.amazon.de';
501
- break;
502
- case 'fr':
503
- return 'http://www.amazon.fr';
504
- break;
505
- case 'jp':
506
- return 'http://www.amazon.co.jp';
507
- break;
508
- case 'cn':
509
- return 'http://www.amazon.cn';
510
- break;
511
- case 'it':
512
- return 'http://www.amazon.it';
513
- break;
514
- case 'es':
515
- return 'http://www.amazon.es';
516
- break;
517
- case 'ca':
518
- return 'http://www.amazon.ca';
519
- break;
520
- case 'br':
521
- return 'http://www.amazon.br';
522
- break;
523
- case 'in':
524
- return 'http://www.amazon.in';
525
- break;
526
- default: //'us'
527
- return 'http://www.amazon.com';
528
- break;
529
- }
530
- }
531
-
532
- private function getAssociateTagForLocale($locale)
533
- {
534
- if ($locale == $this->config('locale'))
535
- return $this->config('associate_tag');
536
- else
537
- return $this->config('associate_tag_' . $locale);
538
- }
539
-
540
- private function rewriteSslImageUrl($img)
541
- {
542
- if ($this->config('https_img'))
543
- return str_replace('http://ecx.images-amazon.com', 'https://images-na.ssl-images-amazon.com', $img);
544
- else
545
- return $img;
546
- }
547
-
548
- /**
549
- * Add to shopping cart url
550
- * @link: http://docs.amazonwebservices.com/AWSECommerceService/latest/DG/AddToCartForm.html
551
- * @link: https://affiliate-program.amazon.com/gp/associates/help/t1/a10?ie=UTF8&pf_rd_i=assoc_help_t6_a1&pf_rd_m=ATVPDKIKX0DER&pf_rd_p=&pf_rd_r=&pf_rd_s=assoc-center-1&pf_rd_t=501&ref_=amb_link_177735_1
552
- * @link: https://affiliate-program.amazon.com/gp/associates/help/operating
553
- * @link: https://affiliate-program.amazon.com/gp/associates/help/t2/a11
554
- */
555
- private function getAmazonAddToCartUrl($locale)
556
- {
557
- return $this->getLocaleSite($locale) . '/gp/aws/cart/add.html';
558
- }
559
-
560
- public function renderResults()
561
- {
562
- PluginAdmin::render('_metabox_results', array('module_id' => $this->getId()));
563
- }
564
-
565
- public function renderSearchResults()
566
- {
567
- PluginAdmin::render('_metabox_search_results', array('module_id' => $this->getId()));
568
- }
569
-
570
- public function renderSearchPanel()
571
- {
572
- $this->render('search_panel', array('module_id' => $this->getId()));
573
- }
574
-
575
- public static function fixUniqueIds(array $items)
576
- {
577
- // fix for old items
578
- $fixed = array();
579
- foreach ($items as $key => $item)
580
- {
581
- if (empty($item['extra']['locale']))
582
- {
583
- $fixed[$key] = $item;
584
- continue;
585
- }
586
-
587
- if (!strstr($item['unique_id'], '-'))
588
- {
589
- $new_unique_id = $item['extra']['locale'] . '-' . $item['unique_id'];
590
- $item['unique_id'] = $new_unique_id;
591
- $fixed[$new_unique_id] = $item;
592
- } else
593
- $fixed[$key] = $item;
594
- }
595
- return $fixed;
596
- }
597
-
598
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Amazon/ExtraAmazonCustomerReviews.php DELETED
@@ -1,21 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\Amazon;
4
-
5
- /**
6
- * ExtraAmazonCustomerReviews class file
7
- *
8
- * @author keywordrush.com <support@keywordrush.com>
9
- * @link http://www.keywordrush.com/
10
- * @copyright Copyright &copy; 2015 keywordrush.com
11
- */
12
- //параметры из AmazonProduct->parseCustomerReviews
13
- class ExtraAmazonCustomerReviews {
14
-
15
- public $IFrameURL;
16
- public $HasReviews;
17
- public $AverageRating;
18
- public $TotalReviews;
19
- public $reviews = array();
20
-
21
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Amazon/ExtraDataAmazon.php DELETED
@@ -1,151 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\Amazon;
4
-
5
- use ContentEgg\application\components\ExtraData;
6
-
7
- /**
8
- * ExtraDataAmazon 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 ExtraDataAmazon extends ExtraData {
15
-
16
- public $locale;
17
- public $associate_tag;
18
- public $itemLinks = array();
19
- public $imageSet = array();
20
- public $AmountSaved;
21
- public $PercentageSaved;
22
- public $IsEligibleForSuperSaverShipping;
23
- public $customerReviews;
24
- public $editorialReviews = array();
25
- public $smallImage;
26
- public $mediumImage;
27
- public $largeImage;
28
- public $addToCartUrl;
29
- public $ASIN;
30
- public $itemAttributes;
31
- public $toLowToDisplay;
32
- public $availability;
33
- public $lowestNewPrice;
34
- public $lowestUsedPrice;
35
- public $lowestCollectiblePrice;
36
- public $lowestRefurbishedPrice;
37
- public $totalNew;
38
- public $totalUsed;
39
- public $totalCollectible;
40
- public $totalRefurbished;
41
- }
42
-
43
- class ExtraAmazonItemLinks {
44
-
45
- public $Description;
46
- public $URL;
47
-
48
- }
49
-
50
- class ExtraAmazonImageSet {
51
-
52
- public $attributes = array();
53
- public $SwatchImage;
54
- public $SmallImage;
55
- public $ThumbnailImage;
56
- public $TinyImage;
57
- public $MediumImage;
58
- public $LargeImage;
59
-
60
- }
61
-
62
- //параметры из AmazonProduct->parseCustomerReviews
63
- class ExtraAmazonCustomerReview {
64
-
65
- public $Content;
66
- public $Summary;
67
- public $Date;
68
- public $Name;
69
- public $Rating;
70
-
71
- }
72
-
73
- class ExtraAmazonEditorialReviews {
74
-
75
- public $Source;
76
- public $Content;
77
-
78
- }
79
-
80
- class ExtraAmazonItemAttributes {
81
-
82
- public $Actor;
83
- public $Artist;
84
- public $AspectRatio;
85
- public $AudienceRating;
86
- public $AudioFormat;
87
- public $Binding;
88
- public $Brand;
89
- public $CEROAgeRating;
90
- public $ClothingSize;
91
- public $Color;
92
- public $Creator;
93
- public $Department;
94
- public $Director;
95
- public $EAN;
96
- public $EANList;
97
- public $Edition;
98
- public $EISBN;
99
- public $EpisodeSequence;
100
- public $ESRBAgeRating;
101
- public $Feature = array();
102
- public $Format;
103
- public $Genre;
104
- public $HardwarePlatform;
105
- public $HazardousMaterialType;
106
- public $IsAdultProduct;
107
- public $IsAutographed;
108
- public $ISBN;
109
- public $IsEligibleForTradeIn;
110
- public $IsMemorabilia;
111
- public $IssuesPerYear;
112
- public $ItemDimensions;
113
- public $ItemPartNumber;
114
- public $Label;
115
- public $Languages;
116
- public $LegalDisclaimer;
117
- public $ManufacturerMaximumAge;
118
- public $ManufacturerMinimumAge;
119
- public $ManufacturerPartsWarrantyDescription;
120
- public $MediaType;
121
- public $Model;
122
- public $MPN;
123
- public $NumberOfDiscs;
124
- public $NumberOfIssues;
125
- public $NumberOfItems;
126
- public $NumberOfPages;
127
- public $NumberOfTracks;
128
- public $OperatingSystem;
129
- public $PackageQuantity;
130
- public $PartNumber;
131
- public $Platform;
132
- public $ProductGroup;
133
- public $ProductTypeSubcategory;
134
- public $PublicationDate;
135
- public $Publisher;
136
- public $RegionCode;
137
- public $ReleaseDate;
138
- public $RunningTime;
139
- public $SeikodoProductCode;
140
- public $Size;
141
- public $SKU;
142
- public $Studio;
143
- public $SubscriptionLength;
144
- public $TradeInValue;
145
- public $UPC;
146
- public $UPCList;
147
- public $Warranty;
148
- public $WEEETaxValue;
149
- public $PackageDimensions;
150
-
151
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Amazon/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/application/modules/Amazon/templates/data_compare.php DELETED
@@ -1,260 +0,0 @@
1
- <?php
2
- /*
3
- Name: Compare
4
- */
5
-
6
- __('Compare', 'content-egg-tpl');
7
-
8
- use ContentEgg\application\helpers\TemplateHelper;
9
- ?>
10
-
11
- <?php
12
- \wp_enqueue_style('egg-bootstrap');
13
- \wp_enqueue_style('content-egg-products');
14
- ?>
15
-
16
- <?php
17
- $barcodes = array(
18
- 'ISBN' => 'ISBN',
19
- 'EAN' => 'EAN',
20
- 'MPN' => 'MPN',
21
- 'SKU' => 'SKU',
22
- 'UPC' => 'UPC',
23
- 'Model' => 'Model',
24
- 'PartNumber' => 'Part Number',
25
- );
26
- ?>
27
-
28
- <div class="egg-container egg-compare">
29
- <?php if ($title): ?>
30
- <h3><?php echo esc_html($title); ?></h3>
31
- <?php endif; ?>
32
-
33
- <?php $length = 2; ?>
34
- <?php for ($offset = 0; $offset < count($items); $offset += $length): ?>
35
-
36
- <?php $current_items = array_slice($items, $offset, $length); ?>
37
- <?php $first = reset($current_items); ?>
38
- <div class="row">
39
- <div class="col-sm-12 col-md-2 text-info">
40
- <?php _e('Compare', 'content-egg-tpl'); ?>
41
- </div>
42
- <?php foreach ($current_items as $item): ?>
43
- <div class="col-sm-6 col-md-5">
44
- <?php if ($item['img']): ?>
45
- <?php $img = str_replace('.jpg', '._AA300_.jpg', $item['img']) ?>
46
- <a rel="nofollow" target="_blank" href="<?php echo $item['url']; ?>">
47
- <img class="img-responsive" src="<?php echo esc_attr($img) ?>" alt="<?php echo esc_attr($item['title']); ?>" />
48
- </a>
49
- <br>
50
- <?php endif; ?>
51
- <h3><?php echo esc_html(TemplateHelper::truncate($item['title'], 120)); ?></h3>
52
- </div>
53
- <?php endforeach; ?>
54
- </div>
55
-
56
- <div class="row">
57
- <div class="col-sm-12 col-md-2 text-info">
58
- <?php _e('User Rating', 'content-egg-tpl'); ?>
59
- </div>
60
- <?php foreach ($current_items as $item): ?>
61
- <div class="col-sm-6 col-md-5 products">
62
- <?php if ((int) $item['rating'] > 0): ?>
63
- <span class="rating"><?php echo str_repeat("<span>&#x2605</span>", (int) $item['rating']);
64
- echo str_repeat("<span>☆</span>", 5 - (int) $item['rating']); ?></span><br>
65
- <?php endif; ?>
66
- <?php if (!empty($item['extra']['customerReviews']['TotalReviews'])): ?>
67
- <?php echo $item['extra']['customerReviews']['TotalReviews']; ?> <?php _e('ratings', 'content-egg-tpl'); ?><br>
68
- <?php endif; ?>
69
-
70
- <?php if ($link = TemplateHelper::getAmazonLink($item['extra']['itemLinks'], 'All Customer Reviews')): ?>
71
- <a rel="nofollow" target="_blank" href="<?php echo $link; ?>"><?php _e('See all reviews', 'content-egg-tpl'); ?></a>
72
- <?php endif; ?>
73
- </div>
74
- <?php endforeach; ?>
75
- </div>
76
-
77
- <div class="row">
78
- <div class="col-sm-12 col-md-2 text-info">
79
- <?php _e('Price', 'content-egg-tpl'); ?>
80
- </div>
81
- <?php foreach ($current_items as $item): ?>
82
- <div class="col-sm-6 col-md-5 text-center products">
83
- <?php if ($item['price']): ?>
84
- <span class="cegg-price"><small><?php echo $item['currency']; ?></small><?php echo TemplateHelper::price_format_i18n($item['price']); ?></span>
85
- <?php if ($item['priceOld']): ?><br><strike class="text-muted"><?php echo $item['currency']; ?><?php echo TemplateHelper::price_format_i18n($item['priceOld']); ?></strike><?php endif; ?>
86
- <?php elseif ($item['extra']['toLowToDisplay']): ?>
87
- <span class="text-muted"><?php _e('Too low to display', 'content-egg-tpl'); ?></span>
88
- <?php endif; ?>
89
- <?php if ((bool) $item['extra']['IsEligibleForSuperSaverShipping']): ?>
90
- <p class="text-muted"><small><?php _e('Free shipping', 'content-egg-tpl'); ?></small></p>
91
- <?php endif; ?>
92
-
93
- <span class="text-muted">
94
- <?php if (!empty($item['extra']['totalNew'])): ?>
95
- <?php echo $item['extra']['totalNew']; ?>
96
- <?php _e('new', 'content-egg-tpl'); ?>
97
- <?php if($item['extra']['lowestNewPrice']): ?>
98
- <?php _e('from', 'content-egg-tpl'); ?> <?php echo $item['currency']; ?><?php echo TemplateHelper::price_format_i18n($item['extra']['lowestNewPrice']); ?>
99
- <?php endif; ?>
100
- <?php endif; ?>
101
- <?php if (!empty($item['extra']['totalUsed'])): ?>
102
- <br><?php echo $item['extra']['totalUsed']; ?>
103
- <?php _e('used', 'content-egg-tpl'); ?> <?php _e('from', 'content-egg-tpl'); ?>
104
- <?php echo $item['currency']; ?><?php echo TemplateHelper::price_format_i18n($item['extra']['lowestUsedPrice']); ?>
105
- <?php endif; ?>
106
- </span>
107
- <span class="text-muted">
108
- <br><?php _e('as of', 'content-egg-tpl'); ?> <?php echo TemplateHelper::getLastUpdateFormatted('Amazon', true, $post_id); ?>
109
- </span>
110
- </div>
111
- <?php endforeach; ?>
112
- </div>
113
-
114
- <div class="row">
115
- <div class="col-sm-12 col-md-2 text-info">
116
- <?php _e('Shop Now', 'content-egg-tpl'); ?>
117
- </div>
118
- <?php foreach ($current_items as $item): ?>
119
- <div class="col-sm-6 col-md-5 text-center">
120
- <a rel="nofollow" target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-success"><?php _e('BUY THIS ITEM', 'content-egg-tpl'); ?></a>
121
- <br>
122
- <small>Amazon</small>
123
- </div>
124
- <?php endforeach; ?>
125
- </div>
126
-
127
- <div class="row">
128
- <div class="col-sm-12 col-md-2 text-info">
129
- <?php _e('Features', 'content-egg-tpl'); ?>
130
- </div>
131
- <?php foreach ($current_items as $item): ?>
132
- <div class="col-sm-6 col-md-5">
133
- <?php if (!empty($item['extra']['itemAttributes']['Feature'])): ?>
134
- <ul>
135
- <?php foreach ($item['extra']['itemAttributes']['Feature'] as $k => $feature): ?>
136
- <li><?php echo TemplateHelper::truncate($feature, 100); ?></li>
137
- <?php if ($k >= 3) break; ?>
138
- <?php endforeach; ?>
139
- </ul>
140
- <?php endif; ?>
141
- </div>
142
- <?php endforeach; ?>
143
- </div>
144
-
145
- <?php
146
- $lines = array();
147
- $i = 0;
148
- foreach ($current_items as $item)
149
- {
150
- foreach ($item['extra']['itemAttributes'] as $attribute => $value)
151
- {
152
- if (!is_string($value) && !is_integer($value) || !$value || array_key_exists($attribute, $barcodes))
153
- continue;
154
- if (!isset($lines[$attribute]))
155
- $lines[$attribute] = array();
156
- $lines[$attribute][$i] = $value;
157
- }
158
- $i++;
159
- }
160
- ?>
161
- <?php foreach ($lines as $attribute => $line): ?>
162
- <div class="row">
163
- <div class="col-sm-12 col-md-2 text-info">
164
- <?php _e(TemplateHelper::splitAttributeName($attribute), 'content-egg-tpl'); ?>
165
- </div>
166
- <?php for ($i = 0; $i < count($current_items); $i++): ?>
167
- <div class="col-sm-6 col-md-5">
168
- <?php if (isset($line[$i])): ?>
169
- <?php echo esc_html($line[$i]); ?>
170
- <?php endif; ?>
171
- </div>
172
- <?php endfor; ?>
173
- </div>
174
- <?php endforeach; ?>
175
-
176
- <?php if ($first['extra']['customerReviews']): ?>
177
- <div class="row">
178
- <div class="col-sm-12 col-md-2 text-info">
179
- <?php _e('User Reviews', 'content-egg-tpl'); ?>
180
- </div>
181
- <?php foreach ($current_items as $item): ?>
182
- <div class="col-sm-6 col-md-5 products">
183
- <?php if (!empty($item['extra']['customerReviews']['reviews'])): ?>
184
- <?php foreach ($item['extra']['customerReviews']['reviews'] as $review): ?>
185
- <div>
186
- <em><?php echo esc_html($review['Summary']); ?>, <small><?php echo date(get_option('date_format'), $review['Date']); ?></small></em>
187
- <span class="rating_small">
188
- <?php echo str_repeat("<span>&#x2605</span>", (int) $review['Rating']); ?><?php echo str_repeat("<span>☆</span>", 5 - (int) $review['Rating']); ?>
189
- </span>
190
- </div>
191
- <p><?php echo esc_html($review['Content']); ?></p>
192
- <?php endforeach; ?>
193
- <?php elseif ($item['extra']['customerReviews']['HasReviews'] == 'true'): ?>
194
- <iframe src='<?php echo $item['extra']['customerReviews']['IFrameURL']; ?>' width='100%' height='500'></iframe>
195
- <?php endif; ?>
196
- </div>
197
- <?php endforeach; ?>
198
- </div>
199
- <?php endif; ?>
200
-
201
- <?php if ($first['extra']['editorialReviews']): ?>
202
- <div class="row">
203
- <div class="col-sm-12 col-md-2 text-info">
204
- <?php _e('Expert Reviews', 'content-egg-tpl'); ?>
205
- </div>
206
- <?php foreach ($current_items as $item): ?>
207
- <div class="col-sm-6 col-md-5 products">
208
- <?php if ($item['extra']['editorialReviews']): ?>
209
- <?php $review = $item['extra']['editorialReviews'][0];?>
210
- <p><?php echo $review['Content']; ?></p>
211
- <?php endif; ?>
212
- </div>
213
- <?php endforeach; ?>
214
- </div>
215
- <?php endif; ?>
216
-
217
-
218
- <div class="row">
219
- <div class="col-sm-12 col-md-2 text-info">
220
- <?php _e('Barcodes', 'content-egg-tpl'); ?>
221
- </div>
222
- <?php foreach ($current_items as $item): ?>
223
- <div class="col-sm-6 col-md-5">
224
- <ul>
225
- <?php foreach ($barcodes as $bkey => $bname): ?>
226
- <?php if(!empty($item['extra']['itemAttributes'][$bkey])) :?>
227
- <li><strong><?php echo $bname; ?>:</strong> <?php echo $item['extra']['itemAttributes'][$bkey]; ?></li>
228
- <?php endif; ?>
229
- <?php endforeach; ?>
230
- </ul>
231
- </div>
232
- <?php endforeach; ?>
233
- </div>
234
-
235
- <div class="row">
236
- <div class="col-sm-12 col-md-2 text-info">
237
- <?php _e('Shop Now', 'content-egg-tpl'); ?>
238
- </div>
239
- <?php foreach ($current_items as $item): ?>
240
- <div class="col-sm-6 col-md-5 text-center">
241
- <a rel="nofollow" target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-success"><?php _e('BUY THIS ITEM', 'content-egg-tpl'); ?></a>
242
- </div>
243
- <?php endforeach; ?>
244
- </div>
245
-
246
- <div class="row">
247
- <div class="col-sm-12 col-md-2 text-info">
248
- <?php _e('Images', 'content-egg-tpl'); ?>
249
- </div>
250
- <?php foreach ($current_items as $item): ?>
251
- <div class="col-sm-6 col-md-5">
252
- <?php if (!empty($item['extra']['imageSet'][1])):?>
253
- <?php $img = str_replace('.jpg', '._AA300_.jpg', $item['extra']['imageSet'][1]['LargeImage']); ?>
254
- <img class="img-responsive" src="<?php echo esc_attr($img) ?>" alt="<?php echo esc_attr($item['title']); ?>" />
255
- <?php endif; ?>
256
- </div>
257
- <?php endforeach; ?>
258
- </div>
259
- <?php endfor; ?>
260
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Amazon/templates/data_grid.php DELETED
@@ -1,69 +0,0 @@
1
- <?php
2
- /*
3
- Name: Grid
4
- */
5
-
6
- __('Grid', 'content-egg-tpl');
7
-
8
- use ContentEgg\application\helpers\TemplateHelper;
9
- ?>
10
-
11
- <?php
12
- \wp_enqueue_style('egg-bootstrap');
13
- \wp_enqueue_style('content-egg-products');
14
- ?>
15
-
16
- <div class="egg-container egg-grid">
17
- <?php if ($title): ?>
18
- <h3><?php echo esc_html($title); ?></h3>
19
- <?php endif; ?>
20
-
21
- <div class="container-fluid">
22
- <?php $i = 0; ?>
23
- <?php foreach ($items as $item): ?>
24
-
25
- <a rel="nofollow" target="_blank" href="<?php echo esc_url($item['url']) ?>">
26
- <div class="col-md-4 productbox">
27
- <?php if ($item['percentageSaved'] && $item['percentageSaved'] < 100): ?>
28
- <div class="cegg-promotion">
29
- <span class="cegg-discount">- <?php echo round($item['percentageSaved']); ?>%</span>
30
- </div>
31
- <?php endif; ?>
32
-
33
- <?php if ($item['img']): ?>
34
- <?php $img = str_replace('.jpg', '._AC_UL250_SR250,250_.jpg', $item['img']) ?>
35
- <img class="img-responsive" src="<?php echo esc_attr($img) ?>" alt="<?php echo esc_attr($item['title']); ?>" />
36
- <?php endif; ?>
37
-
38
- <div class="producttitle">
39
- <?php if ($item['manufacturer']): ?><?php echo esc_html($item['manufacturer']); ?><?php endif; ?>
40
- <span><?php echo esc_html(TemplateHelper::truncate($item['title'], 80)); ?></span>
41
- </div>
42
-
43
- <?php if ((int) $item['rating'] > 0): ?>
44
- <div>
45
- <span class="rating_small"><?php echo str_repeat("<span>&#x2605</span>", (int) $item['rating']);echo str_repeat("<span>☆</span>", 5 - (int) $item['rating']);?></span>
46
- </div>
47
- <?php endif; ?>
48
-
49
- <div class="productprice">
50
- <?php if ($item['price']): ?>
51
- <?php if ($item['priceOld']): ?><strike><?php echo $item['currency']; ?><?php echo TemplateHelper::price_format_i18n($item['priceOld']); ?></strike>&nbsp;<?php endif; ?>
52
- <?php echo $item['currency']; ?><?php echo TemplateHelper::price_format_i18n($item['price']); ?>
53
- <?php endif; ?>
54
- </div>
55
- </div>
56
- </a>
57
-
58
- <?php $i++;
59
- if ($i % 3 == 0): ?>
60
- <div class="clearfix"></div>
61
- <?php endif; ?>
62
- <?php endforeach; ?>
63
- <div class="row">
64
- <div class="col-md-12 text-right text-muted">
65
- <small><?php _e('Last updated on', 'content-egg-tpl'); ?> <?php echo TemplateHelper::getLastUpdateFormatted('Amazon', true, $post_id); ?></small>
66
- </div>
67
- </div>
68
- </div>
69
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Amazon/templates/data_item.php DELETED
@@ -1,142 +0,0 @@
1
- <?php
2
- /*
3
- Name: Product card
4
- */
5
-
6
- __('Product card', 'content-egg-tpl');
7
-
8
- use ContentEgg\application\helpers\TemplateHelper;
9
- ?>
10
-
11
- <?php
12
- \wp_enqueue_style('egg-bootstrap');
13
- \wp_enqueue_style('content-egg-products');
14
- ?>
15
-
16
-
17
- <div class="egg-container egg-item">
18
-
19
- <?php if ($title): ?>
20
- <h3><?php echo esc_html($title); ?></h3>
21
- <?php endif; ?>
22
-
23
- <div class="products">
24
-
25
- <?php foreach ($items as $item): ?>
26
- <div class="row">
27
- <div class="col-md-5">
28
- <?php if ($item['img']): ?>
29
- <a rel="nofollow" target="_blank" href="<?php echo $item['url']; ?>">
30
- <img src="<?php echo $item['img']; ?>" alt="<?php echo esc_attr($item['title']); ?>" class="img-responsive" />
31
- </a>
32
- <?php endif; ?>
33
- </div>
34
- <div class="col-md-7">
35
- <h2 class="media-heading"><?php echo $item['title']; ?></h2>
36
- <?php if ((int) $item['rating'] > 0): ?>
37
- <span class="rating"><?php
38
- echo str_repeat("<span>&#x2605</span>", (int) $item['rating']);
39
- echo str_repeat("<span>☆</span>", 5 - (int) $item['rating']);
40
- ?></span>
41
- <?php endif; ?>
42
- <div class="well-lg">
43
-
44
- <div class="row">
45
- <div class="col-md-6">
46
- <?php if ($item['priceOld']): ?>
47
- <span class="text-muted"><strike><small><?php echo $item['currency']; ?></small><?php echo TemplateHelper::price_format_i18n($item['priceOld']); ?></strike></span><br>
48
- <?php endif; ?>
49
-
50
- <?php if ($item['price']): ?>
51
- <span class="cegg-price"><small><?php echo $item['currency']; ?></small><?php echo TemplateHelper::price_format_i18n($item['price']); ?></span>
52
- <?php elseif ($item['extra']['toLowToDisplay']): ?>
53
- <span class="text-muted"><?php _e('Too low to display', 'content-egg-tpl'); ?></span>
54
- <?php endif; ?>
55
-
56
- <?php if ((bool) $item['extra']['IsEligibleForSuperSaverShipping']): ?>
57
- <br><small class="text-muted"><?php _e('Free shipping', 'content-egg-tpl'); ?></small>
58
- <?php endif; ?>
59
-
60
- <span class="text-muted">
61
- <?php if (!empty($item['extra']['totalNew'])): ?>
62
- <br><?php echo $item['extra']['totalNew']; ?>
63
- <?php _e('new', 'content-egg-tpl'); ?>
64
- <?php if ($item['extra']['lowestNewPrice']): ?>
65
- <?php _e('from', 'content-egg-tpl'); ?> <?php echo $item['currency']; ?><?php echo TemplateHelper::price_format_i18n($item['extra']['lowestNewPrice']); ?>
66
- <?php endif; ?>
67
- <?php endif; ?>
68
- <?php if (!empty($item['extra']['totalUsed'])): ?>
69
- <br><?php echo $item['extra']['totalUsed']; ?>
70
- <?php _e('used', 'content-egg-tpl'); ?> <?php _e('from', 'content-egg-tpl'); ?>
71
- <?php echo $item['currency']; ?><?php echo TemplateHelper::price_format_i18n($item['extra']['lowestUsedPrice']); ?>
72
- <?php endif; ?>
73
- </span>
74
- <span class="text-muted">
75
- <br><small><?php _e('as of', 'content-egg-tpl'); ?> <?php echo TemplateHelper::getLastUpdateFormatted('Amazon', true, $post_id); ?></small>
76
- </span>
77
- </div>
78
- <div class="col-md-6 text-center text-muted">
79
- <a rel="nofollow" target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-success"><?php _e('BUY THIS ITEM', 'content-egg-tpl'); ?></a>
80
- <br>
81
- <small>Amazon</small>
82
- </div>
83
- </div>
84
- </div>
85
- </div>
86
- </div>
87
- <div class="row">
88
- <div class="col-md-12">
89
- <?php if ($item['description']): ?>
90
- <p><?php echo $item['description']; ?></p>
91
- <?php endif; ?>
92
-
93
- <?php if ($item['extra']['itemAttributes']['Feature']): ?>
94
- <h3><?php _e('Features', 'content-egg-tpl'); ?></h3>
95
- <ul>
96
- <?php foreach ($item['extra']['itemAttributes']['Feature'] as $k => $feature): ?>
97
- <li><?php echo $feature; ?></li>
98
- <?php if ($k >= 4) break; ?>
99
- <?php endforeach; ?>
100
- </ul>
101
- <?php endif; ?>
102
-
103
- <?php if ($item['extra']['customerReviews']): ?>
104
- <?php if (!empty($item['extra']['customerReviews']['reviews'])): ?>
105
- <h3>
106
- <?php _e('Customer reviews', 'content-egg-tpl'); ?>
107
- <?php if (!empty($item['extra']['customerReviews']['TotalReviews'])): ?>
108
-
109
- <?php if ($link = TemplateHelper::getAmazonLink($item['extra']['itemLinks'], 'All Customer Reviews')): ?>
110
- <small>(<a rel="nofollow" target="_blank" href="<?php echo $link; ?>">
111
- <?php echo $item['extra']['customerReviews']['TotalReviews']; ?> <?php _e('customer reviews', 'content-egg-tpl'); ?>
112
- </a>)</small>
113
- <?php endif; ?>
114
-
115
- <?php endif; ?>
116
- </h3>
117
- <?php foreach ($item['extra']['customerReviews']['reviews'] as $review): ?>
118
- <div>
119
- <em><?php echo esc_html($review['Summary']); ?>, <small><?php echo date(get_option('date_format'), $review['Date']); ?></small></em>
120
- <span class="rating_small">
121
- <?php echo str_repeat("<span>&#x2605</span>", (int) $review['Rating']); ?><?php echo str_repeat("<span>☆</span>", 5 - (int) $review['Rating']); ?>
122
- </span>
123
- </div>
124
- <blockquote><?php echo esc_html($review['Content']); ?></blockquote>
125
- <?php endforeach; ?>
126
- <?php elseif ($item['extra']['customerReviews']['HasReviews'] == 'true'): ?>
127
- <iframe src='<?php echo $item['extra']['customerReviews']['IFrameURL']; ?>' width='100%' height='500'></iframe>
128
- <?php endif; ?>
129
- <?php endif; ?>
130
-
131
- <?php if ($item['extra']['editorialReviews']): ?>
132
- <?php foreach ($item['extra']['editorialReviews'] as $review): ?>
133
- <h3><?php echo esc_html($review['Source']); ?></h3>
134
- <p><?php echo $review['Content']; ?></p>
135
- <?php endforeach; ?>
136
- <?php endif; ?>
137
-
138
- </div>
139
- </div>
140
- <?php endforeach; ?>
141
- </div>
142
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Amazon/templates/data_list.php DELETED
@@ -1,60 +0,0 @@
1
- <?php
2
- /*
3
- Name: List
4
- */
5
-
6
- __('List', 'content-egg-tpl');
7
-
8
- use ContentEgg\application\helpers\TemplateHelper;
9
- ?>
10
-
11
- <?php
12
- \wp_enqueue_style('egg-bootstrap');
13
- \wp_enqueue_style('content-egg-products');
14
- ?>
15
-
16
- <div class="egg-container egg-list">
17
- <?php if ($title): ?>
18
- <h3><?php echo esc_html($title); ?></h3>
19
- <?php endif; ?>
20
-
21
- <div class="egg-listcontainer">
22
-
23
- <?php foreach ($items as $item): ?>
24
- <div class="row-products">
25
- <div class="col-md-2 col-sm-2 col-xs-12 cegg-image-cell">
26
- <?php if ($item['img']): ?>
27
- <a rel="nofollow" target="_blank" href="<?php echo $item['url']; ?>">
28
- <img src="<?php echo $item['img']; ?>" alt="<?php echo esc_attr($item['title']); ?>" />
29
- </a>
30
- <?php endif; ?>
31
- </div>
32
- <div class="col-md-8 col-sm-8 col-xs-12 cegg-desc-cell">
33
- <a rel="nofollow" target="_blank" href="<?php echo $item['url']; ?>">
34
- <h4><?php echo $item['title']; ?></h4>
35
- </a>
36
- </div>
37
- <div class="col-md-2 col-sm-2 col-xs-12 offer_price cegg-price-cell">
38
- <?php if ($item['priceOld']): ?>
39
- <span class="text-muted"><strike><small><?php echo $item['currency']; ?></small><?php echo TemplateHelper::price_format_i18n($item['priceOld']); ?></strike></span><br>
40
- <?php endif; ?>
41
-
42
- <?php if ($item['price']): ?>
43
- <?php echo $item['currency']; ?><?php echo TemplateHelper::price_format_i18n($item['price']); ?>
44
- <?php elseif ($item['extra']['toLowToDisplay']): ?>
45
- <span class="text-muted"><?php _e('Too low to display', 'content-egg-tpl'); ?></span>
46
- <?php endif; ?>
47
-
48
- <?php if ((bool) $item['extra']['IsEligibleForSuperSaverShipping']): ?>
49
- <br><span class="text-muted"><?php _e('Free shipping', 'content-egg-tpl'); ?></span>
50
- <?php endif; ?>
51
- </div>
52
- </div>
53
- <?php endforeach; ?>
54
- </div>
55
- <div class="row">
56
- <div class="col-md-12 text-right text-muted">
57
- <small><?php _e('Last updated on', 'content-egg-tpl'); ?> <?php echo TemplateHelper::getLastUpdateFormatted('Amazon', true, $post_id); ?></small>
58
- </div>
59
- </div>
60
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Amazon/views/search_panel.php DELETED
@@ -1,32 +0,0 @@
1
- <?php
2
- $locales = \ContentEgg\application\modules\Amazon\AmazonConfig::getActiveLocalesList();
3
- $default_locale = \ContentEgg\application\modules\Amazon\AmazonConfig::getInstance()->option('locale');
4
- ?>
5
-
6
- <?php if (count($locales) > 1): ?>
7
- <select ng-model="query_params.Amazon.locale" ng-init="query_params.Amazon.locale = '<?php echo $default_locale; ?>'">
8
- <?php foreach ($locales as $value => $name): ?>
9
- <option value="<?php echo $value; ?>"><?php echo $name; ?></option>
10
- <?php endforeach; ?>
11
- </select>
12
- <?php endif; ?>
13
-
14
- <input ng-model="query_params.Amazon.associate_tag" ng-init="query_params.Amazon.associate_tag=''" placeholder="custom associate tag" />
15
-
16
- <select ng-model="query_params.<?php echo $module_id; ?>.min_percentage_off">
17
- <option value=""><?php _e('Мин. скидка', 'content-egg'); ?></option>
18
- <option value="5%"><?php _e('5%', 'content-egg'); ?></option>
19
- <option value="10%"><?php _e('10%', 'content-egg'); ?></option>
20
- <option value="15%"><?php _e('15%', 'content-egg'); ?></option>
21
- <option value="20%"><?php _e('20%', 'content-egg'); ?></option>
22
- <option value="25%"><?php _e('25%', 'content-egg'); ?></option>
23
- <option value="30%"><?php _e('30%', 'content-egg'); ?></option>
24
- <option value="35%"><?php _e('35%', 'content-egg'); ?></option>
25
- <option value="40%"><?php _e('40%', 'content-egg'); ?></option>
26
- <option value="50%"><?php _e('50%', 'content-egg'); ?></option>
27
- <option value="60%"><?php _e('60%', 'content-egg'); ?></option>
28
- <option value="70%"><?php _e('70%', 'content-egg'); ?></option>
29
- <option value="80%"><?php _e('80%', 'content-egg'); ?></option>
30
- <option value="90%"><?php _e('90%', 'content-egg'); ?></option>
31
- </select>
32
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/CjLinks/CjLinksConfig.php DELETED
@@ -1,317 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\CjLinks;
4
-
5
- use ContentEgg\application\components\AffiliateParserModuleConfig;
6
-
7
- /**
8
- * CjLinksConfig 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 CjLinksConfig extends AffiliateParserModuleConfig {
15
-
16
- public function options()
17
- {
18
- $optiosn = array(
19
- 'dev_key' => array(
20
- 'title' => 'Developer Key <span class="cegg_required">*</span>',
21
- 'description' => __('Ключ для доступа к CJ API. Получить нужно <a href="https://api.cj.com/sign_up.cj">здесь</a>.', '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' => __('Поле "Developer Key" не может быть пустым.', 'content-egg'),
30
- ),
31
- ),
32
- 'section' => 'default',
33
- ),
34
- 'website_id' => array(
35
- 'title' => 'Website ID <span class="cegg_required">*</span>',
36
- 'description' => 'PID - идентификатор сайта в CJ. Войдите в свой аккаунт CJ и следуйте: "Account -> Websites"',
37
- 'callback' => array($this, 'render_input'),
38
- 'default' => '',
39
- 'validator' => array(
40
- 'trim',
41
- array(
42
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'required'),
43
- 'when' => 'is_active',
44
- 'message' => __('Поле "Website ID" не может быть пустым.', 'content-egg'),
45
- ),
46
- ),
47
- 'section' => 'default',
48
- ),
49
- 'entries_per_page' => array(
50
- 'title' => __('Результатов', 'content-egg'),
51
- 'description' => __('Количество результатов для одного поискового запроса.', 'content-egg'),
52
- 'callback' => array($this, 'render_input'),
53
- 'default' => 10,
54
- 'validator' => array(
55
- 'trim',
56
- 'absint',
57
- ),
58
- 'section' => 'default',
59
- ),
60
- 'entries_per_page_update' => array(
61
- 'title' => __('Результатов для обновления', 'content-egg'),
62
- 'description' => __('Количество результатов для автоматического обновления и автоблоггинга.', 'content-egg'),
63
- 'callback' => array($this, 'render_input'),
64
- 'default' => 3,
65
- 'validator' => array(
66
- 'trim',
67
- 'absint',
68
- ),
69
- 'section' => 'default',
70
- ),
71
- 'advertiser_ids' => array(
72
- 'title' => __('Рекламодатели', 'content-egg'),
73
- 'description' => 'Вы можете задать Adverticer ID (CID) через запятую для ограничения поиска только по этим рекламодателям. Введите "joined", чтобы искать по всем вашим рекламодателям.',
74
- 'callback' => array($this, 'render_input'),
75
- 'default' => 'joined',
76
- 'validator' => array(
77
- 'trim',
78
- ),
79
- 'section' => 'default',
80
- ),
81
- 'link_type' => array(
82
- 'title' => 'Link type',
83
- 'description' => '',
84
- 'callback' => array($this, 'render_dropdown'),
85
- 'dropdown_options' => array(
86
- '' => __('Любой', 'content-egg'),
87
- 'Text Link' => 'Text Link',
88
- 'Banner' => 'Banner',
89
- 'Content Link' => 'Content Link',
90
- 'Advanced Link' => 'Advanced Link',
91
- 'Flash Link' => 'Flash Link',
92
-
93
- //'SmartLink' => 'SmartLink',
94
- //'Product Catalog' => 'Product Catalog',
95
- //'Advertiser SmartZone' => 'Advertiser SmartZone',
96
- //'Lead Form' => 'Lead Form',
97
- //'Placement Text Link' => 'Placement Text Link',
98
- //'Placement Banner' => 'Placement Banner',
99
- //'Branded Placement Text Link' => 'Branded Placement Text Link',
100
- //'Branded Placement Banner' => 'Branded Placement Banner',
101
- ),
102
- 'default' => 'Text Link',
103
- 'section' => 'default',
104
- 'metaboxInit' => true,
105
- ),
106
- 'promotion_type' => array(
107
- 'title' => 'Promotion type',
108
- 'description' => '',
109
- 'callback' => array($this, 'render_dropdown'),
110
- 'dropdown_options' => array(
111
- '' => __('Любой', 'content-egg'),
112
- 'coupon' => 'Coupon',
113
- 'sweepstakes' => 'Sweepstakes',
114
- 'product' => 'Hot Product',
115
- 'sale/discount' => 'Sale/Discount',
116
- 'free shipping' => 'Free shipping',
117
- 'seasonal link' => 'Seasonal link',
118
- ),
119
- 'default' => '',
120
- 'section' => 'default',
121
- 'metaboxInit' => true,
122
- ),
123
-
124
- 'category' => array(
125
- 'title' => __('Категория', 'content-egg'),
126
- 'description' => '',
127
- 'callback' => array($this, 'render_dropdown'),
128
- 'dropdown_options' => array(
129
- '' => __('Любая', 'content-egg'),
130
- 'Accessories' => 'Accessories',
131
- 'Air' => 'Air',
132
- 'Apparel' => 'Apparel',
133
- 'Art' => 'Art',
134
- 'Art/Photo/Music' => 'Art/Photo/Music',
135
- 'Astrology' => 'Astrology',
136
- 'Auction' => 'Auction',
137
- 'Audio Books' => 'Audio Books',
138
- 'Automotive' => 'Automotive',
139
- 'Autumn' => 'Autumn',
140
- 'Babies' => 'Babies',
141
- 'Back to School' => 'Back to School',
142
- 'Banking/Trading' => 'Banking/Trading',
143
- 'Bath & Body' => 'Bath & Body',
144
- 'Beauty' => 'Beauty',
145
- 'Bed & Bath' => 'Bed & Bath',
146
- 'Betting/Gaming' => 'Betting/Gaming',
147
- 'Black Friday/Cyber Monday' => 'Black Friday/Cyber Monday',
148
- 'Blogs' => 'Blogs',
149
- 'Books' => 'Books',
150
- 'Books/Media' => 'Books/Media',
151
- 'Broadband' => 'Broadband',
152
- 'Business' => 'Business',
153
- 'Business-to-Business' => 'Business-to-Business',
154
- 'Buying and Selling' => 'Buying and Selling',
155
- 'Camping and Hiking' => 'Camping and Hiking',
156
- 'Car' => 'Car',
157
- 'Careers' => 'Careers',
158
- 'Cars & Trucks' => 'Cars & Trucks',
159
- 'Charitable Organizations' => 'Charitable Organizations',
160
- 'Children' => 'Children',
161
- 'Children\'s' => 'Children\'s',
162
- 'Christmas' => 'Christmas',
163
- 'Classifieds' => 'Classifieds',
164
- 'Clothing/Apparel' => 'Clothing/Apparel',
165
- 'Collectibles' => 'Collectibles',
166
- 'Collectibles and Memorabilia' => 'Collectibles and Memorabilia',
167
- 'College' => 'College',
168
- 'Commercial' => 'Commercial',
169
- 'Communities' => 'Communities',
170
- 'Computer & Electronics' => 'Computer & Electronics',
171
- 'Computer HW' => 'Computer HW',
172
- 'Computer SW' => 'Computer SW',
173
- 'Computer Support' => 'Computer Support',
174
- 'Construction' => 'Construction',
175
- 'Consumer Electronics' => 'Consumer Electronics',
176
- 'Cosmetics' => 'Cosmetics',
177
- 'Credit Cards' => 'Credit Cards',
178
- 'Credit Reporting and Repair' => 'Credit Reporting and Repair',
179
- 'Department Stores' => 'Department Stores',
180
- 'Department Stores/Malls' => 'Department Stores/Malls',
181
- 'Discounts' => 'Discounts',
182
- 'Domain Registrations' => 'Domain Registrations',
183
- 'E-commerce Solutions/Providers' => 'E-commerce Solutions/Providers',
184
- 'Easter' => 'Easter',
185
- 'Education' => 'Education',
186
- 'Electronic Games' => 'Electronic Games',
187
- 'Electronic Toys' => 'Electronic Toys',
188
- 'Email Marketing' => 'Email Marketing',
189
- 'Employment' => 'Employment',
190
- 'Energy Saving' => 'Energy Saving',
191
- 'Entertainment' => 'Entertainment',
192
- 'Equipment' => 'Equipment',
193
- 'Events' => 'Events',
194
- 'Exercise & Health' => 'Exercise & Health',
195
- 'Family' => 'Family',
196
- 'Father\'s Day' => 'Father\'s Day',
197
- 'Financial Services' => 'Financial Services',
198
- 'Flowers' => 'Flowers',
199
- 'Food & Drinks' => 'Food & Drinks',
200
- 'Fragrance' => 'Fragrance',
201
- 'Fundraising' => 'Fundraising',
202
- 'Furniture' => 'Furniture',
203
- 'Games' => 'Games',
204
- 'Games & Toys' => 'Games & Toys',
205
- 'Garden' => 'Garden',
206
- 'Gifts' => 'Gifts',
207
- 'Gifts & Flowers' => 'Gifts & Flowers',
208
- 'Golf' => 'Golf',
209
- 'Gourmet' => 'Gourmet',
210
- 'Green' => 'Green',
211
- 'Greeting Cards' => 'Greeting Cards',
212
- 'Groceries' => 'Groceries',
213
- 'Guides' => 'Guides',
214
- 'Halloween' => 'Halloween',
215
- 'Handbags' => 'Handbags',
216
- 'Health Food' => 'Health Food',
217
- 'Health and Wellness' => 'Health and Wellness',
218
- 'Home & Garden' => 'Home & Garden',
219
- 'Home Appliances' => 'Home Appliances',
220
- 'Hotel' => 'Hotel',
221
- 'Insurance' => 'Insurance',
222
- 'Internet Service Providers' => 'Internet Service Providers',
223
- 'Investment' => 'Investment',
224
- 'Jewelry' => 'Jewelry',
225
- 'Kitchen' => 'Kitchen',
226
- 'Languages' => 'Languages',
227
- 'Legal' => 'Legal',
228
- 'Luggage' => 'Luggage',
229
- 'Magazines' => 'Magazines',
230
- 'Malls' => 'Malls',
231
- 'Marketing' => 'Marketing',
232
- 'Matchmaking' => 'Matchmaking',
233
- 'Memorabilia' => 'Memorabilia',
234
- 'Men\'s' => 'Men\'s',
235
- 'Military' => 'Military',
236
- 'Mobile Entertainment' => 'Mobile Entertainment',
237
- 'Mortgage Loans' => 'Mortgage Loans',
238
- 'Mother\'s Day' => 'Mother\'s Day',
239
- 'Motorcycles' => 'Motorcycles',
240
- 'Music' => 'Music',
241
- 'Network Marketing' => 'Network Marketing',
242
- 'New Year\'s Resolution' => 'New Year\'s Resolution',
243
- 'New/Used Goods' => 'New/Used Goods',
244
- 'News' => 'News',
245
- 'Non-Profit' => 'Non-Profit',
246
- 'Nutritional Supplements' => 'Nutritional Supplements',
247
- 'Office' => 'Office',
248
- 'Online Services' => 'Online Services',
249
- 'Online/Wireless' => 'Online/Wireless',
250
- 'Outdoors' => 'Outdoors',
251
- 'Parts & Accessories' => 'Parts & Accessories',
252
- 'Party Goods' => 'Party Goods',
253
- 'Peripherals' => 'Peripherals',
254
- 'Personal Insurance' => 'Personal Insurance',
255
- 'Personal Loans' => 'Personal Loans',
256
- 'Pets' => 'Pets',
257
- 'Pharmaceuticals' => 'Pharmaceuticals',
258
- 'Phone Card Services' => 'Phone Card Services',
259
- 'Photo' => 'Photo',
260
- 'Productivity Tools' => 'Productivity Tools',
261
- 'Professional' => 'Professional',
262
- 'Professional Sports Organizations' => 'Professional Sports Organizations',
263
- 'Real Estate' => 'Real Estate',
264
- 'Real Estate Services' => 'Real Estate Services',
265
- 'Recreation & Leisure' => 'Recreation & Leisure',
266
- 'Recycling' => 'Recycling',
267
- 'Rentals' => 'Rentals',
268
- 'Restaurants' => 'Restaurants',
269
- 'Search Engine' => 'Search Engine',
270
- 'Seasonal' => 'Seasonal',
271
- 'Self Help' => 'Self Help',
272
- 'Services' => 'Services',
273
- 'Shoes' => 'Shoes',
274
- 'Sports' => 'Sports',
275
- 'Sports & Fitness' => 'Sports & Fitness',
276
- 'Spring' => 'Spring',
277
- 'Summer' => 'Summer',
278
- 'Summer Sports' => 'Summer Sports',
279
- 'Tax Season' => 'Tax Season',
280
- 'Tax Services' => 'Tax Services',
281
- 'Teens' => 'Teens',
282
- 'Telecommunications' => 'Telecommunications',
283
- 'Telephone Services' => 'Telephone Services',
284
- 'Television' => 'Television',
285
- 'Tobacco' => 'Tobacco',
286
- 'Tools and Supplies' => 'Tools and Supplies',
287
- 'Toys' => 'Toys',
288
- 'Travel' => 'Travel',
289
- 'Utilities' => 'Utilities',
290
- 'Vacation' => 'Vacation',
291
- 'Valentine\'s Day' => 'Valentine\'s Day',
292
- 'Videos/Movies' => 'Videos/Movies',
293
- 'Virtual Malls' => 'Virtual Malls',
294
- 'Vision Care' => 'Vision Care',
295
- 'Water Sports' => 'Water Sports',
296
- 'Web Design' => 'Web Design',
297
- 'Web Hosting/Servers' => 'Web Hosting/Servers',
298
- 'Web Tools' => 'Web Tools',
299
- 'Weddings' => 'Weddings',
300
- 'Weight Loss' => 'Weight Loss',
301
- 'Wellness' => 'Wellness',
302
- 'Wine & Spirits' => 'Wine & Spirits',
303
- 'Winter' => 'Winter',
304
- 'Winter Sports' => 'Winter Sports',
305
- 'Women\'s' => 'Women\'s',
306
- ),
307
- 'default' => '',
308
- 'section' => 'default',
309
- ),
310
-
311
- );
312
- $parent = parent::options();
313
- unset($parent['featured_image']);
314
- return array_merge($parent, $optiosn);
315
- }
316
-
317
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/CjLinks/CjLinksModule.php DELETED
@@ -1,184 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\CjLinks;
4
-
5
- use ContentEgg\application\components\AffiliateParserModule;
6
- use ContentEgg\application\libs\cj\CjLinksRest;
7
- use ContentEgg\application\components\ContentCoupon;
8
- use ContentEgg\application\admin\PluginAdmin;
9
- use ContentEgg\application\helpers\TextHelper;
10
-
11
- /**
12
- * CjLinksModule class file
13
- *
14
- * @author keywordrush.com <support@keywordrush.com>
15
- * @link http://www.keywordrush.com/
16
- * @copyright Copyright &copy; 2015 keywordrush.com
17
- */
18
- class CjLinksModule extends AffiliateParserModule {
19
-
20
- private $api_client = null;
21
-
22
- public function info()
23
- {
24
- return array(
25
- 'name' => 'CJ Links',
26
- 'api_agreement' => 'http://www.cj.com/legal/ws-terms',
27
- 'description' => __('Добавляет текстовые ссылки, купоны и баннеры партнерской сети Commission Junction. Вы должны получить аппрув в каждой программы отдельно.', 'content-egg') .
28
- '<br>You may use simple Boolean logic operators (\' + \', \' - \') to obtain more relevant search results.'
29
- );
30
- }
31
-
32
- public function defaultTemplateName()
33
- {
34
- return 'universal';
35
- }
36
-
37
- public function getParserType()
38
- {
39
- return self::PARSER_TYPE_COUPON;
40
- }
41
-
42
- public function isItemsUpdateAvailable()
43
- {
44
- return false;
45
- }
46
-
47
- public function isFree()
48
- {
49
- return true;
50
- }
51
-
52
- public function doRequest($keyword, $query_params = array(), $is_autoupdate = false)
53
- {
54
- $options = array();
55
-
56
- if ($is_autoupdate)
57
- $options['records-per-page'] = $this->config('entries_per_page_update');
58
- else
59
- $options['records-per-page'] = $this->config('entries_per_page');
60
-
61
- if (isset($query_params['promotion_type']))
62
- $options['promotion-type'] = $query_params['promotion_type'];
63
- elseif ($this->config('promotion_type'))
64
- $options['promotion-type'] = $this->config('promotion_type');
65
- if (isset($query_params['link_type']))
66
- $options['link-type'] = $query_params['link_type'];
67
- elseif ($this->config('link_type'))
68
- $options['link-type'] = $this->config('link_type');
69
-
70
- $fields = array(
71
- 'website_id',
72
- 'advertiser_ids',
73
- 'category',
74
- //'promotion_type',
75
- //'link_type'
76
- );
77
-
78
- foreach ($fields as $f)
79
- {
80
- if ($this->config($f))
81
- $options[str_replace('_', '-', $f)] = $this->config($f);
82
- }
83
-
84
- $results = $this->getCJClient()->search($keyword, $options);
85
- if (!is_array($results) || !isset($results['links']['link']))
86
- return array();
87
- if (!isset($results[0]) && isset($results['link-id']))
88
- $results = array($results);
89
-
90
- return $this->prepareResults($results['links']['link']);
91
- }
92
-
93
- private function prepareResults($results)
94
- {
95
- $data = array();
96
- foreach ($results as $key => $r)
97
- {
98
- // Note: This field is blank for advertisers with which you do not
99
- // have a relationship (non-joined).
100
- if (empty($r['link-code-html']))
101
- continue;
102
-
103
- $content = new ContentCoupon;
104
- $content->unique_id = $r['link-id'];
105
-
106
- if (!empty($r['clickUrl']))
107
- $content->url = $r['clickUrl'];
108
-
109
- $content->title = trim($r['link-name']);
110
-
111
- // parse link code html
112
- $doc = new \DOMDocument();
113
- @$doc->loadHTML($r['link-code-html']);
114
-
115
- if ($images = $doc->getElementsByTagName('img'))
116
- {
117
- // pixel img?
118
- if ($images->item(0)->getAttribute('height') != 1)
119
- $content->img = $images->item(0)->getAttribute('src');
120
- }
121
-
122
- // Text Link
123
- if ($r['link-type'] == 'Text Link' && $links = $doc->getElementsByTagName('a'))
124
- {
125
- $content->title = trim($links->item(0)->nodeValue);
126
- }
127
-
128
- $content->extra = new ExtraDataCjLinks;
129
- $content->extra->advertiserId = ($r['advertiser-id']) ? $r['advertiser-id'] : '';
130
- $content->extra->advertiserName = ($r['advertiser-name']) ? $r['advertiser-name'] : '';
131
- $content->extra->creativeHeight = ($r['creative-height']) ? (int) $r['creative-height'] : '';
132
- $content->extra->creativeWidth = ($r['creative-width']) ? (int) $r['creative-width'] : '';
133
- $content->extra->language = ($r['language']) ? $r['language'] : '';
134
-
135
- if (!empty($r['destination']))
136
- {
137
- $adv_site = parse_url($r['destination'], PHP_URL_HOST);
138
- $content->extra->advertiserSite = preg_replace('/^www\./', '', $adv_site);
139
- }
140
-
141
- $r['description'] = trim($r['description']);
142
- if ($r['description'] != $content->title)
143
- $content->description = $r['description'];
144
-
145
- $content->extra->destination = ($r['destination']) ? $r['destination'] : '';
146
- $content->extra->linkName = ($r['link-name']) ? $r['link-name'] : '';
147
- $content->extra->linkType = ($r['link-type']) ? $r['link-type'] : '';
148
- $content->startDate = $content->extra->promotionStartDate = ($r['promotion-start-date']) ? strtotime($r['promotion-start-date']) : '';
149
- $content->endDate = $content->extra->promotionEndDate = ($r['promotion-end-date']) ? strtotime($r['promotion-end-date']) : '';
150
- $content->extra->promotionType = ($r['promotion-type']) ? $r['promotion-type'] : '';
151
- $content->code = $content->extra->couponCode = ($r['coupon-code']) ? $r['coupon-code'] : '';
152
- $content->extra->category = ($r['category']) ? $r['category'] : '';
153
- $content->extra->linkHtml = ($r['link-code-html']) ? $r['link-code-html'] : '';
154
-
155
- $data[] = $content;
156
- }
157
- return $data;
158
- }
159
-
160
- private function getCJClient()
161
- {
162
- if ($this->api_client === null)
163
- {
164
- $this->api_client = new CjLinksRest($this->config('dev_key'));
165
- }
166
- return $this->api_client;
167
- }
168
-
169
- public function renderResults()
170
- {
171
- PluginAdmin::render('_metabox_results', array('module_id' => $this->getId()));
172
- }
173
-
174
- public function renderSearchResults()
175
- {
176
- $this->render('search_results', array('module_id' => $this->getId()));
177
- }
178
-
179
- public function renderSearchPanel()
180
- {
181
- $this->render('search_panel', array('module_id' => $this->getId()));
182
- }
183
-
184
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/CjLinks/ExtraDataCjLinks.php DELETED
@@ -1,32 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\CjLinks;
4
-
5
- use ContentEgg\application\components\ExtraData;
6
-
7
- /**
8
- * ExtraDataCjLinks 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 ExtraDataCjLinks extends ExtraData {
15
-
16
- public $advertiserId;
17
- public $advertiserName;
18
- public $advertiserSite;
19
- public $creativeHeight;
20
- public $creativeWidtht;
21
- public $language;
22
- public $linkHtml;
23
- public $destination;
24
- public $linkName;
25
- public $linkType;
26
- public $promotionStartDate;
27
- public $promotionEndDate;
28
- public $promotionType;
29
- public $couponCode;
30
- public $category;
31
-
32
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/CjLinks/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/application/modules/CjLinks/templates/data_universal.php DELETED
@@ -1,87 +0,0 @@
1
- <?php
2
- /*
3
- Name: Universal
4
- */
5
-
6
- __('Universal', 'content-egg-tpl');
7
-
8
- use ContentEgg\application\helpers\TemplateHelper;
9
- ?>
10
-
11
- <?php
12
- \wp_enqueue_style('egg-bootstrap');
13
- \wp_enqueue_style('content-egg-products');
14
- ?>
15
-
16
- <div class="egg-container">
17
- <?php if ($title): ?>
18
- <h3><?php echo esc_html($title); ?></h3>
19
- <?php endif; ?>
20
-
21
- <?php if ($data = TemplateHelper::filterData($items, 'linkType', 'Text Link', true)): ?>
22
- <div class="egg-listcontainer">
23
- <?php foreach ($data as $item): ?>
24
- <div class="row-products">
25
- <div class="col-md-10 col-sm-10 col-xs-12">
26
-
27
- <strong><?php echo esc_html($item['title']); ?></strong><br>
28
-
29
- <?php if ($item['description']): ?>
30
- <div class="small"><?php echo $item['description']; ?></div>
31
- <?php endif; ?>
32
-
33
- <div class="row<?php if ($item['extra']['couponCode']) echo ' egg-padding-top15'; ?>">
34
- <div class="col-md-6 col-sm-6 col-xs-12">
35
- <?php if ($item['extra']['couponCode']): ?>
36
- <?php _e('Coupon code:', 'content-egg-tpl'); ?>
37
- <span class="label label-info"><?php echo esc_html($item['extra']['couponCode']); ?></span><br>
38
- <span class="text-muted"><em><?php _e('Ends:', 'content-egg-tpl'); ?> <?php echo date(get_option('date_format'), $item['extra']['promotionEndDate']); ?></em></span>
39
- <?php endif; ?>
40
- </div>
41
- <div class="col-md-6 col-sm-6 col-xs-12 text-right text-muted">
42
- <img title="<?php echo esc_attr($item['extra']['advertiserSite']); ?>" src="http://www.google.com/s2/favicons?domain=http://<?php echo esc_attr($item['extra']['advertiserSite']); ?>" alt="<?php echo esc_attr($item['extra']['advertiserName']); ?>" />
43
- <small><?php echo esc_html($item['extra']['advertiserSite']); ?></small>
44
-
45
- </div>
46
- </div>
47
- </div>
48
- <div class="col-md-2 col-sm-2 col-xs-12 text-center">
49
- <a title="<?php echo esc_attr($item['extra']['advertiserSite']); ?>" rel="nofollow" target="_blank" href="<?php echo $item['url']; ?>" class="btn btn-success"><?php _e('Shop Sale', 'content-egg-tpl'); ?></a>
50
- </div>
51
- </div>
52
- <?php endforeach; ?>
53
- </div>
54
- <?php endif; ?>
55
-
56
- <?php if ($data = TemplateHelper::filterData($items, 'linkType', 'Banner', true)): ?>
57
- <div class="container-fluid">
58
- <?php $i = 0; ?>
59
- <div class="row">
60
- <?php foreach ($data as $item): ?>
61
- <div class="col-md-6">
62
- <a rel="nofollow" target="_blank" href="<?php echo $item['url']; ?>">
63
- <img src="<?php echo esc_attr($item['img']); ?>" alt="<?php echo esc_attr($item['title']); ?>" class="img-responsive" />
64
- </a>
65
- </div>
66
- <?php $i++;
67
- if ($i % 2 == 0): ?>
68
- <div class="clearfix"></div>
69
- <?php endif; ?>
70
- <?php endforeach; ?>
71
- </div>
72
- </div>
73
- <?php endif; ?>
74
-
75
- <?php if ($data = TemplateHelper::filterData($items, 'linkType', array('Text Link', 'Banner'), true, true)): ?>
76
- <div class="container-fluid">
77
- <?php foreach ($data as $item): ?>
78
- <div class="row">
79
- <div class="col-md-12">
80
- <?php echo $item['extra']['linkHtml']; ?>
81
- </div>
82
- </div>
83
- <?php endforeach; ?>
84
- </div>
85
- <?php endif; ?>
86
-
87
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/CjLinks/views/search_panel.php DELETED
@@ -1,18 +0,0 @@
1
- <select ng-model="query_params.<?php echo $module_id; ?>.promotion_type">
2
- <option value="">Any promotion type</option>
3
- <option value="coupon">Coupon</option>
4
- <option value="sweepstakes">Sweepstakes</option>
5
- <option value="product">Hot Product</option>
6
- <option value="sale/discount">Sale/Discount</option>
7
- <option value="free shipping">Free shipping</option>
8
- <option value="seasonal link">Seasonal link</option>
9
- </select>
10
-
11
- <select ng-model="query_params.<?php echo $module_id; ?>.link_type">
12
- <option value="">Any link type</option>
13
- <option value="Text Link">Text Link</option>
14
- <option value="Banner">Banner</option>
15
- <option value="Content Link">Content Link</option>
16
- <option value="Advanced Link">Advanced Link</option>
17
- <option value="Flash Link">Flash Link</option>
18
- </select>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/CjLinks/views/search_results.php DELETED
@@ -1,20 +0,0 @@
1
- <div class="search_results" ng-show="models.<?php echo $module_id; ?>.results.length > 0 && !models.<?php echo $module_id; ?>.processing">
2
- <div class="row search_results_row" ng-class="{'result_added' : result.added}" ng-click="add(result, '<?php echo $module_id; ?>')" repeat-done ng-repeat="result in models.<?php echo $module_id; ?>.results">
3
- <div class="col-md-1" ng-if="result.img">
4
- <img ng-src="{{result.img}}" ng-if="result.img" class="img-thumbnail" style="max-height: 150px;" />
5
- </div>
6
- <div ng-class="result.img ? 'col-md-11' : 'col-md-12'">
7
- <div class="small">
8
- <span class="text-muted">{{result.extra.linkType}}
9
- <span ng-show="result.extra.creativeWidth">{{result.extra.creativeWidth}}x{{result.extra.creativeHeight}}</span>
10
- </span> -
11
- <em>{{result.extra.advertiserName}} ({{result.extra.advertiserId}})</em>
12
- </div>
13
- <strong ng-show="result.title">{{result.title}}</strong><br>
14
- <span ng-show="result.description">{{result.description}}<br></span>
15
- <span ng-show="result.extra.couponCode">
16
- <em><?php _e('Код купона:', 'content-egg'); ?> {{result.extra.couponCode}}- <span ng-show="result.extra.promotionStartDate">{{result.extra.promotionStartDate * 1000 |date:'mediumDate'}} - {{result.extra.promotionEndDate * 1000 |date:'mediumDate'}}</span></em>
17
- </span>
18
- </div>
19
- </div>
20
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Freebase/ExtraDataFreebase.php DELETED
@@ -1,27 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\Freebase;
4
-
5
- use ContentEgg\application\components\ExtraData;
6
-
7
- /**
8
- * ExtraDataFreebase 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 ExtraDataFreebase extends ExtraData {
15
-
16
- public $article;
17
- public $officialWebsite = array();
18
- public $topicEquivalentWebpage = array();
19
- public $topicalWebpage = array();
20
- public $quotations = array();
21
- public $notableFor = array();
22
- public $notableTypes = array();
23
- public $awardNominations = array();
24
- public $artistTrack = array();
25
- public $dateOfBirth;
26
- public $freebaseId;
27
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Freebase/FreebaseConfig.php DELETED
@@ -1,88 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\Freebase;
4
-
5
- use ContentEgg\application\components\ParserModuleConfig;
6
-
7
- /**
8
- * FreebaseConfig 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 FreebaseConfig extends ParserModuleConfig {
15
-
16
- public function options()
17
- {
18
- $optiosn = array(
19
- 'api_key' => array(
20
- 'title' => 'API Key <span class="cegg_required">*</span>',
21
- 'description' => __('Ключ для доступа к API. Получить можно в Google <a href="http://code.google.com/apis/console">API консоли</a>.', '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' => __('Поле "API Key" не может быть пустым.', 'content-egg'),
30
- ),
31
- ),
32
- 'section' => 'default',
33
- ),
34
- 'entries_per_page' => array(
35
- 'title' => __('Результатов', 'content-egg'),
36
- 'description' => __('Количество результатов для одного запроса', 'content-egg'),
37
- 'callback' => array($this, 'render_input'),
38
- 'default' => 3,
39
- 'validator' => array(
40
- 'trim',
41
- 'absint',
42
- array(
43
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
44
- 'arg' => 10,
45
- 'message' => __('Поле "Результатов" не может быть больше 10.', 'content-egg'),
46
- ),
47
- ),
48
- 'section' => 'default',
49
- ),
50
- 'entries_per_page_update' => array(
51
- 'title' => __('Результатов для автоблоггинга', 'content-egg'),
52
- 'description' => __('Количество результатов для автоблоггинга.', 'content-egg'),
53
- 'callback' => array($this, 'render_input'),
54
- 'default' => 1,
55
- 'validator' => array(
56
- 'trim',
57
- 'absint',
58
- array(
59
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
60
- 'arg' => 10,
61
- 'message' => __('Поле "Результатов для автоблоггинга" не может быть больше 10.', 'content-egg'),
62
- ),
63
- ),
64
- 'section' => 'default',
65
- ),
66
- 'save_img' => array(
67
- 'title' => __('Сохранять картинки', 'content-egg'),
68
- 'description' => __('Сохранять картинки на сервер', 'content-egg'),
69
- 'callback' => array($this, 'render_checkbox'),
70
- 'default' => false,
71
- 'section' => 'default',
72
- ),
73
- 'description_size' => array(
74
- 'title' => __('Обрезать описание', 'content-egg'),
75
- 'description' => __('Размер описания в символах (0 - не обрезать)', 'content-egg'),
76
- 'callback' => array($this, 'render_input'),
77
- 'default' => '800',
78
- 'validator' => array(
79
- 'trim',
80
- 'absint',
81
- ),
82
- 'section' => 'default',
83
- ),
84
- );
85
- return array_merge(parent::options(), $optiosn);
86
- }
87
-
88
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Freebase/FreebaseModule.php DELETED
@@ -1,181 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\Freebase;
4
-
5
- use ContentEgg\application\components\ParserModule;
6
- use ContentEgg\application\libs\google\FreebaseRest;
7
- use ContentEgg\application\components\Content;
8
- use ContentEgg\application\helpers\TextHelper;
9
- use ContentEgg\application\admin\PluginAdmin;
10
- use ContentEgg\application\admin\GeneralConfig;
11
-
12
- /**
13
- * FreebaseModule class file
14
- *
15
- * @author keywordrush.com <support@keywordrush.com>
16
- * @link http://www.keywordrush.com/
17
- * @copyright Copyright &copy; 2015 keywordrush.com
18
- */
19
- class FreebaseModule extends ParserModule {
20
-
21
- const MAX_IMG_WIDTH = 300;
22
- const MAX_IMG_HEIGHT = 300;
23
-
24
- public function info()
25
- {
26
- return array(
27
- 'name' => 'Freebase',
28
- 'description' => '<span style="color:red;">' . __('Этот модуль больше не работает по причине закрытия Freebase API. Модуль оставлен в целях совместимости с предыдущими версиями плагина.', 'content-egg') . '</span>',
29
- //'api_agreement' => 'https://developers.google.com/freebase/terms',
30
- );
31
- }
32
-
33
- public function getParserType()
34
- {
35
- return self::PARSER_TYPE_CONTENT;
36
- }
37
-
38
- public function isFree()
39
- {
40
- return true;
41
- }
42
-
43
- public function doRequest($keyword, $query_params = array(), $is_autoupdate = false)
44
- {
45
- // The Freebase API will be completely shut-down on Aug 31 2016.
46
- throw new \Exception('The Freebse API has been officially closed.');
47
-
48
- $params = array();
49
- /**
50
- * For a list of all currently supported language codes, visit the following:
51
- * @link: https://www.googleapis.com/freebase/v1/search?help=langs&indent=true
52
- */
53
- $params['lang'] = GeneralConfig::getInstance()->option('lang');
54
-
55
- if ($is_autoupdate)
56
- $params['limit'] = $this->config('entries_per_page_update');
57
- else
58
- $params['limit'] = $this->config('entries_per_page');
59
-
60
- try
61
- {
62
- $client = new FreebaseRest($this->config('api_key'));
63
- $results = $client->fullSearch($keyword, $params, 'commons');
64
- } catch (Exception $e)
65
- {
66
- throw new \Exception(strip_tags($e->getMessage()));
67
- }
68
-
69
- if (!$results || !is_array($results))
70
- return array();
71
-
72
- $data = array();
73
- foreach ($results as $key => $result)
74
- {
75
- $result = $result['property'];
76
- $content = new Content;
77
-
78
- $content->unique_id = $result['/type/object/mid']['values'][0]['value'];
79
- $content->title = self::getLeaf($result, '/type/object/name');
80
- if ($description = self::getLeaf($result, '/common/topic/description'))
81
- $content->description = nl2br($description);
82
- elseif ($description = self::getLeaf($result, '/common/document/text'))
83
- $content->description = nl2br($description);
84
- else
85
- continue;
86
-
87
- if ($max_size = $this->config('description_size'))
88
- $content->description = TextHelper::truncate($content->description, $max_size);
89
-
90
- if (!empty($result['/common/topic/description']['values'][0]['citation']['uri']))
91
- $content->url = strip_tags($result['/common/topic/description']['values'][0]['citation']['uri']);
92
- if (!empty($result['/common/topic/image']))
93
- {
94
- $content->img = 'https://usercontent.googleapis.com/freebase/v1/image';
95
- $content->img .= strip_tags($result['/common/topic/image']['values'][0]['id']) .
96
- '?maxwidth=' . self::MAX_IMG_WIDTH . '&maxheight=' . self::MAX_IMG_HEIGHT;
97
- }
98
- $content->extra = self::fillExtra($result);
99
- $data[] = $content;
100
- }
101
-
102
-
103
- return $data;
104
- }
105
-
106
- static private function fillExtra($result)
107
- {
108
- $extra = new ExtraDataFreebase;
109
-
110
- $extra->freebaseId = self::getLeaf($result, '/type/object/mid');
111
- $extra->dateOfBirth = self::getLeaf($result, '/people/person/date_of_birth');
112
- $extra->officialWebsite = self::getLeaf($result, '/common/topic/official_website', 'array');
113
- $extra->equivalentWebpage = self::getLeaf($result, '/common/topic/topic_equivalent_webpage', 'array');
114
- $extra->topicalWebpage = self::getLeaf($result, '/common/topic/topical_webpage', 'array');
115
- $extra->notableFor = self::getLeaf($result, '/common/topic/notable_for', 'array');
116
- $extra->notableTypes = self::getLeaf($result, '/common/topic/notable_types', 'array');
117
- $extra->awardNominations = self::getLeaf($result, '/award/award_nominee/award_nominations', 'array');
118
- $extra->artistTrack = self::getLeaf($result, '/music/artist/track', 'array');
119
-
120
- if (isset($result['/common/topic/article']) && isset($result['/common/topic/article']['values'][0]['property']['/common/document/text']))
121
- {
122
- $extra->article = $result['/common/topic/article']['values'][0]['property']['/common/document/text']['values'][0]['value'];
123
- $extra->article = strip_tags($extra->article);
124
- $extra->article = nl2br(trim($extra->article));
125
- }
126
- if (isset($result['/common/topic/image']))
127
- {
128
- foreach ($result['/common/topic/image']['values'] as $img)
129
- {
130
- $extra->gallery[] = 'https://usercontent.googleapis.com/freebase/v1/image' . $img['id'] .
131
- '?maxwidth=' . self::MAX_IMG_WIDTH . '&maxheight=' . self::MAX_IMG_HEIGHT;
132
- }
133
- }
134
-
135
- return $extra;
136
- }
137
-
138
- static private function getLeaf($data, $index, $type = 'scalar')
139
- {
140
- if (empty($data[$index]) || empty($data[$index]['values']))
141
- {
142
- if ($type == 'array')
143
- return array();
144
- else
145
- return '';
146
- }
147
-
148
- if ($type == 'scalar')
149
- {
150
- if (isset($data[$index]['values'][0]['value']))
151
- return strip_tags($data[$index]['values'][0]['value']);
152
- elseif (isset($data[$index]['values'][0]['text']))
153
- return strip_tags($data[$index]['values'][0]['text']);
154
- else
155
- return '';
156
- } elseif ($type == 'array')
157
- {
158
- $result = array();
159
- foreach ($data[$index]['values'] as $d)
160
- {
161
- if (isset($d['text']))
162
- $result[] = strip_tags($d['text']);
163
- elseif (isset($d['value']))
164
- $result[] = strip_tags($d['value']);
165
- }
166
- return $result;
167
- }
168
- return '';
169
- }
170
-
171
- public function renderResults()
172
- {
173
- PluginAdmin::render('_metabox_results', array('module_id' => $this->getId()));
174
- }
175
-
176
- public function renderSearchResults()
177
- {
178
- PluginAdmin::render('_metabox_search_results', array('module_id' => $this->getId()));
179
- }
180
-
181
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Freebase/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/application/modules/Freebase/templates/data_simple.php DELETED
@@ -1,37 +0,0 @@
1
- <?php
2
- /*
3
- Name: Simple
4
- */
5
- __('Simple', 'content-egg-tpl');
6
- ?>
7
- <?php \wp_enqueue_style('egg-bootstrap'); ?>
8
-
9
- <div class="egg-container egg-item">
10
- <?php if ($title): ?>
11
- <h3><?php echo esc_html($title); ?></h3>
12
- <?php endif; ?>
13
-
14
- <?php foreach ($items as $item): ?>
15
- <div class="media">
16
- <?php if ($item['img']): ?>
17
- <div class="media-left">
18
- <img style="max-width: 225px;" class="media-object img-thumbnail" src="<?php echo $item['img']; ?>" alt="<?php echo esc_attr($item['title']); ?>" />
19
- </div>
20
- <?php endif; ?>
21
- <div class="media-body">
22
- <h4 class="media-heading"><?php echo esc_html($item['title']); ?></h4>
23
- <p>
24
- <?php echo $item['description']; ?>
25
- </p>
26
- <div class="small text-muted">
27
- <?php _e('Source:', 'content-egg-tpl'); ?>
28
- <a href="http://www.freebase.com/" target="_blank" rel="nofollow">Freebase</a>
29
- <?php if (!empty($item['url'])): ?>
30
- ,<a href="http://wikipedia.org/" target="_blank" rel="nofollow">Wikipedia</a>
31
- <?php endif; ?>.
32
- </div>
33
- </div>
34
- </div>
35
-
36
- <?php endforeach; ?>
37
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/GoogleImages/ExtraDataGoogleImages.php DELETED
@@ -1,16 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\GoogleImages;
4
-
5
- use ContentEgg\application\components\ExtraData;
6
-
7
- /**
8
- * ExtraDataGoogleImages 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 ExtraDataGoogleImages extends ExtraData {
15
-
16
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/GoogleImages/GoogleImagesConfig.php DELETED
@@ -1,173 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\GoogleImages;
4
-
5
- use ContentEgg\application\components\ParserModuleConfig;
6
-
7
- /**
8
- * GoogleImagesConfig 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 GoogleImagesConfig extends ParserModuleConfig {
15
-
16
- public function options()
17
- {
18
- $optiosn = array(
19
- 'license' => array(
20
- 'title' => __('Тип лицензии', 'content-egg'),
21
- 'description' => __('Поиск изображений, которые можно использовать. Подробнее <a href="https://support.google.com/websearch/answer/29508">здесь</a>.', 'content-egg'),
22
- 'callback' => array($this, 'render_dropdown'),
23
- 'dropdown_options' => array(
24
- '' => __('Любая лицензия', 'content-egg'),
25
- '(cc_publicdomain|cc_attribute|cc_sharealike|cc_noncommercial|cc_nonderived)' => __('Любая Сreative Сommons', 'content-egg'),
26
- '(cc_publicdomain|cc_attribute|cc_sharealike|cc_nonderived).-(cc_noncommercial)' => __('Разрешено коммерческое использование', 'content-egg'),
27
- '(cc_publicdomain|cc_attribute|cc_sharealike|cc_noncommercial).-(cc_nonderived)' => __('Разрешено изменение', 'content-egg'),
28
- '(cc_publicdomain|cc_attribute|cc_sharealike).-(cc_noncommercial|cc_nonderived)' => __('Коммерческое использование и изменение', 'content-egg'),
29
- ),
30
- 'default' => '',
31
- 'section' => 'default',
32
- 'metaboxInit' => true,
33
- ),
34
- 'entries_per_page' => array(
35
- 'title' => __('Результатов', 'content-egg'),
36
- 'description' => __('Количество результатов для одного запроса. Не может быть больше 8.', 'content-egg'),
37
- 'callback' => array($this, 'render_input'),
38
- 'default' => '8',
39
- 'validator' => array(
40
- 'trim',
41
- 'absint',
42
- array(
43
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
44
- 'arg' => 8,
45
- 'message' => __('Поле "Результатов" не может быть больше 8.', 'content-egg'),
46
- ),
47
- ),
48
- 'section' => 'default',
49
- ),
50
- 'entries_per_page_update' => array(
51
- 'title' => __('Результатов для автоблоггинга', 'content-egg'),
52
- 'description' => __('Количество результатов для автоблоггинга.', 'content-egg'),
53
- 'callback' => array($this, 'render_input'),
54
- 'default' => 3,
55
- 'validator' => array(
56
- 'trim',
57
- 'absint',
58
- array(
59
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
60
- 'arg' => 8,
61
- 'message' => __('Поле "Результатов для автоблоггинга" не может быть больше 8.', 'content-egg'),
62
- ),
63
- ),
64
- 'section' => 'default',
65
- ),
66
- 'imgc' => array(
67
- 'title' => __('Цвет', 'content-egg'),
68
- 'description' => '',
69
- 'callback' => array($this, 'render_dropdown'),
70
- 'dropdown_options' => array(
71
- '' => __('Любого цвета', 'content-egg'),
72
- 'gray' => __('Черно-белые', 'content-egg'),
73
- 'color' => __('Цветные', 'content-egg'),
74
- ),
75
- 'default' => '',
76
- 'section' => 'default',
77
- ),
78
- 'imgcolor' => array(
79
- 'title' => __('Преобладание цвета', 'content-egg'),
80
- 'description' => '',
81
- 'callback' => array($this, 'render_dropdown'),
82
- 'dropdown_options' => array(
83
- '' => __('Любой цвет', 'content-egg'),
84
- 'black' => __('Черный', 'content-egg'),
85
- 'blue' => __('Синий', 'content-egg'),
86
- 'brown' => __('Коричневый', 'content-egg'),
87
- 'gray' => __('Серый', 'content-egg'),
88
- 'green' => __('Зеленый', 'content-egg'),
89
- 'orange' => __('Оранжевый', 'content-egg'),
90
- 'pink' => __('Розовый', 'content-egg'),
91
- 'purple' => __('Фиолетовый', 'content-egg'),
92
- 'red' => __('Красный', 'content-egg'),
93
- 'teal' => __('Бирюзовый', 'content-egg'),
94
- 'white' => __('Белый', 'content-egg'),
95
- 'yellow' => __('Желтый', 'content-egg'),
96
- ),
97
- 'default' => '',
98
- 'section' => 'default',
99
- ),
100
- 'imgsz' => array(
101
- 'title' => __('Размер', 'content-egg'),
102
- 'description' => '',
103
- 'callback' => array($this, 'render_dropdown'),
104
- 'dropdown_options' => array(
105
- '' => __('Любого размера', 'content-egg'),
106
- 'icon' => __('Маленькие', 'content-egg'),
107
- 'small|medium|large|xlarge' => __('Средние', 'content-egg'),
108
- 'xxlarge' => __('Большие', 'content-egg'),
109
- 'huge' => __('Огромные', 'content-egg'),
110
- ),
111
- 'default' => '',
112
- 'section' => 'default',
113
- 'metaboxInit' => true,
114
- ),
115
- 'imgtype' => array(
116
- 'title' => __('Тип', 'content-egg'),
117
- 'description' => '',
118
- 'callback' => array($this, 'render_dropdown'),
119
- 'dropdown_options' => array(
120
- '' => __('Любого размера', 'content-egg'),
121
- 'face' => __('Лица', 'content-egg'),
122
- 'photo' => __('Фотографии', 'content-egg'),
123
- 'clipart' => __('Клип-арт', 'content-egg'),
124
- 'lineart' => __('Ч/б рисунки', 'content-egg'),
125
- ),
126
- 'default' => '',
127
- 'section' => 'default',
128
- ),
129
- 'safe' => array(
130
- 'title' => __('Безопасный поиск', 'content-egg'),
131
- 'description' => '',
132
- 'callback' => array($this, 'render_dropdown'),
133
- 'dropdown_options' => array(
134
- 'active' => __('Включен', 'content-egg'),
135
- 'moderate' => __('Модерация', 'content-egg'),
136
- 'off' => __('Отключен', 'content-egg'),
137
- ),
138
- 'default' => 'moderate',
139
- 'section' => 'default',
140
- ),
141
- 'save_img' => array(
142
- 'title' => __('Сохранять картинки', 'content-egg'),
143
- 'description' => __('Сохранять картинки на сервер', 'content-egg'),
144
- 'callback' => array($this, 'render_checkbox'),
145
- 'default' => false,
146
- 'section' => 'default',
147
- ),
148
- 'description_size' => array(
149
- 'title' => __('Обрезать описание', 'content-egg'),
150
- 'description' => __('Размер описания в символах (0 - не обрезать)', 'content-egg'),
151
- 'callback' => array($this, 'render_input'),
152
- 'default' => '220',
153
- 'validator' => array(
154
- 'trim',
155
- 'absint',
156
- ),
157
- 'section' => 'default',
158
- ),
159
- 'as_sitesearch' => array(
160
- 'title' => __('Поиск по сайту', 'content-egg'),
161
- 'description' => __('Ограничить поиск только этим доменом. Например, задайте: photobucket.com', 'content-egg'),
162
- 'callback' => array($this, 'render_input'),
163
- 'default' => '',
164
- 'validator' => array(
165
- 'trim',
166
- ),
167
- 'section' => 'default',
168
- ),
169
- );
170
- return array_merge(parent::options(), $optiosn);
171
- }
172
-
173
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/GoogleImages/GoogleImagesModule.php DELETED
@@ -1,137 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\GoogleImages;
4
-
5
- use ContentEgg\application\components\ParserModule;
6
- use ContentEgg\application\libs\google\ImagesSearch;
7
- use ContentEgg\application\components\Content;
8
- use ContentEgg\application\helpers\TextHelper;
9
- use ContentEgg\application\admin\PluginAdmin;
10
- use ContentEgg\application\admin\GeneralConfig;
11
-
12
- /**
13
- * GoogleImagesModule class file
14
- *
15
- * @author keywordrush.com <support@keywordrush.com>
16
- * @link http://www.keywordrush.com/
17
- * @copyright Copyright &copy; 2015 keywordrush.com
18
- */
19
- class GoogleImagesModule extends ParserModule {
20
-
21
- public function info()
22
- {
23
- return array(
24
- 'name' => 'Google Images',
25
- 'description' => __('<span style="color:red;">Этот модуль больше не работает по причине закрытия Google Image Search API. Модуль оставлен в целях совместимости с предыдущими версиями плагина.</span>', 'content-egg'),
26
- //'api_agreement' => 'https://developers.google.com/image-search/terms',
27
- );
28
- }
29
-
30
- public function getParserType()
31
- {
32
- return self::PARSER_TYPE_IMAGE;
33
- }
34
-
35
- public function defaultTemplateName()
36
- {
37
- return 'data_image';
38
- }
39
-
40
- public function isFree()
41
- {
42
- return true;
43
- }
44
-
45
- public function doRequest($keyword, $query_params = array(), $is_autoupdate = false)
46
- {
47
-
48
- // The Google Image Search API has been officially deprecated as
49
- // of May 26, 2011. It will continue to work as per our deprecation
50
- // policy, but the number of requests you may make per day may be
51
- // limited. We encourage you to use the Custom Search API, which now
52
- // supports image search.
53
-
54
- throw new \Exception('The Google Image Search API has been officially closed.');
55
-
56
- $options = array();
57
-
58
- if ($is_autoupdate)
59
- $options['rsz'] = $this->config('entries_per_page_update');
60
- else
61
- $options['rsz'] = $this->config('entries_per_page');
62
-
63
- if (isset($query_params['license']))
64
- $options['as_rights'] = $query_params['license'];
65
- elseif ($this->config('license'))
66
- $options['as_rights'] = $this->config('license');
67
-
68
- if (isset($query_params['imgsz']))
69
- $options['imgsz'] = $query_params['imgsz'];
70
- elseif ($this->config('imgsz'))
71
- $options['imgsz'] = $this->config('imgsz');
72
-
73
- $options['hl'] = GeneralConfig::getInstance()->option('lang');
74
- if (!empty($_SERVER['REMOTE_ADDR']))
75
- $options['userip'] = $_SERVER['REMOTE_ADDR'];
76
-
77
- $options_list = array('as_sitesearch', 'imgc', 'imgcolor', 'imgtype', 'safe', 'as_sitesearch');
78
- foreach ($options_list as $o)
79
- {
80
- if ($this->config($o))
81
- $options[$o] = $this->config($o);
82
- }
83
- try
84
- {
85
- $api_client = new ImagesSearch();
86
- $results = $api_client->search($keyword, $options);
87
- } catch (Exception $e)
88
- {
89
- throw new \Exception(strip_tags($e->getMessage()));
90
- }
91
-
92
- if (empty($results['responseData']) || empty($results['responseData']['results']))
93
- return array();
94
-
95
- return $this->prepareResults($results['responseData']['results']);
96
- }
97
-
98
- private function prepareResults($results)
99
- {
100
- $data = array();
101
- foreach ($results as $key => $r)
102
- {
103
- $content = new Content;
104
-
105
- $content->unique_id = $r['imageId'];
106
- $content->title = $r['titleNoFormatting'];
107
- $content->description = trim($r['contentNoFormatting']);
108
- if ($max_size = $this->config('description_size'))
109
- $content->description = TextHelper::truncate($content->description, $max_size);
110
-
111
- $content->img = $r['url'];
112
- $content->url = $r['originalContextUrl'];
113
-
114
- $extra = new ExtraDataGoogleImages;
115
- $extra->source = $r['visibleUrl'];
116
- $content->extra = $extra;
117
- $data[] = $content;
118
- }
119
- return $data;
120
- }
121
-
122
- public function renderResults()
123
- {
124
- PluginAdmin::render('_metabox_results', array('module_id' => $this->getId()));
125
- }
126
-
127
- public function renderSearchResults()
128
- {
129
- PluginAdmin::render('_metabox_search_results_images', array('module_id' => $this->getId()));
130
- }
131
-
132
- public function renderSearchPanel()
133
- {
134
- $this->render('search_panel', array('module_id' => $this->getId()));
135
- }
136
-
137
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/GoogleImages/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/application/modules/GoogleImages/js/module.js DELETED
@@ -1,6 +0,0 @@
1
- contentEgg.filter('normalizeFlickr', function() {
2
- return function(input) {
3
- var pattern = RegExp(/_\w{1}\.jpg$/);
4
- return input.replace(pattern, '_m.jpg');
5
- }
6
- });
 
 
 
 
 
 
trunk/application/modules/GoogleImages/templates/data_image.php DELETED
@@ -1,20 +0,0 @@
1
- <?php
2
- /*
3
- Name: Image
4
- */
5
- __('Image', 'content-egg-tpl');
6
- ?>
7
- <?php \wp_enqueue_style('egg-bootstrap'); ?>
8
-
9
- <div class="egg-container egg-image">
10
- <?php if ($title): ?>
11
- <h3><?php echo esc_html($title); ?></h3>
12
- <?php endif; ?>
13
- <div class="row">
14
- <?php foreach ($items as $item): ?>
15
- <div class="col-md-12" style="padding-bottom: 20px;">
16
- <img src="<?php echo $item['img']; ?>" alt="<?php echo esc_attr($item['keyword']); ?>" class="img-thumbnail" />
17
- </div>
18
- <?php endforeach; ?>
19
- </div>
20
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/GoogleImages/templates/data_justified_gallery.php DELETED
@@ -1,48 +0,0 @@
1
- <?php
2
- /*
3
- * Name: Gallery
4
- *
5
- * @link: http://miromannino.github.io/Justified-Gallery/
6
- */
7
- __('Gallery', 'content-egg-tpl');
8
- ?>
9
-
10
- <?php wp_enqueue_style('egg-justified-gallery', ContentEgg\PLUGIN_RES . '/justified_gallery/justifiedGallery.min.css'); ?>
11
- <?php wp_enqueue_script('egg-justified-gallery', ContentEgg\PLUGIN_RES . '/justified_gallery/jquery.justifiedGallery.min.js'); ?>
12
- <?php wp_enqueue_style('egg-color-box', ContentEgg\PLUGIN_RES . '/colorbox/colorbox.css'); ?>
13
- <?php wp_enqueue_script('egg-color-box', ContentEgg\PLUGIN_RES . '/colorbox/jquery.colorbox-min.js'); ?>
14
-
15
- <?php
16
- $rand = rand(0, 100000);
17
- ?>
18
-
19
- <?php if ($title): ?>
20
- <h3><?php echo esc_html($title); ?></h3>
21
- <?php endif; ?>
22
-
23
- <div class="cegg-flickr-gallery">
24
- <?php foreach ($items as $item): ?>
25
- <a href="<?php echo $item['img']; ?>" rel="gallery<?php echo $rand; ?>">
26
- <img src="<?php echo $item['img']; ?>" alt="<?php echo esc_attr($item['title']); ?>" class="img-thumbnail" />
27
- </a>
28
- <?php endforeach; ?>
29
- </div>
30
-
31
- <script>
32
- jQuery(document).ready(function() {
33
-
34
- jQuery('.cegg-flickr-gallery').justifiedGallery({
35
- rowHeight: 160,
36
- lastRow: 'nojustify',
37
- margins: 1,
38
- }).on('jg.complete', function() {
39
- jQuery(this).find('a').colorbox({
40
- maxWidth: '80%',
41
- maxHeight: '80%',
42
- opacity: 0.8,
43
- transition: 'elastic',
44
- current: ''
45
- });
46
- });
47
- });
48
- </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/GoogleImages/templates/data_simple.php DELETED
@@ -1,27 +0,0 @@
1
- <?php
2
- /*
3
- Name: Simple
4
- */
5
- __('Simple', 'content-egg-tpl');
6
- ?>
7
- <?php \wp_enqueue_style('egg-bootstrap'); ?>
8
-
9
-
10
- <div class="egg-container egg-image">
11
- <?php if ($title): ?>
12
- <h3><?php echo esc_html($title); ?></h3>
13
- <?php endif; ?>
14
-
15
- <div class="row">
16
- <?php foreach ($items as $item): ?>
17
- <div class="col-md-12" style="padding-bottom: 20px;">
18
- <img src="<?php echo $item['img']; ?>" alt="<?php echo esc_attr($item['keyword']); ?>" class="img-thumbnail" />
19
- <div class="text-center">
20
- <p class="small"><?php printf(__('Source: %s', 'content-egg'), esc_attr($item['extra']['source'])); ?></p>
21
- <h4><?php echo esc_html($item['title']); ?></h4>
22
- <p><?php echo $item['description']; ?></p>
23
- </div>
24
- </div>
25
- <?php endforeach; ?>
26
- </div>
27
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/GoogleImages/views/search_panel.php DELETED
@@ -1,16 +0,0 @@
1
- <select ng-model="query_params.<?php echo $module_id; ?>.license">
2
- <option value=""><?php _e('Любая лицензия', 'content-egg'); ?></option>
3
- <option value="(cc_publicdomain|cc_attribute|cc_sharealike|cc_noncommercial|cc_nonderived)"><?php _e('Любая Сreative Сommons', 'content-egg'); ?></option>
4
- <option value="(cc_publicdomain|cc_attribute|cc_sharealike|cc_nonderived).-(cc_noncommercial)"><?php _e('Разрешено коммерческое использование', 'content-egg'); ?></option>
5
- <option value="(cc_publicdomain|cc_attribute|cc_sharealike|cc_noncommercial).-(cc_nonderived)"><?php _e('Разрешено изменение', 'content-egg'); ?></option>
6
- <option value="(cc_publicdomain|cc_attribute|cc_sharealike).-(cc_noncommercial|cc_nonderived)"><?php _e('Коммерческое использование и изменение', 'content-egg'); ?></option>
7
- </select>
8
-
9
-
10
- <select ng-model="query_params.<?php echo $module_id; ?>.imgsz">
11
- <option value=""><?php _e('Любого размера', 'content-egg'); ?></option>
12
- <option value="icon"><?php _e('Маленькие', 'content-egg'); ?></option>
13
- <option value="small|medium|large|xlarge"><?php _e('Средние', 'content-egg'); ?></option>
14
- <option value="xxlarge"><?php _e('Большие', 'content-egg'); ?></option>
15
- <option value="huge"><?php _e('Огромные', 'content-egg'); ?></option>
16
- </select>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Pixabay/ExtraDataPixabay.php DELETED
@@ -1,29 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\Pixabay;
4
-
5
- use ContentEgg\application\components\ExtraData;
6
-
7
- /**
8
- * ExtraDataBingImages class file
9
- *
10
- * @author keywordrush.com <support@keywordrush.com>
11
- * @link http://www.keywordrush.com/
12
- * @copyright Copyright &copy; 2016 keywordrush.com
13
- */
14
- class ExtraDataPixabay extends ExtraData {
15
-
16
- public $likes;
17
- public $favorites;
18
- public $views;
19
- public $comments;
20
- public $downloads;
21
- public $previewURL;
22
- public $imageWidth;
23
- public $user_id;
24
- public $user;
25
- public $type;
26
- public $userImageURL;
27
- public $imageHeight;
28
-
29
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Pixabay/PixabayConfig.php DELETED
@@ -1,175 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\Pixabay;
4
-
5
- use ContentEgg\application\components\ParserModuleConfig;
6
-
7
- /**
8
- * PixabayConfig class file
9
- *
10
- * @author keywordrush.com <support@keywordrush.com>
11
- * @link http://www.keywordrush.com/
12
- * @copyright Copyright &copy; 2016 keywordrush.com
13
- */
14
- class PixabayConfig extends ParserModuleConfig {
15
-
16
- public function options()
17
- {
18
- $optiosn = array(
19
- 'key' => array(
20
- 'title' => 'API Key <span class="cegg_required">*</span>',
21
- 'description' => __('Ключ доступа к Pixabay API. Найти можно <a href="https://pixabay.com/api/docs/">здесь</a> (сначала залогиньтесь в свой аккаунт pixabay).', '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' => __('Поле "Key" не может быть пустым.', 'content-egg'),
30
- ),
31
- ),
32
- 'section' => 'default',
33
- ),
34
- 'entries_per_page' => array(
35
- 'title' => __('Результатов', 'content-egg'),
36
- 'description' => __('Количество результатов для одного запроса.', 'content-egg'),
37
- 'callback' => array($this, 'render_input'),
38
- 'default' => 20,
39
- 'validator' => array(
40
- 'trim',
41
- 'absint',
42
- array(
43
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
44
- 'arg' => 200,
45
- 'message' => __('Поле "Результатов" не может быть больше 200.', 'content-egg'),
46
- ),
47
- ),
48
- 'section' => 'default',
49
- ),
50
- 'entries_per_page_update' => array(
51
- 'title' => __('Результатов для автоблоггинга', 'content-egg'),
52
- 'description' => __('Количество результатов для автоблоггинга.', 'content-egg'),
53
- 'callback' => array($this, 'render_input'),
54
- 'default' => 5,
55
- 'validator' => array(
56
- 'trim',
57
- 'absint',
58
- array(
59
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
60
- 'arg' => 200,
61
- 'message' => __('Поле "Результатов для автоблоггинга" не может быть больше 200.', 'content-egg'),
62
- ),
63
- ),
64
- 'section' => 'default',
65
- ),
66
- 'image_size' => array(
67
- 'title' => __('Размер', 'content-egg'),
68
- 'description' => __('Размер изображения по высоте.', 'content-egg'),
69
- 'callback' => array($this, 'render_dropdown'),
70
- 'dropdown_options' => array(
71
- '_180' => '180px',
72
- '_340' => '340px',
73
- '_640' => '640px',
74
- '_960' => '960px',
75
- ),
76
- 'default' => '_640',
77
- 'section' => 'default',
78
- 'metaboxInit' => true,
79
- ),
80
- 'image_type' => array(
81
- 'title' => __('Тип изображения', 'content-egg'),
82
- 'description' => 'A media type to search within.',
83
- 'callback' => array($this, 'render_dropdown'),
84
- 'dropdown_options' => array(
85
- 'all' => __('Все', 'content-egg'),
86
- 'photo' => 'Photo',
87
- 'illustration' => 'Illustration',
88
- 'vector' => 'Vector',
89
- ),
90
- 'default' => 'all',
91
- 'section' => 'default',
92
- 'metaboxInit' => true,
93
- ),
94
- 'orientation' => array(
95
- 'title' => __('Ориентация', 'content-egg'),
96
- 'description' => 'Whether an image is wider than it is tall, or taller than it is wide.',
97
- 'callback' => array($this, 'render_dropdown'),
98
- 'dropdown_options' => array(
99
- 'all' => __('Все', 'content-egg'),
100
- 'horizontal' => 'Horizontal',
101
- 'vertical' => 'Vertical',
102
- ),
103
- 'default' => 'all',
104
- 'section' => 'default',
105
- 'metaboxInit' => true,
106
- ),
107
- 'category' => array(
108
- 'title' => __('Категория', 'content-egg'),
109
- 'description' => 'Filter images by category.',
110
- 'callback' => array($this, 'render_dropdown'),
111
- 'dropdown_options' => array(
112
- '' => __('Все', 'content-egg'),
113
- 'fashion' => 'Fashion',
114
- 'nature' => 'Nature',
115
- 'backgrounds' => 'Backgrounds',
116
- 'science' => 'Science',
117
- 'education' => 'Education',
118
- 'people' => 'People',
119
- 'feelings' => 'Feelings',
120
- 'religion' => 'Religion',
121
- 'health' => 'Health',
122
- 'places' => 'Places',
123
- 'animals' => 'Animals',
124
- 'industry' => 'Industry',
125
- 'food' => 'Food',
126
- 'computer' => 'Computer',
127
- 'sports' => 'Sports',
128
- 'transportation' => 'Transportation',
129
- 'travel' => 'Travel',
130
- 'buildings' => 'Buildings',
131
- 'business' => 'Business',
132
- 'music' => 'Music',
133
- ),
134
- 'default' => '',
135
- 'section' => 'default',
136
- 'metaboxInit' => true,
137
- ),
138
- 'editors_choice' => array(
139
- 'title' => __('Выбор редактора', 'content-egg'),
140
- 'description' => __("Select images that have received an Editor's Choice award.", 'content-egg'),
141
- 'callback' => array($this, 'render_checkbox'),
142
- 'default' => false,
143
- 'section' => 'default',
144
- ),
145
- 'safesearch' => array(
146
- 'title' => __('Безопасный поиск', 'content-egg'),
147
- 'description' => __("A flag indicating that only images suitable for all ages should be returned.", 'content-egg'),
148
- 'callback' => array($this, 'render_checkbox'),
149
- 'default' => false,
150
- 'section' => 'default',
151
- ),
152
- 'order' => array(
153
- 'title' => __('Сортировка', 'content-egg'),
154
- 'description' => 'How the results should be ordered.',
155
- 'callback' => array($this, 'render_dropdown'),
156
- 'dropdown_options' => array(
157
- 'popular' => 'Popular',
158
- 'latest' => 'Latest',
159
- ),
160
- 'default' => 'popular',
161
- 'section' => 'default',
162
- 'metaboxInit' => true,
163
- ),
164
- 'save_img' => array(
165
- 'title' => __('Сохранять картинки', 'content-egg'),
166
- 'description' => __('Сохранять картинки на сервер. Hotlinking не разрешен правилами pixabay API. Ссылки на картинки pixabay будут валидны 24 часа.', 'content-egg'),
167
- 'callback' => array($this, 'render_checkbox'),
168
- 'default' => true,
169
- 'section' => 'default',
170
- ),
171
- );
172
- return array_merge(parent::options(), $optiosn);
173
- }
174
-
175
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Pixabay/PixabayModule.php DELETED
@@ -1,117 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\Pixabay;
4
-
5
- use ContentEgg\application\components\ParserModule;
6
- use ContentEgg\application\libs\pixabay\PixabaySearch;
7
- use ContentEgg\application\components\Content;
8
- use ContentEgg\application\admin\PluginAdmin;
9
- use ContentEgg\application\admin\GeneralConfig;
10
-
11
- /**
12
- * PixabayModule 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 PixabayModule extends ParserModule {
19
-
20
- public function info()
21
- {
22
- return array(
23
- 'name' => 'Pixabay',
24
- 'description' => __('Поиск фотографий и иллюстраций со свободной лицензией CC0 Public Domain на pixabay.com.', 'content-egg'),
25
- 'api_agreement' => 'https://pixabay.com/api/docs/',
26
- );
27
- }
28
-
29
- public function getParserType()
30
- {
31
- return self::PARSER_TYPE_IMAGE;
32
- }
33
-
34
- public function defaultTemplateName()
35
- {
36
- return 'data_image';
37
- }
38
-
39
- public function isFree()
40
- {
41
- return true;
42
- }
43
-
44
- public static function availableLanguages()
45
- {
46
- return array('cs', 'da', 'de', 'en', 'es', 'fr', 'id', 'it', 'hu', 'nl', 'no', 'pl', 'pt', 'ro', 'sk', 'fi', 'sv', 'tr', 'vi', 'th', 'bg', 'ru', 'el', 'ja', 'ko', 'zh');
47
- }
48
-
49
- public function doRequest($keyword, $query_params = array(), $is_autoupdate = false)
50
- {
51
- if ($is_autoupdate)
52
- $options['per_page'] = $this->config('entries_per_page_update');
53
- else
54
- $options['per_page'] = $this->config('entries_per_page');
55
-
56
- $options['image_type'] = $this->config('image_type');
57
- $options['orientation'] = $this->config('orientation');
58
- if ($this->config('category'))
59
- $options['category'] = $this->config('category');
60
- $options['order'] = $this->config('order');
61
- if ($this->config('editors_choice'))
62
- $options['editors_choice'] = true;
63
- if ($this->config('safesearch'))
64
- $options['safesearch'] = true;
65
-
66
- $lang = GeneralConfig::getInstance()->option('lang');
67
- if (in_array($lang, self::availableLanguages()))
68
- $options['lang'] = $lang;
69
-
70
- try
71
- {
72
- $api_client = new PixabaySearch($this->config('key'));
73
- $results = $api_client->search($keyword, $options);
74
- } catch (Exception $e)
75
- {
76
- throw new \Exception(strip_tags($e->getMessage()));
77
- }
78
-
79
- if (!isset($results['hits']))
80
- return array();
81
-
82
- return $this->prepareResults($results['hits']);
83
- }
84
-
85
- private function prepareResults($results)
86
- {
87
- $data = array();
88
- foreach ($results as $key => $r)
89
- {
90
- $content = new Content;
91
- $content->unique_id = $r['id'];
92
- $content->title = strip_tags($r['tags']);
93
- $content->url = $r['pageURL'];
94
- $content->img = $r['webformatURL'];
95
- $size = $this->config('image_size');
96
- if ($size !== '_640')
97
- $content->img = str_replace('_640.jpg', $size . '.jpg', $content->img);
98
-
99
- $extra = new ExtraDataPixabay;
100
- ExtraDataPixabay::fillAttributes($extra, $r);
101
- $content->extra = $extra;
102
- $data[] = $content;
103
- }
104
- return $data;
105
- }
106
-
107
- public function renderResults()
108
- {
109
- PluginAdmin::render('_metabox_results', array('module_id' => $this->getId()));
110
- }
111
-
112
- public function renderSearchResults()
113
- {
114
- PluginAdmin::render('_metabox_search_results_images', array('module_id' => $this->getId()));
115
- }
116
-
117
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Pixabay/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/application/modules/Pixabay/templates/data_image.php DELETED
@@ -1,20 +0,0 @@
1
- <?php
2
- /*
3
- Name: Image
4
- */
5
- __('Image', 'content-egg-tpl');
6
- ?>
7
- <?php \wp_enqueue_style('egg-bootstrap'); ?>
8
-
9
- <div class="egg-container egg-image">
10
- <?php if ($title): ?>
11
- <h3><?php echo esc_html($title); ?></h3>
12
- <?php endif; ?>
13
- <div class="row">
14
- <?php foreach ($items as $item): ?>
15
- <div class="col-md-12" style="padding-bottom: 20px;">
16
- <img src="<?php echo $item['img']; ?>" alt="<?php echo esc_attr($item['title']); ?>" class="img-thumbnail" />
17
- </div>
18
- <?php endforeach; ?>
19
- </div>
20
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Pixabay/templates/data_justified_gallery.php DELETED
@@ -1,47 +0,0 @@
1
- <?php
2
- /*
3
- * Name: Gallery
4
- *
5
- * @link: http://miromannino.github.io/Justified-Gallery/
6
- */
7
- __('Gallery', 'content-egg-tpl');
8
- ?>
9
-
10
- <?php wp_enqueue_style('egg-justified-gallery', ContentEgg\PLUGIN_RES . '/justified_gallery/justifiedGallery.min.css'); ?>
11
- <?php wp_enqueue_script('egg-justified-gallery', ContentEgg\PLUGIN_RES . '/justified_gallery/jquery.justifiedGallery.min.js'); ?>
12
- <?php wp_enqueue_style('egg-color-box', ContentEgg\PLUGIN_RES . '/colorbox/colorbox.css'); ?>
13
- <?php wp_enqueue_script('egg-color-box', ContentEgg\PLUGIN_RES . '/colorbox/jquery.colorbox-min.js'); ?>
14
-
15
- <?php
16
- $rand = rand(0, 100000);
17
- ?>
18
-
19
- <?php if ($title): ?>
20
- <h3><?php echo esc_html($title); ?></h3>
21
- <?php endif; ?>
22
-
23
- <div class="cegg-pixabay-gallery">
24
- <?php foreach ($items as $item): ?>
25
- <a href="<?php echo $item['img']; ?>" rel="gallery<?php echo $rand; ?>">
26
- <img src="<?php echo $item['img']; ?>" alt="<?php echo esc_attr($item['title']); ?>" class="img-thumbnail" />
27
- </a>
28
- <?php endforeach; ?>
29
- </div>
30
- <script>
31
- jQuery(document).ready(function() {
32
-
33
- jQuery('.cegg-pixabay-gallery').justifiedGallery({
34
- rowHeight: 160,
35
- lastRow: 'nojustify',
36
- margins: 1,
37
- }).on('jg.complete', function() {
38
- jQuery(this).find('a').colorbox({
39
- maxWidth: '80%',
40
- maxHeight: '80%',
41
- opacity: 0.8,
42
- transition: 'elastic',
43
- current: ''
44
- });
45
- });
46
- });
47
- </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/RelatedKeywords/RelatedKeywordsConfig.php DELETED
@@ -1,72 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\RelatedKeywords;
4
-
5
- use ContentEgg\application\components\ParserModuleConfig;
6
-
7
- /**
8
- * RelatedKeywordsConfig 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 RelatedKeywordsConfig extends ParserModuleConfig {
15
-
16
- public function options()
17
- {
18
- $optiosn = array(
19
- 'account_key' => array(
20
- 'title' => 'Account Key <span class="cegg_required">*</span>',
21
- 'description' => __('Ключ доступа к Bing API. Получить можно <a href="https://datamarket.azure.com/account/keys">здесь</a> (потребуется аккаунт в bing).', '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' => __('Поле "Account Key" не может быть пустым.', 'content-egg'),
30
- ),
31
- ),
32
- 'section' => 'default',
33
- ),
34
- 'entries_per_page' => array(
35
- 'title' => __('Результатов', 'content-egg'),
36
- 'description' => __('Количество результатов для одного запроса', 'content-egg'),
37
- 'callback' => array($this, 'render_input'),
38
- 'default' => 10,
39
- 'validator' => array(
40
- 'trim',
41
- 'absint',
42
- array(
43
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
44
- 'arg' => 50,
45
- 'message' => __('Поле "Результатов" не может быть больше 5ы0.', 'content-egg'),
46
- ),
47
- ),
48
- 'section' => 'default',
49
- ),
50
- 'entries_per_page_update' => array(
51
- 'title' => __('Результатов для автоблоггинга', 'content-egg'),
52
- 'description' => __('Количество результатов для автоблоггинга.', 'content-egg'),
53
- 'callback' => array($this, 'render_input'),
54
- 'default' => 6,
55
- 'validator' => array(
56
- 'trim',
57
- 'absint',
58
- array(
59
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
60
- 'arg' => 50,
61
- 'message' => __('Поле "Результатов для автоблоггинга" не может быть больше 50.', 'content-egg'),
62
- ),
63
- ),
64
- 'section' => 'default',
65
- ),
66
- );
67
- $parent = parent::options();
68
- unset($parent['featured_image']);
69
- return array_merge($parent, $optiosn);
70
- }
71
-
72
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/RelatedKeywords/RelatedKeywordsModule.php DELETED
@@ -1,87 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\RelatedKeywords;
4
-
5
- use ContentEgg\application\components\ParserModule;
6
- use ContentEgg\application\libs\bing\BingSearch;
7
- use ContentEgg\application\components\Content;
8
- use ContentEgg\application\helpers\TextHelper;
9
- use ContentEgg\application\admin\PluginAdmin;
10
- use ContentEgg\application\admin\GeneralConfig;
11
-
12
- /**
13
- * RelatedKeywords class file
14
- *
15
- * @author keywordrush.com <support@keywordrush.com>
16
- * @link http://www.keywordrush.com/
17
- * @copyright Copyright &copy; 2015 keywordrush.com
18
- */
19
- class RelatedKeywordsModule extends ParserModule {
20
-
21
- public function info()
22
- {
23
- return array(
24
- 'name' => 'Related Keywords',
25
- 'api_agreement' => 'https://datamarket.azure.com/dataset/5BA839F1-12CE-4CCE-BF57-A49D98D29A44',
26
- 'description' => __('Находит родственные ключевые слова и выводит их в посте.', 'content-egg'),
27
- );
28
- }
29
-
30
- public function getParserType()
31
- {
32
- return self::PARSER_TYPE_CONTENT;
33
- }
34
-
35
- public function isFree()
36
- {
37
- return true;
38
- }
39
-
40
- public function doRequest($keyword, $query_params = array(), $is_autoupdate = false)
41
- {
42
- $options = array();
43
-
44
- if ($is_autoupdate)
45
- $entries_per_page = $this->config('entries_per_page_update');
46
- else
47
- $entries_per_page = $this->config('entries_per_page');
48
- $options['$top'] = $entries_per_page;
49
-
50
- try
51
- {
52
- $api_client = new BingSearch($this->config('account_key'), 'json');
53
- $results = $api_client->search($keyword, 'RelatedSearch', $options);
54
- } catch (Exception $e)
55
- {
56
- throw new \Exception(strip_tags($e->getMessage()));
57
- }
58
-
59
- if (!isset($results['d']) || !isset($results['d']['results']) || !isset($results['d']['results'][0]))
60
- return array();
61
-
62
- $results = $results['d']['results'];
63
- $results = array_slice($results, 0, $entries_per_page);
64
-
65
- $data = array();
66
- foreach ($results as $r)
67
- {
68
- $content = new Content;
69
- $content->title = strip_tags($r['Title']);
70
- $content->unique_id = $content->title;
71
- $content->url = $r['BingUrl'];
72
- $data[] = $content;
73
- }
74
- return $data;
75
- }
76
-
77
- public function renderResults()
78
- {
79
- PluginAdmin::render('_metabox_results', array('module_id' => $this->getId()));
80
- }
81
-
82
- public function renderSearchResults()
83
- {
84
- PluginAdmin::render('_metabox_search_results', array('module_id' => $this->getId()));
85
- }
86
-
87
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/RelatedKeywords/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/application/modules/RelatedKeywords/templates/data_simple.php DELETED
@@ -1,18 +0,0 @@
1
- <?php
2
- /*
3
- Name: Simple
4
- */
5
- __('Simple', 'content-egg-simple');
6
- ?>
7
- <?php \wp_enqueue_style('egg-bootstrap'); ?>
8
-
9
- <?php foreach ($items as $item): ?>
10
- <?php $keywords[] = $item['title']; ?>
11
- <?php endforeach; ?>
12
-
13
- <div class="egg-container">
14
- <?php if ($title): ?>
15
- <h3><?php echo esc_html($title); ?></h3>
16
- <?php endif; ?>
17
- <?php echo join(', ', $keywords); ?>.
18
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/RssFetcher/ExtraDataRssFetcher.php DELETED
@@ -1,18 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\RssFetcher;
4
-
5
- use ContentEgg\application\components\ExtraData;
6
-
7
- /**
8
- * ExtraDataRssFetcher 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 ExtraDataRssFetcher extends ExtraData {
15
-
16
- public $allData = array();
17
-
18
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/RssFetcher/RssFetcherConfig.php DELETED
@@ -1,82 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\RssFetcher;
4
-
5
- use ContentEgg\application\components\ParserModuleConfig;
6
-
7
- /**
8
- * RssFetcherConfig 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 RssFetcherConfig extends ParserModuleConfig {
15
-
16
- public function options()
17
- {
18
- $optiosn = array(
19
- 'uri' => array(
20
- 'title' => 'RSS URL <span class="cegg_required">*</span>',
21
- 'description' => __('Для подстановки текущего ключевого слова используйте <em>%KEYWORD%</em>.', 'content-egg'),
22
- 'callback' => array($this, 'render_input'),
23
- 'default' => 'http://www.bing.com/search?format=rss&FORM=RSRE&q=%KEYWORD%',
24
- 'validator' => array(
25
- 'trim',
26
- array(
27
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'required'),
28
- 'when' => 'is_active',
29
- 'message' => __('Поле "RSS URL" не может быть пустым.', 'content-egg'),
30
- ),
31
- ),
32
- 'section' => 'default',
33
- ),
34
- 'entries_per_page' => array(
35
- 'title' => __('Результатов', 'content-egg'),
36
- 'description' => __('Количество результатов для одного запроса', 'content-egg'),
37
- 'callback' => array($this, 'render_input'),
38
- 'default' => 10,
39
- 'validator' => array(
40
- 'trim',
41
- 'absint',
42
- array(
43
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
44
- 'arg' => 50,
45
- 'message' => __('Поле "Результатов" не может быть больше 50.', 'content-egg'),
46
- ),
47
- ),
48
- 'section' => 'default',
49
- ),
50
- 'entries_per_page_update' => array(
51
- 'title' => __('Результатов для автоблоггинга', 'content-egg'),
52
- 'description' => __('Количество результатов для автоблоггинга.', 'content-egg'),
53
- 'callback' => array($this, 'render_input'),
54
- 'default' => 5,
55
- 'validator' => array(
56
- 'trim',
57
- 'absint',
58
- array(
59
- 'call' => array('\ContentEgg\application\helpers\FormValidator', 'less_than_equal_to'),
60
- 'arg' => 50,
61
- 'message' => __('Поле "Результатов для автоблоггинга" не может быть больше 50.', 'content-egg'),
62
- ),
63
- ),
64
- 'section' => 'default',
65
- ),
66
- 'allowed_tags' => array(
67
- 'title' => __('Разрешенные теги', 'content-egg'),
68
- 'description' => __('Теги, которые разрешены в title и description.', 'content-egg'),
69
- 'callback' => array($this, 'render_input'),
70
- 'default' => '<p><br><img>',
71
- 'validator' => array(
72
- 'trim',
73
- ),
74
- 'section' => 'default',
75
- ),
76
- );
77
- $parent = parent::options();
78
- unset($parent['featured_image']);
79
- return array_merge($parent, $optiosn);
80
- }
81
-
82
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/RssFetcher/RssFetcherModule.php DELETED
@@ -1,164 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\RssFetcher;
4
-
5
- use ContentEgg\application\components\ParserModule;
6
- use ContentEgg\application\libs\rss\RssParser;
7
- use ContentEgg\application\components\Content;
8
- use ContentEgg\application\helpers\TextHelper;
9
- use ContentEgg\application\admin\PluginAdmin;
10
- use ContentEgg\application\admin\GeneralConfig;
11
-
12
- /**
13
- * RssFetcher class file
14
- *
15
- * @author keywordrush.com <support@keywordrush.com>
16
- * @link http://www.keywordrush.com/
17
- * @copyright Copyright &copy; 2015 keywordrush.com
18
- */
19
- class RssFetcherModule extends ParserModule {
20
-
21
- public function info()
22
- {
23
- return array(
24
- 'name' => 'RSS Fetcher',
25
- 'description' => __('Парсит любую RSS-ленту.', 'content-egg') . ' ' .
26
- __('Важно, чтобы в URL была возможность использовать ключевое слово, т.е. лента должна содержать результаты поиска по ключевому слову.', 'content-egg')
27
- );
28
- }
29
-
30
- public function getParserType()
31
- {
32
- return self::PARSER_TYPE_CONTENT;
33
- }
34
-
35
- public function isFree()
36
- {
37
- return true;
38
- }
39
-
40
- public function doRequest($keyword, $query_params = array(), $is_autoupdate = false)
41
- {
42
- $options = array();
43
-
44
- if ($is_autoupdate)
45
- $entries_per_page = $this->config('entries_per_page_update');
46
- else
47
- $entries_per_page = $this->config('entries_per_page');
48
-
49
- try
50
- {
51
- $client = new RssParser();
52
- $results = $client->search($keyword, $this->config('uri'));
53
- } catch (Exception $e)
54
- {
55
- throw new \Exception(strip_tags($e->getMessage()));
56
- }
57
-
58
-
59
- $results = $this->normaliseResults($results, $entries_per_page);
60
-
61
- $data = array();
62
- foreach ($results as $r)
63
- {
64
- if (empty($r['title']))
65
- throw new \Exception('Can\'t parse RSS feed.');
66
-
67
- $content = new Content;
68
- $content->title = strip_tags($r['title'], $this->config('allowed_tags'));
69
- $content->description = strip_tags($r['description'], $this->config('allowed_tags'));
70
- $content->url = $r['url'];
71
- if ($content->url)
72
- $content->unique_id = md5($content->url);
73
- else
74
- $content->title = md5($content->title);
75
- $content->extra = new ExtraDataRssFetcher;
76
- unset($r['title']);
77
- unset($r['description']);
78
- unset($r['url']);
79
- $content->extra->allData = $r;
80
-
81
- $data[] = $content;
82
- }
83
- return $data;
84
- }
85
-
86
- private function normaliseResults($feed, $entries_per_page = 10)
87
- {
88
- $results = array();
89
- if (isset($feed['items']))
90
- $results = $feed['items'];
91
- elseif (isset($feed['channel']['item']))
92
- {//rss 2.0
93
- if (isset($feed['channel']['item'][0]) && is_array($feed['channel']['item'][0]))
94
- $results = $feed['channel']['item'];
95
- else
96
- $results[] = $feed['channel']['item'];
97
- }elseif (isset($feed['entry']))
98
- { //atom
99
- if (isset($feed['entry'][0]) && is_array($feed['entry'][0]))
100
- $results = $feed['entry'];
101
- else
102
- $results[] = $feed['entry'];
103
- }
104
-
105
- $results = array_slice($results, 0, $entries_per_page);
106
-
107
- foreach ($results as $key => $res)
108
- {
109
- //получаем title
110
- $results[$key]['title'] = (isset($res['title']) && $res['title']) ? $res['title'] : '';
111
-
112
- //получаем description
113
- if (isset($res['content:encoded']) && $res['content:encoded'])
114
- {
115
- $results[$key]['description'] = $res['content:encoded'];
116
- unset($results[$key]['content:encoded']);
117
- } elseif (isset($res['content']) && $res['content'])
118
- {
119
- $results[$key]['description'] = $res['content'];
120
- unset($results[$key]['content']);
121
- } elseif (isset($res['description']) && $res['description'])
122
- $results[$key]['description'] = $res['description'];
123
- else
124
- $results[$key]['description'] = '';
125
-
126
- //получаем url
127
- $results[$key]['url'] = '';
128
- if (isset($res['link']) && !is_array($res['link']))
129
- $results[$key]['url'] = $res['link'];
130
- elseif (isset($res['link']['@attributes']['href']))
131
- $results[$key]['url'] = $res['link']['@attributes']['href'];
132
- elseif (isset($res['link'][0]))
133
- {
134
- foreach ($res['link'] as $lnk)
135
- {
136
- if (isset($lnk['@attributes']['rel']) && $lnk['@attributes']['rel'] == 'alternate')
137
- $results[$key]['url'] = $lnk['@attributes']['href'];
138
- }
139
- }
140
- }
141
-
142
- return $results;
143
- }
144
-
145
- /*
146
- {
147
- $content->title = strip_tags($this->config('allowed_tags'));
148
- $content->unique_id = $r['ID'];
149
- $content->url = $r['BingUrl'];
150
- }
151
- *
152
- */
153
-
154
- public function renderResults()
155
- {
156
- PluginAdmin::render('_metabox_results', array('module_id' => $this->getId()));
157
- }
158
-
159
- public function renderSearchResults()
160
- {
161
- PluginAdmin::render('_metabox_search_results', array('module_id' => $this->getId()));
162
- }
163
-
164
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/RssFetcher/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/application/modules/RssFetcher/templates/data_simple.php DELETED
@@ -1,24 +0,0 @@
1
- <?php
2
- /*
3
- Name: Simple
4
- */
5
- __('Simple', 'content-egg-simple');
6
- ?>
7
- <?php \wp_enqueue_style('egg-bootstrap'); ?>
8
-
9
- <div class="egg-container egg-media">
10
- <?php if ($title): ?>
11
- <h3><?php echo esc_html($title); ?></h3>
12
- <?php endif; ?>
13
-
14
- <?php foreach ($items as $item): ?>
15
- <div class="media">
16
- <div class="media-body">
17
- <h4 class="media-heading">
18
- <a target="_blank" rel="nofollow" href="<?php echo $item['url']; ?>"><?php echo esc_html($item['title']); ?></a>
19
- </h4>
20
- <p><?php echo $item['description']; ?></p>
21
- </div>
22
- </div>
23
- <?php endforeach; ?>
24
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Youtube/ExtraDataYoutube.php DELETED
@@ -1,19 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\Youtube;
4
-
5
- use ContentEgg\application\components\ExtraData;
6
-
7
- /**
8
- * ExtraDataYoutube 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 ExtraDataYouTube extends ExtraData {
15
-
16
- public $guid;
17
- public $category;
18
- public $channel_title;
19
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Youtube/YoutubeConfig.php DELETED
@@ -1,101 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\Youtube;
4
-
5
- use ContentEgg\application\components\ParserModuleConfig;
6
-
7
- /**
8
- * YoutubeConfig 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 YoutubeConfig extends ParserModuleConfig {
15
-
16
- public function options()
17
- {
18
- $optiosn = array(
19
- 'api_key' => array(
20
- 'title' => 'API Key <span class="cegg_required">*</span>',
21
- 'description' => __('Ключ для доступа к API. Получить можно в Google <a href="http://code.google.com/apis/console">API консоли</a>', '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' => __('Поле "API Key" не может быть пустым.', 'content-egg'),
30
- ),
31
- ),
32
- 'section' => 'default',
33
- ),
34
- 'entries_per_page' => array(
35
- 'title' => __('Результатов', 'content-egg'),
36
- 'description' => __('Количество результатов для одного запроса', 'content-egg'),
37
- 'callback' => array($this, 'render_input'),
38
- 'default' => '5',
39
- 'validator' => array(
40
- 'trim',
41
- 'absint',
42
- ),
43
- 'section' => 'default',
44
- ),
45
- 'entries_per_page_update' => array(
46
- 'title' => __('Результатов для автоблоггинга', 'content-egg'),
47
- 'description' => __('Количество результатов для автоблоггинга.', 'content-egg'),
48
- 'callback' => array($this, 'render_input'),
49
- 'default' => 3,
50
- 'validator' => array(
51
- 'trim',
52
- 'absint',
53
- ),
54
- 'section' => 'default',
55
- ),
56
- 'order' => array(
57
- 'title' => __('Сортировка', 'content-egg'),
58
- 'description' => '',
59
- 'callback' => array($this, 'render_dropdown'),
60
- 'dropdown_options' => array(
61
- 'date' => __('Дата', 'content-egg'),
62
- 'rating' => __('Рейтинг', 'content-egg'),
63
- 'relevance' => __('Релевантность', 'content-egg'),
64
- 'title' => __('Заголовок', 'content-egg'),
65
- 'viewCount' => __('Просмотры', 'content-egg'),
66
- ),
67
- 'default' => 'relevance',
68
- 'section' => 'default',
69
- 'metaboxInit' => true,
70
- ),
71
- 'license' => array(
72
- 'title' => __('Тип лицензии', 'content-egg'),
73
- 'description' => __('Многие видео на Youtube загружены с лицензией Creative Commons. <a href="http://www.google.com/support/youtube/bin/answer.py?answer=1284989">Узнать больше</a>.', 'content-egg'),
74
- 'callback' => array($this, 'render_dropdown'),
75
- 'dropdown_options' => array(
76
- 'any' => __('Любая лицензия', 'content-egg'),
77
- 'creativeCommon' => __('Сreative Сommons лицензия', 'content-egg'),
78
- 'youtube' => __('Стандартная лицензия', 'content-egg'),
79
- ),
80
- 'default' => 'any',
81
- 'section' => 'default',
82
- 'metaboxInit' => true,
83
- ),
84
- 'description_size' => array(
85
- 'title' => __('Обрезать описание', 'content-egg'),
86
- 'description' => __('Размер описания в символах (0 - не обрезать)', 'content-egg'),
87
- 'callback' => array($this, 'render_input'),
88
- 'default' => '280',
89
- 'validator' => array(
90
- 'trim',
91
- 'absint',
92
- ),
93
- 'section' => 'default',
94
- ),
95
- );
96
- $parent = parent::options();
97
- unset($parent['featured_image']);
98
- return array_merge($parent, $optiosn);
99
- }
100
-
101
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Youtube/YoutubeModule.php DELETED
@@ -1,132 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg\application\modules\Youtube;
4
-
5
- use ContentEgg\application\components\ParserModule;
6
- use ContentEgg\application\libs\google\YouTubeSearch;
7
- use ContentEgg\application\components\Content;
8
- use ContentEgg\application\helpers\TextHelper;
9
- use ContentEgg\application\admin\PluginAdmin;
10
- use ContentEgg\application\admin\GeneralConfig;
11
-
12
- /**
13
- * YoutubeModule class file
14
- *
15
- * @author keywordrush.com <support@keywordrush.com>
16
- * @link http://www.keywordrush.com/
17
- * @copyright Copyright &copy; 2015 keywordrush.com
18
- */
19
- class YoutubeModule extends ParserModule {
20
-
21
- public function info()
22
- {
23
- return array(
24
- 'name' => 'Youtube',
25
- 'api_agreement' => 'http://code.google.com/apis/youtube/terms.html',
26
- );
27
- }
28
-
29
- public function getParserType()
30
- {
31
- return self::PARSER_TYPE_VIDEO;
32
- }
33
-
34
- public function isFree()
35
- {
36
- return true;
37
- }
38
-
39
- public function doRequest($keyword, $query_params = array(), $is_autoupdate = false)
40
- {
41
-
42
- $params = array();
43
-
44
- if ($is_autoupdate)
45
- $params['maxResults'] = $this->config('entries_per_page_update');
46
- else
47
- $params['maxResults'] = $this->config('entries_per_page');
48
-
49
- $params['relevanceLanguage'] = GeneralConfig::getInstance()->option('lang');
50
- $params['key'] = $this->config('api_key');
51
-
52
- if (!empty($query_params['order']))
53
- $params['order'] = $query_params['order'];
54
- else
55
- $params['order'] = $this->config('order');
56
-
57
- if (!empty($query_params['license']))
58
- $params['videoLicense'] = $query_params['license'];
59
- else
60
- $params['videoLicense'] = $this->config('license');
61
-
62
- try
63
- {
64
- //$keyword = str_replace('-', ' ', $keyword);
65
- $client = new YouTubeSearch('json');
66
- $data = $client->search($keyword, $params);
67
- unset($client);
68
- } catch (Exception $e)
69
- {
70
- throw new \Exception(strip_tags($e->getMessage()));
71
- }
72
-
73
- if (!isset($data['items']) || !isset($data['items'][0]))
74
- $data['items'] = array();
75
-
76
- $results = array();
77
- foreach ($data['items'] as $r)
78
- {
79
- if (!isset($r['id']['videoId']))
80
- continue;
81
-
82
- $guid = $r['id']['videoId'];
83
-
84
- $content = new Content;
85
- $content->unique_id = $guid;
86
- $content->title = strip_tags($r['snippet']['title']);
87
- $content->img = isset($r['snippet']['thumbnails']) ? $r['snippet']['thumbnails']['medium']['url'] : '';
88
-
89
- if (isset($r['snippet']['description']) && !is_array($r['snippet']['description']))
90
- {
91
- $content->description = strip_tags($r['snippet']['description']);
92
- if ($max_size = $this->config('description_size'))
93
- $content->description = TextHelper::truncate($content->description, $max_size);
94
- } else
95
- $content->description = '';
96
- $content->url = 'https://www.youtube.com/watch?v=' . $r['id']['videoId'];
97
-
98
- $extra = new ExtraDataYoutube;
99
- $extra->author = strip_tags($r['snippet']['channelTitle']);
100
- $extra->date = strtotime($r['snippet']['publishedAt']);
101
- $extra->guid = $guid;
102
- $extra->category = isset($r['snippet']['category'][1]) ? $r['snippet']['category'][1] : '';
103
- $extra->channel_title = isset($r['snippet']['channelTitle']) ? $r['snippet']['channelTitle'] : '';
104
-
105
- $content->extra = $extra;
106
- $results[] = $content;
107
- }
108
- return $results;
109
- }
110
-
111
- public function enqueueScripts()
112
- {
113
- \wp_enqueue_script('cegg-youtube', \plugins_url('application/modules/Youtube/js/module.js', \ContentEgg\PLUGIN_FILE), array('contentegg-metabox-app'), null, false);
114
- }
115
-
116
- public function renderResults()
117
- {
118
- PluginAdmin::render('_metabox_results', array('module_id' => $this->getId()));
119
- }
120
-
121
- public function renderSearchResults()
122
- {
123
- //PluginAdmin::render('_metabox_search_results_images', array('module_id' => $this->getId()));
124
- $this->render('search_results', array('module_id' => $this->getId()));
125
- }
126
-
127
- public function renderSearchPanel()
128
- {
129
- $this->render('search_panel', array('module_id' => $this->getId()));
130
- }
131
-
132
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Youtube/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/application/modules/Youtube/js/module.js DELETED
@@ -1,60 +0,0 @@
1
- /**
2
- * @link: http://blog.oxrud.com/posts/creating-youtube-directive/
3
- */
4
-
5
- contentEgg.directive('youtube', function($window) {
6
- return {
7
- restrict: "E",
8
- scope: {
9
- height: "@",
10
- width: "@",
11
- videoid: "@"
12
- },
13
- template: '<div></div>',
14
- link: function(scope, element) {
15
- var tag = document.createElement('script');
16
- tag.src = "https://www.youtube.com/iframe_api";
17
- var firstScriptTag = document.getElementsByTagName('script')[0];
18
- firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
19
-
20
- var player;
21
-
22
- $window.onYouTubeIframeAPIReady = function() {
23
-
24
- player = new YT.Player(element.children()[0], {
25
- playerVars: {
26
- autoplay: 0,
27
- html5: 1,
28
- theme: "light",
29
- modesbranding: 0,
30
- color: "white",
31
- iv_load_policy: 3,
32
- showinfo: 1,
33
- controls: 1
34
- },
35
- height: scope.height,
36
- width: scope.width,
37
- videoId: scope.videoid,
38
- });
39
- }
40
-
41
- scope.$watch('videoid', function(newValue, oldValue) {
42
- if (newValue == oldValue) {
43
- return;
44
- }
45
-
46
- player.cueVideoById(scope.videoid);
47
-
48
- });
49
-
50
- scope.$watch('height + width', function(newValue, oldValue) {
51
- if (newValue == oldValue) {
52
- return;
53
- }
54
-
55
- player.setSize(scope.width, scope.height);
56
-
57
- });
58
- }
59
- };
60
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Youtube/templates/data_responsive_embed.php DELETED
@@ -1,24 +0,0 @@
1
- <?php
2
- /*
3
- Name: Large
4
- */
5
- __('Large', 'content-egg-tpl');
6
- ?>
7
-
8
- <?php \wp_enqueue_style('egg-bootstrap'); ?>
9
-
10
- <div class="egg-container egg-video">
11
- <?php if ($title): ?>
12
- <h3><?php echo esc_html($title); ?></h3>
13
- <?php endif; ?>
14
-
15
- <?php foreach ($items as $item): ?>
16
- <h4><?php echo esc_html($item['title']); ?></h4>
17
- <div class="embed-responsive embed-responsive-16by9">
18
- <iframe width="560" height="315" src="https://www.youtube.com/embed/<?php echo $item['extra']['guid']; ?>" frameborder="0" allowfullscreen></iframe>
19
- </div>
20
- <?php if ($item['description']): ?>
21
- <p><?php echo $item['description']; ?></p>
22
- <?php endif; ?>
23
- <?php endforeach; ?>
24
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Youtube/templates/data_simple.php DELETED
@@ -1,26 +0,0 @@
1
- <?php
2
- /*
3
- Name: Simple
4
- */
5
- __('Simple', 'content-egg-tpl');
6
- ?>
7
-
8
- <?php \wp_enqueue_style('egg-bootstrap'); ?>
9
-
10
- <div class="egg-container egg-video">
11
- <?php if ($title): ?>
12
- <h3><?php echo esc_html($title); ?></h3>
13
- <?php endif; ?>
14
-
15
- <?php foreach ($items as $item): ?>
16
- <div class="row">
17
- <div class="col-md-12">
18
- <iframe width="560" height="315" src="https://www.youtube.com/embed/<?php echo $item['extra']['guid']; ?>" frameborder="0" allowfullscreen></iframe>
19
- <h4><?php echo esc_html($item['title']); ?></h4>
20
- <?php if ($item['description']):?>
21
- <p><?php echo $item['description']; ?></p>
22
- <?php endif; ?>
23
- </div>
24
- </div>
25
- <?php endforeach; ?>
26
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Youtube/templates/data_tile.php DELETED
@@ -1,24 +0,0 @@
1
- <?php
2
- /*
3
- Name: Tile
4
- */
5
- __('Tile', 'content-egg-tpl');
6
- ?>
7
-
8
- <?php \wp_enqueue_style('egg-bootstrap'); ?>
9
-
10
- <div class="egg-container egg-video">
11
- <?php if ($title): ?>
12
- <h3><?php echo esc_html($title); ?></h3>
13
- <?php endif; ?>
14
-
15
- <div class="row">
16
- <?php foreach ($items as $item): ?>
17
- <div class="col-md-6">
18
- <div class="embed-responsive embed-responsive-16by9">
19
- <iframe width="560" height="315" src="https://www.youtube.com/embed/<?php echo $item['extra']['guid']; ?>" frameborder="0" allowfullscreen></iframe>
20
- </div>
21
- </div>
22
- <?php endforeach; ?>
23
- </div>
24
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Youtube/views/search_panel.php DELETED
@@ -1,13 +0,0 @@
1
- <select ng-model="query_params.<?php echo $module_id; ?>.license">
2
- <option value="any"><?php _e('Любая лицензия', 'content-egg'); ?></option>
3
- <option value="creativeCommon"><?php _e('Сreative Сommons', 'content-egg'); ?></option>
4
- <option value="youtube"><?php _e('Стандартная лицензия', 'content-egg'); ?></option>
5
- </select>
6
-
7
- <select ng-model="query_params.<?php echo $module_id; ?>.order">
8
- <option value="date"><?php _e('Дата', 'content-egg'); ?></option>
9
- <option value="rating"><?php _e('Рейтинг', 'content-egg'); ?></option>
10
- <option value="relevance"><?php _e('Релевантность', 'content-egg'); ?></option>
11
- <option value="title"><?php _e('Заголовок', 'content-egg'); ?></option>
12
- <option value="viewCount"><?php _e('Просмотры', 'content-egg'); ?></option>
13
- </select>
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/Youtube/views/search_results.php DELETED
@@ -1,14 +0,0 @@
1
- <div class="search_results" ng-show="models.<?php echo $module_id; ?>.results.length > 0 && !models.<?php echo $module_id; ?>.processing">
2
- <div class="row search_results_row" ng-class="{'result_added' : result.added}" ng-click="add(result, '<?php echo $module_id; ?>')" repeat-done ng-repeat="result in models.<?php echo $module_id; ?>.results">
3
- <div class="col-md-4">
4
-
5
- <iframe ng-if="!result.added" width="320" height="180" ng-src="{{getYoutubeUri(result.extra.guid)}}" frameborder="0" allowfullscreen></iframe>
6
- <img width="320" height="180" ng-if="result.added" ng-src="{{result.img}}" />
7
-
8
- </div>
9
- <div class="col-md-8">
10
- <strong>{{result.title}}</strong>
11
- <p>{{result.description}}</p>
12
- </div>
13
- </div>
14
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/modules/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/application/vendor/CVarDumper.php DELETED
@@ -1,142 +0,0 @@
1
- <?php
2
- namespace ContentEgg\application\vendor;
3
-
4
- /**
5
- * CVarDumper class file.
6
- *
7
- * @author Qiang Xue <qiang.xue@gmail.com>
8
- * @link http://www.yiiframework.com/
9
- * @copyright 2008-2013 Yii Software LLC
10
- * @license http://www.yiiframework.com/license/
11
- */
12
-
13
- /**
14
- * CVarDumper is intended to replace the buggy PHP function var_dump and print_r.
15
- * It can correctly identify the recursively referenced objects in a complex
16
- * object structure. It also has a recursive depth control to avoid indefinite
17
- * recursive display of some peculiar variables.
18
- *
19
- * CVarDumper can be used as follows,
20
- * <pre>
21
- * CVarDumper::dump($var);
22
- * </pre>
23
- *
24
- * @author Qiang Xue <qiang.xue@gmail.com>
25
- * @package system.utils
26
- * @since 1.0
27
- */
28
- class CVarDumper
29
- {
30
- private static $_objects;
31
- private static $_output;
32
- private static $_depth;
33
-
34
- /**
35
- * Displays a variable.
36
- * This method achieves the similar functionality as var_dump and print_r
37
- * but is more robust when handling complex objects such as Yii controllers.
38
- * @param mixed $var variable to be dumped
39
- * @param integer $depth maximum depth that the dumper should go into the variable. Defaults to 10.
40
- * @param boolean $highlight whether the result should be syntax-highlighted
41
- */
42
- public static function dump($var,$depth=10,$highlight=false)
43
- {
44
- echo self::dumpAsString($var,$depth,$highlight);
45
- }
46
-
47
- /**
48
- * Dumps a variable in terms of a string.
49
- * This method achieves the similar functionality as var_dump and print_r
50
- * but is more robust when handling complex objects such as Yii controllers.
51
- * @param mixed $var variable to be dumped
52
- * @param integer $depth maximum depth that the dumper should go into the variable. Defaults to 10.
53
- * @param boolean $highlight whether the result should be syntax-highlighted
54
- * @return string the string representation of the variable
55
- */
56
- public static function dumpAsString($var,$depth=10,$highlight=false)
57
- {
58
- self::$_output='';
59
- self::$_objects=array();
60
- self::$_depth=$depth;
61
- self::dumpInternal($var,0);
62
- if($highlight)
63
- {
64
- $result=highlight_string("<?php\n".self::$_output,true);
65
- self::$_output=preg_replace('/&lt;\\?php<br \\/>/','',$result,1);
66
- }
67
- return self::$_output;
68
- }
69
-
70
- /*
71
- * @param mixed $var variable to be dumped
72
- * @param integer $level depth level
73
- */
74
- private static function dumpInternal($var,$level)
75
- {
76
- switch(gettype($var))
77
- {
78
- case 'boolean':
79
- self::$_output.=$var?'true':'false';
80
- break;
81
- case 'integer':
82
- self::$_output.="$var";
83
- break;
84
- case 'double':
85
- self::$_output.="$var";
86
- break;
87
- case 'string':
88
- self::$_output.="'".addslashes($var)."'";
89
- break;
90
- case 'resource':
91
- self::$_output.='{resource}';
92
- break;
93
- case 'NULL':
94
- self::$_output.="null";
95
- break;
96
- case 'unknown type':
97
- self::$_output.='{unknown}';
98
- break;
99
- case 'array':
100
- if(self::$_depth<=$level)
101
- self::$_output.='array(...)';
102
- elseif(empty($var))
103
- self::$_output.='array()';
104
- else
105
- {
106
- $keys=array_keys($var);
107
- $spaces=str_repeat(' ',$level*4);
108
- self::$_output.="array\n".$spaces.'(';
109
- foreach($keys as $key)
110
- {
111
- self::$_output.="\n".$spaces.' ';
112
- self::dumpInternal($key,0);
113
- self::$_output.=' => ';
114
- self::dumpInternal($var[$key],$level+1);
115
- }
116
- self::$_output.="\n".$spaces.')';
117
- }
118
- break;
119
- case 'object':
120
- if(($id=array_search($var,self::$_objects,true))!==false)
121
- self::$_output.=get_class($var).'#'.($id+1).'(...)';
122
- elseif(self::$_depth<=$level)
123
- self::$_output.=get_class($var).'(...)';
124
- else
125
- {
126
- $id=array_push(self::$_objects,$var);
127
- $className=get_class($var);
128
- $members=(array)$var;
129
- $spaces=str_repeat(' ',$level*4);
130
- self::$_output.="$className#$id\n".$spaces.'(';
131
- foreach($members as $key=>$value)
132
- {
133
- $keyDisplay=strtr(trim($key),array("\0"=>':'));
134
- self::$_output.="\n".$spaces." [$keyDisplay] => ";
135
- self::$_output.=self::dumpInternal($value,$level+1);
136
- }
137
- self::$_output.="\n".$spaces.')';
138
- }
139
- break;
140
- }
141
- }
142
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/vendor/CrawlerDetect.php DELETED
@@ -1,538 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * CrawlerDetect is a PHP class for detecting bots/crawlers/spiders via the user agent.
5
- *
6
- * @link: https://github.com/JayBizzle/Crawler-Detect
7
- *
8
- */
9
- /*
10
- The MIT License (MIT)
11
-
12
- Copyright (c) 2015 Mark Beech
13
-
14
- Permission is hereby granted, free of charge, to any person obtaining a copy
15
- of this software and associated documentation files (the "Software"), to deal
16
- in the Software without restriction, including without limitation the rights
17
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
18
- copies of the Software, and to permit persons to whom the Software is
19
- furnished to do so, subject to the following conditions:
20
-
21
- The above copyright notice and this permission notice shall be included in all
22
- copies or substantial portions of the Software.
23
-
24
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
26
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
29
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
30
- SOFTWARE.
31
- */
32
-
33
- namespace Jaybizzle\CrawlerDetect;
34
-
35
- class CrawlerDetect {
36
-
37
- protected $userAgent = null;
38
- protected $httpHeaders = array();
39
- protected $matches = array();
40
- protected static $crawlers = array(
41
- '007ac9 Crawler',
42
- '008\\/',
43
- '360Spider',
44
- 'A6-Indexer',
45
- 'ABACHOBot',
46
- 'AbiLogicBot',
47
- 'Aboundex',
48
- 'Accoona-AI-Agent',
49
- 'acoon',
50
- 'AddSugarSpiderBot',
51
- 'AddThis',
52
- 'Adidxbot',
53
- 'ADmantX',
54
- 'AdvBot',
55
- 'ahrefsbot',
56
- 'aihitbot',
57
- 'Airmail',
58
- 'AISearchBot',
59
- 'Anemone',
60
- 'antibot',
61
- 'AnyApexBot',
62
- 'Applebot',
63
- 'arabot',
64
- 'Arachmo',
65
- 'archive-com',
66
- 'archive.org_bot',
67
- 'B-l-i-t-z-B-O-T',
68
- 'backlinkcrawler',
69
- 'baiduspider',
70
- 'BecomeBot',
71
- 'BeslistBot',
72
- 'bibnum\.bnf',
73
- 'biglotron',
74
- 'BillyBobBot',
75
- 'Bimbot',
76
- 'bingbot',
77
- 'binlar',
78
- 'blekkobot',
79
- 'blexbot',
80
- 'BlitzBOT',
81
- 'bl\.uk_lddc_bot',
82
- 'bnf\.fr_bot',
83
- 'boitho\.com-dc',
84
- 'boitho\.com-robot',
85
- 'brainobot',
86
- 'btbot',
87
- 'BUbiNG',
88
- 'Butterfly\/',
89
- 'buzzbot',
90
- 'careerbot',
91
- 'CatchBot',
92
- 'CC Metadata Scaper',
93
- 'ccbot',
94
- 'Cerberian Drtrs',
95
- 'changedetection',
96
- 'Charlotte',
97
- 'CloudFlare-AlwaysOnline',
98
- 'citeseerxbot',
99
- 'coccoc',
100
- 'classbot',
101
- 'Commons-HttpClient',
102
- 'content crawler spider',
103
- 'Content Crawler',
104
- 'convera',
105
- 'ConveraCrawler',
106
- 'CoPubbot',
107
- 'cosmos',
108
- 'Covario-IDS',
109
- 'CrawlBot',
110
- 'crawler4j',
111
- 'CrystalSemanticsBot',
112
- 'curl',
113
- 'cXensebot',
114
- 'CyberPatrol',
115
- 'DataparkSearch',
116
- 'dataprovider',
117
- 'DiamondBot',
118
- 'Digg',
119
- 'discobot',
120
- 'DomainAppender',
121
- 'domaincrawler',
122
- 'Domain Re-Animator Bot',
123
- 'dotbot',
124
- 'drupact',
125
- 'DuckDuckBot',
126
- 'EARTHCOM',
127
- 'EasouSpider',
128
- 'ec2linkfinder',
129
- 'edisterbot',
130
- 'ElectricMonk',
131
- 'elisabot',
132
- 'emailmarketingrobot',
133
- 'EmeraldShield\.com WebBot',
134
- 'envolk\[ITS\]spider',
135
- 'EsperanzaBot',
136
- 'europarchive\.org',
137
- 'exabot',
138
- 'ezooms',
139
- 'facebookexternalhit',
140
- 'Facebot',
141
- 'FAST Enteprise Crawler',
142
- 'FAST Enterprise Crawler',
143
- 'FAST-WebCrawler',
144
- 'FDSE robot',
145
- 'Feedfetcher-Google',
146
- 'FindLinks',
147
- 'findlink',
148
- 'findthatfile',
149
- 'findxbot',
150
- 'Flamingo_SearchEngine',
151
- 'fluffy',
152
- 'fr-crawler',
153
- 'FRCrawler',
154
- 'FurlBot',
155
- 'FyberSpider',
156
- 'g00g1e\.net',
157
- 'GigablastOpenSource',
158
- 'grub-client',
159
- 'g2crawler',
160
- 'Gaisbot',
161
- 'GalaxyBot',
162
- 'genieBot',
163
- 'Genieo',
164
- 'GermCrawler',
165
- 'gigabot',
166
- 'GingerCrawler',
167
- 'Girafabot',
168
- 'Gluten Free Crawler',
169
- 'gnam gnam spider',
170
- 'Googlebot-Image',
171
- 'Googlebot-Mobile',
172
- 'Googlebot',
173
- 'GrapeshotCrawler',
174
- 'gslfbot',
175
- 'GurujiBot',
176
- 'HappyFunBot',
177
- 'Healthbot',
178
- 'heritrix',
179
- 'hl_ftien_spider',
180
- 'Holmes',
181
- 'htdig',
182
- 'httpunit',
183
- 'httrack',
184
- 'ia_archiver',
185
- 'iaskspider',
186
- 'iCCrawler',
187
- 'ichiro',
188
- 'igdeSpyder',
189
- 'iisbot',
190
- 'InAGist',
191
- 'InfoWizards Reciprocal Link System PRO',
192
- 'Insitesbot',
193
- 'integromedb',
194
- 'intelium_bot',
195
- 'InterfaxScanBot',
196
- 'IODC',
197
- 'IOI',
198
- 'ip-web-crawler\.com',
199
- 'ips-agent',
200
- 'IRLbot',
201
- 'IssueCrawler',
202
- 'IstellaBot',
203
- 'it2media-domain-crawler',
204
- 'iZSearch',
205
- 'Jaxified Bot',
206
- 'JOC Web Spider',
207
- 'jyxobot',
208
- 'KoepaBot',
209
- 'L\.webis',
210
- 'LapozzBot',
211
- 'Larbin',
212
- 'lb-spider',
213
- 'LDSpider',
214
- 'LexxeBot',
215
- 'libwww',
216
- 'Linguee Bot',
217
- 'Link Valet',
218
- 'linkdex',
219
- 'LinkExaminer',
220
- 'LinksManager\.com_bot',
221
- 'LinkpadBot',
222
- 'LinksCrawler',
223
- 'LinkWalker',
224
- 'Lipperhey Link Explorer',
225
- 'Lipperhey SEO Service',
226
- 'Livelapbot',
227
- 'lmspider',
228
- 'lssbot',
229
- 'lssrocketcrawler',
230
- 'ltx71',
231
- 'lufsbot',
232
- 'lwp-trivial',
233
- 'Mail\.RU_Bot',
234
- 'MegaIndex\.ru',
235
- 'mabontland',
236
- 'magpie-crawler',
237
- 'Mediapartners-Google',
238
- 'memorybot',
239
- 'MetaURI',
240
- 'MJ12bot',
241
- 'mlbot',
242
- 'Mnogosearch',
243
- 'mogimogi',
244
- 'MojeekBot',
245
- 'Moreoverbot',
246
- 'Morning Paper',
247
- 'Mrcgiguy',
248
- 'MSIECrawler',
249
- 'msnbot',
250
- 'msrbot',
251
- 'MVAClient',
252
- 'mxbot',
253
- 'NerdByNature\.Bot',
254
- 'NerdyBot',
255
- 'netEstate NE Crawler',
256
- 'netresearchserver',
257
- 'NetSeer Crawler',
258
- 'NewsGator',
259
- 'NextGenSearchBot',
260
- 'NG-Search',
261
- 'ngbot',
262
- 'nicebot',
263
- 'niki-bot',
264
- 'Notifixious',
265
- 'noxtrumbot',
266
- 'Nusearch Spider',
267
- 'nutch',
268
- 'NutchCVS',
269
- 'Nymesis',
270
- 'obot',
271
- 'oegp',
272
- 'ocrawler',
273
- 'omgilibot',
274
- 'OmniExplorer_Bot',
275
- 'online link validator',
276
- 'Online Website Link Checker',
277
- 'OOZBOT',
278
- 'openindexspider',
279
- 'OpenWebSpider',
280
- 'OrangeBot',
281
- 'Orbiter',
282
- 'ow\.ly',
283
- 'PaperLiBot',
284
- 'Pingdom\.com_bot',
285
- 'Ploetz \+ Zeller',
286
- 'page2rss',
287
- 'PageBitesHyperBot',
288
- 'panscient',
289
- 'Peew',
290
- 'PercolateCrawler',
291
- 'phpcrawl',
292
- 'Pizilla',
293
- 'Plukkie',
294
- 'polybot',
295
- 'Pompos',
296
- 'PostPost',
297
- 'postrank',
298
- 'proximic',
299
- 'psbot',
300
- 'purebot',
301
- 'PycURL',
302
- 'python-requests',
303
- 'Python-urllib',
304
- 'Qseero',
305
- 'QuerySeekerSpider',
306
- 'Qwantify',
307
- 'Radian6',
308
- 'RAMPyBot',
309
- 'REL Link Checker',
310
- 'RetrevoPageAnalyzer',
311
- 'Riddler',
312
- 'Robosourcer',
313
- 'rogerbot',
314
- 'RufusBot',
315
- 'SandCrawler',
316
- 'SBIder',
317
- 'ScoutJet',
318
- 'Scrapy',
319
- 'ScreenerBot',
320
- 'scribdbot',
321
- 'Scrubby',
322
- 'SearchmetricsBot',
323
- 'SearchSight',
324
- 'seekbot',
325
- 'semanticdiscovery',
326
- 'SemrushBot',
327
- 'Sensis Web Crawler',
328
- 'SEOChat::Bot',
329
- 'seokicks-robot',
330
- 'SEOstats',
331
- 'Seznam screenshot-generator',
332
- 'seznambot',
333
- 'Shim-Crawler',
334
- 'ShopWiki',
335
- 'Shoula robot',
336
- 'ShowyouBot',
337
- 'SimpleCrawler',
338
- 'sistrix crawler',
339
- 'SiteBar',
340
- 'sitebot',
341
- 'siteexplorer\.info',
342
- 'SklikBot',
343
- 'slider\.com',
344
- 'slurp',
345
- 'smtbot',
346
- 'Snappy',
347
- 'sogou spider',
348
- 'sogou',
349
- 'Sosospider',
350
- 'spbot',
351
- 'Speedy Spider',
352
- 'speedy',
353
- 'SpiderMan',
354
- 'Sqworm',
355
- 'SSL-Crawler',
356
- 'StackRambler',
357
- 'suggybot',
358
- 'summify',
359
- 'SurdotlyBot',
360
- 'SurveyBot',
361
- 'SynooBot',
362
- 'tagoobot',
363
- 'teoma',
364
- 'TerrawizBot',
365
- 'TheSuBot',
366
- 'Thumbnail\.CZ robot',
367
- 'TinEye',
368
- 'toplistbot',
369
- 'trendictionbot',
370
- 'TrueBot',
371
- 'truwoGPS',
372
- 'turnitinbot',
373
- 'TweetedTimes Bot',
374
- 'TweetmemeBot',
375
- 'twengabot',
376
- 'Twitterbot',
377
- 'uMBot',
378
- 'UnisterBot',
379
- 'UnwindFetchor',
380
- 'updated',
381
- 'urlappendbot',
382
- 'Urlfilebot',
383
- 'urlresolver',
384
- 'UsineNouvelleCrawler',
385
- 'Vagabondo',
386
- 'Vivante Link Checker',
387
- 'voilabot',
388
- 'Vortex',
389
- 'voyager\\/',
390
- 'VYU2',
391
- 'web-archive-net\.com\.bot',
392
- 'Websquash\.com',
393
- 'WeSEE:Ads\/PageBot',
394
- 'wbsearchbot',
395
- 'webcollage',
396
- 'webcompanycrawler',
397
- 'webcrawler',
398
- 'webmon ',
399
- 'WeSEE:Search',
400
- 'wf84',
401
- 'wget',
402
- 'wocbot',
403
- 'WoFindeIch Robot',
404
- 'WomlpeFactory',
405
- 'woriobot',
406
- 'wotbox',
407
- 'Xaldon_WebSpider',
408
- 'Xenu Link Sleuth',
409
- 'xintellibot',
410
- 'XML Sitemaps Generator',
411
- 'XoviBot',
412
- 'Y!J-ASR',
413
- 'yacy',
414
- 'yacybot',
415
- 'Yahoo Link Preview',
416
- 'Yahoo! Slurp China',
417
- 'Yahoo! Slurp',
418
- 'YahooSeeker',
419
- 'YahooSeeker-Testing',
420
- 'YandexBot',
421
- 'YandexImages',
422
- 'YandexMetrika',
423
- 'yandex',
424
- 'yanga',
425
- 'Yasaklibot',
426
- 'yeti',
427
- 'YioopBot',
428
- 'YisouSpider',
429
- 'YodaoBot',
430
- 'yoogliFetchAgent',
431
- 'yoozBot',
432
- 'YoudaoBot',
433
- 'Zao',
434
- 'Zealbot',
435
- 'zspider',
436
- 'ZyBorg',
437
- '[a-z0-9\\-_]*((?<!cu)bot|crawler|archiver|transcoder|spider)',
438
- );
439
-
440
- /**
441
- * All possible HTTP headers that represent the
442
- * User-Agent string.
443
- *
444
- * @var array
445
- */
446
- protected static $uaHttpHeaders = array(
447
- // The default User-Agent string.
448
- 'HTTP_USER_AGENT',
449
- // Header can occur on devices using Opera Mini.
450
- 'HTTP_X_OPERAMINI_PHONE_UA',
451
- // Vodafone specific header: http://www.seoprinciple.com/mobile-web-community-still-angry-at-vodafone/24/
452
- 'HTTP_X_DEVICE_USER_AGENT',
453
- 'HTTP_X_ORIGINAL_USER_AGENT',
454
- 'HTTP_X_SKYFIRE_PHONE',
455
- 'HTTP_X_BOLT_PHONE_UA',
456
- 'HTTP_DEVICE_STOCK_UA',
457
- 'HTTP_X_UCBROWSER_DEVICE_UA',
458
- );
459
-
460
- /**
461
- * Class constructor.
462
- */
463
- public function __construct(array $headers = null, $userAgent = null)
464
- {
465
- $this->setHttpHeaders($headers);
466
- $this->setUserAgent($userAgent);
467
- }
468
-
469
- public function setHttpHeaders($httpHeaders = null)
470
- {
471
- // use global _SERVER if $httpHeaders aren't defined
472
- if (!is_array($httpHeaders) || !count($httpHeaders))
473
- {
474
- $httpHeaders = $_SERVER;
475
- }
476
- // clear existing headers
477
- $this->httpHeaders = array();
478
- // Only save HTTP headers. In PHP land, that means only _SERVER vars that
479
- // start with HTTP_.
480
- foreach ($httpHeaders as $key => $value)
481
- {
482
- if (substr($key, 0, 5) === 'HTTP_')
483
- {
484
- $this->httpHeaders[$key] = $value;
485
- }
486
- }
487
- }
488
-
489
- public function getUaHttpHeaders()
490
- {
491
- return self::$uaHttpHeaders;
492
- }
493
-
494
- public function setUserAgent($userAgent = null)
495
- {
496
- if (false === empty($userAgent))
497
- {
498
- return $this->userAgent = $userAgent;
499
- } else
500
- {
501
- $this->userAgent = null;
502
- foreach ($this->getUaHttpHeaders() as $altHeader)
503
- {
504
- if (false === empty($this->httpHeaders[$altHeader]))
505
- { // @todo: should use getHttpHeader(), but it would be slow. (Serban)
506
- $this->userAgent .= $this->httpHeaders[$altHeader] . ' ';
507
- }
508
- }
509
-
510
- return $this->userAgent = (!empty($this->userAgent) ? trim($this->userAgent) : null);
511
- }
512
- }
513
-
514
- public function getRegex()
515
- {
516
- return '(' . implode('|', self::$crawlers) . ')';
517
- }
518
-
519
- public function isCrawler($userAgent = null)
520
- {
521
- $agent = is_null($userAgent) ? $this->userAgent : $userAgent;
522
-
523
- $result = preg_match('/' . $this->getRegex() . '/i', $agent, $matches);
524
-
525
- if ($matches)
526
- {
527
- $this->matches = $matches;
528
- }
529
-
530
- return (bool) $result;
531
- }
532
-
533
- public function getMatches()
534
- {
535
- return $this->matches[0];
536
- }
537
-
538
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/application/vendor/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/content-egg.php DELETED
@@ -1,35 +0,0 @@
1
- <?php
2
-
3
- namespace ContentEgg;
4
-
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: 2.8.0
10
- Author: keywordrush.com
11
- Author URI: http://www.keywordrush.com
12
- Text Domain: content-egg
13
- */
14
-
15
- /*
16
- * Copyright (c) www.keywordrush.com (email: support@keywordrush.com)
17
- */
18
-
19
- defined('ABSPATH') || die('No direct script access allowed!');
20
-
21
- define(__NAMESPACE__ . '\NS', __NAMESPACE__ . '\\');
22
- define(NS . 'PLUGIN_PATH', \plugin_dir_path(__FILE__));
23
- define(NS . 'PLUGIN_FILE', __FILE__);
24
- define(NS . 'PLUGIN_RES', \plugins_url('res', __FILE__));
25
-
26
- require_once PLUGIN_PATH . 'loader.php';
27
-
28
- \add_action('plugins_loaded', array('\ContentEgg\application\Plugin', 'getInstance'));
29
- if (\is_admin())
30
- {
31
- \register_activation_hook(__FILE__, array(\ContentEgg\application\Installer::getInstance(), 'activate'));
32
- \register_deactivation_hook(__FILE__, array(\ContentEgg\application\Installer::getInstance(), 'deactivate'));
33
- \register_uninstall_hook(__FILE__, array('\ContentEgg\application\Installer', 'uninstall'));
34
- \add_action('init', array('\ContentEgg\application\admin\PluginAdmin', 'getInstance'));
35
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/index.php DELETED
@@ -1 +0,0 @@
1
- <?php // Silence is golden.
 
trunk/languages/content-egg-en_US.mo DELETED
Binary file
trunk/languages/content-egg-en_US.po DELETED
@@ -1,4060 +0,0 @@
1
- # Copyright (C) 2015 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 1.1.1\n"
6
- "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg\n"
7
- "POT-Creation-Date: 2016-10-25 15:02:06+00:00\n"
8
- "PO-Revision-Date: 2016-10-25 18:07+0200\n"
9
- "Last-Translator: Sizam themes <sizamtheme@gmail.com>\n"
10
- "Language-Team: \n"
11
- "Language: en_EN\n"
12
- "MIME-Version: 1.0\n"
13
- "Content-Type: text/plain; charset=UTF-8\n"
14
- "Content-Transfer-Encoding: 8bit\n"
15
- "X-Generator: Poedit 1.6.5\n"
16
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17
-
18
- #: application/Autoupdate.php:83
19
- msgid "Новая версия"
20
- msgstr "New version"
21
-
22
- #: application/admin/AdminNotice.php:23
23
- msgid "Задание автоблоггинга сохранено."
24
- msgstr "Task for autoblogging is saved."
25
-
26
- #: application/admin/AdminNotice.php:23 application/admin/AutoblogTable.php:54
27
- msgid "Запустить сейчас"
28
- msgstr "Run now"
29
-
30
- #: application/admin/AdminNotice.php:24
31
- msgid "При сохранении задания автоблоггинга возникла ошибка."
32
- msgstr "While saving task error was occurred."
33
-
34
- #: application/admin/AdminNotice.php:25
35
- msgid "Ошибка при обработке файла с ключевыми словами."
36
- msgstr "Error while handling file with keywords."
37
-
38
- #: application/admin/AdminNotice.php:26
39
- msgid "Заданий автоблоггинга сохранено:"
40
- msgstr "Tasks for autoblogging are saved."
41
-
42
- #: application/admin/AdminNotice.php:27
43
- msgid "Лицензия не может быть откреплена. Обратитесь в поддержку плагина."
44
- msgstr "License can't be deactivated. Write to support of plugin."
45
-
46
- #: application/admin/AdminNotice.php:28
47
- msgid ""
48
- "Лицензия была откреплена. Вы должны деактивировать и удалить плагин с "
49
- "текущего домена."
50
- msgstr ""
51
- "License was deactivated. You must deactivate and delete plugin from current "
52
- "domain to enable it on another one."
53
-
54
- #: application/admin/AeIntegrationConfig.php:31
55
- msgid "AE интеграция"
56
- msgstr "Affiliate Egg integration"
57
-
58
- #: application/admin/AeIntegrationConfig.php:42
59
- msgid "Активировать модули"
60
- msgstr "Activate modules"
61
-
62
- #: application/admin/AutoblogController.php:75
63
- #: application/admin/views/autoblog_index.php:37
64
- msgid "Автоблоггинг"
65
- msgstr "Autoblogging"
66
-
67
- #: application/admin/AutoblogController.php:76
68
- #: application/admin/views/autoblog_edit.php:9
69
- #: application/admin/views/autoblog_index.php:38
70
- msgid "Добавить автоблоггинг"
71
- msgstr "Add autoblogging"
72
-
73
- #: application/admin/AutoblogController.php:77
74
- msgid "Добавить автоблоггинг - пакетный режим"
75
- msgstr "Add autoblogging - bulk mode"
76
-
77
- #: application/admin/AutoblogController.php:193
78
- msgid "Автоблоггинг не найден"
79
- msgstr "Autoblogging is not found"
80
-
81
- #: application/admin/AutoblogTable.php:47
82
- msgid "(без названия)"
83
- msgstr "(no title)"
84
-
85
- #: application/admin/AutoblogTable.php:53
86
- #: application/admin/AutoblogTable.php:58
87
- msgid "Редактировать"
88
- msgstr "Edit"
89
-
90
- #: application/admin/AutoblogTable.php:55
91
- msgid "Дублировать"
92
- msgstr "Duplicate "
93
-
94
- #: application/admin/AutoblogTable.php:56
95
- #: application/admin/MyListTable.php:165
96
- #: application/admin/views/_metabox_results.php:14
97
- msgid "Удалить"
98
- msgstr "Delete"
99
-
100
- #: application/admin/AutoblogTable.php:65
101
- #: application/admin/views/_metabox_autoblog.php:24
102
- msgid "Работает"
103
- msgstr "Works"
104
-
105
- #: application/admin/AutoblogTable.php:67
106
- #: application/admin/views/_metabox_autoblog.php:25
107
- msgid "Остановлен"
108
- msgstr "Stoped"
109
-
110
- #: application/admin/AutoblogTable.php:81
111
- msgid "активных:"
112
- msgstr "active:"
113
-
114
- #: application/admin/AutoblogTable.php:81
115
- msgid "всего:"
116
- msgstr "total:"
117
-
118
- #: application/admin/EggMetabox.php:76
119
- msgid "Настройте и активируйте модули Content Egg плагин."
120
- msgstr "Configure and activate modules of Content Egg plugin"
121
-
122
- #: application/admin/EnvatoConfig.php:27
123
- msgid ""
124
- "На этот Email будет закреплена ваша лицензия на плагин. После активации, вы "
125
- "получите письмо с данными для входа в <a target=\"_blank\" href=\"http://www."
126
- "keywordrush.com/panel\">панель пользователя</a>, где сможете управлять "
127
- "своими лицензиями."
128
- msgstr ""
129
- "This Email will be used for license on your plugin. After activation, you "
130
- "will get email with login data for <a target=\"_blank\" href=\"http://www."
131
- "keywordrush.com/en/panel\">user panel</a>, where you can control your "
132
- "licenses."
133
-
134
- #: application/admin/EnvatoConfig.php:34 application/admin/EnvatoConfig.php:52
135
- msgid "Поле \"%s\" не может быть пустым."
136
- msgstr "The field \"%s\" can not be empty"
137
-
138
- #: application/admin/EnvatoConfig.php:38 application/admin/EnvatoConfig.php:56
139
- msgid "Поле \"%s\" введено неверно."
140
- msgstr "Field \"%s\" filled with wrong data."
141
-
142
- #: application/admin/EnvatoConfig.php:45
143
- msgid ""
144
- "Введите ваш Purchase code для плагина. Если вы приобрели плагин в комплекте "
145
- "с темой, введите Purchase code темы. <a target=\"_blank\" href=\"https://"
146
- "help.market.envato.com/hc/en-us/articles/202822600-Where-Is-My-Purchase-Code-"
147
- "\">Где найти?</a>"
148
- msgstr ""
149
- "Set your purchase code for plugin. If you get plugin in bundle with theme, "
150
- "set Purchase code of theme. <a target=\"_blank\" href=\"https://help.market."
151
- "envato.com/hc/en-us/articles/202822600-Where-Is-My-Purchase-Code-\">Where to "
152
- "find?</a>"
153
-
154
- #: application/admin/EnvatoConfig.php:60
155
- msgid "Плагин не может быть активирован."
156
- msgstr "Plugin cannot be activated!"
157
-
158
- #: application/admin/EnvatoConfig.php:65
159
- msgid "Новости проекта на email"
160
- msgstr "News on email"
161
-
162
- #: application/admin/EnvatoConfig.php:66
163
- msgid ""
164
- "Очень редко мы можем отослать вам письмо с важными изменениями в работе "
165
- "плагина или новости проекта."
166
- msgstr "We can send you emails with very urgent updates about plugin."
167
-
168
- #: application/admin/EnvatoConfig.php:72
169
- msgid "Error."
170
- msgstr "Error."
171
-
172
- #: application/admin/GeneralConfig.php:31 application/admin/PluginAdmin.php:91
173
- msgid "Настройки"
174
- msgstr "Settings"
175
-
176
- #: application/admin/GeneralConfig.php:96
177
- msgid "Язык сайта"
178
- msgstr "Website language"
179
-
180
- #: application/admin/GeneralConfig.php:97
181
- msgid ""
182
- "Модули, которые имеют поддержку мультиязычности, будут отдавать предпочтение "
183
- "контенту на этом языке. Также эта настройка указывает на язык для "
184
- "локализации шаблонов."
185
- msgstr ""
186
- "Modules, which have Multilanguage support, will have priority for this "
187
- "language. Also, this setting will point on language of output templates"
188
-
189
- #: application/admin/GeneralConfig.php:105
190
- msgid "К каким типам постов добавить Content Egg metabox?"
191
- msgstr "What post types do you want to use for Content Egg?"
192
-
193
- #: application/admin/GeneralConfig.php:106
194
- msgid ""
195
- "Эта настройка также показывает к каким типам постов применять автозаполнение "
196
- "на странице \"Заполнить\"."
197
- msgstr "This setting also shows post types for Autofill extension"
198
-
199
- #: application/admin/GeneralConfig.php:113
200
- msgid "Фильтровать ботов"
201
- msgstr "Filter bots"
202
-
203
- #: application/admin/GeneralConfig.php:114
204
- msgid "Боты не могут запускать парсеры."
205
- msgstr "Bots can't activate parsers."
206
-
207
- #: application/admin/GeneralConfig.php:115
208
- msgid ""
209
- "Обновление цены, а также обновление выдачи по ключевому слову происходит при "
210
- "открытии страницы поста. Если мы определим по useragent, что на страницу "
211
- "зашел один из известных ботов, никакие парсеры запускаться не будут."
212
- msgstr ""
213
- "Updating price and keyword updating is made with page opening. If we "
214
- "determine by useragent, that page is opened one of known bot, no parsers "
215
- "will not work in this case."
216
-
217
- #: application/admin/GeneralConfig.php:122
218
- #: application/admin/GeneralConfig.php:132
219
- msgid "История изменения цены"
220
- msgstr "Price history"
221
-
222
- #: application/admin/GeneralConfig.php:123
223
- msgid ""
224
- "Сколько дней хранить историю изменения цены для товаров. 0 - не сохранять "
225
- "историю."
226
- msgstr "How long save price history. 0 - deactivate price history."
227
-
228
- #: application/admin/GeneralConfig.php:132
229
- msgid "Поле \"%s\" не может быть больше %d."
230
- msgstr "The field \"%s\" can't be more than %d."
231
-
232
- #: application/admin/GeneralConfig.php:138
233
- msgid ""
234
- "Разрешить посетителям подписываться на уведомления по email о снижении цены."
235
- msgstr "Allow members to subscribe for price drop alert on email."
236
-
237
- #: application/admin/GeneralConfig.php:139
238
- msgid "Активных подписок сейчас: <b>%d</b>"
239
- msgstr "Active subscriptions now: <b>%d</b>"
240
-
241
- #: application/admin/GeneralConfig.php:140
242
- msgid "Отправлено уведомлений за последнии %d дней: <b>%d</b>"
243
- msgstr "Messages are sent for last %d days: <b>%d</b>"
244
-
245
- #: application/admin/GeneralConfig.php:141
246
- msgid ""
247
- "Для работы этой опции \"История изменения цены\" также должна быть включена."
248
- msgstr ""
249
- "This option requires \"Price history\" option (must be enabled) to work."
250
-
251
- #: application/admin/ImportExportController.php:26
252
- msgid "Импорт/Экспорт"
253
- msgstr "Import/Export"
254
-
255
- #: application/admin/ImportExportController.php:59
256
- msgid "Опции были сохранены."
257
- msgstr "Options were saved."
258
-
259
- #: application/admin/ImportExportController.php:59
260
- msgid "Страница настроек"
261
- msgstr "Page of settings"
262
-
263
- #: application/admin/ImportExportController.php:61
264
- msgid "Неверный формат."
265
- msgstr "Invalid format."
266
-
267
- #: application/admin/LicConfig.php:33
268
- msgid "Лицензия"
269
- msgstr "License"
270
-
271
- #: application/admin/LicConfig.php:40
272
- msgid "Ключ лицензии"
273
- msgstr "License key"
274
-
275
- #: application/admin/LicConfig.php:41
276
- msgid ""
277
- "Сюда необходимо ввести действующий ключ лицензии. Найти ключ вы можете в "
278
- "своей <a href=\"http://www.keywordrush.com/panel\">панели пользователя</a>. "
279
- "Если у вас еще нет ключа, вы можете приобрести его на <a href=\"http://www."
280
- "keywordrush.com/contentegg\">официальном сайте</a> плагина."
281
- msgstr ""
282
- "Here you must enter a valid license key. You can find key in your <a href="
283
- "\"http://www.keywordrush.com/en/panel\">user panel</a>. If you don't have a "
284
- "key you can buy it on <a href=\"http://www.keywordrush.com/en/contentegg"
285
- "\">the official website</a> of the plugin."
286
-
287
- #: application/admin/LicConfig.php:48
288
- msgid "Поле \"Ключ лицензии\" не может быть пустым."
289
- msgstr "The \"License key\" can not be empty"
290
-
291
- #: application/admin/LicConfig.php:52
292
- msgid "Неверный ключ лицензии."
293
- msgstr "Invalid license key"
294
-
295
- #: application/admin/LicConfig.php:57
296
- msgid ""
297
- "Ключ лицензии не принят. Убедитесь, что вы используйте действительный ключ."
298
- msgstr "License key is not accepted. Make sure that you use actual key."
299
-
300
- #: application/admin/LicConfig.php:59
301
- msgid ""
302
- "Если ключ верный, скорее всего, на вашем сервере заблокированы внешние "
303
- "соединения или по другой причине блокируется доступ к домену keywordrush.com."
304
- msgstr ""
305
- "If you have correct key, but it's not accepted, this means that your server "
306
- "blocks external connections or there is any other reason that your server "
307
- "doesn't allow to connect to keywordbrush.com site. Contact to our support"
308
-
309
- #: application/admin/LicConfig.php:61
310
- msgid "Пожалуйста, выясните это у своего хостинг-провайдера."
311
- msgstr "Please, write about this to your hosting provider"
312
-
313
- #: application/admin/LicConfig.php:63
314
- msgid ""
315
- "Если вам нужна наша помощь, обратитесь в <a href=\"http://www.keywordrush."
316
- "com/contact\">поддержку</a> плагина."
317
- msgstr ""
318
- "If you need our help, write to <a href=\"http://www.keywordrush.com/en/"
319
- "contact\">our support</a>."
320
-
321
- #: application/admin/MyListTable.php:127
322
- msgid " назад"
323
- msgstr " back"
324
-
325
- #: application/admin/PluginAdmin.php:77
326
- msgid "Вы уверены?"
327
- msgstr "Are you sure?"
328
-
329
- #: application/admin/PrefillController.php:49
330
- #: application/admin/views/prefill.php:11
331
- msgid "Заполнить"
332
- msgstr "Fill"
333
-
334
- #: application/admin/PrefillController.php:95
335
- msgid "Данные уже существуют."
336
- msgstr "Data already exist."
337
-
338
- #: application/admin/PrefillController.php:102
339
- msgid "Невозможно определить ключевое слово."
340
- msgstr "Impossible to determine a keyword"
341
-
342
- #: application/admin/PrefillController.php:111
343
- msgid "Ключевое слово для автоапдейта уже существует."
344
- msgstr "Keyword for autoupdate is not existing."
345
-
346
- #: application/admin/PrefillController.php:115
347
- msgid "Ключевое слово для автоапдейта сохранено."
348
- msgstr "Keyword for autoupdate was saved."
349
-
350
- #: application/admin/PrefillController.php:124
351
- msgid "Ошибка:"
352
- msgstr "Error:"
353
-
354
- #: application/admin/PrefillController.php:131
355
- msgid "Данные не найдены."
356
- msgstr "No data found..."
357
-
358
- #: application/admin/PrefillController.php:137
359
- msgid "Данные сохранены:"
360
- msgstr "Options were saved."
361
-
362
- #: application/admin/views/_metabox_autoblog.php:10
363
- #: application/models/AutoblogModel.php:65
364
- #: application/modules/Ozon/OzonConfig.php:82
365
- msgid "Название"
366
- msgstr "Name"
367
-
368
- #: application/admin/views/_metabox_autoblog.php:14
369
- msgid "Название для автоблоггинга (необязательно)"
370
- msgstr "Name for autoblogging (optional)"
371
-
372
- #: application/admin/views/_metabox_autoblog.php:20
373
- msgid "Статус задания"
374
- msgstr "Task status"
375
-
376
- #: application/admin/views/_metabox_autoblog.php:27
377
- msgid "Aвтоблоггинг можно приостановить."
378
- msgstr "You can stop autoblogging."
379
-
380
- #: application/admin/views/_metabox_autoblog.php:33
381
- msgid "Периодичность запуска"
382
- msgstr "Work frequency"
383
-
384
- #: application/admin/views/_metabox_autoblog.php:37
385
- msgid "Каждый час"
386
- msgstr "Every hour"
387
-
388
- #: application/admin/views/_metabox_autoblog.php:38
389
- msgid "Пять раз в сутки"
390
- msgstr "5 times in a day"
391
-
392
- #: application/admin/views/_metabox_autoblog.php:39
393
- msgid "Два раза в сутки"
394
- msgstr "Twice daily"
395
-
396
- #: application/admin/views/_metabox_autoblog.php:40
397
- msgid "Один раз в сутки"
398
- msgstr "Once a day"
399
-
400
- #: application/admin/views/_metabox_autoblog.php:41
401
- msgid "Каждые три дня"
402
- msgstr "Each three days"
403
-
404
- #: application/admin/views/_metabox_autoblog.php:42
405
- msgid "Один раз в неделю"
406
- msgstr "Once a week"
407
-
408
- #: application/admin/views/_metabox_autoblog.php:43
409
- msgid "Один раз в две недели"
410
- msgstr "Once in 2 weeks"
411
-
412
- #: application/admin/views/_metabox_autoblog.php:45
413
- msgid "Как часто запускать это задание автоблоггинга."
414
- msgstr "How often autoblogging will run this task"
415
-
416
- #: application/admin/views/_metabox_autoblog.php:51
417
- #: application/admin/views/_metabox_autoblog.php:139
418
- #: application/models/AutoblogModel.php:71
419
- msgid "Ключевые слова"
420
- msgstr "Keywords"
421
-
422
- #: application/admin/views/_metabox_autoblog.php:59
423
- msgid "Заглавная Первая Буква Каждого Слова"
424
- msgstr "Uppercase First Letter for Each Word"
425
-
426
- #: application/admin/views/_metabox_autoblog.php:60
427
- msgid "Заглавная первая буква"
428
- msgstr "Uppercase first letter"
429
-
430
- #: application/admin/views/_metabox_autoblog.php:61
431
- msgid "Сортировать в алфавитном порядке"
432
- msgstr "Sort with alpha order"
433
-
434
- #: application/admin/views/_metabox_autoblog.php:62
435
- msgid "Все слова неактивные"
436
- msgstr "All words are inactive"
437
-
438
- #: application/admin/views/_metabox_autoblog.php:63
439
- msgid "Все слова активные"
440
- msgstr "All words are active"
441
-
442
- #: application/admin/views/_metabox_autoblog.php:64
443
- msgid "Очистить список"
444
- msgstr "Clear list"
445
-
446
- #: application/admin/views/_metabox_autoblog.php:68
447
- msgid "Всего"
448
- msgstr "Total"
449
-
450
- #: application/admin/views/_metabox_autoblog.php:74
451
- msgid "Подсказки"
452
- msgstr "Hints"
453
-
454
- #: application/admin/views/_metabox_autoblog.php:75
455
- msgid "Тренды"
456
- msgstr "Trends"
457
-
458
- #: application/admin/views/_metabox_autoblog.php:76
459
- msgid "Товары"
460
- msgstr "Products"
461
-
462
- #: application/admin/views/_metabox_autoblog.php:83
463
- msgid "Яндекс"
464
- msgstr "Yandex"
465
-
466
- #: application/admin/views/_metabox_autoblog.php:84
467
- msgid "Я.Маркет"
468
- msgstr "Yandex.Market"
469
-
470
- #: application/admin/views/_metabox_autoblog.php:87
471
- msgid "Начните вводить ключевое слово"
472
- msgstr "Start enter keyword"
473
-
474
- #: application/admin/views/_metabox_autoblog.php:112
475
- msgid "Загрузить..."
476
- msgstr "Load..."
477
-
478
- #: application/admin/views/_metabox_autoblog.php:124
479
- msgid "Каждое слово - с новой строки."
480
- msgstr "Each keyword from separate line"
481
-
482
- #: application/admin/views/_metabox_autoblog.php:125
483
- msgid "Одно ключевое слово - это один пост."
484
- msgstr "One keyword is one post"
485
-
486
- #: application/admin/views/_metabox_autoblog.php:126
487
- msgid "Обработанные слова отмечены [квадратными скобками]."
488
- msgstr "Handled keywords are marked by [brackets]"
489
-
490
- #: application/admin/views/_metabox_autoblog.php:127
491
- msgid "Когда обработка всех слов закончится, задание будет остановлено."
492
- msgstr "When all keywords will be processed, task will stop."
493
-
494
- #: application/admin/views/_metabox_autoblog.php:147
495
- msgid "Поддерживаются два вида файлов:"
496
- msgstr "Two format are supported: "
497
-
498
- #: application/admin/views/_metabox_autoblog.php:150
499
- msgid "CSV файлы в формате:"
500
- msgstr "CSV files in format:"
501
-
502
- #: application/admin/views/_metabox_autoblog.php:158
503
- msgid "Разделитель - \";\" - точка с запятой."
504
- msgstr "Divider - \";\""
505
-
506
- #: application/admin/views/_metabox_autoblog.php:159
507
- msgid "Для каждой категории будет создано отдельное задание автоблоггинга."
508
- msgstr "For each category will be created separate task for autoblog."
509
-
510
- #: application/admin/views/_metabox_autoblog.php:161
511
- msgid "TXT файлы:"
512
- msgstr "TXT files:"
513
-
514
- #: application/admin/views/_metabox_autoblog.php:162
515
- msgid ""
516
- "обычный текстовый файл со списком ключевых слов (каждое слово - с новой "
517
- "строки)."
518
- msgstr "simple text file with list of keywords (each word from separate line)"
519
-
520
- #: application/admin/views/_metabox_autoblog.php:164
521
- msgid "Кодировка файлов должна быть UTF-8."
522
- msgstr "File must be in UTF-8"
523
-
524
- #: application/admin/views/_metabox_autoblog.php:173
525
- msgid "Обрабатывать ключевых слов"
526
- msgstr "Keywords for handle"
527
-
528
- #: application/admin/views/_metabox_autoblog.php:178
529
- msgid ""
530
- "Сколько ключевых слов обрабатывать за однин раз. Не рекомендуется "
531
- "устанавливать это значение более 5, чтобы излишне не нагружать сервер."
532
- msgstr ""
533
- "How many keywords to process at once. We don't recommend to use more than 5 "
534
- "keywords."
535
-
536
- #: application/admin/views/_metabox_autoblog.php:184
537
- msgid "Только выбранные модули"
538
- msgstr "Only choosed modules"
539
-
540
- #: application/admin/views/_metabox_autoblog.php:195
541
- msgid "Запускать только выбранные модули для этого задания."
542
- msgstr "Run only definite modules for this task."
543
-
544
- #: application/admin/views/_metabox_autoblog.php:196
545
- msgid ""
546
- "Если ничего не выбрано, то подразумевается все активные модули на момент "
547
- "запуска автоблоггинга."
548
- msgstr "If you don't choose anything, all active modules will be used."
549
-
550
- #: application/admin/views/_metabox_autoblog.php:203
551
- msgid "Исключить модули"
552
- msgstr "Exclude modules"
553
-
554
- #: application/admin/views/_metabox_autoblog.php:214
555
- msgid "Выбранные модули в этой конфигурации не будут запускаться."
556
- msgstr "Chosen modules will not run in this configuration. "
557
-
558
- #: application/admin/views/_metabox_autoblog.php:221
559
- msgid "Шаблон заголовка"
560
- msgstr "Title template"
561
-
562
- #: application/admin/views/_metabox_autoblog.php:228
563
- msgid "Шаблон для заголовка поста."
564
- msgstr "Template for title of post"
565
-
566
- #: application/admin/views/_metabox_autoblog.php:229
567
- msgid "Используйте теги:"
568
- msgstr "Use tags:"
569
-
570
- #: application/admin/views/_metabox_autoblog.php:230
571
- msgid "Для обображения данных плагина используйте специальные теги, например:"
572
- msgstr "For display data of plugin use special tags, for example:"
573
-
574
- #: application/admin/views/_metabox_autoblog.php:231
575
- msgid "Вы также можете задать порядковый индекс для доступа к данным плагина:"
576
- msgstr "You also can set index number for access to data of plugin"
577
-
578
- #: application/admin/views/_metabox_autoblog.php:232
579
- msgid ""
580
- "Вы можете использовать \"формулы\" с перечислением синонимов, из которых "
581
- "будет выбран один случайный вариант, например, {Скидка|Распродажа|Дешево}."
582
- msgstr ""
583
- "You can use \"formulas\" with synonyms, of which one will be selected with a "
584
- "random option, for example, {Discount|Sale|Cheap}."
585
-
586
- #: application/admin/views/_metabox_autoblog.php:239
587
- msgid "Шаблон поста"
588
- msgstr "Template for post."
589
-
590
- #: application/admin/views/_metabox_autoblog.php:245
591
- msgid "Шаблон тела поста."
592
- msgstr "Template for body of post."
593
-
594
- #: application/admin/views/_metabox_autoblog.php:246
595
- msgid ""
596
- "Вы можете использовать шорткоды, точно также, как вы делаете это в обычных "
597
- "постах, например: "
598
- msgstr "You can use shortcodes, for example:"
599
-
600
- #: application/admin/views/_metabox_autoblog.php:248
601
- msgid ""
602
- "\"Форумлы\", а также все теги из шаблона заголовка, также будут работать и "
603
- "здесь."
604
- msgstr ""
605
- "\"Formulas\", and also all tags from title template, will also work here."
606
-
607
- #: application/admin/views/_metabox_autoblog.php:256
608
- msgid "Статус поста"
609
- msgstr "Post status"
610
-
611
- #: application/admin/views/_metabox_autoblog.php:268
612
- msgid "Пользователь"
613
- msgstr "User"
614
-
615
- #: application/admin/views/_metabox_autoblog.php:275
616
- msgid "От имени этого пользователя будут публиковаться посты."
617
- msgstr "This user will be author of posts."
618
-
619
- #: application/admin/views/_metabox_autoblog.php:281
620
- #: application/modules/Aliexpress/AliexpressConfig.php:89
621
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:87
622
- #: application/modules/CjLinks/CjLinksConfig.php:125
623
- #: application/modules/Clickbank/ClickbankConfig.php:67
624
- #: application/modules/Linkshare/LinkshareConfig.php:104
625
- #: application/modules/Ozon/OzonConfig.php:91
626
- #: application/modules/Pixabay/PixabayConfig.php:108
627
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:57
628
- msgid "Категория"
629
- msgstr "Category "
630
-
631
- #: application/admin/views/_metabox_autoblog.php:288
632
- msgid "Создать автоматически"
633
- msgstr "Create Automatically"
634
-
635
- #: application/admin/views/_metabox_autoblog.php:294
636
- msgid "Категория для постов."
637
- msgstr "Category for posts."
638
-
639
- #: application/admin/views/_metabox_autoblog.php:296
640
- msgid ""
641
- "\"Создать автоматически\" - означает, что категории будут созданы на "
642
- "основании данных CSV файла с ключевыми словами и категориями."
643
- msgstr ""
644
- "\"Create Automatically\" means, that categories will be created based on "
645
- "data of CSV file with keywords and categories."
646
-
647
- #: application/admin/views/_metabox_autoblog.php:305
648
- msgid "Требуется минимум модулей"
649
- msgstr "Minimum number of modules are required"
650
-
651
- #: application/admin/views/_metabox_autoblog.php:310
652
- msgid ""
653
- "Пост не будет опубликован, если контент не найден для этого количества "
654
- "модулей. "
655
- msgstr "Post will not be published if no content for such number of modules."
656
-
657
- #: application/admin/views/_metabox_autoblog.php:316
658
- msgid "Обязательные модули"
659
- msgstr "Required modules"
660
-
661
- #: application/admin/views/_metabox_autoblog.php:327
662
- msgid "Пост опубликован не будет, если результаты для этих модулей не найдены."
663
- msgstr "Post will not be publicized if no results for these modules."
664
-
665
- #: application/admin/views/_metabox_autoblog.php:334
666
- #: application/components/AffiliateParserModuleConfig.php:18
667
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:150
668
- msgid "Автоматическое обновление"
669
- msgstr "Automatic update"
670
-
671
- #: application/admin/views/_metabox_autoblog.php:345
672
- msgid ""
673
- "Для выбранных модулей текущее ключевое слово будет задано как ключевое слово "
674
- "для автообновления. Выдача модуля будет переодически обновляться в "
675
- "соотвествии с настройкой времени жизни кэша."
676
- msgstr ""
677
- "For selected modules, the current keyword will be used as a keyword for "
678
- "autoupdate. Data of the module will be updated periodically In accordance "
679
- "with the configuration of the lifetime of the cache."
680
-
681
- #: application/admin/views/_metabox_results.php:9
682
- #: application/components/ParserModuleConfig.php:57
683
- #: application/modules/Youtube/YoutubeConfig.php:64
684
- #: application/modules/Youtube/views/search_panel.php:11
685
- msgid "Заголовок"
686
- msgstr "Title"
687
-
688
- #: application/admin/views/_metabox_results.php:10
689
- msgid "Описание"
690
- msgstr "Description"
691
-
692
- #: application/admin/views/_metabox_results.php:13
693
- #: application/admin/views/_promo_box.php:56
694
- msgid "Перейти"
695
- msgstr "Go to "
696
-
697
- #: application/admin/views/_metabox_search_results.php:11
698
- #: application/modules/CjLinks/views/search_results.php:16
699
- msgid "Код купона:"
700
- msgstr "Coupon code:"
701
-
702
- #: application/admin/views/_promo_box.php:4
703
- msgid "Работай, как профи"
704
- msgstr "Maximum profit with minimum efforts"
705
-
706
- #: application/admin/views/_promo_box.php:10
707
- msgid "Все включено: контент + монетизация."
708
- msgstr "Many additional modules and extended functions."
709
-
710
- #: application/admin/views/_promo_box.php:52
711
- msgid "Активируйте плагин"
712
- msgstr "Activate plugin"
713
-
714
- #: application/admin/views/_promo_box.php:53
715
- #: application/admin/views/envato_activation.php:5
716
- msgid ""
717
- "Активируйте плагин, чтобы получить срочные автоматические апдейты в админ-"
718
- "панели Wordpress и официальную поддержку от авторов плагина."
719
- msgstr ""
720
- "Activate plugin, to get urgent important updates of plugin inside admin "
721
- "panel and official support. "
722
-
723
- #: application/admin/views/ae_integration.php:5
724
- msgid "Интеграция с Affiliate Egg плагин"
725
- msgstr "Integration with Affiliate Egg"
726
-
727
- #: application/admin/views/ae_integration.php:9
728
- msgid ""
729
- "Вы можете подключить веб-парсеры <a href=\"http://www.keywordrush.com/"
730
- "affiliateegg\">Affiliate Egg плагина</a> в качестве модулей Content Egg."
731
- msgstr ""
732
- "You can activate parsers of <a href=\"http://www.keywordrush.com/en/"
733
- "affiliateegg\">Affiliate Egg</a> as modules of Content Egg."
734
-
735
- #: application/admin/views/ae_integration.php:10
736
- msgid ""
737
- "Для поиска по ключевому слову будет использоваться \"родной\" поиск на сайте "
738
- "магазина."
739
- msgstr "For search by keyword, plugin will use search of original site."
740
-
741
- #: application/admin/views/ae_integration.php:15
742
- msgid "Для начала работы выполните следующие действия:"
743
- msgstr "For first step make next actions:"
744
-
745
- #: application/admin/views/ae_integration.php:17
746
- msgid ""
747
- "Установите и активируйте <a href=\"http://www.keywordrush.com/affiliateegg"
748
- "\">Affiliate Egg плагин</a>"
749
- msgstr ""
750
- "Set and activate <a href=\"www.keywordrush.com/en/affiliateegg\">Affiliate "
751
- "Egg</a>"
752
-
753
- #: application/admin/views/ae_integration.php:18
754
- msgid "Версия Affiliate Egg должна быть не ниже"
755
- msgstr "Version of Affiliate Egg must be great than"
756
-
757
- #: application/admin/views/autoblog_edit.php:7
758
- msgid "Редактировать автоблоггинг"
759
- msgstr "Edit autoblogging"
760
-
761
- #: application/admin/views/autoblog_edit.php:11
762
- msgid "пакетное добавление"
763
- msgstr "bulk adding"
764
-
765
- #: application/admin/views/autoblog_edit.php:15
766
- msgid "Пакетное добавление"
767
- msgstr "Bulk adding"
768
-
769
- #: application/admin/views/autoblog_edit.php:17
770
- msgid "Назад к списку"
771
- msgstr "Back to list"
772
-
773
- #: application/admin/views/autoblog_edit.php:39
774
- msgid "Сохранить"
775
- msgstr "Save"
776
-
777
- #: application/admin/views/autoblog_edit.php:41
778
- msgid ""
779
- "Будьте терпеливы, если файл с ключевыми словами имеет большой размер. Не "
780
- "закрывайте страницу до завершения процесса."
781
- msgstr ""
782
- "Don't close page until process finishes. Be patient, can have some time."
783
-
784
- #: application/admin/views/autoblog_index.php:2
785
- msgid "Работа автоблоггинга"
786
- msgstr "Work of autoblogging"
787
-
788
- #: application/admin/views/autoblog_index.php:6
789
- msgid "Пожалуйста, дождитесь окончания работы автоблоггинга."
790
- msgstr "Please, wait for end of autoblogging work"
791
-
792
- #: application/admin/views/autoblog_index.php:24
793
- msgid "Удалено заданий автоблоггинга:"
794
- msgstr "Deleted tasks for autoblogging: "
795
-
796
- #: application/admin/views/autoblog_index.php:26
797
- msgid "Автоблоггинг закончил работу"
798
- msgstr "Autoblogging finished tasks"
799
-
800
- #: application/admin/views/autoblog_index.php:44
801
- msgid ""
802
- "С помощью автоблоггинга вы можете настроить автоматическое создание постов."
803
- msgstr "You can create automatic creating of posts with autoblogging"
804
-
805
- #: application/admin/views/envato_activation.php:1
806
- msgid "активация"
807
- msgstr "activation"
808
-
809
- #: application/admin/views/import_export.php:6
810
- msgid "Экспорт / Импорт настроек"
811
- msgstr "Export/Import of settings"
812
-
813
- #: application/admin/views/import_export.php:21
814
- msgid "Сохранить настройки"
815
- msgstr "Save settings"
816
-
817
- #: application/admin/views/import_export.php:22
818
- msgid ""
819
- "Для переноса настроек плагина и модулей Content Egg скопируйте сожержимое "
820
- "поля (Ctrl+C) и выполните импорт на новом сайте."
821
- msgstr ""
822
- "To import all settings, copy field value (Ctrl + C on Win) and make import "
823
- "on new site"
824
-
825
- #: application/admin/views/import_export.php:26
826
- msgid "Загрузить настройки"
827
- msgstr "Load settings"
828
-
829
- #: application/admin/views/import_export.php:27
830
- msgid "Скопируйте настройки с другого сайта и нажмите кнопку \"Импорт\"."
831
- msgstr "Copy settings from another site and click on \"Import\"."
832
-
833
- #: application/admin/views/import_export.php:31
834
- msgid "Импорт"
835
- msgstr "Import"
836
-
837
- #: application/admin/views/lic_settings.php:3
838
- msgid "лицензия"
839
- msgstr "License"
840
-
841
- #: application/admin/views/lic_settings.php:7
842
- msgid "Плагин активирован."
843
- msgstr "Plugin is activated"
844
-
845
- #: application/admin/views/lic_settings.php:21
846
- #: application/admin/views/lic_settings.php:29
847
- msgid "Открепить лицензию"
848
- msgstr "Deactivate license"
849
-
850
- #: application/admin/views/lic_settings.php:22
851
- msgid "Вы можете перенести лицензию плагина на другой свой домен."
852
- msgstr "You can move your license on another domain."
853
-
854
- #: application/admin/views/lic_settings.php:23
855
- msgid ""
856
- "После открепления лицензии вы должны деактивировать и удалить Content Egg "
857
- "плагин с текущего домена."
858
- msgstr ""
859
- "After deactivating license, you must deactivate and delete Content Egg from "
860
- "current domain to use plugin on other domain."
861
-
862
- #: application/admin/views/metabox_general.php:7
863
- msgid "Введите ключевое слово"
864
- msgstr "Enter a keyword"
865
-
866
- #: application/admin/views/metabox_general.php:9
867
- msgid "Найти все"
868
- msgstr "Find all"
869
-
870
- #: application/admin/views/metabox_general.php:39
871
- #: application/admin/views/metabox_module.php:71
872
- msgid "Добавить все"
873
- msgstr "Add all"
874
-
875
- #: application/admin/views/metabox_general.php:40
876
- msgid "Вы действительно хотите удалить результаты всех модулей?"
877
- msgstr "Are you sure you want to delete the results of all modules?"
878
-
879
- #: application/admin/views/metabox_general.php:40
880
- #: application/admin/views/metabox_module.php:40
881
- msgid "Удалить все"
882
- msgstr "Delete all"
883
-
884
- #: application/admin/views/metabox_module.php:26
885
- msgid "Шаблон для шорткода"
886
- msgstr "Output Template for shortcode"
887
-
888
- #: application/admin/views/metabox_module.php:36
889
- msgid "Ключевое слово для автоматического обновления данных"
890
- msgstr "Keyword for the automatic update"
891
-
892
- #: application/admin/views/metabox_module.php:40
893
- msgid "Вы действительно хотите удалить все результаты?"
894
- msgstr "Are you sure you want to delete all results?"
895
-
896
- #: application/admin/views/metabox_module.php:45
897
- msgid "Данные не найдены..."
898
- msgstr "No data found..."
899
-
900
- #: application/admin/views/metabox_module.php:49
901
- msgid "Поиск"
902
- msgstr "Search"
903
-
904
- #: application/admin/views/metabox_module.php:55
905
- msgid "Ключевое слово для поиска"
906
- msgstr "Keyword for search"
907
-
908
- #: application/admin/views/metabox_module.php:57
909
- msgid "Найти"
910
- msgstr "Find"
911
-
912
- #: application/admin/views/metabox_module.php:79
913
- msgid "Не найдено..."
914
- msgstr "Not found..."
915
-
916
- #: application/admin/views/metabox_module.php:80
917
- msgid "Ошибка: "
918
- msgstr "Error:"
919
-
920
- #: application/admin/views/prefill.php:15
921
- msgid "Эта утилита заполняет данные модулей для всех существующих постов."
922
- msgstr "This extension will fill module's data for all existed posts."
923
-
924
- #: application/admin/views/prefill.php:16
925
- msgid ""
926
- "Существующие данные и ключевые слова для автообновления не перезатираются!"
927
- msgstr "All existing data and keywords will not be erased or overwritten."
928
-
929
- #: application/admin/views/prefill.php:23
930
- msgid "Добавить данные для модуля"
931
- msgstr "Add data for module"
932
-
933
- #: application/admin/views/prefill.php:35
934
- msgid "Источник ключевого слова"
935
- msgstr "Keyword source"
936
-
937
- #: application/admin/views/prefill.php:38
938
- msgid "Вычислить на основании плотности ключевых слов поста"
939
- msgstr "Calculate as base of the density of keywords inside post"
940
-
941
- #: application/admin/views/prefill.php:39
942
- msgid "Заголовк поста"
943
- msgstr "Title for post"
944
-
945
- #: application/admin/views/prefill.php:41
946
- msgid "Копировать с"
947
- msgstr "Copy from"
948
-
949
- #: application/admin/views/prefill.php:48
950
- msgid "Автообновление"
951
- msgstr "Autoupdate"
952
-
953
- #: application/admin/views/prefill.php:50
954
- msgid "Добавить ключевое слово для автообновления"
955
- msgstr "Add Keyword for the automatic update"
956
-
957
- #: application/admin/views/prefill.php:51
958
- msgid "Только для модулей, которые имеют функцию автообновления."
959
- msgstr "Only for those modules, which have autoupdate function."
960
-
961
- #: application/admin/views/prefill.php:56
962
- msgid "Количество слов"
963
- msgstr "Number of words"
964
-
965
- #: application/admin/views/prefill.php:63
966
- msgid "Максимум слов в поисковом запросе."
967
- msgstr "Maximum words for one search query."
968
-
969
- #: application/admin/views/prefill.php:74
970
- msgid "Старт"
971
- msgstr "Start"
972
-
973
- #: application/admin/views/prefill.php:75
974
- msgid "Начать сначала"
975
- msgstr "Run again"
976
-
977
- #: application/admin/views/prefill.php:76
978
- msgid "Стоп"
979
- msgstr "Stop"
980
-
981
- #: application/admin/views/settings.php:13
982
- msgid "Content Egg Настройки"
983
- msgstr "Content Egg Settings"
984
-
985
- #: application/admin/views/settings.php:23
986
- #: application/admin/views/settings.php:46
987
- msgid "Общие настройки"
988
- msgstr "General settings"
989
-
990
- #: application/admin/views/settings.php:70
991
- msgid "Условия"
992
- msgstr "Conditions"
993
-
994
- #: application/components/AffiliateParserModuleConfig.php:19
995
- msgid ""
996
- "Время жини кэша в секундах, через которое необходимо обновить товары, если "
997
- "задано ключевое слово для обновления. 0 - никогда не обновлять."
998
- msgstr ""
999
- "Lifetime of cache in seconds, after this period products will be updated if "
1000
- "you set keyword for updating. 0 - never update"
1001
-
1002
- #: application/components/AffiliateParserModuleConfig.php:33
1003
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:141
1004
- msgid "Обновить товары"
1005
- msgstr "Update products"
1006
-
1007
- #: application/components/AffiliateParserModuleConfig.php:34
1008
- msgid ""
1009
- "Время в секундах, через которое необходимо обновить цену, наличие и "
1010
- "некоторую другую информацию по товарам. 0 - никогда не обновлять."
1011
- msgstr ""
1012
- "Time in seconds for updating prices, availability, etc. 0 - never update"
1013
-
1014
- #: application/components/ModuleConfig.php:59
1015
- #: application/components/ModuleConfig.php:65
1016
- msgid "настройки"
1017
- msgstr "settings"
1018
-
1019
- #: application/components/ParserModuleConfig.php:19
1020
- msgid "Включить модуль"
1021
- msgstr "Enable module"
1022
-
1023
- #: application/components/ParserModuleConfig.php:26
1024
- msgid "Добавить"
1025
- msgstr "Add"
1026
-
1027
- #: application/components/ParserModuleConfig.php:27
1028
- msgid ""
1029
- "Куда добавить контент этого модуля? Шорткоды работают всегда в независимости "
1030
- "от настройки."
1031
- msgstr ""
1032
- "The place for content of module. Shortcodes will work in any place "
1033
- "regardless of the setting."
1034
-
1035
- #: application/components/ParserModuleConfig.php:30
1036
- msgid "В конец поста"
1037
- msgstr "At the end of the post"
1038
-
1039
- #: application/components/ParserModuleConfig.php:31
1040
- msgid "В начало поста"
1041
- msgstr "At the beginning of the post"
1042
-
1043
- #: application/components/ParserModuleConfig.php:32
1044
- msgid "Только шорткоды"
1045
- msgstr "Shortcodes only"
1046
-
1047
- #: application/components/ParserModuleConfig.php:38
1048
- msgid "Приоритет"
1049
- msgstr "Priority"
1050
-
1051
- #: application/components/ParserModuleConfig.php:39
1052
- msgid ""
1053
- "Приоритет задает порядок включения модулей в пост. 0 - самый высокий "
1054
- "приоритет."
1055
- msgstr ""
1056
- "Priority sets order of modules in post. 0 - is the most highest priority."
1057
-
1058
- #: application/components/ParserModuleConfig.php:49
1059
- msgid "Шаблон"
1060
- msgstr "Template"
1061
-
1062
- #: application/components/ParserModuleConfig.php:50
1063
- msgid "Шаблон по-умолчанию."
1064
- msgstr "Default template"
1065
-
1066
- #: application/components/ParserModuleConfig.php:58
1067
- msgid "Шаблоны могут использовать заголовок при выводе данных."
1068
- msgstr "Templates may use title on data output."
1069
-
1070
- #: application/components/ParserModuleConfig.php:68
1071
- msgid "Автоматически установить Featured image для поста."
1072
- msgstr "Automatically set Featured image for post"
1073
-
1074
- #: application/components/ParserModuleConfig.php:71
1075
- msgid "Не устанавливать"
1076
- msgstr "Don't set"
1077
-
1078
- #: application/components/ParserModuleConfig.php:72
1079
- msgid "Первый элемент"
1080
- msgstr "First image"
1081
-
1082
- #: application/components/ParserModuleConfig.php:73
1083
- msgid "Второй элемент"
1084
- msgstr "Second image"
1085
-
1086
- #: application/components/ParserModuleConfig.php:74
1087
- msgid "Случайный элемент"
1088
- msgstr "Random image"
1089
-
1090
- #: application/components/ParserModuleConfig.php:75
1091
- msgid "Последний элемент"
1092
- msgstr "Last image"
1093
-
1094
- #: application/components/ParserModuleConfig.php:81
1095
- msgid "Редирект"
1096
- msgstr "Redirect"
1097
-
1098
- #: application/components/ParserModuleConfig.php:82
1099
- msgid "Ссылки через локальный 301 редирект."
1100
- msgstr "Make links with local 301 redirect"
1101
-
1102
- #: application/components/TemplateManager.php:84
1103
- msgid "[пользовательский]"
1104
- msgstr "[user]"
1105
-
1106
- #: application/models/AutoblogModel.php:66
1107
- msgid "Дата создания"
1108
- msgstr "Date of creation"
1109
-
1110
- #: application/models/AutoblogModel.php:67
1111
- msgid "Последний запуск"
1112
- msgstr "Last work"
1113
-
1114
- #: application/models/AutoblogModel.php:68
1115
- msgid "Статус"
1116
- msgstr "Status"
1117
-
1118
- #: application/models/AutoblogModel.php:69
1119
- msgid "Всего постов"
1120
- msgstr "Total posts"
1121
-
1122
- #: application/models/AutoblogModel.php:70
1123
- msgid "Последняя ошибка"
1124
- msgstr "Last error"
1125
-
1126
- #: application/models/AutoblogModel.php:191
1127
- msgid ""
1128
- "Обязательный модуль %s не будет запущен. Модуль не настроен или исключен."
1129
- msgstr ""
1130
- "Required module %s will not run. The module is not configured or deleted."
1131
-
1132
- #: application/models/AutoblogModel.php:219
1133
- msgid "Не найдены данные для обязательного модуля %s."
1134
- msgstr "Data was not found for required module %s."
1135
-
1136
- #: application/models/AutoblogModel.php:226
1137
- msgid ""
1138
- "Не достигнуто требуемое количество данных. Минимум требуется модулей: %d."
1139
- msgstr ""
1140
- "It does not reach the desired amount of data. Minimum required modules: %d."
1141
-
1142
- #: application/models/AutoblogModel.php:253
1143
- msgid "Пост не может быть создан. Неизвестная ошибка."
1144
- msgstr "Post can't be created. Unknown error."
1145
-
1146
- #: application/modules/AE/AEConfig.php:20
1147
- msgid "Партнеркая ссылка"
1148
- msgstr "Affiliate link"
1149
-
1150
- #: application/modules/AE/AEConfig.php:21
1151
- msgid ""
1152
- "Укажите Deeplink одной из CPA-сетей. Для прямых партнерских программ вы "
1153
- "можете использовать параметр вида <em>partner_id=12345</em>, или сформируйте "
1154
- "партнерскую ссылку по шаблону, например: <em>{{url}}/partner_id-12345/</em>. "
1155
- "Пример ссылки с deeplink: https://ad.admitad.com/g/g8f0qmlavfa/?"
1156
- "ulp={{url_encoded}}. {{url}} и {{url_encoded}} - будут заменены на URL "
1157
- "текущего товара)."
1158
- msgstr ""
1159
- "Set Deeplink for one of CPA-networks. For direct affiliate programs you can "
1160
- "use parameter as <em>partner_id=12345</em>, or make link as template, for "
1161
- "example, <em>{{url}}/partner_id-12345/</em>. Another example is https://ad."
1162
- "admitad.com/g/g8f0qmlavfa/?ulp={{url_encoded}}. {{url}} and {{url_encoded}} "
1163
- "- will be replaced by product url. If product url is after affiliate url - "
1164
- "use {{url_encoded}}"
1165
-
1166
- #: application/modules/AE/AEConfig.php:30
1167
- #: application/modules/AdmitadCoupons/AdmitadCouponsConfig.php:36
1168
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:56
1169
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:35
1170
- #: application/modules/AffilinetCoupons/AffilinetCouponsConfig.php:50
1171
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:50
1172
- #: application/modules/Aliexpress/AliexpressConfig.php:57
1173
- #: application/modules/Amazon/AmazonConfig.php:77
1174
- #: application/modules/BingImages/BingImagesConfig.php:35
1175
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:35
1176
- #: application/modules/CjLinks/CjLinksConfig.php:50
1177
- #: application/modules/CjProducts/CjProductsConfig.php:50
1178
- #: application/modules/Clickbank/ClickbankConfig.php:35
1179
- #: application/modules/Ebay/EbayConfig.php:87
1180
- #: application/modules/Flickr/FlickrConfig.php:35
1181
- #: application/modules/Flipkart/FlipkartConfig.php:50
1182
- #: application/modules/Freebase/FreebaseConfig.php:35
1183
- #: application/modules/GdeSlon/GdeSlonConfig.php:45
1184
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:35
1185
- #: application/modules/GoogleImages/GoogleImagesConfig.php:35
1186
- #: application/modules/GoogleNews/GoogleNewsConfig.php:20
1187
- #: application/modules/Linkshare/LinkshareConfig.php:35
1188
- #: application/modules/Market/MarketConfig.php:48
1189
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:94
1190
- #: application/modules/Ozon/OzonConfig.php:40
1191
- #: application/modules/PayTM/PayTMConfig.php:30
1192
- #: application/modules/Pixabay/PixabayConfig.php:35
1193
- #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:35
1194
- #: application/modules/RssFetcher/RssFetcherConfig.php:35
1195
- #: application/modules/Shareasale/ShareasaleConfig.php:65
1196
- #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:35
1197
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:35
1198
- #: application/modules/Twitter/TwitterConfig.php:80
1199
- #: application/modules/VkNews/VkNewsConfig.php:20
1200
- #: application/modules/Youtube/YoutubeConfig.php:35
1201
- #: application/modules/Zanox/ZanoxConfig.php:46
1202
- msgid "Результатов"
1203
- msgstr "Results"
1204
-
1205
- #: application/modules/AE/AEConfig.php:31
1206
- #: application/modules/AdmitadCoupons/AdmitadCouponsConfig.php:37
1207
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:57
1208
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:36
1209
- #: application/modules/AffilinetCoupons/AffilinetCouponsConfig.php:51
1210
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:51
1211
- #: application/modules/Aliexpress/AliexpressConfig.php:58
1212
- #: application/modules/Amazon/AmazonConfig.php:78
1213
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:36
1214
- #: application/modules/CjLinks/CjLinksConfig.php:51
1215
- #: application/modules/CjProducts/CjProductsConfig.php:51
1216
- #: application/modules/Clickbank/ClickbankConfig.php:36
1217
- #: application/modules/Ebay/EbayConfig.php:88
1218
- #: application/modules/Flipkart/FlipkartConfig.php:51
1219
- #: application/modules/GdeSlon/GdeSlonConfig.php:46
1220
- #: application/modules/Linkshare/LinkshareConfig.php:36
1221
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:95
1222
- #: application/modules/Ozon/OzonConfig.php:41
1223
- #: application/modules/PayTM/PayTMConfig.php:31
1224
- #: application/modules/Shareasale/ShareasaleConfig.php:66
1225
- #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:36
1226
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:36
1227
- #: application/modules/Zanox/ZanoxConfig.php:47
1228
- msgid "Количество результатов для одного поискового запроса."
1229
- msgstr "Number of results for one search query."
1230
-
1231
- #: application/modules/AE/AEConfig.php:40
1232
- #: application/modules/AE/AEConfig.php:56
1233
- #: application/modules/Amazon/AmazonConfig.php:88
1234
- #: application/modules/Amazon/AmazonConfig.php:105
1235
- #: application/modules/BingImages/BingImagesConfig.php:45
1236
- #: application/modules/Clickbank/ClickbankConfig.php:45
1237
- #: application/modules/Clickbank/ClickbankConfig.php:61
1238
- #: application/modules/RssFetcher/RssFetcherConfig.php:45
1239
- #: application/modules/Zanox/ZanoxConfig.php:56
1240
- #: application/modules/Zanox/ZanoxConfig.php:72
1241
- msgid "Поле \"Результатов\" не может быть больше 50."
1242
- msgstr "The field \"Results\" can not be more than 50."
1243
-
1244
- #: application/modules/AE/AEConfig.php:46
1245
- #: application/modules/AdmitadCoupons/AdmitadCouponsConfig.php:47
1246
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:72
1247
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:46
1248
- #: application/modules/AffilinetCoupons/AffilinetCouponsConfig.php:61
1249
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:61
1250
- #: application/modules/Aliexpress/AliexpressConfig.php:73
1251
- #: application/modules/Amazon/AmazonConfig.php:94
1252
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:51
1253
- #: application/modules/CjLinks/CjLinksConfig.php:61
1254
- #: application/modules/CjProducts/CjProductsConfig.php:61
1255
- #: application/modules/Clickbank/ClickbankConfig.php:51
1256
- #: application/modules/Ebay/EbayConfig.php:103
1257
- #: application/modules/Flipkart/FlipkartConfig.php:66
1258
- #: application/modules/GdeSlon/GdeSlonConfig.php:61
1259
- #: application/modules/Linkshare/LinkshareConfig.php:46
1260
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:110
1261
- #: application/modules/Ozon/OzonConfig.php:51
1262
- #: application/modules/PayTM/PayTMConfig.php:41
1263
- #: application/modules/Shareasale/ShareasaleConfig.php:76
1264
- #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:46
1265
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:46
1266
- #: application/modules/Zanox/ZanoxConfig.php:62
1267
- msgid "Результатов для обновления"
1268
- msgstr "Results for updates "
1269
-
1270
- #: application/modules/AE/AEConfig.php:47
1271
- #: application/modules/AdmitadCoupons/AdmitadCouponsConfig.php:48
1272
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:73
1273
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:47
1274
- #: application/modules/AffilinetCoupons/AffilinetCouponsConfig.php:62
1275
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:62
1276
- #: application/modules/Aliexpress/AliexpressConfig.php:74
1277
- #: application/modules/Amazon/AmazonConfig.php:95
1278
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:52
1279
- #: application/modules/CjLinks/CjLinksConfig.php:62
1280
- #: application/modules/CjProducts/CjProductsConfig.php:62
1281
- #: application/modules/Clickbank/ClickbankConfig.php:52
1282
- #: application/modules/Ebay/EbayConfig.php:104
1283
- #: application/modules/Flipkart/FlipkartConfig.php:67
1284
- #: application/modules/GdeSlon/GdeSlonConfig.php:62
1285
- #: application/modules/Linkshare/LinkshareConfig.php:47
1286
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:111
1287
- #: application/modules/Ozon/OzonConfig.php:52
1288
- #: application/modules/PayTM/PayTMConfig.php:42
1289
- #: application/modules/Shareasale/ShareasaleConfig.php:77
1290
- #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:47
1291
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:47
1292
- #: application/modules/Zanox/ZanoxConfig.php:63
1293
- msgid "Количество результатов для автоматического обновления и автоблоггинга."
1294
- msgstr "Number of results for automatic updates and autoblogging."
1295
-
1296
- #: application/modules/AE/AEConfig.php:62
1297
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:115
1298
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:126
1299
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:165
1300
- #: application/modules/Aliexpress/AliexpressConfig.php:206
1301
- #: application/modules/Amazon/AmazonConfig.php:289
1302
- #: application/modules/BingImages/BingImagesConfig.php:88
1303
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:215
1304
- #: application/modules/CjProducts/CjProductsConfig.php:216
1305
- #: application/modules/Ebay/EbayConfig.php:334
1306
- #: application/modules/Flickr/FlickrConfig.php:104
1307
- #: application/modules/Flipkart/FlipkartConfig.php:82
1308
- #: application/modules/Freebase/FreebaseConfig.php:67
1309
- #: application/modules/GdeSlon/GdeSlonConfig.php:110
1310
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:67
1311
- #: application/modules/GoogleImages/GoogleImagesConfig.php:142
1312
- #: application/modules/GoogleNews/GoogleNewsConfig.php:52
1313
- #: application/modules/Linkshare/LinkshareConfig.php:114
1314
- #: application/modules/Market/MarketConfig.php:170
1315
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:164
1316
- #: application/modules/Ozon/OzonConfig.php:178
1317
- #: application/modules/PayTM/PayTMConfig.php:103
1318
- #: application/modules/Pixabay/PixabayConfig.php:165
1319
- #: application/modules/Shareasale/ShareasaleConfig.php:107
1320
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:157
1321
- #: application/modules/Twitter/TwitterConfig.php:125
1322
- #: application/modules/VkNews/VkNewsConfig.php:42
1323
- #: application/modules/Zanox/ZanoxConfig.php:153
1324
- msgid "Сохранять картинки"
1325
- msgstr "Save images"
1326
-
1327
- #: application/modules/AE/AEConfig.php:63
1328
- #: application/modules/Amazon/AmazonConfig.php:290
1329
- msgid "Сохранять картинки на сервер."
1330
- msgstr "Save images on server"
1331
-
1332
- #: application/modules/AdmitadCoupons/AdmitadCouponsConfig.php:20
1333
- msgid "URL для получения XML-файла"
1334
- msgstr "URL for getting XML-file"
1335
-
1336
- #: application/modules/AdmitadCoupons/AdmitadCouponsConfig.php:21
1337
- msgid ""
1338
- "Перейдите в Admitad: Инструменты - Скидки и купоны - Экспорт - Получить "
1339
- "ссылку."
1340
- msgstr "Go to Admitad: Tools -> Coupons -> Export -> Get link."
1341
-
1342
- #: application/modules/AdmitadCoupons/AdmitadCouponsConfig.php:22
1343
- msgid ""
1344
- "Не забудьте установить галочку \"Только мои программы\" и другие фильтры."
1345
- msgstr "Don't forget to set flag \"Only my programs\" and other filters."
1346
-
1347
- #: application/modules/AdmitadCoupons/AdmitadCouponsConfig.php:30
1348
- msgid "Поле \"URL для получения XML-файла\" не может быть пустым."
1349
- msgstr "The \"URL for getting XML-file\" can not be empty"
1350
-
1351
- #: application/modules/AdmitadCoupons/AdmitadCouponsModule.php:25
1352
- msgid ""
1353
- "Добавляет купоны партнерской сети <a href=\"https://www.admitad.com/ru/"
1354
- "promo/?ref=770f943d83\">Admitad</a>."
1355
- msgstr ""
1356
- "Добавляет купоны партнерской сети <a href=\"https://www.admitad.com/ru/"
1357
- "promo/?ref=770f943d83\">Admitad</a>."
1358
-
1359
- #: application/modules/AdmitadCoupons/AdmitadCouponsModule.php:25
1360
- #: application/modules/AdmitadProducts/AdmitadProductsModule.php:24
1361
- #: application/modules/TradedoublerCoupons/TradedoublerCouponsModule.php:25
1362
- msgid "Вы должны получить аппрув в каждой программе отдельно."
1363
- msgstr "You must get approve for each program separately."
1364
-
1365
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:20
1366
- msgid "ID оффера"
1367
- msgstr "Offer ID"
1368
-
1369
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:21
1370
- msgid ""
1371
- "Вы можете работать только с офферами, представленными на <a target=\"_blank"
1372
- "\" href=\"https://www.admitadgoods.ru/offers.php\">этой странице</a>."
1373
- msgstr ""
1374
- "You can work only with offers, which are available on <a target=\"_blank\" "
1375
- "href=\"https://www.admitadgoods.ru/offers.php\">this page</a>."
1376
-
1377
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:22
1378
- msgid "ID оффера можно найти в URL, если кликнуть по логотипу оффера."
1379
- msgstr "You can find offer ID in URL, when you click on offer logo."
1380
-
1381
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:30
1382
- msgid "Поле \"ID оффера\" не может быть пустым."
1383
- msgstr "The \"Offer ID\" can not be empty"
1384
-
1385
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:37
1386
- msgid "Deeplink соотвествующего оффера."
1387
- msgstr "Deeplink of offer."
1388
-
1389
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:38
1390
- msgid ""
1391
- "<a target=\"_blank\" href=\"http://keywordrush.com/manuals/affegg_manual.pdf"
1392
- "\">Мануал</a> по настройке Deeplink для различных CPA-сетей."
1393
- msgstr ""
1394
- "<a target=\"_blank\" href=\"http://www.keywordrush.com/manuals/affegg_manual."
1395
- "en.pdf\">Manual</a> for deeplink settings for different CPA-networks."
1396
-
1397
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:50
1398
- msgid "Поле \"Deeplink\" не может быть пустым."
1399
- msgstr "The \"Deeplink\" can not be empty."
1400
-
1401
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:66
1402
- msgid "Поле \"Результатов\" не может быть больше 20."
1403
- msgstr "Field \"Results\" can not be more than 20."
1404
-
1405
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:82
1406
- msgid "Поле \"Результатов для обновления\" не может быть больше 20."
1407
- msgstr "Field \"Results for autoupdating\" can not be more than 20."
1408
-
1409
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:88
1410
- msgid "Скидка"
1411
- msgstr "Discount"
1412
-
1413
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:89
1414
- msgid "Только товары со скидкой."
1415
- msgstr "Only products with discount."
1416
-
1417
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:95
1418
- #: application/modules/Aliexpress/AliexpressConfig.php:138
1419
- #: application/modules/Amazon/AmazonConfig.php:164
1420
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:118
1421
- #: application/modules/CjProducts/CjProductsConfig.php:96
1422
- #: application/modules/Ebay/EbayConfig.php:281
1423
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:136
1424
- #: application/modules/PayTM/PayTMConfig.php:69
1425
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:103
1426
- #: application/modules/Zanox/ZanoxConfig.php:101
1427
- msgid "Минимальная цена"
1428
- msgstr "Minimal price"
1429
-
1430
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:105
1431
- #: application/modules/Aliexpress/AliexpressConfig.php:148
1432
- #: application/modules/Amazon/AmazonConfig.php:174
1433
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:128
1434
- #: application/modules/CjProducts/CjProductsConfig.php:106
1435
- #: application/modules/Ebay/EbayConfig.php:271
1436
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:146
1437
- #: application/modules/PayTM/PayTMConfig.php:79
1438
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:113
1439
- #: application/modules/Zanox/ZanoxConfig.php:111
1440
- msgid "Максимальная цена"
1441
- msgstr "Maximal price"
1442
-
1443
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:116
1444
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:127
1445
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:166
1446
- #: application/modules/Aliexpress/AliexpressConfig.php:207
1447
- #: application/modules/BingImages/BingImagesConfig.php:89
1448
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:216
1449
- #: application/modules/CjProducts/CjProductsConfig.php:217
1450
- #: application/modules/Ebay/EbayConfig.php:335
1451
- #: application/modules/Flickr/FlickrConfig.php:105
1452
- #: application/modules/Flipkart/FlipkartConfig.php:83
1453
- #: application/modules/Freebase/FreebaseConfig.php:68
1454
- #: application/modules/GdeSlon/GdeSlonConfig.php:111
1455
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:68
1456
- #: application/modules/GoogleImages/GoogleImagesConfig.php:143
1457
- #: application/modules/GoogleNews/GoogleNewsConfig.php:53
1458
- #: application/modules/Linkshare/LinkshareConfig.php:115
1459
- #: application/modules/Market/MarketConfig.php:171
1460
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:165
1461
- #: application/modules/Ozon/OzonConfig.php:179
1462
- #: application/modules/PayTM/PayTMConfig.php:104
1463
- #: application/modules/Shareasale/ShareasaleConfig.php:108
1464
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:158
1465
- #: application/modules/Twitter/TwitterConfig.php:126
1466
- #: application/modules/VkNews/VkNewsConfig.php:43
1467
- #: application/modules/Zanox/ZanoxConfig.php:154
1468
- msgid "Сохранять картинки на сервер"
1469
- msgstr "Save images on server"
1470
-
1471
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:122
1472
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:133
1473
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:172
1474
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:222
1475
- #: application/modules/CjProducts/CjProductsConfig.php:223
1476
- #: application/modules/Clickbank/ClickbankConfig.php:158
1477
- #: application/modules/Flickr/FlickrConfig.php:111
1478
- #: application/modules/Flipkart/FlipkartConfig.php:89
1479
- #: application/modules/Freebase/FreebaseConfig.php:74
1480
- #: application/modules/GdeSlon/GdeSlonConfig.php:117
1481
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:74
1482
- #: application/modules/GoogleImages/GoogleImagesConfig.php:149
1483
- #: application/modules/GoogleNews/GoogleNewsConfig.php:59
1484
- #: application/modules/Linkshare/LinkshareConfig.php:121
1485
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:171
1486
- #: application/modules/Ozon/OzonConfig.php:185
1487
- #: application/modules/PayTM/PayTMConfig.php:110
1488
- #: application/modules/Shareasale/ShareasaleConfig.php:114
1489
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:164
1490
- #: application/modules/VkNews/VkNewsConfig.php:49
1491
- #: application/modules/Youtube/YoutubeConfig.php:85
1492
- #: application/modules/Zanox/ZanoxConfig.php:160
1493
- msgid "Обрезать описание"
1494
- msgstr "Trim description"
1495
-
1496
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:123
1497
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:134
1498
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:173
1499
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:223
1500
- #: application/modules/CjProducts/CjProductsConfig.php:224
1501
- #: application/modules/Clickbank/ClickbankConfig.php:159
1502
- #: application/modules/Flickr/FlickrConfig.php:112
1503
- #: application/modules/Flipkart/FlipkartConfig.php:90
1504
- #: application/modules/Freebase/FreebaseConfig.php:75
1505
- #: application/modules/GdeSlon/GdeSlonConfig.php:118
1506
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:75
1507
- #: application/modules/GoogleImages/GoogleImagesConfig.php:150
1508
- #: application/modules/GoogleNews/GoogleNewsConfig.php:60
1509
- #: application/modules/Linkshare/LinkshareConfig.php:122
1510
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:172
1511
- #: application/modules/Ozon/OzonConfig.php:186
1512
- #: application/modules/PayTM/PayTMConfig.php:111
1513
- #: application/modules/Shareasale/ShareasaleConfig.php:115
1514
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:165
1515
- #: application/modules/VkNews/VkNewsConfig.php:50
1516
- #: application/modules/Youtube/YoutubeConfig.php:86
1517
- #: application/modules/Zanox/ZanoxConfig.php:161
1518
- msgid "Размер описания в символах (0 - не обрезать)"
1519
- msgstr "Description size in characters (0 - do not cut)"
1520
-
1521
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:141
1522
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:150
1523
- msgid "Поле \"%s\" не может быть меньше %d."
1524
- msgstr "The field \"%s\" can not be less than %d."
1525
-
1526
- #: application/modules/AdmitadProducts/AdmitadProductsModule.php:24
1527
- msgid ""
1528
- "Добавляет товары партнерской сети <a href=\"https://www.admitad.com/ru/"
1529
- "promo/?ref=770f943d83\">Admitad</a>."
1530
- msgstr ""
1531
- "Add products from <a href=\"https://www.admitad.com/ru/promo/?"
1532
- "ref=770f943d83\">Admitad</a>."
1533
-
1534
- #: application/modules/AdmitadProducts/AdmitadProductsModule.php:25
1535
- msgid ""
1536
- "Используется API <a href=\"https://www.admitadgoods.ru\" target=\"_blank"
1537
- "\">Admitad Goods</a> WP плагин."
1538
- msgstr ""
1539
- "Used API the <a href=\"https://www.admitadgoods.ru/en.html\" target=\"_blank"
1540
- "\">Admitad Goods</a> WP plugin."
1541
-
1542
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:21
1543
- msgid ""
1544
- "Ключ для доступа к Productserve API. Найти можно <a href=\"https://www."
1545
- "affiliatewindow.com/affiliates/shopwindow/productserve-info.php\">здесь</a>."
1546
- msgstr ""
1547
- "Access key for Productserve API. You can get it <a href=\"https://www."
1548
- "affiliatewindow.com/affiliates/shopwindow/productserve-info.php\">here</a>."
1549
-
1550
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:29
1551
- #: application/modules/Aliexpress/AliexpressConfig.php:30
1552
- #: application/modules/Flickr/FlickrConfig.php:29
1553
- #: application/modules/Freebase/FreebaseConfig.php:29
1554
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:29
1555
- #: application/modules/Market/MarketConfig.php:29
1556
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:29
1557
- #: application/modules/Youtube/YoutubeConfig.php:29
1558
- msgid "Поле \"API Key\" не может быть пустым."
1559
- msgstr "The \"API Key\" can not be empty"
1560
-
1561
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:57
1562
- #: application/modules/Aliexpress/AliexpressConfig.php:178
1563
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:178
1564
- #: application/modules/CjProducts/CjProductsConfig.php:156
1565
- #: application/modules/Clickbank/ClickbankConfig.php:100
1566
- #: application/modules/Ebay/EbayConfig.php:119
1567
- #: application/modules/Flickr/FlickrConfig.php:57
1568
- #: application/modules/GdeSlon/GdeSlonConfig.php:77
1569
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:85
1570
- #: application/modules/Linkshare/LinkshareConfig.php:79
1571
- #: application/modules/Ozon/OzonConfig.php:62
1572
- #: application/modules/PayTM/PayTMConfig.php:89
1573
- #: application/modules/Pixabay/PixabayConfig.php:153
1574
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:143
1575
- #: application/modules/Twitter/TwitterConfig.php:112
1576
- #: application/modules/Youtube/YoutubeConfig.php:57
1577
- msgid "Сортировка"
1578
- msgstr "Sorting"
1579
-
1580
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:61
1581
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:101
1582
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:182
1583
- #: application/modules/GdeSlon/GdeSlonConfig.php:81
1584
- #: application/modules/PayTM/PayTMConfig.php:93
1585
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:147
1586
- msgid "По-умолчанию"
1587
- msgstr "Default"
1588
-
1589
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:75
1590
- msgid "Вы можете задать несколько Merchant IDs через запятую."
1591
- msgstr "You can set several Merchant IDs with commas."
1592
-
1593
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:97
1594
- msgid "Режим поиска"
1595
- msgstr "Search mode"
1596
-
1597
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:98
1598
- msgid ""
1599
- "Подробнее про различные режимы поиска <a href=\"http://wiki.affiliatewindow."
1600
- "com/index.php/GetProductList\">здесь</a>."
1601
- msgstr ""
1602
- "Details about different search modes <a href=\"http://wiki.affiliatewindow."
1603
- "com/index.php/GetProductList\">here</a>."
1604
-
1605
- #: application/modules/Affiliatewindow/AffiliatewindowModule.php:26
1606
- msgid "Добавляет товары партнерской сети Affiliatewindow."
1607
- msgstr "Module adds products from Affiliatewindow."
1608
-
1609
- #: application/modules/AffilinetCoupons/AffilinetCouponsConfig.php:29
1610
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:29
1611
- msgid "Поле \"Publisher ID\" не может быть пустым."
1612
- msgstr "The field \"Publisher ID\" can not be empty."
1613
-
1614
- #: application/modules/AffilinetCoupons/AffilinetCouponsConfig.php:36
1615
- msgid ""
1616
- "Ключ для доступа к Publisher Webservice. Найти можно <a href=\"https://"
1617
- "publisher.affili.net/Account/techSettingsPublisherWS.aspx\">здесь</a>."
1618
- msgstr ""
1619
- "Publisher Webservice access key. You can get it <a href=\"https://publisher."
1620
- "affili.net/Account/techSettingsPublisherWS.aspx\">here</a>."
1621
-
1622
- #: application/modules/AffilinetCoupons/AffilinetCouponsConfig.php:44
1623
- msgid "Поле \"Publisher Webservice Password\" не может быть пустым."
1624
- msgstr "The field \"Publisher Webservice Password\" can not be empty."
1625
-
1626
- #: application/modules/AffilinetCoupons/AffilinetCouponsModule.php:25
1627
- msgid ""
1628
- "Добавляет купоны партнерской сети Affili.net. Вы должны получить аппрув в "
1629
- "каждой программе отдельно."
1630
- msgstr ""
1631
- "Adds coupons from Affili.net. You must have approval from each program "
1632
- "separately."
1633
-
1634
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:36
1635
- msgid ""
1636
- "Ключ для доступа к Product Webservice. Найти можно <a href=\"https://"
1637
- "publisher.affili.net/Account/techSettingsPublisherWS.aspx\">здесь</a>."
1638
- msgstr ""
1639
- "Access key for Product Webservice. You can get it <a href=\"https://"
1640
- "publisher.affili.net/Account/techSettingsPublisherWS.aspx\">here</a>."
1641
-
1642
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:44
1643
- msgid "Поле \"Product Webservice Password\" не может быть пустым."
1644
- msgstr "The field \"Product Webservice Password\" can not be empty."
1645
-
1646
- #: application/modules/AffilinetProducts/AffilinetProductsModule.php:26
1647
- msgid ""
1648
- "Добавляет товары партнерской сети Affili.net. Вы должны получить аппрув в "
1649
- "каждой программе отдельно."
1650
- msgstr ""
1651
- "Adds products from Affili.net. You must have approval from each program "
1652
- "separately."
1653
-
1654
- #: application/modules/Aliexpress/AliexpressConfig.php:22
1655
- msgid ""
1656
- "Специальный ключ для доступа к Aliexpress API. Получить можно <a target="
1657
- "\"_blank\" href=\"http://portals.aliexpress.com/adcenter/api_setting.htm"
1658
- "\">здесь</a>."
1659
- msgstr ""
1660
- "Special key to access Aliexpress API. You can get it <a target=\"_blank\" "
1661
- "href=\"http://portals.aliexpress.com/adcenter/api_setting.htm\">here</a>."
1662
-
1663
- #: application/modules/Aliexpress/AliexpressConfig.php:37
1664
- msgid ""
1665
- "Укажите, если хотите посылать трафик через оригинальную партнерку "
1666
- "Aliexpress. Найти можно <a target=\"_blank\" href=\"http://portals."
1667
- "aliexpress.com/track_id_manage.htm\">здесь</a>. Опция должна быть задана до "
1668
- "сохранения товаров в базу данных."
1669
- msgstr ""
1670
- "Specify if you want to send traffic through the original affiliate program "
1671
- "Aliexpress. You can find it <a target=\"_blank\" href=\"http://portals."
1672
- "aliexpress.com/track_id_manage.htm\">here</a>. This option must be set "
1673
- "before saving products in database."
1674
-
1675
- #: application/modules/Aliexpress/AliexpressConfig.php:47
1676
- msgid ""
1677
- "Укажите этот параметр, если хотите посылать трафик через одну из CPA-сетей с "
1678
- "поддержкой aliexpress и deeplink. Опция должна быть задана до сохранения "
1679
- "товаров в базу данных."
1680
- msgstr ""
1681
- "Set this option, if you want to send traffic to one of CPA-network with "
1682
- "support of aliexpress and deeplink. Option must be set before saving "
1683
- "products to database"
1684
-
1685
- #: application/modules/Aliexpress/AliexpressConfig.php:67
1686
- #: application/modules/Aliexpress/AliexpressConfig.php:83
1687
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:45
1688
- msgid "Поле \"Результатов\" не может быть больше 40."
1689
- msgstr "The \"Results\" can not be more than 40."
1690
-
1691
- #: application/modules/Aliexpress/AliexpressConfig.php:90
1692
- msgid "Ограничить поиск товаров этой категорией."
1693
- msgstr "Limit the search of goods by this category."
1694
-
1695
- #: application/modules/Aliexpress/AliexpressConfig.php:93
1696
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:61
1697
- msgid "Все категории"
1698
- msgstr "All categories"
1699
-
1700
- #: application/modules/Aliexpress/AliexpressConfig.php:128
1701
- msgid "Минимальная комиссия"
1702
- msgstr "Minimal commission"
1703
-
1704
- #: application/modules/Aliexpress/AliexpressConfig.php:129
1705
- msgid "Минимальная комиссия в процентах. Например, 3"
1706
- msgstr "Minimal commission (without %). Example, 3"
1707
-
1708
- #: application/modules/Aliexpress/AliexpressConfig.php:139
1709
- msgid "Должна быть указана в USD. Например, 12.34"
1710
- msgstr "Must be set in USD. Example, 12.34"
1711
-
1712
- #: application/modules/Aliexpress/AliexpressConfig.php:149
1713
- msgid "Должна быть указана в USD. Например, 56.78"
1714
- msgstr "Must be set in USD. Example, 56.78"
1715
-
1716
- #: application/modules/Aliexpress/AliexpressConfig.php:158
1717
- msgid "Минимальные продажи"
1718
- msgstr "Minimal sales"
1719
-
1720
- #: application/modules/Aliexpress/AliexpressConfig.php:159
1721
- msgid "Минимальное число партнерских продаж за последний месяц. Например, 123"
1722
- msgstr "Minimal number of partner sales for last month. Example, 123"
1723
-
1724
- #: application/modules/Aliexpress/AliexpressConfig.php:168
1725
- msgid "Максимальные продажи"
1726
- msgstr "Maximal sales"
1727
-
1728
- #: application/modules/Aliexpress/AliexpressConfig.php:169
1729
- msgid "Максимальное число партнерских продаж за последний месяц. Например, 456"
1730
- msgstr "Max number of partner sales for last month. Example, 456"
1731
-
1732
- #: application/modules/Aliexpress/AliexpressConfig.php:182
1733
- #: application/modules/Linkshare/LinkshareConfig.php:83
1734
- msgid "По умолчанию"
1735
- msgstr "Default"
1736
-
1737
- #: application/modules/Aliexpress/AliexpressConfig.php:183
1738
- msgid "Цена от низкой к выскокой"
1739
- msgstr "Price low to high"
1740
-
1741
- #: application/modules/Aliexpress/AliexpressConfig.php:184
1742
- msgid "Цена от высокой к низкой"
1743
- msgstr "Price high to low"
1744
-
1745
- #: application/modules/Aliexpress/AliexpressConfig.php:185
1746
- #: application/modules/Aliexpress/AliexpressConfig.php:195
1747
- msgid "Рейтинг продавца"
1748
- msgstr "Seller rating"
1749
-
1750
- #: application/modules/Aliexpress/AliexpressConfig.php:186
1751
- msgid "Комиссия от низкой к высокой"
1752
- msgstr "Commission from low to high"
1753
-
1754
- #: application/modules/Aliexpress/AliexpressConfig.php:187
1755
- msgid "Комиссия от высокой к низкой"
1756
- msgstr "Commission from high to low"
1757
-
1758
- #: application/modules/Aliexpress/AliexpressConfig.php:188
1759
- msgid "Продажи"
1760
- msgstr "Sales"
1761
-
1762
- #: application/modules/Aliexpress/AliexpressConfig.php:189
1763
- msgid "Время жизни от низкого к высокому"
1764
- msgstr "Lifetime from low to high"
1765
-
1766
- #: application/modules/Aliexpress/AliexpressConfig.php:190
1767
- msgid "Время жизни от высокого к низкому"
1768
- msgstr "Lifetime from high to low"
1769
-
1770
- #: application/modules/Aliexpress/AliexpressConfig.php:196
1771
- msgid "Минимальный рейтинг продавца, например, 12"
1772
- msgstr "Minimal seller rating, for example 12"
1773
-
1774
- #: application/modules/Aliexpress/AliexpressModule.php:28
1775
- msgid "Добавляет товары aliexpress.com"
1776
- msgstr "Adds items from aliexpress.com"
1777
-
1778
- #: application/modules/Amazon/AmazonConfig.php:22
1779
- msgid "Специальный ключ для доступа к Amazon API."
1780
- msgstr "Special key to access the Amazon API."
1781
-
1782
- #: application/modules/Amazon/AmazonConfig.php:30
1783
- msgid "Поле \"Access Key ID\" не может быть пустым."
1784
- msgstr "The \"Access Key ID\" can not be empty"
1785
-
1786
- #: application/modules/Amazon/AmazonConfig.php:37
1787
- msgid "Еще один специальный ключ для доступа к Amazon API."
1788
- msgstr "Another special key to access the Amazon API."
1789
-
1790
- #: application/modules/Amazon/AmazonConfig.php:45
1791
- msgid "Поле \"Secret Access Key\" не может быть пустым."
1792
- msgstr "The \"Secret Access Key\" can not be empty."
1793
-
1794
- #: application/modules/Amazon/AmazonConfig.php:51
1795
- msgid "Tracking ID по-умолчанию"
1796
- msgstr "Default Tracking ID"
1797
-
1798
- #: application/modules/Amazon/AmazonConfig.php:52
1799
- msgid ""
1800
- "Связь с вашим аккаунтом в партнерской программе. Чтобы получать комиссию от "
1801
- "продаж, правильно укажите этот параметр."
1802
- msgstr ""
1803
- "Connection with your account in the affiliate program. In order to receive a "
1804
- "commission from sales, specify this option correctly."
1805
-
1806
- #: application/modules/Amazon/AmazonConfig.php:53
1807
- msgid "Tracking ID должен соотвествовать установке локали по-умолчанию."
1808
- msgstr "Tracking ID must point to locale settings by default"
1809
-
1810
- #: application/modules/Amazon/AmazonConfig.php:54
1811
- msgid ""
1812
- "Ниже вы можете задать значения Tracking ID для остальных локалей, если "
1813
- "хотите добавить товары более чем с одной локали."
1814
- msgstr ""
1815
- "You can set Tracking ID for other locales if you want to add products more "
1816
- "than one locale."
1817
-
1818
- #: application/modules/Amazon/AmazonConfig.php:62
1819
- msgid "Поле \"Tracking ID\" не может быть пустым."
1820
- msgstr "The \"Tracking ID\" can not be empty."
1821
-
1822
- #: application/modules/Amazon/AmazonConfig.php:69
1823
- msgid "Локаль по-умолчанию"
1824
- msgstr "Default locale"
1825
-
1826
- #: application/modules/Amazon/AmazonConfig.php:70
1827
- msgid ""
1828
- "Локаль/сайт amazon. Для каждой локали необходима отдельная регистрация в "
1829
- "соответствующей партнерской программе."
1830
- msgstr ""
1831
- "The branch/locale of Amazon. Each branch requires a separate registration in "
1832
- "certain affiliate program."
1833
-
1834
- #: application/modules/Amazon/AmazonConfig.php:79
1835
- #: application/modules/Amazon/AmazonConfig.php:96
1836
- msgid ""
1837
- "Получение более 10 результатов потребует дополнительное время на запрос "
1838
- "данных."
1839
- msgstr "It needs a bit more time to get more than 10 results in one request"
1840
-
1841
- #: application/modules/Amazon/AmazonConfig.php:111
1842
- msgid "Вид ссылок"
1843
- msgstr "Link type"
1844
-
1845
- #: application/modules/Amazon/AmazonConfig.php:112
1846
- msgid ""
1847
- "Вид партнерских ссылок. Узнайте больше про amazon <a target=\"_blank\" href="
1848
- "\"https://affiliate-program.amazon.com/gp/associates/help/t2/a11\">90 day "
1849
- "cookie</a>."
1850
- msgstr ""
1851
- "Type of partner links. Know more about amazon <a target=\"_blank\" href="
1852
- "\"https://affiliate-program.amazon.com/gp/associates/help/t2/a11\">90 day "
1853
- "cookie</a>."
1854
-
1855
- #: application/modules/Amazon/AmazonConfig.php:122
1856
- msgid "Категория для поиска"
1857
- msgstr "Categories for search"
1858
-
1859
- #: application/modules/Amazon/AmazonConfig.php:123
1860
- msgid ""
1861
- "Список категорий для US Amazon. Для локальных филиалов некоторые категории "
1862
- "могут быть недоступны. Если Вы не зададите категорию для поиска, то никакие "
1863
- "другие опции фильтрации кроме поиска по ключевому слову (например, "
1864
- "минимальная цена или сортировка) работать не будут."
1865
- msgstr ""
1866
- "The list of categories for US Amazon. For local branches some of categories "
1867
- "may be not available. If you do not set category for searching, no other "
1868
- "filtering options in addition to searching for the keyword (for example, the "
1869
- "minimal price or sorting) will not working. "
1870
-
1871
- #: application/modules/Amazon/AmazonConfig.php:130
1872
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:197
1873
- #: application/modules/CjProducts/CjProductsConfig.php:175
1874
- #: application/modules/Linkshare/LinkshareConfig.php:93
1875
- msgid "Порядок сортировки"
1876
- msgstr "Sorting order"
1877
-
1878
- #: application/modules/Amazon/AmazonConfig.php:131
1879
- msgid ""
1880
- "Варианты сортировки зависят от locale и выбранной категории. Список "
1881
- "доступных значений можно найти <a href=\"http://docs.amazonwebservices.com/"
1882
- "AWSECommerceService/latest/DG/index.html?APPNDX_SortValuesArticle.html"
1883
- "\">здесь</a>."
1884
- msgstr ""
1885
- "Sorting variants depend on locale and chosed category. List of all available "
1886
- "values you can find <a href=\"http://docs.amazonwebservices.com/"
1887
- "AWSECommerceService/latest/DG/index.html?APPNDX_SortValuesArticle.html"
1888
- "\">here</a>."
1889
-
1890
- #: application/modules/Amazon/AmazonConfig.php:140
1891
- msgid "Brouse node"
1892
- msgstr "Brouse node"
1893
-
1894
- #: application/modules/Amazon/AmazonConfig.php:141
1895
- msgid ""
1896
- "Целочисленное ID \"узла\" на amazon. Поиск будет произведен только в этом "
1897
- "\"узле\"."
1898
- msgstr ""
1899
- "Integer ID \"node\" on Amazon. The search will be made only in this \"node\"."
1900
-
1901
- #: application/modules/Amazon/AmazonConfig.php:150
1902
- msgid "Поиск в названии"
1903
- msgstr "Search in title"
1904
-
1905
- #: application/modules/Amazon/AmazonConfig.php:151
1906
- msgid "Поиск будет произведет только по названиям товаров."
1907
- msgstr "The search will produce only by product name."
1908
-
1909
- #: application/modules/Amazon/AmazonConfig.php:157
1910
- msgid "Только Amazon"
1911
- msgstr "Only Amazon"
1912
-
1913
- #: application/modules/Amazon/AmazonConfig.php:158
1914
- msgid ""
1915
- "Выбрать товары, которые продает Amazon. Другие продавцы исключаются из "
1916
- "поиска."
1917
- msgstr ""
1918
- "Select products that are selling by Amazon. Other sellers are excluded from "
1919
- "the search."
1920
-
1921
- #: application/modules/Amazon/AmazonConfig.php:165
1922
- msgid "Например, 8.99"
1923
- msgstr "Example, 8.99"
1924
-
1925
- #: application/modules/Amazon/AmazonConfig.php:175
1926
- msgid "Например, 98.50"
1927
- msgstr "Example, 98.50"
1928
-
1929
- #: application/modules/Amazon/AmazonConfig.php:184
1930
- msgid "Минимальная скидка"
1931
- msgstr "Minimal discount"
1932
-
1933
- #: application/modules/Amazon/AmazonConfig.php:185
1934
- msgid ""
1935
- "Выбрать товары со скидкой. Обязательно должна быть задана категория. "
1936
- "Обратите внимание, эта опция работает не для всех категорий."
1937
- msgstr ""
1938
- "Choose products with discount. You must set category of product. Note, that "
1939
- "this option works not for all categories."
1940
-
1941
- #: application/modules/Amazon/AmazonConfig.php:188
1942
- msgid "Неважно"
1943
- msgstr "Any"
1944
-
1945
- #: application/modules/Amazon/AmazonConfig.php:210
1946
- #: application/modules/Ozon/OzonConfig.php:121
1947
- msgid "Отзывы покупателей"
1948
- msgstr "Customer reviews"
1949
-
1950
- #: application/modules/Amazon/AmazonConfig.php:211
1951
- msgid ""
1952
- "Получить отзывы покупателей. Отзывы будут показаны в iframe. iframe URL "
1953
- "валидный 24 часа, используйте функцию автообноления, чтобы держать URL в "
1954
- "актуальном состоянии."
1955
- msgstr ""
1956
- "Get user reviews. Reviews will be in iframe. Iframe url is valid only 24 "
1957
- "hours, please, use autoupdating function with less than 24 hour to keep "
1958
- "actual url."
1959
-
1960
- #: application/modules/Amazon/AmazonConfig.php:226
1961
- #: application/modules/Market/MarketConfig.php:138
1962
- #: application/modules/Ozon/OzonConfig.php:155
1963
- msgid "Обрезать отзывы"
1964
- msgstr "Cut reviews"
1965
-
1966
- #: application/modules/Amazon/AmazonConfig.php:227
1967
- msgid ""
1968
- "Количество символов для одного отзыва. 0 - максимально возможная длина "
1969
- "текста."
1970
- msgstr ""
1971
- "Number of characters for one review. 0 - the maximal length of the text."
1972
-
1973
- #: application/modules/Amazon/AmazonConfig.php:251
1974
- msgid "Парсить отписание"
1975
- msgstr "Parse description"
1976
-
1977
- #: application/modules/Amazon/AmazonConfig.php:252
1978
- msgid "Парсить описание товаров от продавца."
1979
- msgstr "Parse description of products from seller"
1980
-
1981
- #: application/modules/Amazon/AmazonConfig.php:258
1982
- msgid "Вид описания"
1983
- msgstr "Type of description"
1984
-
1985
- #: application/modules/Amazon/AmazonConfig.php:262
1986
- msgid "Как на Amazon"
1987
- msgstr "Like on Amazon"
1988
-
1989
- #: application/modules/Amazon/AmazonConfig.php:263
1990
- msgid "Безопасный HTML"
1991
- msgstr "Safe HTML"
1992
-
1993
- #: application/modules/Amazon/AmazonConfig.php:264
1994
- msgid "Только разрешенные теги HTML"
1995
- msgstr "Only allowed HTML tags"
1996
-
1997
- #: application/modules/Amazon/AmazonConfig.php:265
1998
- msgid "Только текст"
1999
- msgstr "Text only"
2000
-
2001
- #: application/modules/Amazon/AmazonConfig.php:271
2002
- #: application/modules/Ebay/EbayConfig.php:323
2003
- msgid "Размер описания"
2004
- msgstr "Size of description"
2005
-
2006
- #: application/modules/Amazon/AmazonConfig.php:272
2007
- #: application/modules/Ebay/EbayConfig.php:324
2008
- msgid "Максимальный размер описания товара. 0 - не обрезать."
2009
- msgstr "The maximum size of the item description. 0 - do not cut."
2010
-
2011
- #: application/modules/Amazon/AmazonConfig.php:282
2012
- msgid "Картинки через https"
2013
- msgstr "Use images with https (use it if you also have https site)"
2014
-
2015
- #: application/modules/Amazon/AmazonConfig.php:283
2016
- msgid ""
2017
- "Перезаписать адреса картинок через https протокол. Включите эту опцию, если "
2018
- "вы используете SSL сертификат на своем домене."
2019
- msgstr ""
2020
- "Rewrite url of images with https. Use it if you have SSL on your domain"
2021
-
2022
- #: application/modules/Amazon/AmazonConfig.php:290
2023
- msgid ""
2024
- "Включение этой опции возможно нарушает правила API. Используйте на свой "
2025
- "страх и риск."
2026
- msgstr "Enabling this option violates rules of API."
2027
-
2028
- #: application/modules/Amazon/AmazonConfig.php:300
2029
- msgid "Tracking ID для %s локали"
2030
- msgstr "Tracking ID for %s locale"
2031
-
2032
- #: application/modules/Amazon/AmazonConfig.php:301
2033
- msgid ""
2034
- "Задайте, если хотите добавлять товары с соответствующего amazon сайта "
2035
- "(локали)."
2036
- msgstr ""
2037
- "Type here your tracking ID for this locale if you need multiple locale "
2038
- "parsing"
2039
-
2040
- #: application/modules/Amazon/AmazonModule.php:28
2041
- msgid "Добавляет товары amazon."
2042
- msgstr "Adds goods from Amazon."
2043
-
2044
- #: application/modules/Amazon/views/search_panel.php:17
2045
- msgid "Мин. скидка"
2046
- msgstr "Min. discount"
2047
-
2048
- #: application/modules/Amazon/views/search_panel.php:18
2049
- msgid "5%"
2050
- msgstr "5%"
2051
-
2052
- #: application/modules/Amazon/views/search_panel.php:19
2053
- msgid "10%"
2054
- msgstr "10%"
2055
-
2056
- #: application/modules/Amazon/views/search_panel.php:20
2057
- msgid "15%"
2058
- msgstr "15%"
2059
-
2060
- #: application/modules/Amazon/views/search_panel.php:21
2061
- msgid "20%"
2062
- msgstr "20%"
2063
-
2064
- #: application/modules/Amazon/views/search_panel.php:22
2065
- msgid "25%"
2066
- msgstr "25%"
2067
-
2068
- #: application/modules/Amazon/views/search_panel.php:23
2069
- msgid "30%"
2070
- msgstr "30%"
2071
-
2072
- #: application/modules/Amazon/views/search_panel.php:24
2073
- msgid "35%"
2074
- msgstr "35%"
2075
-
2076
- #: application/modules/Amazon/views/search_panel.php:25
2077
- msgid "40%"
2078
- msgstr "40%"
2079
-
2080
- #: application/modules/Amazon/views/search_panel.php:26
2081
- msgid "50%"
2082
- msgstr "50%"
2083
-
2084
- #: application/modules/Amazon/views/search_panel.php:27
2085
- msgid "60%"
2086
- msgstr "60%"
2087
-
2088
- #: application/modules/Amazon/views/search_panel.php:28
2089
- msgid "70%"
2090
- msgstr "70%"
2091
-
2092
- #: application/modules/Amazon/views/search_panel.php:29
2093
- msgid "80%"
2094
- msgstr "80%"
2095
-
2096
- #: application/modules/Amazon/views/search_panel.php:30
2097
- msgid "90%"
2098
- msgstr "90%"
2099
-
2100
- #: application/modules/BingImages/BingImagesConfig.php:21
2101
- #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:21
2102
- msgid ""
2103
- "Ключ доступа к Bing API. Получить можно <a href=\"https://datamarket.azure."
2104
- "com/account/keys\">здесь</a> (потребуется аккаунт в bing)."
2105
- msgstr ""
2106
- "Key access to Bing API. You can get <a href=\"https://datamarket.azure.com/"
2107
- "account/keys\">here</a> (need bing account)."
2108
-
2109
- #: application/modules/BingImages/BingImagesConfig.php:29
2110
- #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:29
2111
- #: application/modules/Twitter/TwitterConfig.php:29
2112
- #: application/modules/Twitter/TwitterConfig.php:44
2113
- #: application/modules/Twitter/TwitterConfig.php:59
2114
- #: application/modules/Twitter/TwitterConfig.php:74
2115
- msgid "Поле \"Account Key\" не может быть пустым."
2116
- msgstr "The \"Account Key\" can not be empty."
2117
-
2118
- #: application/modules/BingImages/BingImagesConfig.php:36
2119
- #: application/modules/Pixabay/PixabayConfig.php:36
2120
- msgid "Количество результатов для одного запроса."
2121
- msgstr "Number of results for a single query."
2122
-
2123
- #: application/modules/BingImages/BingImagesConfig.php:51
2124
- #: application/modules/Flickr/FlickrConfig.php:46
2125
- #: application/modules/Freebase/FreebaseConfig.php:51
2126
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:51
2127
- #: application/modules/GoogleImages/GoogleImagesConfig.php:51
2128
- #: application/modules/GoogleNews/GoogleNewsConfig.php:36
2129
- #: application/modules/Market/MarketConfig.php:64
2130
- #: application/modules/Pixabay/PixabayConfig.php:51
2131
- #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:51
2132
- #: application/modules/RssFetcher/RssFetcherConfig.php:51
2133
- #: application/modules/Twitter/TwitterConfig.php:96
2134
- #: application/modules/VkNews/VkNewsConfig.php:31
2135
- #: application/modules/Youtube/YoutubeConfig.php:46
2136
- msgid "Результатов для автоблоггинга"
2137
- msgstr "Results for autoblogging "
2138
-
2139
- #: application/modules/BingImages/BingImagesConfig.php:52
2140
- #: application/modules/Flickr/FlickrConfig.php:47
2141
- #: application/modules/Freebase/FreebaseConfig.php:52
2142
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:52
2143
- #: application/modules/GoogleImages/GoogleImagesConfig.php:52
2144
- #: application/modules/GoogleNews/GoogleNewsConfig.php:37
2145
- #: application/modules/Market/MarketConfig.php:65
2146
- #: application/modules/Pixabay/PixabayConfig.php:52
2147
- #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:52
2148
- #: application/modules/RssFetcher/RssFetcherConfig.php:52
2149
- #: application/modules/Twitter/TwitterConfig.php:97
2150
- #: application/modules/VkNews/VkNewsConfig.php:32
2151
- #: application/modules/Youtube/YoutubeConfig.php:47
2152
- msgid "Количество результатов для автоблоггинга."
2153
- msgstr "Number of results for autoblogging."
2154
-
2155
- #: application/modules/BingImages/BingImagesConfig.php:61
2156
- #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:61
2157
- #: application/modules/RssFetcher/RssFetcherConfig.php:61
2158
- msgid "Поле \"Результатов для автоблоггинга\" не может быть больше 50."
2159
- msgstr "Field \"Results for autoblogging\" can not be more than 50."
2160
-
2161
- #: application/modules/BingImages/BingImagesConfig.php:67
2162
- msgid "Фильтр"
2163
- msgstr "Filter"
2164
-
2165
- #: application/modules/BingImages/BingImagesConfig.php:71
2166
- #: application/modules/BingImages/views/search_panel.php:2
2167
- msgid "Без фильтра"
2168
- msgstr "Without filter"
2169
-
2170
- #: application/modules/BingImages/BingImagesConfig.php:72
2171
- #: application/modules/BingImages/views/search_panel.php:3
2172
- msgid "Маленькие изображения"
2173
- msgstr "Small images"
2174
-
2175
- #: application/modules/BingImages/BingImagesConfig.php:73
2176
- #: application/modules/BingImages/views/search_panel.php:4
2177
- msgid "Средние изображения"
2178
- msgstr "Medium images"
2179
-
2180
- #: application/modules/BingImages/BingImagesConfig.php:74
2181
- #: application/modules/BingImages/views/search_panel.php:5
2182
- msgid "Большие изображения"
2183
- msgstr "Large images"
2184
-
2185
- #: application/modules/BingImages/BingImagesConfig.php:75
2186
- #: application/modules/BingImages/views/search_panel.php:6
2187
- #: application/modules/GoogleImages/GoogleImagesConfig.php:73
2188
- msgid "Цветные"
2189
- msgstr "Colored"
2190
-
2191
- #: application/modules/BingImages/BingImagesConfig.php:76
2192
- #: application/modules/BingImages/views/search_panel.php:7
2193
- #: application/modules/GoogleImages/GoogleImagesConfig.php:72
2194
- msgid "Черно-белые"
2195
- msgstr "Black and white"
2196
-
2197
- #: application/modules/BingImages/BingImagesConfig.php:77
2198
- #: application/modules/BingImages/views/search_panel.php:8
2199
- #: application/modules/GoogleImages/GoogleImagesConfig.php:122
2200
- msgid "Фотографии"
2201
- msgstr "Photo"
2202
-
2203
- #: application/modules/BingImages/BingImagesConfig.php:78
2204
- #: application/modules/BingImages/views/search_panel.php:9
2205
- msgid "Графика и иллюстрации"
2206
- msgstr "Graphics and illustrations"
2207
-
2208
- #: application/modules/BingImages/BingImagesConfig.php:79
2209
- #: application/modules/BingImages/views/search_panel.php:10
2210
- msgid "Содержит лица"
2211
- msgstr "Contains faces"
2212
-
2213
- #: application/modules/BingImages/BingImagesConfig.php:80
2214
- #: application/modules/BingImages/views/search_panel.php:11
2215
- msgid "Портреты"
2216
- msgstr "Portraits"
2217
-
2218
- #: application/modules/BingImages/BingImagesConfig.php:81
2219
- #: application/modules/BingImages/views/search_panel.php:12
2220
- msgid "Не содержит лиц"
2221
- msgstr "Does not contain faces"
2222
-
2223
- #: application/modules/BingImages/BingImagesConfig.php:95
2224
- #: application/modules/GoogleImages/GoogleImagesConfig.php:160
2225
- msgid "Поиск по сайту"
2226
- msgstr "Search"
2227
-
2228
- #: application/modules/BingImages/BingImagesConfig.php:96
2229
- msgid "Ограничить поиск только этим доменом. Например, задайте: wikimedia.org"
2230
- msgstr "Limit the search to only that domain. For example ask: wikimedia.org"
2231
-
2232
- #: application/modules/BingImages/templates/data_simple.php:5
2233
- msgid "Simple"
2234
- msgstr "Simple"
2235
-
2236
- #: application/modules/BingImages/templates/data_simple.php:18
2237
- #: application/modules/GoogleImages/templates/data_simple.php:20
2238
- msgid "Source: %s"
2239
- msgstr "Source: %s"
2240
-
2241
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:20
2242
- msgid "Remote_auth"
2243
- msgstr "Remote_auth"
2244
-
2245
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:21
2246
- msgid ""
2247
- "Ваш ключ для доступа к API. Войдите в систему -> \"Личный кабинет\" -> \"API"
2248
- "\"."
2249
- msgstr "You access key API. Go to -> \"Your account\" -> \"API\""
2250
-
2251
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:29
2252
- msgid "Поле \"Remote_auth\" не может быть пустым."
2253
- msgstr "The field \"Remote_auth\" can not be empty."
2254
-
2255
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:45
2256
- #: application/modules/Ebay/EbayConfig.php:97
2257
- #: application/modules/GdeSlon/GdeSlonConfig.php:55
2258
- msgid "Поле \"Результатов\" не может быть больше 100."
2259
- msgstr "Field \"Results\" can not be more than 100."
2260
-
2261
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:61
2262
- #: application/modules/Ebay/EbayConfig.php:113
2263
- #: application/modules/GdeSlon/GdeSlonConfig.php:71
2264
- msgid "Поле \"Результатов для обновления\" не может быть больше 100."
2265
- msgstr "Field \"Results for autoupdating\" can not be more than 100."
2266
-
2267
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:77
2268
- #: application/modules/GdeSlon/GdeSlonConfig.php:100
2269
- msgid "ID магазина"
2270
- msgstr "Shop ID"
2271
-
2272
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:78
2273
- msgid ""
2274
- "Фильтр по магазинам. Целочисленные идентификаторы магазинов перечисляются "
2275
- "через запятую."
2276
- msgstr "Filter for shops. Integer IDs stores listed separated by commas."
2277
-
2278
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:91
2279
- #: application/modules/Ozon/OzonConfig.php:95
2280
- #: application/modules/Pixabay/PixabayConfig.php:85
2281
- #: application/modules/Pixabay/PixabayConfig.php:99
2282
- #: application/modules/Pixabay/PixabayConfig.php:112
2283
- #: application/modules/Zanox/ZanoxConfig.php:146
2284
- msgid "Все"
2285
- msgstr "All"
2286
-
2287
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:92
2288
- msgid "Товары для строительства и ремонта"
2289
- msgstr "Goods for construction and repair"
2290
-
2291
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:93
2292
- #: application/modules/Ozon/OzonConfig.php:102
2293
- msgid "Музыка"
2294
- msgstr "Music"
2295
-
2296
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:94
2297
- msgid "Одежда, обувь и аксессуары"
2298
- msgstr "Clothes"
2299
-
2300
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:95
2301
- msgid "Товары для авто- и мототехники "
2302
- msgstr "Auto and moto technic"
2303
-
2304
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:96
2305
- msgid "Подарки, сувениры, цветы"
2306
- msgstr "Gifts and flowers"
2307
-
2308
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:97
2309
- msgid "Путешествия, туризм"
2310
- msgstr "Travel"
2311
-
2312
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:98
2313
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:101
2314
- #: application/modules/Ozon/OzonConfig.php:97
2315
- msgid "Книги"
2316
- msgstr "Books"
2317
-
2318
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:99
2319
- msgid "Животные и растения"
2320
- msgstr "Plants and animals"
2321
-
2322
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:100
2323
- msgid "Товары для здоровья"
2324
- msgstr "Health products"
2325
-
2326
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:101
2327
- msgid "Оборудование"
2328
- msgstr "Equipment"
2329
-
2330
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:102
2331
- msgid "Товары для дома и дачи"
2332
- msgstr "Products for house"
2333
-
2334
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:103
2335
- msgid "Продукты, напитки, табак"
2336
- msgstr "Food, drinks"
2337
-
2338
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:104
2339
- msgid "Интим товары"
2340
- msgstr "Products for sex"
2341
-
2342
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:105
2343
- msgid "Электроника и Фото"
2344
- msgstr "Photo and electronic"
2345
-
2346
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:106
2347
- #: application/modules/Ozon/OzonConfig.php:99
2348
- msgid "Бытовая техника"
2349
- msgstr "household appliances"
2350
-
2351
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:107
2352
- msgid "Спортивные товары "
2353
- msgstr "Sport goods"
2354
-
2355
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:108
2356
- msgid "Компьютеры"
2357
- msgstr "Computes"
2358
-
2359
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:109
2360
- msgid "Товары для детей"
2361
- msgstr "Products for kids"
2362
-
2363
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:110
2364
- msgid "Товары для офиса"
2365
- msgstr "Office products"
2366
-
2367
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:111
2368
- msgid "Телефоны"
2369
- msgstr "Phones"
2370
-
2371
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:112
2372
- msgid "Мебель"
2373
- msgstr "Furniture"
2374
-
2375
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:119
2376
- msgid "Минимальная цена товара. Например, 10."
2377
- msgstr "Minimal price, for example 10"
2378
-
2379
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:129
2380
- msgid "Минимальная цена товара. Например, 100."
2381
- msgstr "Maximum price, for example 100"
2382
-
2383
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:138
2384
- msgid "Валюта"
2385
- msgstr "Currency"
2386
-
2387
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:142
2388
- #: application/modules/CjLinks/CjLinksConfig.php:129
2389
- msgid "Любая"
2390
- msgstr "Any"
2391
-
2392
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:208
2393
- #: application/modules/PayTM/PayTMConfig.php:62
2394
- msgid "Наличие"
2395
- msgstr "Availability"
2396
-
2397
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:209
2398
- msgid "Только доступные товары"
2399
- msgstr "Only available products"
2400
-
2401
- #: application/modules/CityadsProducts/CityadsProductsModule.php:26
2402
- msgid "Добавляет товары партнерской сети cityads.com"
2403
- msgstr "Adds goods from cityads.com"
2404
-
2405
- #: application/modules/CjLinks/CjLinksConfig.php:21
2406
- #: application/modules/CjProducts/CjProductsConfig.php:21
2407
- msgid ""
2408
- "Ключ для доступа к CJ API. Получить нужно <a href=\"https://api.cj.com/"
2409
- "sign_up.cj\">здесь</a>."
2410
- msgstr ""
2411
- "CJ API access key. You can get it in Google <a href=\"https://api.cj.com/"
2412
- "sign_up.cj\">here</a>."
2413
-
2414
- #: application/modules/CjLinks/CjLinksConfig.php:29
2415
- #: application/modules/CjProducts/CjProductsConfig.php:29
2416
- msgid "Поле \"Developer Key\" не может быть пустым."
2417
- msgstr "The \"Developer Key\" can not be empty"
2418
-
2419
- #: application/modules/CjLinks/CjLinksConfig.php:44
2420
- #: application/modules/CjProducts/CjProductsConfig.php:44
2421
- msgid "Поле \"Website ID\" не может быть пустым."
2422
- msgstr "The field \"Website ID\" can not be empty."
2423
-
2424
- #: application/modules/CjLinks/CjLinksConfig.php:72
2425
- #: application/modules/CjProducts/CjProductsConfig.php:72
2426
- msgid "Рекламодатели"
2427
- msgstr "Advertisers"
2428
-
2429
- #: application/modules/CjLinks/CjLinksConfig.php:86
2430
- #: application/modules/CjLinks/CjLinksConfig.php:111
2431
- #: application/modules/Clickbank/ClickbankConfig.php:131
2432
- #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:71
2433
- msgid "Любой"
2434
- msgstr "Any"
2435
-
2436
- #: application/modules/CjLinks/CjLinksModule.php:27
2437
- msgid ""
2438
- "Добавляет текстовые ссылки, купоны и баннеры партнерской сети Commission "
2439
- "Junction. Вы должны получить аппрув в каждой программы отдельно."
2440
- msgstr ""
2441
- "Adds text links, coupons, banners from CJ.com. You must have approval from "
2442
- "each program separately."
2443
-
2444
- #: application/modules/CjProducts/CjProductsConfig.php:36
2445
- msgid ""
2446
- "PID - идентификатор сайта в CJ. Войдите в свой аккаунт CJ и следуйте: "
2447
- "\"Account -> Websites\""
2448
- msgstr ""
2449
- "PID - site id in CJ. Login in your account in CJ and follow \"Account -> "
2450
- "Websites\""
2451
-
2452
- #: application/modules/CjProducts/CjProductsConfig.php:73
2453
- msgid ""
2454
- "Вы можете задать Adverticer ID (CID) через запятую для ограничения поиска "
2455
- "только по этим рекламодателям. Введите \"joined\", чтобы искать по всем "
2456
- "вашим рекламодателям."
2457
- msgstr ""
2458
- "You can set Advertiser ID (CID) with comma for search limit only among this "
2459
- "advertisers. Set \"joined\" for searching only among your advertiser. "
2460
-
2461
- #: application/modules/CjProducts/CjProductsConfig.php:116
2462
- msgid "Минимальная цена распродажи"
2463
- msgstr "Minimum sale price"
2464
-
2465
- #: application/modules/CjProducts/CjProductsConfig.php:126
2466
- msgid "Максимальная цена распродажи"
2467
- msgstr "Maximum sale price"
2468
-
2469
- #: application/modules/CjProducts/CjProductsModule.php:27
2470
- msgid ""
2471
- "Добавляет товары партнерской сети Commission Junction. Вы должны получить "
2472
- "аппрув в каждой программы отдельно."
2473
- msgstr ""
2474
- "Adds products from CJ.com. You must have approval from each program "
2475
- "separately."
2476
-
2477
- #: application/modules/Clickbank/ClickbankConfig.php:21
2478
- msgid "Ваш nickname на ClickBank."
2479
- msgstr "Your nickname on ClickBank."
2480
-
2481
- #: application/modules/Clickbank/ClickbankConfig.php:29
2482
- msgid "Поле \"ClickBank nickname\" не может быть пустым."
2483
- msgstr "The field \"ClickBank nickname\" can not be empty."
2484
-
2485
- #: application/modules/Clickbank/ClickbankConfig.php:117
2486
- msgid "Минимум Gravity"
2487
- msgstr "Minimum Gravity"
2488
-
2489
- #: application/modules/Clickbank/ClickbankConfig.php:127
2490
- msgid "Язык"
2491
- msgstr "Language"
2492
-
2493
- #: application/modules/Clickbank/ClickbankModule.php:26
2494
- msgid "Добавляет офферы партнерской сети clickbank.com."
2495
- msgstr "Adds goods from clickbank.com."
2496
-
2497
- #: application/modules/Clickbank/ClickbankModule.php:26
2498
- msgid "Модуль работает в тестовом режиме."
2499
- msgstr "Module is in test mode."
2500
-
2501
- #: application/modules/Ebay/EbayConfig.php:22
2502
- msgid ""
2503
- "Ваш ID для доступа к eBay API. Поучить ключ вы можете в <a href=\"http://"
2504
- "developer.ebay.com/join\">eBay Developers Program</a>."
2505
- msgstr ""
2506
- "API access key to Ebay. You can get it in <a href=\"http://developer.ebay."
2507
- "com/join\">eBay Developers Program</a>."
2508
-
2509
- #: application/modules/Ebay/EbayConfig.php:30
2510
- msgid "Поле \"Application ID (AppID)\" не может быть пустым."
2511
- msgstr "Field \"Application ID (AppID)\" can't be empty"
2512
-
2513
- #: application/modules/Ebay/EbayConfig.php:37
2514
- msgid ""
2515
- "Это связь с партнерской программой EPN. Campaign ID валидный для всех "
2516
- "программ, в которые вы были приняты на EPN. Если не задано - комиссия за "
2517
- "продажи начисляться не будет."
2518
- msgstr ""
2519
- "This is connection with partner program EPN. Campaign ID is valid for all "
2520
- "programs which were approved for you on EPN. If you leave this field blank - "
2521
- "you will not get commissions from sales."
2522
-
2523
- #: application/modules/Ebay/EbayConfig.php:46
2524
- msgid "EPN Custom ID (канал)"
2525
- msgstr "EPN Custom ID (chanel)"
2526
-
2527
- #: application/modules/Ebay/EbayConfig.php:47
2528
- msgid ""
2529
- "Любое слово, например, имя домена. Custom ID будет включен в отчеты по "
2530
- "продажам на EPN, таким образом, вы сможете дополнительно отслеживать трафик."
2531
- msgstr ""
2532
- "Any word, for example, name of domain. Custom ID will be included in sale "
2533
- "report on EPN, so, you can additionally check your traffic. "
2534
-
2535
- #: application/modules/Ebay/EbayConfig.php:58
2536
- msgid "Skimlinks Site ID"
2537
- msgstr "Skimlinks Site ID"
2538
-
2539
- #: application/modules/Ebay/EbayConfig.php:59
2540
- msgid ""
2541
- "Указывайте, если хотите слать трафик через <a href=\"http://www.keywordrush."
2542
- "com/go/skimlinks\">Skimlinks</a>. ID для соотвествущего домена можно найти "
2543
- "<a href=\"https://hub.skimlinks.com/account\">здесь</a>."
2544
- msgstr ""
2545
- "Set this if you want to direct traffic over <a href=\"http://www.keywordrush."
2546
- "com/go/skimlinks\">Skimlinks</a>. Id for domain you can find <a href="
2547
- "\"https://hub.skimlinks.com/account\">here</a>."
2548
-
2549
- #: application/modules/Ebay/EbayConfig.php:69
2550
- msgid "Viglink ID"
2551
- msgstr "Viglink ID"
2552
-
2553
- #: application/modules/Ebay/EbayConfig.php:70
2554
- msgid ""
2555
- "Указывайте, если хотите слать трафик через <a href=\"http://www.keywordrush."
2556
- "com/go/viglink\">Viglink</a>. Ваш ID можно найти <a href=\"http://www."
2557
- "viglink.com/install\">здесь</a>, он одинаковый для всех доменов."
2558
- msgstr ""
2559
- "Set this if you want to direct traffic over <a href=\"http://www.keywordrush."
2560
- "com/go/viglink\">Viglink</a>. Id for domain you can find <a href=\"http://"
2561
- "www.viglink.com/install\">here</a>. Id is the same for all domains"
2562
-
2563
- #: application/modules/Ebay/EbayConfig.php:79
2564
- msgid "Locale"
2565
- msgstr "Locale"
2566
-
2567
- #: application/modules/Ebay/EbayConfig.php:80
2568
- msgid ""
2569
- "Локальный сайт eBay. Для каждого локального филиала необходима отдельная "
2570
- "регистрация в соответствующей партнерской программе."
2571
- msgstr ""
2572
- "Local site of Ebay. For each local site you must have separate registration "
2573
- "in affiliate program."
2574
-
2575
- #: application/modules/Ebay/EbayConfig.php:127
2576
- msgid "Время завершения"
2577
- msgstr "Ending time"
2578
-
2579
- #: application/modules/Ebay/EbayConfig.php:128
2580
- msgid ""
2581
- "Срок жизни лотов в секундах. Будут выбраны только лоты, которые закроются не "
2582
- "позже указанного времени."
2583
- msgstr ""
2584
- "Lifetime of lots in seconds. Only lots which will be closed not later than "
2585
- "the specified time will be chosen."
2586
-
2587
- #: application/modules/Ebay/EbayConfig.php:137
2588
- msgid "Категориия"
2589
- msgstr "Category "
2590
-
2591
- #: application/modules/Ebay/EbayConfig.php:138
2592
- msgid ""
2593
- "ID категории для поиска. ID категорий можно найти в URL категорий на <a href="
2594
- "\"http://www.ebay.com/sch/allcategories/all-categories\">этой странице</a>. "
2595
- "Можно задать до трех категорий через запятую, например, \"2195,2218,20094\"."
2596
- msgstr ""
2597
- "Id of category for searching. Id of categories you can find in URL of "
2598
- "category on <a href=\"http://www.ebay.com/sch/allcategories/all-categories"
2599
- "\">this page</a>. You can set maximum 3 categories separated with comma. "
2600
- "Example, \"2195,2218,20094\"."
2601
-
2602
- #: application/modules/Ebay/EbayConfig.php:147
2603
- msgid "Искать в описании"
2604
- msgstr "Search in description"
2605
-
2606
- #: application/modules/Ebay/EbayConfig.php:148
2607
- msgid ""
2608
- "Включить поиск по описание товара в дополнение к названию товара. Это займет "
2609
- "больше времени, чем поиск только по названию."
2610
- msgstr ""
2611
- "Include description of product in searching. This will take more time, than "
2612
- "searching only by title."
2613
-
2614
- #: application/modules/Ebay/EbayConfig.php:154
2615
- #: application/modules/Linkshare/LinkshareConfig.php:67
2616
- msgid "Логика поиска"
2617
- msgstr "Searching logic"
2618
-
2619
- #: application/modules/Ebay/EbayConfig.php:162
2620
- msgid "Состояние товара"
2621
- msgstr "Product condition"
2622
-
2623
- #: application/modules/Ebay/EbayConfig.php:170
2624
- msgid "Исключить категорию"
2625
- msgstr "Exclude category"
2626
-
2627
- #: application/modules/Ebay/EbayConfig.php:171
2628
- msgid ""
2629
- "ID категории, которую необходимо исключить при поиске. ID категорий можно "
2630
- "найти в URL категорий на <a href=\"http://www.ebay.com/sch/allcategories/all-"
2631
- "categories\">этой странице</a>. Можно задать до 25 категорий через запятую, "
2632
- "например, \"2195,2218,20094\"."
2633
- msgstr ""
2634
- "Id of category, which must be excluded while searching. Id of categories you "
2635
- "can find in URL of category on <a href=\"http://www.ebay.com/sch/"
2636
- "allcategories/all-categories\">this page</a>. You can set maximum 25 "
2637
- "categories separated with comma. Example, \"2195,2218,20094\"."
2638
-
2639
- #: application/modules/Ebay/EbayConfig.php:180
2640
- msgid "Минимальный ретинг продавца"
2641
- msgstr "Minimal seller rating"
2642
-
2643
- #: application/modules/Ebay/EbayConfig.php:188
2644
- msgid "Best Offer"
2645
- msgstr "Best Offer"
2646
-
2647
- #: application/modules/Ebay/EbayConfig.php:189
2648
- msgid "Только \"Best Offer\" лоты."
2649
- msgstr "Only \"Best Offer\" lots."
2650
-
2651
- #: application/modules/Ebay/EbayConfig.php:195
2652
- msgid "Featured"
2653
- msgstr "Featured"
2654
-
2655
- #: application/modules/Ebay/EbayConfig.php:196
2656
- msgid "Только \"Featured\" лоты."
2657
- msgstr "Only \"Featured\" lots."
2658
-
2659
- #: application/modules/Ebay/EbayConfig.php:202
2660
- msgid "Free Shipping"
2661
- msgstr "Free Shipping"
2662
-
2663
- #: application/modules/Ebay/EbayConfig.php:203
2664
- msgid "Только лоты с бесплатной доставкой."
2665
- msgstr "Only lots with free delivery"
2666
-
2667
- #: application/modules/Ebay/EbayConfig.php:209
2668
- msgid "Local Pickup"
2669
- msgstr "Local Pickup"
2670
-
2671
- #: application/modules/Ebay/EbayConfig.php:210
2672
- msgid "Только лоты с опцией \"local pickup\"."
2673
- msgstr "Only lots with \"local pickup\" option."
2674
-
2675
- #: application/modules/Ebay/EbayConfig.php:216
2676
- msgid "Get It Fast"
2677
- msgstr "Get It Fast"
2678
-
2679
- #: application/modules/Ebay/EbayConfig.php:217
2680
- msgid "Только \"Get It Fast\" лоты."
2681
- msgstr "Only \"Get It Fast\" lots."
2682
-
2683
- #: application/modules/Ebay/EbayConfig.php:223
2684
- msgid "Top-rated seller"
2685
- msgstr "Top-rated seller"
2686
-
2687
- #: application/modules/Ebay/EbayConfig.php:224
2688
- msgid "Только товары от \"Top-rated\" продавцов."
2689
- msgstr "Only products from Top-rated \"Top-rated\" vendors."
2690
-
2691
- #: application/modules/Ebay/EbayConfig.php:230
2692
- msgid "Спрятать дубли"
2693
- msgstr "Hide dublicates"
2694
-
2695
- #: application/modules/Ebay/EbayConfig.php:231
2696
- msgid "Отфильтровать похожие лоты."
2697
- msgstr "Filter similar lots"
2698
-
2699
- #: application/modules/Ebay/EbayConfig.php:237
2700
- msgid "Тип аукциона"
2701
- msgstr "Type of auction"
2702
-
2703
- #: application/modules/Ebay/EbayConfig.php:251
2704
- msgid "Максимум ставок"
2705
- msgstr "Maximum bids"
2706
-
2707
- #: application/modules/Ebay/EbayConfig.php:252
2708
- msgid "Например, 10"
2709
- msgstr "Example, 10"
2710
-
2711
- #: application/modules/Ebay/EbayConfig.php:261
2712
- msgid "Минимум ставок"
2713
- msgstr "Minimum bids"
2714
-
2715
- #: application/modules/Ebay/EbayConfig.php:262
2716
- msgid "Например, 3"
2717
- msgstr "Example, 3"
2718
-
2719
- #: application/modules/Ebay/EbayConfig.php:272
2720
- msgid "Например, 300.50"
2721
- msgstr "Example, 300.50"
2722
-
2723
- #: application/modules/Ebay/EbayConfig.php:282
2724
- msgid "Например, 10.98"
2725
- msgstr "Example, 10.98"
2726
-
2727
- #: application/modules/Ebay/EbayConfig.php:291
2728
- msgid "Варианты оплаты"
2729
- msgstr "Payment options"
2730
-
2731
- #: application/modules/Ebay/EbayConfig.php:316
2732
- msgid "Получить описание"
2733
- msgstr "Get description"
2734
-
2735
- #: application/modules/Ebay/EbayConfig.php:317
2736
- msgid ""
2737
- "Получить описание товара. Требует дополнительных запросов к eBay API, это "
2738
- "замедляет работу поиска. Описание будет запрошено не более чем для 20 первых "
2739
- "товаров за один поиск."
2740
- msgstr ""
2741
- "Get description of product. This takes more requests for Ebay API and slow "
2742
- "down searching. Description will be requested only for 20 first products for "
2743
- "one searching"
2744
-
2745
- #: application/modules/Ebay/EbayModule.php:30
2746
- msgid ""
2747
- "Добавляет товары eBay. Поддерживает различные локальные сайты. Несколько "
2748
- "вариантов монетизации трафика."
2749
- msgstr ""
2750
- "Adds Ebay products. Supports different local sites. Several ways of "
2751
- "moneymaking."
2752
-
2753
- #: application/modules/Flickr/FlickrConfig.php:21
2754
- msgid ""
2755
- "Ключ для использования Flickr API. Получить можно <a href=\"http://www."
2756
- "flickr.com/services/api/misc.api_keys.html\">здесь</a>."
2757
- msgstr ""
2758
- "The key for use Flickr API. You can get <a href=\"http://www.flickr.com/"
2759
- "services/api/misc.api_keys.html\">here</a>."
2760
-
2761
- #: application/modules/Flickr/FlickrConfig.php:36
2762
- #: application/modules/Freebase/FreebaseConfig.php:36
2763
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:36
2764
- #: application/modules/GoogleNews/GoogleNewsConfig.php:21
2765
- #: application/modules/Market/MarketConfig.php:49
2766
- #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:36
2767
- #: application/modules/RssFetcher/RssFetcherConfig.php:36
2768
- #: application/modules/Twitter/TwitterConfig.php:81
2769
- #: application/modules/VkNews/VkNewsConfig.php:21
2770
- #: application/modules/Youtube/YoutubeConfig.php:36
2771
- msgid "Количество результатов для одного запроса"
2772
- msgstr "Number of results for a single query"
2773
-
2774
- #: application/modules/Flickr/FlickrConfig.php:61
2775
- #: application/modules/Flickr/views/search_panel.php:10
2776
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:89
2777
- #: application/modules/Ozon/OzonConfig.php:66
2778
- #: application/modules/Youtube/YoutubeConfig.php:63
2779
- #: application/modules/Youtube/views/search_panel.php:10
2780
- msgid "Релевантность"
2781
- msgstr "Relevance"
2782
-
2783
- #: application/modules/Flickr/FlickrConfig.php:62
2784
- #: application/modules/Flickr/views/search_panel.php:11
2785
- msgid "Дата поста"
2786
- msgstr "Date of post"
2787
-
2788
- #: application/modules/Flickr/FlickrConfig.php:63
2789
- #: application/modules/Flickr/views/search_panel.php:12
2790
- msgid "Дата съемки"
2791
- msgstr "Date of shooting"
2792
-
2793
- #: application/modules/Flickr/FlickrConfig.php:64
2794
- #: application/modules/Flickr/views/search_panel.php:13
2795
- msgid "Сначала интересные"
2796
- msgstr "First interesting"
2797
-
2798
- #: application/modules/Flickr/FlickrConfig.php:71
2799
- #: application/modules/GoogleImages/GoogleImagesConfig.php:20
2800
- #: application/modules/Youtube/YoutubeConfig.php:72
2801
- msgid "Тип лицензии"
2802
- msgstr "Type of license"
2803
-
2804
- #: application/modules/Flickr/FlickrConfig.php:72
2805
- msgid ""
2806
- "Многие фотографии на Flickr загружены с лицензией Creative Commons. "
2807
- "Подробнее <a href=\"http://www.flickr.com/creativecommons/\">здесь</a>."
2808
- msgstr ""
2809
- "Many photos on Flickr have Creative Commons license. <a href=\"http://www."
2810
- "flickr.com/creativecommons/\">Know more</a>."
2811
-
2812
- #: application/modules/Flickr/FlickrConfig.php:75
2813
- #: application/modules/Flickr/views/search_panel.php:2
2814
- #: application/modules/GoogleImages/GoogleImagesConfig.php:24
2815
- #: application/modules/GoogleImages/views/search_panel.php:2
2816
- #: application/modules/Youtube/YoutubeConfig.php:76
2817
- #: application/modules/Youtube/views/search_panel.php:2
2818
- msgid "Любая лицензия"
2819
- msgstr "Any license"
2820
-
2821
- #: application/modules/Flickr/FlickrConfig.php:76
2822
- #: application/modules/Flickr/views/search_panel.php:3
2823
- #: application/modules/GoogleImages/GoogleImagesConfig.php:25
2824
- #: application/modules/GoogleImages/views/search_panel.php:3
2825
- msgid "Любая Сreative Сommons"
2826
- msgstr "Any Creative Commons"
2827
-
2828
- #: application/modules/Flickr/FlickrConfig.php:77
2829
- #: application/modules/Flickr/views/search_panel.php:4
2830
- #: application/modules/GoogleImages/GoogleImagesConfig.php:26
2831
- #: application/modules/GoogleImages/views/search_panel.php:4
2832
- msgid "Разрешено коммерческое использование"
2833
- msgstr "With Allow of commercial use"
2834
-
2835
- #: application/modules/Flickr/FlickrConfig.php:78
2836
- #: application/modules/Flickr/views/search_panel.php:5
2837
- #: application/modules/GoogleImages/GoogleImagesConfig.php:27
2838
- #: application/modules/GoogleImages/views/search_panel.php:5
2839
- msgid "Разрешено изменение"
2840
- msgstr "Allowed change"
2841
-
2842
- #: application/modules/Flickr/FlickrConfig.php:79
2843
- #: application/modules/Flickr/views/search_panel.php:6
2844
- #: application/modules/GoogleImages/GoogleImagesConfig.php:28
2845
- #: application/modules/GoogleImages/views/search_panel.php:6
2846
- msgid "Коммерческое использование и изменение"
2847
- msgstr "Commercial use and change"
2848
-
2849
- #: application/modules/Flickr/FlickrConfig.php:86
2850
- #: application/modules/GoogleImages/GoogleImagesConfig.php:101
2851
- #: application/modules/Pixabay/PixabayConfig.php:67
2852
- msgid "Размер"
2853
- msgstr "Size"
2854
-
2855
- #: application/modules/Flickr/FlickrConfig.php:90
2856
- msgid "75x75 пикселов"
2857
- msgstr "75x75 pixels"
2858
-
2859
- #: application/modules/Flickr/FlickrConfig.php:91
2860
- msgid "150x150 пикселов"
2861
- msgstr "150x150 pixels"
2862
-
2863
- #: application/modules/Flickr/FlickrConfig.php:92
2864
- msgid "100 пикселов по длинной стороне"
2865
- msgstr "100 pixels on the long side"
2866
-
2867
- #: application/modules/Flickr/FlickrConfig.php:93
2868
- msgid "240 пикселов по длинной стороне"
2869
- msgstr "240 pixels on the long side"
2870
-
2871
- #: application/modules/Flickr/FlickrConfig.php:94
2872
- msgid "320 пикселов по длинной стороне"
2873
- msgstr "320 pixels on the long side"
2874
-
2875
- #: application/modules/Flickr/FlickrConfig.php:95
2876
- msgid "500 пикселов по длинной стороне"
2877
- msgstr "500 pixels on the long side"
2878
-
2879
- #: application/modules/Flickr/FlickrConfig.php:96
2880
- msgid "640 пикселов по длинной стороне"
2881
- msgstr "640 pixels on the long side"
2882
-
2883
- #: application/modules/Flickr/FlickrConfig.php:97
2884
- msgid "800 пикселов по длинной стороне"
2885
- msgstr "800 pixels on the long side"
2886
-
2887
- #: application/modules/Flickr/FlickrConfig.php:98
2888
- msgid "1024 пикселов по длинной стороне"
2889
- msgstr "1024 pixels on the long side"
2890
-
2891
- #: application/modules/Flickr/FlickrConfig.php:123
2892
- msgid "Ограничить поиск только этим пользователем Flickr"
2893
- msgstr "Limit search to only those user Flickr"
2894
-
2895
- #: application/modules/Flipkart/FlipkartConfig.php:20
2896
- msgid "Affiliate Tracking ID"
2897
- msgstr "Affiliate Tracking ID"
2898
-
2899
- #: application/modules/Flipkart/FlipkartConfig.php:21
2900
- msgid "Войдите в систему -> \"API\" -> \"API Token\""
2901
- msgstr "Go to account -> \"API\" -> \"API Token\""
2902
-
2903
- #: application/modules/Flipkart/FlipkartConfig.php:29
2904
- msgid "Поле \"Affiliate Tracking ID\" не может быть пустым."
2905
- msgstr "The field \"Affiliate Tracking ID\" can not be empty."
2906
-
2907
- #: application/modules/Flipkart/FlipkartConfig.php:35
2908
- msgid "Token"
2909
- msgstr "Token"
2910
-
2911
- #: application/modules/Flipkart/FlipkartConfig.php:36
2912
- msgid ""
2913
- "Ваш ключ для доступа к API. Войдите в систему -> \"API\" -> \"API Token\""
2914
- msgstr "You access key API. Go to flipkart account -> \"API\" -> \"API Token\""
2915
-
2916
- #: application/modules/Flipkart/FlipkartConfig.php:44
2917
- #: application/modules/Shareasale/ShareasaleConfig.php:44
2918
- #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:29
2919
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:29
2920
- msgid "Поле \"Token\" не может быть пустым."
2921
- msgstr "The \"Token\" can not be empty."
2922
-
2923
- #: application/modules/Flipkart/FlipkartConfig.php:60
2924
- #: application/modules/Freebase/FreebaseConfig.php:45
2925
- #: application/modules/GoogleNews/GoogleNewsConfig.php:30
2926
- #: application/modules/Market/MarketConfig.php:58
2927
- #: application/modules/Twitter/TwitterConfig.php:90
2928
- msgid "Поле \"Результатов\" не может быть больше 10."
2929
- msgstr "The \"Results\" can not be more than 10."
2930
-
2931
- #: application/modules/Flipkart/FlipkartConfig.php:76
2932
- msgid "Поле \"Результатов для обновления\" не может быть больше 10."
2933
- msgstr "Field \"Results for autoupdating\" can not be more than 10."
2934
-
2935
- #: application/modules/Flipkart/FlipkartModule.php:24
2936
- msgid "Добавляет товары flipkart.com"
2937
- msgstr "Adds items from flipkart.com"
2938
-
2939
- #: application/modules/Freebase/FreebaseConfig.php:21
2940
- msgid ""
2941
- "Ключ для доступа к API. Получить можно в Google <a href=\"http://code.google."
2942
- "com/apis/console\">API консоли</a>."
2943
- msgstr ""
2944
- "API access key. You can get it in Google <a href=\"http://code.google.com/"
2945
- "apis/console\">API console</a>."
2946
-
2947
- #: application/modules/Freebase/FreebaseConfig.php:61
2948
- #: application/modules/GoogleNews/GoogleNewsConfig.php:46
2949
- #: application/modules/Market/MarketConfig.php:74
2950
- msgid "Поле \"Результатов для автоблоггинга\" не может быть больше 10."
2951
- msgstr "Field \"Results for autoblogging\" can not be more than 10."
2952
-
2953
- #: application/modules/Freebase/FreebaseModule.php:28
2954
- msgid ""
2955
- "Этот модуль больше не работает по причине закрытия Freebase API. Модуль "
2956
- "оставлен в целях совместимости с предыдущими версиями плагина."
2957
- msgstr ""
2958
- "<span style=\"color:red;\">This module is deprecated because of closing "
2959
- "Freebase API. The module is left for compatibility with previous versions of "
2960
- "the plugin</span>"
2961
-
2962
- #: application/modules/GdeSlon/GdeSlonConfig.php:20
2963
- msgid "API ключ"
2964
- msgstr "API key"
2965
-
2966
- #: application/modules/GdeSlon/GdeSlonConfig.php:21
2967
- msgid ""
2968
- "Ваш ключ для доступа к API. Войдите в систему -> \"Инструменты\" -> \"XML API"
2969
- "\""
2970
- msgstr "You access key API. Go to -> \"Tools\" -> \"XML API\""
2971
-
2972
- #: application/modules/GdeSlon/GdeSlonConfig.php:29
2973
- msgid "Поле \"API ключ\" не может быть пустым."
2974
- msgstr "The \"API Key\" can not be empty"
2975
-
2976
- #: application/modules/GdeSlon/GdeSlonConfig.php:36
2977
- msgid ""
2978
- "Буквенный или цифровой идентификатор, чтобы сегментировать данные о трафике."
2979
- msgstr "Numeric or alphabet identificator for segment data about traffic. "
2980
-
2981
- #: application/modules/GdeSlon/GdeSlonConfig.php:82
2982
- msgid "Цена"
2983
- msgstr "Price"
2984
-
2985
- #: application/modules/GdeSlon/GdeSlonConfig.php:83
2986
- msgid "Конверт"
2987
- msgstr "Convert"
2988
-
2989
- #: application/modules/GdeSlon/GdeSlonConfig.php:84
2990
- msgid "Новинки"
2991
- msgstr "New products"
2992
-
2993
- #: application/modules/GdeSlon/GdeSlonConfig.php:90
2994
- msgid "Категории для поиска"
2995
- msgstr "Categories for search"
2996
-
2997
- #: application/modules/GdeSlon/GdeSlonConfig.php:91
2998
- msgid ""
2999
- "Ограничить поиск задаными категориями. Найти ID категорий можно Найти ID "
3000
- "магазинов можно <a target=\"_blank\" href=\"http://api.gdeslon.ru/merchants"
3001
- "\">здесь</a>. Можно задать несколько ID через запятую."
3002
- msgstr ""
3003
- "Limit search by categories. You can find shop ID <a target=\"_blank\" href="
3004
- "\"http://api.gdeslon.ru/merchants\">here</a>. You can set multiple ID with "
3005
- "comma."
3006
-
3007
- #: application/modules/GdeSlon/GdeSlonConfig.php:101
3008
- msgid ""
3009
- "Ограничить поиск по выбранному магазину. Найти ID магазинов можно <a target="
3010
- "\"_blank\" href=\"http://api.gdeslon.ru/merchants\">здесь</a>. Можно задать "
3011
- "несколько ID через запятую."
3012
- msgstr ""
3013
- "Limit search by definite shop. You can find shop ID <a target=\"_blank\" "
3014
- "href=\"http://api.gdeslon.ru/merchants\">here</a>. You can set multiple ID "
3015
- "with comma."
3016
-
3017
- #: application/modules/GdeSlon/GdeSlonModule.php:26
3018
- msgid "Добавляет товары партнерской сети gdeslon.ru"
3019
- msgstr "Adds goods from gdeslon.ru."
3020
-
3021
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:21
3022
- #: application/modules/Youtube/YoutubeConfig.php:21
3023
- msgid ""
3024
- "Ключ для доступа к API. Получить можно в Google <a href=\"http://code.google."
3025
- "com/apis/console\">API консоли</a>"
3026
- msgstr ""
3027
- "API access key. You can get it in Google <a href=\"http://code.google.com/"
3028
- "apis/console\">API console</a>."
3029
-
3030
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:61
3031
- msgid "Поле \"Результатов для автоблоггинга\" не может быть больше 40."
3032
- msgstr "Field \"Results for autoblogging\" can not be more than 40."
3033
-
3034
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:90
3035
- msgid "Новизна"
3036
- msgstr "Newness"
3037
-
3038
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:96
3039
- msgid "Тип издания"
3040
- msgstr "Publication type"
3041
-
3042
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:100
3043
- msgid "Любые"
3044
- msgstr "Any"
3045
-
3046
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:102
3047
- msgid "Журналы"
3048
- msgstr "Magazines"
3049
-
3050
- #: application/modules/GoogleImages/GoogleImagesConfig.php:21
3051
- msgid ""
3052
- "Поиск изображений, которые можно использовать. Подробнее <a href=\"https://"
3053
- "support.google.com/websearch/answer/29508\">здесь</a>."
3054
- msgstr ""
3055
- "Searching of images, which you can use. More about, <a href=\"https://"
3056
- "support.google.com/websearch/answer/29508\">here</a>."
3057
-
3058
- #: application/modules/GoogleImages/GoogleImagesConfig.php:36
3059
- msgid "Количество результатов для одного запроса. Не может быть больше 8."
3060
- msgstr "Number of results for one query. Can not be more than 8."
3061
-
3062
- #: application/modules/GoogleImages/GoogleImagesConfig.php:45
3063
- msgid "Поле \"Результатов\" не может быть больше 8."
3064
- msgstr "The \"Results\" can not be more than 8."
3065
-
3066
- #: application/modules/GoogleImages/GoogleImagesConfig.php:61
3067
- msgid "Поле \"Результатов для автоблоггинга\" не может быть больше 8."
3068
- msgstr "Field \"Results for autoblogging\" can not be more than 8."
3069
-
3070
- #: application/modules/GoogleImages/GoogleImagesConfig.php:67
3071
- msgid "Цвет"
3072
- msgstr "Color"
3073
-
3074
- #: application/modules/GoogleImages/GoogleImagesConfig.php:71
3075
- msgid "Любого цвета"
3076
- msgstr "Any color"
3077
-
3078
- #: application/modules/GoogleImages/GoogleImagesConfig.php:79
3079
- msgid "Преобладание цвета"
3080
- msgstr "Predominance of the color"
3081
-
3082
- #: application/modules/GoogleImages/GoogleImagesConfig.php:83
3083
- msgid "Любой цвет"
3084
- msgstr "Any color"
3085
-
3086
- #: application/modules/GoogleImages/GoogleImagesConfig.php:84
3087
- msgid "Черный"
3088
- msgstr "Black"
3089
-
3090
- #: application/modules/GoogleImages/GoogleImagesConfig.php:85
3091
- msgid "Синий"
3092
- msgstr "Blue"
3093
-
3094
- #: application/modules/GoogleImages/GoogleImagesConfig.php:86
3095
- msgid "Коричневый"
3096
- msgstr "Brown"
3097
-
3098
- #: application/modules/GoogleImages/GoogleImagesConfig.php:87
3099
- msgid "Серый"
3100
- msgstr "Gray"
3101
-
3102
- #: application/modules/GoogleImages/GoogleImagesConfig.php:88
3103
- msgid "Зеленый"
3104
- msgstr "Green"
3105
-
3106
- #: application/modules/GoogleImages/GoogleImagesConfig.php:89
3107
- msgid "Оранжевый"
3108
- msgstr "Orange"
3109
-
3110
- #: application/modules/GoogleImages/GoogleImagesConfig.php:90
3111
- msgid "Розовый"
3112
- msgstr "Pink"
3113
-
3114
- #: application/modules/GoogleImages/GoogleImagesConfig.php:91
3115
- msgid "Фиолетовый"
3116
- msgstr "Purple"
3117
-
3118
- #: application/modules/GoogleImages/GoogleImagesConfig.php:92
3119
- msgid "Красный"
3120
- msgstr "Red"
3121
-
3122
- #: application/modules/GoogleImages/GoogleImagesConfig.php:93
3123
- msgid "Бирюзовый"
3124
- msgstr "Turquoise"
3125
-
3126
- #: application/modules/GoogleImages/GoogleImagesConfig.php:94
3127
- msgid "Белый"
3128
- msgstr "White"
3129
-
3130
- #: application/modules/GoogleImages/GoogleImagesConfig.php:95
3131
- msgid "Желтый"
3132
- msgstr "Yellow"
3133
-
3134
- #: application/modules/GoogleImages/GoogleImagesConfig.php:105
3135
- #: application/modules/GoogleImages/GoogleImagesConfig.php:120
3136
- #: application/modules/GoogleImages/views/search_panel.php:11
3137
- msgid "Любого размера"
3138
- msgstr "Any size"
3139
-
3140
- #: application/modules/GoogleImages/GoogleImagesConfig.php:106
3141
- #: application/modules/GoogleImages/views/search_panel.php:12
3142
- msgid "Маленькие"
3143
- msgstr "Small"
3144
-
3145
- #: application/modules/GoogleImages/GoogleImagesConfig.php:107
3146
- #: application/modules/GoogleImages/views/search_panel.php:13
3147
- msgid "Средние"
3148
- msgstr "Medium"
3149
-
3150
- #: application/modules/GoogleImages/GoogleImagesConfig.php:108
3151
- #: application/modules/GoogleImages/views/search_panel.php:14
3152
- msgid "Большие"
3153
- msgstr "Large"
3154
-
3155
- #: application/modules/GoogleImages/GoogleImagesConfig.php:109
3156
- #: application/modules/GoogleImages/views/search_panel.php:15
3157
- msgid "Огромные"
3158
- msgstr "Huge"
3159
-
3160
- #: application/modules/GoogleImages/GoogleImagesConfig.php:116
3161
- #: application/modules/Ozon/OzonConfig.php:78
3162
- msgid "Тип"
3163
- msgstr "Type"
3164
-
3165
- #: application/modules/GoogleImages/GoogleImagesConfig.php:121
3166
- msgid "Лица"
3167
- msgstr "Faces"
3168
-
3169
- #: application/modules/GoogleImages/GoogleImagesConfig.php:123
3170
- msgid "Клип-арт"
3171
- msgstr "Clip-art"
3172
-
3173
- #: application/modules/GoogleImages/GoogleImagesConfig.php:124
3174
- msgid "Ч/б рисунки"
3175
- msgstr "B/w pictures"
3176
-
3177
- #: application/modules/GoogleImages/GoogleImagesConfig.php:130
3178
- #: application/modules/Pixabay/PixabayConfig.php:146
3179
- msgid "Безопасный поиск"
3180
- msgstr "Safe search"
3181
-
3182
- #: application/modules/GoogleImages/GoogleImagesConfig.php:134
3183
- msgid "Включен"
3184
- msgstr "Included"
3185
-
3186
- #: application/modules/GoogleImages/GoogleImagesConfig.php:135
3187
- msgid "Модерация"
3188
- msgstr "Moderation"
3189
-
3190
- #: application/modules/GoogleImages/GoogleImagesConfig.php:136
3191
- msgid "Отключен"
3192
- msgstr "Disabled"
3193
-
3194
- #: application/modules/GoogleImages/GoogleImagesConfig.php:161
3195
- msgid ""
3196
- "Ограничить поиск только этим доменом. Например, задайте: photobucket.com"
3197
- msgstr "Limit search to only that domain. For example ask: photobucket.com"
3198
-
3199
- #: application/modules/GoogleImages/GoogleImagesModule.php:25
3200
- msgid ""
3201
- "<span style=\"color:red;\">Этот модуль больше не работает по причине "
3202
- "закрытия Google Image Search API. Модуль оставлен в целях совместимости с "
3203
- "предыдущими версиями плагина.</span>"
3204
- msgstr ""
3205
- "<span style=\"color:red;\">This module is deprecated because of closing "
3206
- "Google Image Search API. The module is left for compatibility with previous "
3207
- "versions of the plugin</span>"
3208
-
3209
- #: application/modules/Linkshare/LinkshareConfig.php:21
3210
- msgid ""
3211
- "Ключ для доступа к LinkShare API. Войдите в аккаунт Linkshare и следуйте: "
3212
- "\"LINKS -> Web Service\"."
3213
- msgstr ""
3214
- "Linkshare access key. Go to your account in Linkshare and follow \"LINKS -> "
3215
- "Web Service\"."
3216
-
3217
- #: application/modules/Linkshare/LinkshareConfig.php:29
3218
- msgid "Поле \"Web Services Token\" не может быть пустым."
3219
- msgstr "The field \"Web Services Token\" can not be empty."
3220
-
3221
- #: application/modules/Linkshare/LinkshareConfig.php:58
3222
- msgid ""
3223
- "Ограничить поиск по Advertiser ID. Войдите в аккаунт LinkShare и следуйте: "
3224
- "PROGRAMS -> My Advertisers -> Выбираете рекламодателя -> Advertiser Info."
3225
- msgstr ""
3226
- "Limit search by Advertiser ID. Login in account LinkShare and follow: "
3227
- "PROGRAMS -> My Advertisers -> Choose advertiser -> Advertiser Info."
3228
-
3229
- #: application/modules/Linkshare/LinkshareConfig.php:71
3230
- msgid "Искать по всем слова - AND"
3231
- msgstr "Search across all words - AND"
3232
-
3233
- #: application/modules/Linkshare/LinkshareConfig.php:72
3234
- msgid "Любое из слов - OR"
3235
- msgstr "Any of word - OR"
3236
-
3237
- #: application/modules/Linkshare/LinkshareConfig.php:73
3238
- msgid "Точное вхождение - EXACT"
3239
- msgstr "Exactly compliance - EXACT"
3240
-
3241
- #: application/modules/Linkshare/LinkshareConfig.php:105
3242
- msgid ""
3243
- "Ограничить поиск по заданной категории. Каждый присоединенный продавец имеет "
3244
- "свои категории."
3245
- msgstr "Limit search by category. Each partner has own categories"
3246
-
3247
- #: application/modules/Linkshare/LinkshareModule.php:26
3248
- msgid ""
3249
- "Добавляет товары партнерской сети Rakuten Linkshare. Вы должны получить "
3250
- "аппрув в каждой программы отдельно."
3251
- msgstr ""
3252
- "Adds products from Rakuten Linkshare. You must have approval from each "
3253
- "program separately."
3254
-
3255
- #: application/modules/Market/MarketConfig.php:21
3256
- msgid ""
3257
- "Ключ для доступа к Яндекс Маркет API. Отправить запрос на получение можно <a "
3258
- "href=\"http://feedback2.yandex.ru/api-market-content/key/\">здесь</a>."
3259
- msgstr ""
3260
- "Access key to Yandex Market API. Send request to obtain is possible <a href="
3261
- "\"http://feedback2.yandex.ru/api-market-content/key/\">here<a/>."
3262
-
3263
- #: application/modules/Market/MarketConfig.php:35
3264
- #: application/modules/Zanox/ZanoxConfig.php:90
3265
- msgid "Регион"
3266
- msgstr "Region"
3267
-
3268
- #: application/modules/Market/MarketConfig.php:39
3269
- msgid "Россия"
3270
- msgstr "Russia"
3271
-
3272
- #: application/modules/Market/MarketConfig.php:40
3273
- msgid "Украина"
3274
- msgstr "Ukraine"
3275
-
3276
- #: application/modules/Market/MarketConfig.php:41
3277
- msgid "Казахстан"
3278
- msgstr "Kazakhstan"
3279
-
3280
- #: application/modules/Market/MarketConfig.php:42
3281
- msgid "Беларусь"
3282
- msgstr "Belarus"
3283
-
3284
- #: application/modules/Market/MarketConfig.php:80
3285
- msgid "Предложения"
3286
- msgstr "Offers"
3287
-
3288
- #: application/modules/Market/MarketConfig.php:81
3289
- msgid "Получить список предложений на модель."
3290
- msgstr "Get a list of the offers on the model"
3291
-
3292
- #: application/modules/Market/MarketConfig.php:87
3293
- msgid "Количество предложений"
3294
- msgstr "Number of offers"
3295
-
3296
- #: application/modules/Market/MarketConfig.php:97
3297
- msgid "Поле \"Количество предложений\" не может быть больше 30."
3298
- msgstr "The \"Number of offers\" can not be more than 30."
3299
-
3300
- #: application/modules/Market/MarketConfig.php:103
3301
- msgid "Отзывы"
3302
- msgstr "Reviews"
3303
-
3304
- #: application/modules/Market/MarketConfig.php:104
3305
- msgid "Получить отзывы о модели."
3306
- msgstr "Get review about the model."
3307
-
3308
- #: application/modules/Market/MarketConfig.php:110
3309
- #: application/modules/Ozon/OzonConfig.php:144
3310
- msgid "Количество отзывов"
3311
- msgstr "Number of reviews"
3312
-
3313
- #: application/modules/Market/MarketConfig.php:120
3314
- msgid "Поле \"Количество отзывов\" не может быть больше 30."
3315
- msgstr "The \"Number of reviews\" can not be more than 30."
3316
-
3317
- #: application/modules/Market/MarketConfig.php:126
3318
- #: application/modules/Ozon/OzonConfig.php:166
3319
- msgid "Сортировка отзывов"
3320
- msgstr "Sorting of reviews"
3321
-
3322
- #: application/modules/Market/MarketConfig.php:130
3323
- msgid "Сортировка по оценке пользователем модели"
3324
- msgstr "Sorting by user ratings models"
3325
-
3326
- #: application/modules/Market/MarketConfig.php:131
3327
- msgid "Сортировка по дате написания отзыва"
3328
- msgstr "Sorting by date of review"
3329
-
3330
- #: application/modules/Market/MarketConfig.php:132
3331
- msgid "Сортировка по полезности отзыва"
3332
- msgstr "Sorting by usefulness of review"
3333
-
3334
- #: application/modules/Market/MarketConfig.php:139
3335
- msgid "Размер отзывов в символах (0 - не обрезать)"
3336
- msgstr "Size of reviews in characters (0 - do not cut)"
3337
-
3338
- #: application/modules/Market/MarketModule.php:28
3339
- msgid "Добавляет товары из русскоязычного каталога Яндекс.Маркет"
3340
- msgstr "Add products from the Russian-speaking catalog of Yandex.Market"
3341
-
3342
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:21
3343
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:36
3344
- msgid "Следуйте: My Details -> Accout Details -> API Key"
3345
- msgstr "Follow: My Details -> Accout Details -> API Key"
3346
-
3347
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:44
3348
- msgid "Поле Private Key\" не может быть пустым."
3349
- msgstr "The field \"Private Key\" can not be empty"
3350
-
3351
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:59
3352
- #: application/modules/Shareasale/ShareasaleConfig.php:29
3353
- msgid "Поле \"Affiliate ID\" не может быть пустым."
3354
- msgstr "The field \"Affiliate ID\" can not be empty."
3355
-
3356
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:65
3357
- msgid "Agency"
3358
- msgstr "Agency"
3359
-
3360
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:88
3361
- msgid "Поле \"Currency\" не может быть пустым."
3362
- msgstr "The field \"Currency\" can not be empty"
3363
-
3364
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:104
3365
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:120
3366
- msgid "Поле \"Результатов\" не может быть больше 500."
3367
- msgstr "The field \"Results\" can not be more than 500."
3368
-
3369
- #: application/modules/Optimisemedia/OptimisemediaModule.php:27
3370
- msgid "Добавляет товары партнерской сети Optimise Network."
3371
- msgstr "Module adds products from Optimise Network."
3372
-
3373
- #: application/modules/Ozon/OzonConfig.php:20
3374
- msgid "Партнерский идентификатор"
3375
- msgstr "Partner ID"
3376
-
3377
- #: application/modules/Ozon/OzonConfig.php:21
3378
- msgid ""
3379
- "Укажите, если хотите посылать трафик на \"родную\" партнерскую программу "
3380
- "ozon. Найти идентификатор можно <a href=\"https://www.ozon.ru/?"
3381
- "context=partner_data\">здесь</a>."
3382
- msgstr ""
3383
- "Укажите, если хотите посылать трафик на \"родную\" партнерскую программу "
3384
- "ozon. Найти идентификатор можно <a href=\"https://www.ozon.ru/?"
3385
- "context=partner_data\">здесь</a>."
3386
-
3387
- #: application/modules/Ozon/OzonConfig.php:30
3388
- msgid "Deeplink"
3389
- msgstr "Deeplink"
3390
-
3391
- #: application/modules/Ozon/OzonConfig.php:31
3392
- msgid ""
3393
- "Deeplink одной из CPA-сетей с поддержкой ozon. Укажите, если хотите посылать "
3394
- "трафик через CPA-сеть."
3395
- msgstr ""
3396
- "Deeplink одной из CPA-сетей с поддержкой ozon. Укажите, если хотите посылать "
3397
- "трафик через CPA-сеть."
3398
-
3399
- #: application/modules/Ozon/OzonConfig.php:67
3400
- msgid "Обратная релевантность"
3401
- msgstr "Return relevance"
3402
-
3403
- #: application/modules/Ozon/OzonConfig.php:68
3404
- msgid "Ozon Special По умолчанию"
3405
- msgstr "Ozon Special Default"
3406
-
3407
- #: application/modules/Ozon/OzonConfig.php:69
3408
- msgid "Ozon Special Имя"
3409
- msgstr "Ozon Special Имя"
3410
-
3411
- #: application/modules/Ozon/OzonConfig.php:70
3412
- msgid "Ozon Special Бестселлеры"
3413
- msgstr "Ozon Special Бестселлеры"
3414
-
3415
- #: application/modules/Ozon/OzonConfig.php:71
3416
- msgid "Ozon Special Рейтинг"
3417
- msgstr "Ozon Special Rating"
3418
-
3419
- #: application/modules/Ozon/OzonConfig.php:72
3420
- msgid "Ozon Special Год выхода"
3421
- msgstr "Ozon Special Год выхода"
3422
-
3423
- #: application/modules/Ozon/OzonConfig.php:73
3424
- msgid "Ozon Special Цена"
3425
- msgstr "Ozon Special Цена"
3426
-
3427
- #: application/modules/Ozon/OzonConfig.php:74
3428
- msgid "Доступность"
3429
- msgstr "Availability"
3430
-
3431
- #: application/modules/Ozon/OzonConfig.php:75
3432
- msgid "Обратная доступность"
3433
- msgstr "Revert availability"
3434
-
3435
- #: application/modules/Ozon/OzonConfig.php:76
3436
- msgid "Год"
3437
- msgstr "Year"
3438
-
3439
- #: application/modules/Ozon/OzonConfig.php:77
3440
- msgid "Год в обратном порядке"
3441
- msgstr "Year in backward sorting"
3442
-
3443
- #: application/modules/Ozon/OzonConfig.php:79
3444
- msgid "Тип в обратном порядке"
3445
- msgstr "Type in backward sorting"
3446
-
3447
- #: application/modules/Ozon/OzonConfig.php:80
3448
- msgid "Увеличение цены"
3449
- msgstr "Price ascending"
3450
-
3451
- #: application/modules/Ozon/OzonConfig.php:81
3452
- msgid "Уменьшение цены"
3453
- msgstr "Price descending"
3454
-
3455
- #: application/modules/Ozon/OzonConfig.php:83
3456
- msgid "Название в обратном порядке"
3457
- msgstr "Name in backward sorting"
3458
-
3459
- #: application/modules/Ozon/OzonConfig.php:84
3460
- msgid "Автор"
3461
- msgstr "Author"
3462
-
3463
- #: application/modules/Ozon/OzonConfig.php:85
3464
- msgid "Автор в обратном порядке"
3465
- msgstr "Author in backward sorting"
3466
-
3467
- #: application/modules/Ozon/OzonConfig.php:96
3468
- msgid "Детям и мамам"
3469
- msgstr "For kids"
3470
-
3471
- #: application/modules/Ozon/OzonConfig.php:98
3472
- msgid "Электроника"
3473
- msgstr "Electronic"
3474
-
3475
- #: application/modules/Ozon/OzonConfig.php:100
3476
- msgid "Софт и игры"
3477
- msgstr "Games and soft"
3478
-
3479
- #: application/modules/Ozon/OzonConfig.php:101
3480
- msgid "DVD и Blu-ray"
3481
- msgstr "DVD and Blu-ray"
3482
-
3483
- #: application/modules/Ozon/OzonConfig.php:103
3484
- msgid "Дом, сад, зоотовары"
3485
- msgstr "House, garden, zoo products"
3486
-
3487
- #: application/modules/Ozon/OzonConfig.php:104
3488
- msgid "Спорт и отдых"
3489
- msgstr "Sport"
3490
-
3491
- #: application/modules/Ozon/OzonConfig.php:105
3492
- msgid "Красота и здоровье"
3493
- msgstr "Beauty and health"
3494
-
3495
- #: application/modules/Ozon/OzonConfig.php:106
3496
- msgid "Одежда, обувь, аксессуары"
3497
- msgstr "Clothes"
3498
-
3499
- #: application/modules/Ozon/OzonConfig.php:107
3500
- msgid "Подарки и сувениры"
3501
- msgstr "Gifts"
3502
-
3503
- #: application/modules/Ozon/OzonConfig.php:108
3504
- msgid "Антиквариат, винтаж, искусство"
3505
- msgstr "Antiques, vintage, art"
3506
-
3507
- #: application/modules/Ozon/OzonConfig.php:114
3508
- msgid "Характеристики"
3509
- msgstr "Description"
3510
-
3511
- #: application/modules/Ozon/OzonConfig.php:115
3512
- msgid "Парсить характеристики товаров (максимум для 3-х товаров)."
3513
- msgstr "Parse description of products (maximum for 3 products)"
3514
-
3515
- #: application/modules/Ozon/OzonConfig.php:122
3516
- msgid "Парсить отзывы покупателей."
3517
- msgstr "Parse Customer reviews"
3518
-
3519
- #: application/modules/Ozon/OzonConfig.php:128
3520
- msgid "Количество товаров с отзывами"
3521
- msgstr "Number of products with reviews"
3522
-
3523
- #: application/modules/Ozon/OzonConfig.php:129
3524
- msgid "Парсить отзывы только для заданного количества товаров. Максимум - 3."
3525
- msgstr "Parse reviews only for a certain amount of products. Max - 3."
3526
-
3527
- #: application/modules/Ozon/OzonConfig.php:138
3528
- msgid "Поле \"Количество товаров с отзывами\" не может быть больше 3."
3529
- msgstr "The \"Number of products with reviews\" can not be more than 3."
3530
-
3531
- #: application/modules/Ozon/OzonConfig.php:145
3532
- msgid "Сколько отзывов парсить для одного товара."
3533
- msgstr "Number of reviews for a single product."
3534
-
3535
- #: application/modules/Ozon/OzonConfig.php:156
3536
- msgid "Размер отзыва в символах (0 - не обрезать)"
3537
- msgstr "Size of reviews in characters (0 - do not cut)"
3538
-
3539
- #: application/modules/Ozon/OzonConfig.php:170
3540
- msgid "Полезность"
3541
- msgstr "Useful"
3542
-
3543
- #: application/modules/Ozon/OzonConfig.php:171
3544
- msgid "Дата публикации"
3545
- msgstr "Date of publication"
3546
-
3547
- #: application/modules/Ozon/OzonConfig.php:172
3548
- #: application/modules/Youtube/YoutubeConfig.php:62
3549
- #: application/modules/Youtube/views/search_panel.php:9
3550
- msgid "Рейтинг"
3551
- msgstr "Rating"
3552
-
3553
- #: application/modules/Ozon/OzonModule.php:26
3554
- msgid "Добавляет товары OZON.ru"
3555
- msgstr "Adds goods from OZON.ru."
3556
-
3557
- #: application/modules/PayTM/PayTMConfig.php:21
3558
- msgid ""
3559
- "Deeplink одной из CPA-сетей с поддержкой PayTM. Обязательно указывайте этот "
3560
- "параметр, чтобы получать партнерское вознаграждение."
3561
- msgstr ""
3562
- "Deeplink from any of CPA-network with support of PayTM. Set this parameter "
3563
- "if you want to have commissions."
3564
-
3565
- #: application/modules/PayTM/PayTMConfig.php:53
3566
- msgid ""
3567
- "Искать только в указаной категории. Параметр category можно найти в URL на "
3568
- "сайте paytm при использовании поиска по категории."
3569
- msgstr ""
3570
- "Limit search by category. You can find category parameter in url on paytm."
3571
- "com when you use search by category"
3572
-
3573
- #: application/modules/PayTM/PayTMConfig.php:63
3574
- msgid "Только товары в наличии."
3575
- msgstr "Only products which are in stock"
3576
-
3577
- #: application/modules/PayTM/PayTMModule.php:24
3578
- msgid "Добавляет товары paytm.com"
3579
- msgstr "Adds items from paytm.com"
3580
-
3581
- #: application/modules/Pixabay/PixabayConfig.php:21
3582
- msgid ""
3583
- "Ключ доступа к Pixabay API. Найти можно <a href=\"https://pixabay.com/api/"
3584
- "docs/\">здесь</a> (сначала залогиньтесь в свой аккаунт pixabay)."
3585
- msgstr ""
3586
- "Key access to Pixabay API. You can get <a href=\"https://pixabay.com/api/"
3587
- "docs/\">here</a> (you need to have account)."
3588
-
3589
- #: application/modules/Pixabay/PixabayConfig.php:29
3590
- msgid "Поле \"Key\" не может быть пустым."
3591
- msgstr "The \"Key\" can not be empty"
3592
-
3593
- #: application/modules/Pixabay/PixabayConfig.php:45
3594
- msgid "Поле \"Результатов\" не может быть больше 200."
3595
- msgstr "Field \"Results\" can not be more than 200."
3596
-
3597
- #: application/modules/Pixabay/PixabayConfig.php:61
3598
- msgid "Поле \"Результатов для автоблоггинга\" не может быть больше 200."
3599
- msgstr "Field \"Results for autoblogging\" can not be more than 200."
3600
-
3601
- #: application/modules/Pixabay/PixabayConfig.php:68
3602
- msgid "Размер изображения по высоте."
3603
- msgstr "Height size of image"
3604
-
3605
- #: application/modules/Pixabay/PixabayConfig.php:81
3606
- msgid "Тип изображения"
3607
- msgstr "Type of image"
3608
-
3609
- #: application/modules/Pixabay/PixabayConfig.php:95
3610
- msgid "Ориентация"
3611
- msgstr "Orientation"
3612
-
3613
- #: application/modules/Pixabay/PixabayConfig.php:139
3614
- msgid "Выбор редактора"
3615
- msgstr "Choose editor"
3616
-
3617
- #: application/modules/Pixabay/PixabayConfig.php:140
3618
- msgid "Select images that have received an Editor's Choice award."
3619
- msgstr "Select images that have received an Editor's Choice award."
3620
-
3621
- #: application/modules/Pixabay/PixabayConfig.php:147
3622
- msgid ""
3623
- "A flag indicating that only images suitable for all ages should be returned."
3624
- msgstr ""
3625
- "A flag indicating that only images suitable for all ages should be returned."
3626
-
3627
- #: application/modules/Pixabay/PixabayConfig.php:166
3628
- msgid ""
3629
- "Сохранять картинки на сервер. Hotlinking не разрешен правилами pixabay API. "
3630
- "Ссылки на картинки pixabay будут валидны 24 часа."
3631
- msgstr ""
3632
- "Save images to your server. Hotlinking is prohibited by Pixabay. If you "
3633
- "don't save images to your server, external pixabay links will be valid only "
3634
- "24 hours."
3635
-
3636
- #: application/modules/Pixabay/PixabayModule.php:24
3637
- msgid ""
3638
- "Поиск фотографий и иллюстраций со свободной лицензией CC0 Public Domain на "
3639
- "pixabay.com."
3640
- msgstr "Search photo with free license CC0 Public Domain on pixabay.com"
3641
-
3642
- #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:45
3643
- msgid "Поле \"Результатов\" не может быть больше 5ы0."
3644
- msgstr "The field \"Results\" can not be more than 50."
3645
-
3646
- #: application/modules/RelatedKeywords/RelatedKeywordsModule.php:26
3647
- msgid "Находит родственные ключевые слова и выводит их в посте."
3648
- msgstr "Finds relative keywords and shows them in post."
3649
-
3650
- #: application/modules/RssFetcher/RssFetcherConfig.php:21
3651
- msgid ""
3652
- "Для подстановки текущего ключевого слова используйте <em>%KEYWORD%</em>."
3653
- msgstr "For getting current keyword use <em>%KEYWORD%</em>."
3654
-
3655
- #: application/modules/RssFetcher/RssFetcherConfig.php:29
3656
- msgid "Поле \"RSS URL\" не может быть пустым."
3657
- msgstr "Field \"RSS URL\" can not be empty"
3658
-
3659
- #: application/modules/RssFetcher/RssFetcherConfig.php:67
3660
- msgid "Разрешенные теги"
3661
- msgstr "Allowed tags"
3662
-
3663
- #: application/modules/RssFetcher/RssFetcherConfig.php:68
3664
- msgid "Теги, которые разрешены в title и description."
3665
- msgstr "Tags, which are allowed in title and description"
3666
-
3667
- #: application/modules/RssFetcher/RssFetcherModule.php:25
3668
- msgid "Парсит любую RSS-ленту."
3669
- msgstr "Parse any RSS"
3670
-
3671
- #: application/modules/RssFetcher/RssFetcherModule.php:26
3672
- msgid ""
3673
- "Важно, чтобы в URL была возможность использовать ключевое слово, т.е. лента "
3674
- "должна содержать результаты поиска по ключевому слову."
3675
- msgstr ""
3676
- "It's important, that you can have keyword in URL. So rss string must have "
3677
- "results by keyword searching."
3678
-
3679
- #: application/modules/Shareasale/ShareasaleConfig.php:21
3680
- msgid "Ваш Affiliate ID."
3681
- msgstr "Your Affiliate ID."
3682
-
3683
- #: application/modules/Shareasale/ShareasaleConfig.php:36
3684
- msgid ""
3685
- "Token в комбинации с IP адресом используется для версификации запросов к "
3686
- "API. Найти можно <a target=\"_blank\" href=\"https://account.shareasale.com/"
3687
- "a-apimanager.cfm\">здесь</a>."
3688
- msgstr ""
3689
- "Token and IP address will be used for verification of API requests. You can "
3690
- "get it <a target=\"_blank\" href=\"https://account.shareasale.com/a-"
3691
- "apimanager.cfm\">here</a>."
3692
-
3693
- #: application/modules/Shareasale/ShareasaleConfig.php:51
3694
- msgid ""
3695
- "Secret Key для доступа к API. Найти можно <a target=\"_blank\" href="
3696
- "\"https://account.shareasale.com/a-apimanager.cfm\">здесь</a>."
3697
- msgstr ""
3698
- "Special key to access API. You can get it <a target=\"_blank\" href="
3699
- "\"https://account.shareasale.com/a-apimanager.cfm\">here</a>."
3700
-
3701
- #: application/modules/Shareasale/ShareasaleConfig.php:59
3702
- msgid "Поле \"Secret Key\" не может быть пустым."
3703
- msgstr "The \"Secret Access Key\" can not be empty."
3704
-
3705
- #: application/modules/Shareasale/ShareasaleConfig.php:88
3706
- msgid "Вернуть продукты только этого мерчанта."
3707
- msgstr "Return products only from this merchant"
3708
-
3709
- #: application/modules/Shareasale/ShareasaleConfig.php:97
3710
- msgid "Исключить мерчанта"
3711
- msgstr "Exclude merchant"
3712
-
3713
- #: application/modules/Shareasale/ShareasaleConfig.php:98
3714
- msgid "Задайте ID мерчанта, товары которого необходимо исключить из поиска."
3715
- msgstr "Set Merchant ID which you want to exclude from search"
3716
-
3717
- #: application/modules/Shareasale/ShareasaleModule.php:26
3718
- msgid ""
3719
- "Добавляет товары партнерской сети Shareasale.com. Вы должны получить аппрув "
3720
- "от каждой программы отдельно."
3721
- msgstr ""
3722
- "Adds products from Shareasale.com. You must have approval from each program "
3723
- "separately."
3724
-
3725
- #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:21
3726
- msgid ""
3727
- "Ключ для доступа к Tradedoubler Coupons API. Найти можно <a href=\"https://"
3728
- "login.tradedoubler.com/publisher/aManageTokens.action\">здесь</a>."
3729
- msgstr ""
3730
- "Access key for Tradedoubler Coupons API. You can get it <a href=\"https://"
3731
- "login.tradedoubler.com/publisher/aManageTokens.action\">here</a>."
3732
-
3733
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:21
3734
- msgid ""
3735
- "Ключ для доступа к Tradedoubler Products API. Найти можно <a href=\"https://"
3736
- "login.tradedoubler.com/publisher/aManageTokens.action\">здесь</a>."
3737
- msgstr ""
3738
- "Access key for Tradedoubler Products API. You can get it <a href=\"https://"
3739
- "login.tradedoubler.com/publisher/aManageTokens.action\">here</a>."
3740
-
3741
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:92
3742
- msgid "Feed ID"
3743
- msgstr "Feed ID"
3744
-
3745
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:93
3746
- msgid "Вы можете задать несколько Feed IDs через запятую."
3747
- msgstr "You can set several Feed IDs with commas"
3748
-
3749
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:94
3750
- msgid ""
3751
- "Список ваших фидов можно найти <a href=\"http://api.tradedoubler.com/1.0/"
3752
- "productFeeds;pretty=true?token={token}\">здесь</a> (замените в URL {token} "
3753
- "на ваш Token)."
3754
- msgstr ""
3755
- "You can find list of your feeds <a href=\"http://api.tradedoubler.com/1.0/"
3756
- "productFeeds;pretty=true?token={token}\">here</a> (change in URL {token} to "
3757
- "your Token)."
3758
-
3759
- #: application/modules/TradedoublerProducts/TradedoublerProductsModule.php:26
3760
- msgid ""
3761
- "Добавляет товары партнерской сети Tradedoubler. Вы должны получить аппрув в "
3762
- "каждой программы отдельно."
3763
- msgstr ""
3764
- "Module adds products from Tradedoubler. You must have approval from each "
3765
- "program separately."
3766
-
3767
- #: application/modules/Twitter/TwitterConfig.php:21
3768
- #: application/modules/Twitter/TwitterConfig.php:36
3769
- #: application/modules/Twitter/TwitterConfig.php:51
3770
- #: application/modules/Twitter/TwitterConfig.php:66
3771
- msgid "Получить можно <a href=\"https://dev.twitter.com/apps/\">здесь</a>."
3772
- msgstr "Can get <a href=\"https://dev.twitter.com/apps/\">here<a/>."
3773
-
3774
- #: application/modules/Twitter/TwitterConfig.php:106
3775
- msgid "Поле \"Результатов для автоблоггинга\" не может быть больше 100."
3776
- msgstr "Field \"Results for autoblogging\" can not be more than 100."
3777
-
3778
- #: application/modules/Twitter/TwitterConfig.php:116
3779
- #: application/modules/Twitter/views/search_panel.php:2
3780
- msgid "Новые"
3781
- msgstr "New"
3782
-
3783
- #: application/modules/Twitter/TwitterConfig.php:117
3784
- #: application/modules/Twitter/views/search_panel.php:3
3785
- msgid "Популярные"
3786
- msgstr "Popular"
3787
-
3788
- #: application/modules/Twitter/TwitterConfig.php:118
3789
- #: application/modules/Twitter/views/search_panel.php:4
3790
- msgid "Микс"
3791
- msgstr "Mix"
3792
-
3793
- #: application/modules/VkNews/VkNewsModule.php:25
3794
- msgid "Добавляет новости из русскоязычной социальной сети vk.com"
3795
- msgstr "Adds news from Russian-language social network vk.com"
3796
-
3797
- #: application/modules/Youtube/YoutubeConfig.php:61
3798
- #: application/modules/Youtube/views/search_panel.php:8
3799
- msgid "Дата"
3800
- msgstr "Date"
3801
-
3802
- #: application/modules/Youtube/YoutubeConfig.php:65
3803
- #: application/modules/Youtube/views/search_panel.php:12
3804
- msgid "Просмотры"
3805
- msgstr "Views"
3806
-
3807
- #: application/modules/Youtube/YoutubeConfig.php:73
3808
- msgid ""
3809
- "Многие видео на Youtube загружены с лицензией Creative Commons. <a href="
3810
- "\"http://www.google.com/support/youtube/bin/answer.py?"
3811
- "answer=1284989\">Узнать больше</a>."
3812
- msgstr ""
3813
- "Many videos on Youtube have Creative Commons license. <a href=\"http://www."
3814
- "google.com/support/youtube/bin/answer.py?answer=1284989\">Know more</a>."
3815
-
3816
- #: application/modules/Youtube/YoutubeConfig.php:77
3817
- msgid "Сreative Сommons лицензия"
3818
- msgstr "Creative Commons license"
3819
-
3820
- #: application/modules/Youtube/YoutubeConfig.php:78
3821
- #: application/modules/Youtube/views/search_panel.php:4
3822
- msgid "Стандартная лицензия"
3823
- msgstr "Standard license"
3824
-
3825
- #: application/modules/Youtube/views/search_panel.php:3
3826
- msgid "Сreative Сommons"
3827
- msgstr "Creative Commons"
3828
-
3829
- #: application/modules/Zanox/ZanoxConfig.php:22
3830
- msgid ""
3831
- "Специальный ключ для доступа к Zanox API, а также ваша связь с партнерской "
3832
- "программой."
3833
- msgstr ""
3834
- "Special key for Zanox API, also this is your connection with the partner "
3835
- "program."
3836
-
3837
- #: application/modules/Zanox/ZanoxConfig.php:30
3838
- msgid "Поле \"Connect ID\" не может быть пустым."
3839
- msgstr "The field \"Connect ID\" can not be empty."
3840
-
3841
- #: application/modules/Zanox/ZanoxConfig.php:37
3842
- msgid "Вернуть партнерские ссылки для этого ad space."
3843
- msgstr "Return partnership links for this ad space"
3844
-
3845
- #: application/modules/Zanox/ZanoxConfig.php:78
3846
- msgid "Тип поиска"
3847
- msgstr "Search type"
3848
-
3849
- #: application/modules/Zanox/ZanoxConfig.php:79
3850
- msgid ""
3851
- "\"Автоматически\" означает, что тип поиска будет выбран в зависимости от "
3852
- "длины поисковой фразы."
3853
- msgstr ""
3854
- "\"Automatically\" means, that searching type will be chosen depending on "
3855
- "length of the search phrase."
3856
-
3857
- #: application/modules/Zanox/ZanoxConfig.php:82
3858
- msgid "Автоматически"
3859
- msgstr "Automatically"
3860
-
3861
- #: application/modules/Zanox/ZanoxConfig.php:83
3862
- msgid "Фраза"
3863
- msgstr "Phrase"
3864
-
3865
- #: application/modules/Zanox/ZanoxConfig.php:84
3866
- msgid "Контекстный"
3867
- msgstr "Context"
3868
-
3869
- #: application/modules/Zanox/ZanoxConfig.php:91
3870
- msgid "Ограничить результаты поиска выбранным регионом."
3871
- msgstr "Limit the search of goods by this region."
3872
-
3873
- #: application/modules/Zanox/ZanoxConfig.php:94
3874
- msgid "Любой регион"
3875
- msgstr "Any region"
3876
-
3877
- #: application/modules/Zanox/ZanoxConfig.php:121
3878
- msgid "ID программы"
3879
- msgstr "Id of program"
3880
-
3881
- #: application/modules/Zanox/ZanoxConfig.php:122
3882
- msgid ""
3883
- "Ограничить результаты поиска конкретной программой. Вы можете указать "
3884
- "несколько ID через запятую. Например: \"1234\", \"1234,5678,9123\". Если не "
3885
- "указано, поиск будет произведен по всем вашим подключенным программам."
3886
- msgstr ""
3887
- "Limit search results to the specific program. You can specify several ID "
3888
- "through a comma. For example: \"1234 \", \"1234,5678,9123 \". If it isn't "
3889
- "specified, search will be run for all your connected programs."
3890
-
3891
- #: application/modules/Zanox/ZanoxConfig.php:142
3892
- msgid "Партнерство"
3893
- msgstr "Partnership"
3894
-
3895
- #: application/modules/Zanox/ZanoxConfig.php:143
3896
- msgid ""
3897
- "Если выбрано \"Все\", партнерские ссылки не будут включены в результат. "
3898
- "Используйте только для оценки доступных товаров."
3899
- msgstr ""
3900
- "If you choose \"All \", partner links won't be included in result. Use only "
3901
- "for an assessment of available products."
3902
-
3903
- #: application/modules/Zanox/ZanoxConfig.php:147
3904
- msgid "Подтвержденные"
3905
- msgstr "Approved"
3906
-
3907
- #: application/modules/Zanox/ZanoxModule.php:27
3908
- msgid ""
3909
- "Добавляет товары партнерской сети zanox.com. Вы должны получить аппрув от "
3910
- "каждой программы отдельно."
3911
- msgstr ""
3912
- "Adds products from zanox.com. You must have approval from each program "
3913
- "separately."
3914
-
3915
- #: application/templates/blocks/price_history.php:41
3916
- msgid "Since"
3917
- msgstr "Since"
3918
-
3919
- #. Plugin Name of the plugin/theme
3920
- msgid "Content Egg"
3921
- msgstr "Content Egg"
3922
-
3923
- #. Plugin URI of the plugin/theme
3924
- msgid "http://www.keywordrush.com/contentegg"
3925
- msgstr "http://www.keywordrush.com/en/contentegg"
3926
-
3927
- #. Description of the plugin/theme
3928
- msgid ""
3929
- "Easily adding auto updating products from affiliate systems and additional "
3930
- "content to posts."
3931
- msgstr ""
3932
- "Easily adding auto updating products from affiliate systems and additional "
3933
- "content to posts."
3934
-
3935
- #. Author of the plugin/theme
3936
- msgid "keywordrush.com"
3937
- msgstr "keywordrush.com"
3938
-
3939
- #. Author URI of the plugin/theme
3940
- msgid "http://www.keywordrush.com"
3941
- msgstr "http://www.keywordrush.com/en"
3942
-
3943
- #~ msgid "Фото: %s на Flickr"
3944
- #~ msgstr "Photo: %s on Flickr"
3945
-
3946
- #~ msgid ""
3947
- #~ "Ключ лицензии не принят. Убедитесь, что вы используйте действительный "
3948
- #~ "ключ. Если вы верите, что произошла ошибка, пожалуйста, обратитесь в <a "
3949
- #~ "href=\"http://www.keywordrush.com/contact\">поддержку</a> плагина."
3950
- #~ msgstr ""
3951
- #~ "The license key is not accepted. Make sure you use a valid key. If you "
3952
- #~ "believe this is an error, please contact the <a href=\"http://www."
3953
- #~ "keywordrush.com/contact\">support</a> of plugin."
3954
-
3955
- #~ msgid "Монетизация:"
3956
- #~ msgstr "Monetization"
3957
-
3958
- #~ msgid "Контент модули:"
3959
- #~ msgstr "Content modules"
3960
-
3961
- #~ msgid "Bing картинки"
3962
- #~ msgstr "Bing images"
3963
-
3964
- #~ msgid "Flickr фотографии"
3965
- #~ msgstr "Flickr Photo"
3966
-
3967
- #~ msgid "Google книги"
3968
- #~ msgstr "Google Books"
3969
-
3970
- #~ msgid "Google новости"
3971
- #~ msgstr "Google news"
3972
-
3973
- #~ msgid "ВКонтакте новости"
3974
- #~ msgstr "Vkontakte news"
3975
-
3976
- #~ msgid "Парсить отзывы"
3977
- #~ msgstr "Parse reviews"
3978
-
3979
- #~ msgid ""
3980
- #~ "Парсить отзывы покупателей по товарам. Это замедляет получение данных."
3981
- #~ msgstr ""
3982
- #~ "Parse customers reviews of products. This slows the receiving of data."
3983
-
3984
- #~ msgid "Отзывы в iframe."
3985
- #~ msgstr "Reviews in iframe."
3986
-
3987
- #~ msgid "Товар с отзывами"
3988
- #~ msgstr "Products with reviews"
3989
-
3990
- #~ msgid "All reviews on Yandex.Market"
3991
- #~ msgstr "All reviews on Yandex.Market"
3992
-
3993
- #~ msgid ""
3994
- #~ "Plugin for adding additional content for your posts. Let you to earn "
3995
- #~ "money from affiliate programs."
3996
- #~ msgstr ""
3997
- #~ "Plugin for adding additional content for your posts. Let you to earn "
3998
- #~ "money from affiliate programs."
3999
-
4000
- #~ msgid ""
4001
- #~ "Вы используете Wordpress %s. <em>%s</em> требует минимум "
4002
- #~ "<strong>Wordpress %s</strong>."
4003
- #~ msgstr ""
4004
- #~ "You are using Wordpress %s. <em>%s</em> requires at least "
4005
- #~ "<strong>Wordpress %s</strong>."
4006
-
4007
- #~ msgid ""
4008
- #~ "На вашем сервере установлен PHP %s. <em>%s</em> требует минимум "
4009
- #~ "<strong>PHP %s</strong>."
4010
- #~ msgstr ""
4011
- #~ "PHP is installed on your server %s. <em>%s</em> requires at least "
4012
- #~ "<strong>PHP %s</strong>."
4013
-
4014
- #~ msgid "Требуется расширение <strong>%s</strong>."
4015
- #~ msgstr "Requires extension <strong>%s</strong>."
4016
-
4017
- #~ msgid "Множество дополнительных модулей и расширенный функционал."
4018
- #~ msgstr "Many additional modules and extended functions."
4019
-
4020
- #~ msgid "Узнать больше..."
4021
- #~ msgstr "Read more..."
4022
-
4023
- #~ msgid "Сетка"
4024
- #~ msgstr "Grid"
4025
-
4026
- #~ msgid "Список"
4027
- #~ msgstr "List"
4028
-
4029
- #~ msgid "Галерея"
4030
- #~ msgstr "Gallery"
4031
-
4032
- #~ msgid "Простой"
4033
- #~ msgstr "Simple"
4034
-
4035
- #~ msgid "Источник: %s"
4036
- #~ msgstr "Source: %s"
4037
-
4038
- #~ msgid "Фото %s на Flickr"
4039
- #~ msgstr "Photo %s on Flickr"
4040
-
4041
- #~ msgid "Источник:"
4042
- #~ msgstr "Source:"
4043
-
4044
- #~ msgid "Отзывов:"
4045
- #~ msgstr "Reviews:"
4046
-
4047
- #~ msgid "бесплатно"
4048
- #~ msgstr "free"
4049
-
4050
- #~ msgid "Недостатки:"
4051
- #~ msgstr "Disadvantages:"
4052
-
4053
- #~ msgid "Комментарий:"
4054
- #~ msgstr "Comment:"
4055
-
4056
- #~ msgid "Широкий"
4057
- #~ msgstr "Wide"
4058
-
4059
- #~ msgid "Плитка"
4060
- #~ msgstr "Tile"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/languages/content-egg.pot DELETED
@@ -1,3400 +0,0 @@
1
- # Copyright (C) 2016 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 2.8.0\n"
6
- "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg\n"
7
- "POT-Creation-Date: 2016-10-25 15:44: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"
11
- "PO-Revision-Date: 2016-MO-DA HO:MI+ZONE\n"
12
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
- "Language-Team: LANGUAGE <LL@li.org>\n"
14
-
15
- #: application/Autoupdate.php:83
16
- msgid "Новая версия"
17
- msgstr ""
18
-
19
- #: application/admin/AdminNotice.php:23
20
- msgid "Задание автоблоггинга сохранено."
21
- msgstr ""
22
-
23
- #: application/admin/AdminNotice.php:23 application/admin/AutoblogTable.php:54
24
- msgid "Запустить сейчас"
25
- msgstr ""
26
-
27
- #: application/admin/AdminNotice.php:24
28
- msgid "При сохранении задания автоблоггинга возникла ошибка."
29
- msgstr ""
30
-
31
- #: application/admin/AdminNotice.php:25
32
- msgid "Ошибка при обработке файла с ключевыми словами."
33
- msgstr ""
34
-
35
- #: application/admin/AdminNotice.php:26
36
- msgid "Заданий автоблоггинга сохранено:"
37
- msgstr ""
38
-
39
- #: application/admin/AdminNotice.php:27
40
- msgid "Лицензия не может быть откреплена. Обратитесь в поддержку плагина."
41
- msgstr ""
42
-
43
- #: application/admin/AdminNotice.php:28
44
- msgid "Лицензия была откреплена. Вы должны деактивировать и удалить плагин с текущего домена."
45
- msgstr ""
46
-
47
- #: application/admin/AeIntegrationConfig.php:31
48
- msgid "AE интеграция"
49
- msgstr ""
50
-
51
- #: application/admin/AeIntegrationConfig.php:42
52
- msgid "Активировать модули"
53
- msgstr ""
54
-
55
- #: application/admin/AutoblogController.php:75
56
- #: application/admin/views/autoblog_index.php:37
57
- msgid "Автоблоггинг"
58
- msgstr ""
59
-
60
- #: application/admin/AutoblogController.php:76
61
- #: application/admin/views/autoblog_edit.php:9
62
- #: application/admin/views/autoblog_index.php:38
63
- msgid "Добавить автоблоггинг"
64
- msgstr ""
65
-
66
- #: application/admin/AutoblogController.php:77
67
- msgid "Добавить автоблоггинг - пакетный режим"
68
- msgstr ""
69
-
70
- #: application/admin/AutoblogController.php:193
71
- msgid "Автоблоггинг не найден"
72
- msgstr ""
73
-
74
- #: application/admin/AutoblogTable.php:47
75
- msgid "(без названия)"
76
- msgstr ""
77
-
78
- #: application/admin/AutoblogTable.php:53
79
- #: application/admin/AutoblogTable.php:58
80
- msgid "Редактировать"
81
- msgstr ""
82
-
83
- #: application/admin/AutoblogTable.php:55
84
- msgid "Дублировать"
85
- msgstr ""
86
-
87
- #: application/admin/AutoblogTable.php:56 application/admin/MyListTable.php:165
88
- #: application/admin/views/_metabox_results.php:14
89
- msgid "Удалить"
90
- msgstr ""
91
-
92
- #: application/admin/AutoblogTable.php:65
93
- #: application/admin/views/_metabox_autoblog.php:24
94
- msgid "Работает"
95
- msgstr ""
96
-
97
- #: application/admin/AutoblogTable.php:67
98
- #: application/admin/views/_metabox_autoblog.php:25
99
- msgid "Остановлен"
100
- msgstr ""
101
-
102
- #: application/admin/AutoblogTable.php:81
103
- msgid "активных:"
104
- msgstr ""
105
-
106
- #: application/admin/AutoblogTable.php:81
107
- msgid "всего:"
108
- msgstr ""
109
-
110
- #: application/admin/EggMetabox.php:76
111
- msgid "Настройте и активируйте модули Content Egg плагин."
112
- msgstr ""
113
-
114
- #: application/admin/EnvatoConfig.php:27
115
- msgid "На этот Email будет закреплена ваша лицензия на плагин. После активации, вы получите письмо с данными для входа в <a target=\"_blank\" href=\"http://www.keywordrush.com/panel\">панель пользователя</a>, где сможете управлять своими лицензиями."
116
- msgstr ""
117
-
118
- #: application/admin/EnvatoConfig.php:34 application/admin/EnvatoConfig.php:52
119
- msgid "Поле \"%s\" не может быть пустым."
120
- msgstr ""
121
-
122
- #: application/admin/EnvatoConfig.php:38 application/admin/EnvatoConfig.php:56
123
- msgid "Поле \"%s\" введено неверно."
124
- msgstr ""
125
-
126
- #: application/admin/EnvatoConfig.php:45
127
- msgid "Введите ваш Purchase code для плагина. Если вы приобрели плагин в комплекте с темой, введите Purchase code темы. <a target=\"_blank\" href=\"https://help.market.envato.com/hc/en-us/articles/202822600-Where-Is-My-Purchase-Code-\">Где найти?</a>"
128
- msgstr ""
129
-
130
- #: application/admin/EnvatoConfig.php:60
131
- msgid "Плагин не может быть активирован."
132
- msgstr ""
133
-
134
- #: application/admin/EnvatoConfig.php:65
135
- msgid "Новости проекта на email"
136
- msgstr ""
137
-
138
- #: application/admin/EnvatoConfig.php:66
139
- msgid "Очень редко мы можем отослать вам письмо с важными изменениями в работе плагина или новости проекта."
140
- msgstr ""
141
-
142
- #: application/admin/EnvatoConfig.php:72
143
- msgid "Error."
144
- msgstr ""
145
-
146
- #: application/admin/GeneralConfig.php:31 application/admin/PluginAdmin.php:91
147
- msgid "Настройки"
148
- msgstr ""
149
-
150
- #: application/admin/GeneralConfig.php:96
151
- msgid "Язык сайта"
152
- msgstr ""
153
-
154
- #: application/admin/GeneralConfig.php:97
155
- msgid "Модули, которые имеют поддержку мультиязычности, будут отдавать предпочтение контенту на этом языке. Также эта настройка указывает на язык для локализации шаблонов."
156
- msgstr ""
157
-
158
- #: application/admin/GeneralConfig.php:105
159
- msgid "К каким типам постов добавить Content Egg metabox?"
160
- msgstr ""
161
-
162
- #: application/admin/GeneralConfig.php:106
163
- msgid "Эта настройка также показывает к каким типам постов применять автозаполнение на странице \"Заполнить\"."
164
- msgstr ""
165
-
166
- #: application/admin/GeneralConfig.php:113
167
- msgid "Фильтровать ботов"
168
- msgstr ""
169
-
170
- #: application/admin/GeneralConfig.php:114
171
- msgid "Боты не могут запускать парсеры."
172
- msgstr ""
173
-
174
- #: application/admin/GeneralConfig.php:115
175
- msgid "Обновление цены, а также обновление выдачи по ключевому слову происходит при открытии страницы поста. Если мы определим по useragent, что на страницу зашел один из известных ботов, никакие парсеры запускаться не будут."
176
- msgstr ""
177
-
178
- #: application/admin/GeneralConfig.php:122
179
- #: application/admin/GeneralConfig.php:132
180
- msgid "История изменения цены"
181
- msgstr ""
182
-
183
- #: application/admin/GeneralConfig.php:123
184
- msgid "Сколько дней хранить историю изменения цены для товаров. 0 - не сохранять историю."
185
- msgstr ""
186
-
187
- #: application/admin/GeneralConfig.php:132
188
- msgid "Поле \"%s\" не может быть больше %d."
189
- msgstr ""
190
-
191
- #: application/admin/GeneralConfig.php:138
192
- msgid "Разрешить посетителям подписываться на уведомления по email о снижении цены."
193
- msgstr ""
194
-
195
- #: application/admin/GeneralConfig.php:139
196
- msgid "Активных подписок сейчас: <b>%d</b>"
197
- msgstr ""
198
-
199
- #: application/admin/GeneralConfig.php:140
200
- msgid "Отправлено уведомлений за последнии %d дней: <b>%d</b>"
201
- msgstr ""
202
-
203
- #: application/admin/GeneralConfig.php:141
204
- msgid "Для работы этой опции \"История изменения цены\" также должна быть включена."
205
- msgstr ""
206
-
207
- #: application/admin/ImportExportController.php:26
208
- msgid "Импорт/Экспорт"
209
- msgstr ""
210
-
211
- #: application/admin/ImportExportController.php:59
212
- msgid "Опции были сохранены."
213
- msgstr ""
214
-
215
- #: application/admin/ImportExportController.php:59
216
- msgid "Страница настроек"
217
- msgstr ""
218
-
219
- #: application/admin/ImportExportController.php:61
220
- msgid "Неверный формат."
221
- msgstr ""
222
-
223
- #: application/admin/LicConfig.php:33
224
- msgid "Лицензия"
225
- msgstr ""
226
-
227
- #: application/admin/LicConfig.php:40
228
- msgid "Ключ лицензии"
229
- msgstr ""
230
-
231
- #: application/admin/LicConfig.php:41
232
- msgid "Сюда необходимо ввести действующий ключ лицензии. Найти ключ вы можете в своей <a href=\"http://www.keywordrush.com/panel\">панели пользователя</a>. Если у вас еще нет ключа, вы можете приобрести его на <a href=\"http://www.keywordrush.com/contentegg\">официальном сайте</a> плагина."
233
- msgstr ""
234
-
235
- #: application/admin/LicConfig.php:48
236
- msgid "Поле \"Ключ лицензии\" не может быть пустым."
237
- msgstr ""
238
-
239
- #: application/admin/LicConfig.php:52
240
- msgid "Неверный ключ лицензии."
241
- msgstr ""
242
-
243
- #: application/admin/LicConfig.php:57
244
- msgid "Ключ лицензии не принят. Убедитесь, что вы используйте действительный ключ."
245
- msgstr ""
246
-
247
- #: application/admin/LicConfig.php:59
248
- msgid "Если ключ верный, скорее всего, на вашем сервере заблокированы внешние соединения или по другой причине блокируется доступ к домену keywordrush.com."
249
- msgstr ""
250
-
251
- #: application/admin/LicConfig.php:61
252
- msgid "Пожалуйста, выясните это у своего хостинг-провайдера."
253
- msgstr ""
254
-
255
- #: application/admin/LicConfig.php:63
256
- msgid "Если вам нужна наша помощь, обратитесь в <a href=\"http://www.keywordrush.com/contact\">поддержку</a> плагина."
257
- msgstr ""
258
-
259
- #: application/admin/MyListTable.php:127
260
- msgid " назад"
261
- msgstr ""
262
-
263
- #: application/admin/PluginAdmin.php:77
264
- msgid "Вы уверены?"
265
- msgstr ""
266
-
267
- #: application/admin/PrefillController.php:49
268
- #: application/admin/views/prefill.php:11
269
- msgid "Заполнить"
270
- msgstr ""
271
-
272
- #: application/admin/PrefillController.php:95
273
- msgid "Данные уже существуют."
274
- msgstr ""
275
-
276
- #: application/admin/PrefillController.php:102
277
- msgid "Невозможно определить ключевое слово."
278
- msgstr ""
279
-
280
- #: application/admin/PrefillController.php:111
281
- msgid "Ключевое слово для автоапдейта уже существует."
282
- msgstr ""
283
-
284
- #: application/admin/PrefillController.php:115
285
- msgid "Ключевое слово для автоапдейта сохранено."
286
- msgstr ""
287
-
288
- #: application/admin/PrefillController.php:124
289
- msgid "Ошибка:"
290
- msgstr ""
291
-
292
- #: application/admin/PrefillController.php:131
293
- msgid "Данные не найдены."
294
- msgstr ""
295
-
296
- #: application/admin/PrefillController.php:137
297
- msgid "Данные сохранены:"
298
- msgstr ""
299
-
300
- #: application/admin/views/_metabox_autoblog.php:10
301
- #: application/models/AutoblogModel.php:65
302
- #: application/modules/Ozon/OzonConfig.php:82
303
- msgid "Название"
304
- msgstr ""
305
-
306
- #: application/admin/views/_metabox_autoblog.php:14
307
- msgid "Название для автоблоггинга (необязательно)"
308
- msgstr ""
309
-
310
- #: application/admin/views/_metabox_autoblog.php:20
311
- msgid "Статус задания"
312
- msgstr ""
313
-
314
- #: application/admin/views/_metabox_autoblog.php:27
315
- msgid "Aвтоблоггинг можно приостановить."
316
- msgstr ""
317
-
318
- #: application/admin/views/_metabox_autoblog.php:33
319
- msgid "Периодичность запуска"
320
- msgstr ""
321
-
322
- #: application/admin/views/_metabox_autoblog.php:37
323
- msgid "Каждый час"
324
- msgstr ""
325
-
326
- #: application/admin/views/_metabox_autoblog.php:38
327
- msgid "Пять раз в сутки"
328
- msgstr ""
329
-
330
- #: application/admin/views/_metabox_autoblog.php:39
331
- msgid "Два раза в сутки"
332
- msgstr ""
333
-
334
- #: application/admin/views/_metabox_autoblog.php:40
335
- msgid "Один раз в сутки"
336
- msgstr ""
337
-
338
- #: application/admin/views/_metabox_autoblog.php:41
339
- msgid "Каждые три дня"
340
- msgstr ""
341
-
342
- #: application/admin/views/_metabox_autoblog.php:42
343
- msgid "Один раз в неделю"
344
- msgstr ""
345
-
346
- #: application/admin/views/_metabox_autoblog.php:43
347
- msgid "Один раз в две недели"
348
- msgstr ""
349
-
350
- #: application/admin/views/_metabox_autoblog.php:45
351
- msgid "Как часто запускать это задание автоблоггинга."
352
- msgstr ""
353
-
354
- #: application/admin/views/_metabox_autoblog.php:51
355
- #: application/admin/views/_metabox_autoblog.php:139
356
- #: application/models/AutoblogModel.php:71
357
- msgid "Ключевые слова"
358
- msgstr ""
359
-
360
- #: application/admin/views/_metabox_autoblog.php:59
361
- msgid "Заглавная Первая Буква Каждого Слова"
362
- msgstr ""
363
-
364
- #: application/admin/views/_metabox_autoblog.php:60
365
- msgid "Заглавная первая буква"
366
- msgstr ""
367
-
368
- #: application/admin/views/_metabox_autoblog.php:61
369
- msgid "Сортировать в алфавитном порядке"
370
- msgstr ""
371
-
372
- #: application/admin/views/_metabox_autoblog.php:62
373
- msgid "Все слова неактивные"
374
- msgstr ""
375
-
376
- #: application/admin/views/_metabox_autoblog.php:63
377
- msgid "Все слова активные"
378
- msgstr ""
379
-
380
- #: application/admin/views/_metabox_autoblog.php:64
381
- msgid "Очистить список"
382
- msgstr ""
383
-
384
- #: application/admin/views/_metabox_autoblog.php:68
385
- msgid "Всего"
386
- msgstr ""
387
-
388
- #: application/admin/views/_metabox_autoblog.php:74
389
- msgid "Подсказки"
390
- msgstr ""
391
-
392
- #: application/admin/views/_metabox_autoblog.php:75
393
- msgid "Тренды"
394
- msgstr ""
395
-
396
- #: application/admin/views/_metabox_autoblog.php:76
397
- msgid "Товары"
398
- msgstr ""
399
-
400
- #: application/admin/views/_metabox_autoblog.php:83
401
- msgid "Яндекс"
402
- msgstr ""
403
-
404
- #: application/admin/views/_metabox_autoblog.php:84
405
- msgid "Я.Маркет"
406
- msgstr ""
407
-
408
- #: application/admin/views/_metabox_autoblog.php:87
409
- msgid "Начните вводить ключевое слово"
410
- msgstr ""
411
-
412
- #: application/admin/views/_metabox_autoblog.php:112
413
- msgid "Загрузить..."
414
- msgstr ""
415
-
416
- #: application/admin/views/_metabox_autoblog.php:124
417
- msgid "Каждое слово - с новой строки."
418
- msgstr ""
419
-
420
- #: application/admin/views/_metabox_autoblog.php:125
421
- msgid "Одно ключевое слово - это один пост."
422
- msgstr ""
423
-
424
- #: application/admin/views/_metabox_autoblog.php:126
425
- msgid "Обработанные слова отмечены [квадратными скобками]."
426
- msgstr ""
427
-
428
- #: application/admin/views/_metabox_autoblog.php:127
429
- msgid "Когда обработка всех слов закончится, задание будет остановлено."
430
- msgstr ""
431
-
432
- #: application/admin/views/_metabox_autoblog.php:147
433
- msgid "Поддерживаются два вида файлов:"
434
- msgstr ""
435
-
436
- #: application/admin/views/_metabox_autoblog.php:150
437
- msgid "CSV файлы в формате:"
438
- msgstr ""
439
-
440
- #: application/admin/views/_metabox_autoblog.php:158
441
- msgid "Разделитель - \";\" - точка с запятой."
442
- msgstr ""
443
-
444
- #: application/admin/views/_metabox_autoblog.php:159
445
- msgid "Для каждой категории будет создано отдельное задание автоблоггинга."
446
- msgstr ""
447
-
448
- #: application/admin/views/_metabox_autoblog.php:161
449
- msgid "TXT файлы:"
450
- msgstr ""
451
-
452
- #: application/admin/views/_metabox_autoblog.php:162
453
- msgid "обычный текстовый файл со списком ключевых слов (каждое слово - с новой строки)."
454
- msgstr ""
455
-
456
- #: application/admin/views/_metabox_autoblog.php:164
457
- msgid "Кодировка файлов должна быть UTF-8."
458
- msgstr ""
459
-
460
- #: application/admin/views/_metabox_autoblog.php:173
461
- msgid "Обрабатывать ключевых слов"
462
- msgstr ""
463
-
464
- #: application/admin/views/_metabox_autoblog.php:178
465
- msgid "Сколько ключевых слов обрабатывать за однин раз. Не рекомендуется устанавливать это значение более 5, чтобы излишне не нагружать сервер."
466
- msgstr ""
467
-
468
- #: application/admin/views/_metabox_autoblog.php:184
469
- msgid "Только выбранные модули"
470
- msgstr ""
471
-
472
- #: application/admin/views/_metabox_autoblog.php:195
473
- msgid "Запускать только выбранные модули для этого задания."
474
- msgstr ""
475
-
476
- #: application/admin/views/_metabox_autoblog.php:196
477
- msgid "Если ничего не выбрано, то подразумевается все активные модули на момент запуска автоблоггинга."
478
- msgstr ""
479
-
480
- #: application/admin/views/_metabox_autoblog.php:203
481
- msgid "Исключить модули"
482
- msgstr ""
483
-
484
- #: application/admin/views/_metabox_autoblog.php:214
485
- msgid "Выбранные модули в этой конфигурации не будут запускаться."
486
- msgstr ""
487
-
488
- #: application/admin/views/_metabox_autoblog.php:221
489
- msgid "Шаблон заголовка"
490
- msgstr ""
491
-
492
- #: application/admin/views/_metabox_autoblog.php:228
493
- msgid "Шаблон для заголовка поста."
494
- msgstr ""
495
-
496
- #: application/admin/views/_metabox_autoblog.php:229
497
- msgid "Используйте теги:"
498
- msgstr ""
499
-
500
- #: application/admin/views/_metabox_autoblog.php:230
501
- msgid "Для обображения данных плагина используйте специальные теги, например:"
502
- msgstr ""
503
-
504
- #: application/admin/views/_metabox_autoblog.php:231
505
- msgid "Вы также можете задать порядковый индекс для доступа к данным плагина:"
506
- msgstr ""
507
-
508
- #: application/admin/views/_metabox_autoblog.php:232
509
- msgid "Вы можете использовать \"формулы\" с перечислением синонимов, из которых будет выбран один случайный вариант, например, {Скидка|Распродажа|Дешево}."
510
- msgstr ""
511
-
512
- #: application/admin/views/_metabox_autoblog.php:239
513
- msgid "Шаблон поста"
514
- msgstr ""
515
-
516
- #: application/admin/views/_metabox_autoblog.php:245
517
- msgid "Шаблон тела поста."
518
- msgstr ""
519
-
520
- #: application/admin/views/_metabox_autoblog.php:246
521
- msgid "Вы можете использовать шорткоды, точно также, как вы делаете это в обычных постах, например: "
522
- msgstr ""
523
-
524
- #: application/admin/views/_metabox_autoblog.php:248
525
- msgid "\"Форумлы\", а также все теги из шаблона заголовка, также будут работать и здесь."
526
- msgstr ""
527
-
528
- #: application/admin/views/_metabox_autoblog.php:256
529
- msgid "Статус поста"
530
- msgstr ""
531
-
532
- #: application/admin/views/_metabox_autoblog.php:268
533
- msgid "Пользователь"
534
- msgstr ""
535
-
536
- #: application/admin/views/_metabox_autoblog.php:275
537
- msgid "От имени этого пользователя будут публиковаться посты."
538
- msgstr ""
539
-
540
- #: application/admin/views/_metabox_autoblog.php:281
541
- #: application/modules/Aliexpress/AliexpressConfig.php:89
542
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:87
543
- #: application/modules/CjLinks/CjLinksConfig.php:125
544
- #: application/modules/Clickbank/ClickbankConfig.php:67
545
- #: application/modules/Linkshare/LinkshareConfig.php:104
546
- #: application/modules/Ozon/OzonConfig.php:91
547
- #: application/modules/Pixabay/PixabayConfig.php:108
548
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:57
549
- msgid "Категория"
550
- msgstr ""
551
-
552
- #: application/admin/views/_metabox_autoblog.php:288
553
- msgid "Создать автоматически"
554
- msgstr ""
555
-
556
- #: application/admin/views/_metabox_autoblog.php:294
557
- msgid "Категория для постов."
558
- msgstr ""
559
-
560
- #: application/admin/views/_metabox_autoblog.php:296
561
- msgid "\"Создать автоматически\" - означает, что категории будут созданы на основании данных CSV файла с ключевыми словами и категориями."
562
- msgstr ""
563
-
564
- #: application/admin/views/_metabox_autoblog.php:305
565
- msgid "Требуется минимум модулей"
566
- msgstr ""
567
-
568
- #: application/admin/views/_metabox_autoblog.php:310
569
- msgid "Пост не будет опубликован, если контент не найден для этого количества модулей. "
570
- msgstr ""
571
-
572
- #: application/admin/views/_metabox_autoblog.php:316
573
- msgid "Обязательные модули"
574
- msgstr ""
575
-
576
- #: application/admin/views/_metabox_autoblog.php:327
577
- msgid "Пост опубликован не будет, если результаты для этих модулей не найдены."
578
- msgstr ""
579
-
580
- #: application/admin/views/_metabox_autoblog.php:334
581
- #: application/components/AffiliateParserModuleConfig.php:18
582
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:150
583
- msgid "Автоматическое обновление"
584
- msgstr ""
585
-
586
- #: application/admin/views/_metabox_autoblog.php:345
587
- msgid "Для выбранных модулей текущее ключевое слово будет задано как ключевое слово для автообновления. Выдача модуля будет переодически обновляться в соотвествии с настройкой времени жизни кэша."
588
- msgstr ""
589
-
590
- #: application/admin/views/_metabox_results.php:9
591
- #: application/components/ParserModuleConfig.php:57
592
- #: application/modules/Youtube/YoutubeConfig.php:64
593
- #: application/modules/Youtube/views/search_panel.php:11
594
- msgid "Заголовок"
595
- msgstr ""
596
-
597
- #: application/admin/views/_metabox_results.php:10
598
- msgid "Описание"
599
- msgstr ""
600
-
601
- #: application/admin/views/_metabox_results.php:13
602
- #: application/admin/views/_promo_box.php:56
603
- msgid "Перейти"
604
- msgstr ""
605
-
606
- #: application/admin/views/_metabox_search_results.php:11
607
- #: application/modules/CjLinks/views/search_results.php:16
608
- msgid "Код купона:"
609
- msgstr ""
610
-
611
- #: application/admin/views/_promo_box.php:4
612
- msgid "Работай, как профи"
613
- msgstr ""
614
-
615
- #: application/admin/views/_promo_box.php:10
616
- msgid "Все включено: контент + монетизация."
617
- msgstr ""
618
-
619
- #: application/admin/views/_promo_box.php:52
620
- msgid "Активируйте плагин"
621
- msgstr ""
622
-
623
- #: application/admin/views/_promo_box.php:53
624
- #: application/admin/views/envato_activation.php:5
625
- msgid "Активируйте плагин, чтобы получить срочные автоматические апдейты в админ-панели Wordpress и официальную поддержку от авторов плагина."
626
- msgstr ""
627
-
628
- #: application/admin/views/ae_integration.php:5
629
- msgid "Интеграция с Affiliate Egg плагин"
630
- msgstr ""
631
-
632
- #: application/admin/views/ae_integration.php:9
633
- msgid "Вы можете подключить веб-парсеры <a href=\"http://www.keywordrush.com/affiliateegg\">Affiliate Egg плагина</a> в качестве модулей Content Egg."
634
- msgstr ""
635
-
636
- #: application/admin/views/ae_integration.php:10
637
- msgid "Для поиска по ключевому слову будет использоваться \"родной\" поиск на сайте магазина."
638
- msgstr ""
639
-
640
- #: application/admin/views/ae_integration.php:15
641
- msgid "Для начала работы выполните следующие действия:"
642
- msgstr ""
643
-
644
- #: application/admin/views/ae_integration.php:17
645
- msgid "Установите и активируйте <a href=\"http://www.keywordrush.com/affiliateegg\">Affiliate Egg плагин</a>"
646
- msgstr ""
647
-
648
- #: application/admin/views/ae_integration.php:18
649
- msgid "Версия Affiliate Egg должна быть не ниже"
650
- msgstr ""
651
-
652
- #: application/admin/views/autoblog_edit.php:7
653
- msgid "Редактировать автоблоггинг"
654
- msgstr ""
655
-
656
- #: application/admin/views/autoblog_edit.php:11
657
- msgid "пакетное добавление"
658
- msgstr ""
659
-
660
- #: application/admin/views/autoblog_edit.php:15
661
- msgid "Пакетное добавление"
662
- msgstr ""
663
-
664
- #: application/admin/views/autoblog_edit.php:17
665
- msgid "Назад к списку"
666
- msgstr ""
667
-
668
- #: application/admin/views/autoblog_edit.php:39
669
- msgid "Сохранить"
670
- msgstr ""
671
-
672
- #: application/admin/views/autoblog_edit.php:41
673
- msgid "Будьте терпеливы, если файл с ключевыми словами имеет большой размер. Не закрывайте страницу до завершения процесса."
674
- msgstr ""
675
-
676
- #: application/admin/views/autoblog_index.php:2
677
- msgid "Работа автоблоггинга"
678
- msgstr ""
679
-
680
- #: application/admin/views/autoblog_index.php:6
681
- msgid "Пожалуйста, дождитесь окончания работы автоблоггинга."
682
- msgstr ""
683
-
684
- #: application/admin/views/autoblog_index.php:24
685
- msgid "Удалено заданий автоблоггинга:"
686
- msgstr ""
687
-
688
- #: application/admin/views/autoblog_index.php:26
689
- msgid "Автоблоггинг закончил работу"
690
- msgstr ""
691
-
692
- #: application/admin/views/autoblog_index.php:44
693
- msgid "С помощью автоблоггинга вы можете настроить автоматическое создание постов."
694
- msgstr ""
695
-
696
- #: application/admin/views/envato_activation.php:1
697
- msgid "активация"
698
- msgstr ""
699
-
700
- #: application/admin/views/import_export.php:6
701
- msgid "Экспорт / Импорт настроек"
702
- msgstr ""
703
-
704
- #: application/admin/views/import_export.php:21
705
- msgid "Сохранить настройки"
706
- msgstr ""
707
-
708
- #: application/admin/views/import_export.php:22
709
- msgid "Для переноса настроек плагина и модулей Content Egg скопируйте сожержимое поля (Ctrl+C) и выполните импорт на новом сайте."
710
- msgstr ""
711
-
712
- #: application/admin/views/import_export.php:26
713
- msgid "Загрузить настройки"
714
- msgstr ""
715
-
716
- #: application/admin/views/import_export.php:27
717
- msgid "Скопируйте настройки с другого сайта и нажмите кнопку \"Импорт\"."
718
- msgstr ""
719
-
720
- #: application/admin/views/import_export.php:31
721
- msgid "Импорт"
722
- msgstr ""
723
-
724
- #: application/admin/views/lic_settings.php:3
725
- msgid "лицензия"
726
- msgstr ""
727
-
728
- #: application/admin/views/lic_settings.php:7
729
- msgid "Плагин активирован."
730
- msgstr ""
731
-
732
- #: application/admin/views/lic_settings.php:21
733
- #: application/admin/views/lic_settings.php:29
734
- msgid "Открепить лицензию"
735
- msgstr ""
736
-
737
- #: application/admin/views/lic_settings.php:22
738
- msgid "Вы можете перенести лицензию плагина на другой свой домен."
739
- msgstr ""
740
-
741
- #: application/admin/views/lic_settings.php:23
742
- msgid "После открепления лицензии вы должны деактивировать и удалить Content Egg плагин с текущего домена."
743
- msgstr ""
744
-
745
- #: application/admin/views/metabox_general.php:7
746
- msgid "Введите ключевое слово"
747
- msgstr ""
748
-
749
- #: application/admin/views/metabox_general.php:9
750
- msgid "Найти все"
751
- msgstr ""
752
-
753
- #: application/admin/views/metabox_general.php:39
754
- #: application/admin/views/metabox_module.php:71
755
- msgid "Добавить все"
756
- msgstr ""
757
-
758
- #: application/admin/views/metabox_general.php:40
759
- msgid "Вы действительно хотите удалить результаты всех модулей?"
760
- msgstr ""
761
-
762
- #: application/admin/views/metabox_general.php:40
763
- #: application/admin/views/metabox_module.php:40
764
- msgid "Удалить все"
765
- msgstr ""
766
-
767
- #: application/admin/views/metabox_module.php:26
768
- msgid "Шаблон для шорткода"
769
- msgstr ""
770
-
771
- #: application/admin/views/metabox_module.php:36
772
- msgid "Ключевое слово для автоматического обновления данных"
773
- msgstr ""
774
-
775
- #: application/admin/views/metabox_module.php:40
776
- msgid "Вы действительно хотите удалить все результаты?"
777
- msgstr ""
778
-
779
- #: application/admin/views/metabox_module.php:45
780
- msgid "Данные не найдены..."
781
- msgstr ""
782
-
783
- #: application/admin/views/metabox_module.php:49
784
- msgid "Поиск"
785
- msgstr ""
786
-
787
- #: application/admin/views/metabox_module.php:55
788
- msgid "Ключевое слово для поиска"
789
- msgstr ""
790
-
791
- #: application/admin/views/metabox_module.php:57
792
- msgid "Найти"
793
- msgstr ""
794
-
795
- #: application/admin/views/metabox_module.php:79
796
- msgid "Не найдено..."
797
- msgstr ""
798
-
799
- #: application/admin/views/metabox_module.php:80
800
- msgid "Ошибка: "
801
- msgstr ""
802
-
803
- #: application/admin/views/prefill.php:15
804
- msgid "Эта утилита заполняет данные модулей для всех существующих постов."
805
- msgstr ""
806
-
807
- #: application/admin/views/prefill.php:16
808
- msgid "Существующие данные и ключевые слова для автообновления не перезатираются!"
809
- msgstr ""
810
-
811
- #: application/admin/views/prefill.php:23
812
- msgid "Добавить данные для модуля"
813
- msgstr ""
814
-
815
- #: application/admin/views/prefill.php:35
816
- msgid "Источник ключевого слова"
817
- msgstr ""
818
-
819
- #: application/admin/views/prefill.php:38
820
- msgid "Вычислить на основании плотности ключевых слов поста"
821
- msgstr ""
822
-
823
- #: application/admin/views/prefill.php:39
824
- msgid "Заголовк поста"
825
- msgstr ""
826
-
827
- #: application/admin/views/prefill.php:41
828
- msgid "Копировать с"
829
- msgstr ""
830
-
831
- #: application/admin/views/prefill.php:48
832
- msgid "Автообновление"
833
- msgstr ""
834
-
835
- #: application/admin/views/prefill.php:50
836
- msgid "Добавить ключевое слово для автообновления"
837
- msgstr ""
838
-
839
- #: application/admin/views/prefill.php:51
840
- msgid "Только для модулей, которые имеют функцию автообновления."
841
- msgstr ""
842
-
843
- #: application/admin/views/prefill.php:56
844
- msgid "Количество слов"
845
- msgstr ""
846
-
847
- #: application/admin/views/prefill.php:63
848
- msgid "Максимум слов в поисковом запросе."
849
- msgstr ""
850
-
851
- #: application/admin/views/prefill.php:74
852
- msgid "Старт"
853
- msgstr ""
854
-
855
- #: application/admin/views/prefill.php:75
856
- msgid "Начать сначала"
857
- msgstr ""
858
-
859
- #: application/admin/views/prefill.php:76
860
- msgid "Стоп"
861
- msgstr ""
862
-
863
- #: application/admin/views/settings.php:13
864
- msgid "Content Egg Настройки"
865
- msgstr ""
866
-
867
- #: application/admin/views/settings.php:23
868
- #: application/admin/views/settings.php:46
869
- msgid "Общие настройки"
870
- msgstr ""
871
-
872
- #: application/admin/views/settings.php:70
873
- msgid "Условия"
874
- msgstr ""
875
-
876
- #: application/components/AffiliateParserModuleConfig.php:19
877
- msgid "Время жини кэша в секундах, через которое необходимо обновить товары, если задано ключевое слово для обновления. 0 - никогда не обновлять."
878
- msgstr ""
879
-
880
- #: application/components/AffiliateParserModuleConfig.php:33
881
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:141
882
- msgid "Обновить товары"
883
- msgstr ""
884
-
885
- #: application/components/AffiliateParserModuleConfig.php:34
886
- msgid "Время в секундах, через которое необходимо обновить цену, наличие и некоторую другую информацию по товарам. 0 - никогда не обновлять."
887
- msgstr ""
888
-
889
- #: application/components/ModuleConfig.php:59
890
- #: application/components/ModuleConfig.php:65
891
- msgid "настройки"
892
- msgstr ""
893
-
894
- #: application/components/ParserModuleConfig.php:19
895
- msgid "Включить модуль"
896
- msgstr ""
897
-
898
- #: application/components/ParserModuleConfig.php:26
899
- msgid "Добавить"
900
- msgstr ""
901
-
902
- #: application/components/ParserModuleConfig.php:27
903
- msgid "Куда добавить контент этого модуля? Шорткоды работают всегда в независимости от настройки."
904
- msgstr ""
905
-
906
- #: application/components/ParserModuleConfig.php:30
907
- msgid "В конец поста"
908
- msgstr ""
909
-
910
- #: application/components/ParserModuleConfig.php:31
911
- msgid "В начало поста"
912
- msgstr ""
913
-
914
- #: application/components/ParserModuleConfig.php:32
915
- msgid "Только шорткоды"
916
- msgstr ""
917
-
918
- #: application/components/ParserModuleConfig.php:38
919
- msgid "Приоритет"
920
- msgstr ""
921
-
922
- #: application/components/ParserModuleConfig.php:39
923
- msgid "Приоритет задает порядок включения модулей в пост. 0 - самый высокий приоритет."
924
- msgstr ""
925
-
926
- #: application/components/ParserModuleConfig.php:49
927
- msgid "Шаблон"
928
- msgstr ""
929
-
930
- #: application/components/ParserModuleConfig.php:50
931
- msgid "Шаблон по-умолчанию."
932
- msgstr ""
933
-
934
- #: application/components/ParserModuleConfig.php:58
935
- msgid "Шаблоны могут использовать заголовок при выводе данных."
936
- msgstr ""
937
-
938
- #: application/components/ParserModuleConfig.php:68
939
- msgid "Автоматически установить Featured image для поста."
940
- msgstr ""
941
-
942
- #: application/components/ParserModuleConfig.php:71
943
- msgid "Не устанавливать"
944
- msgstr ""
945
-
946
- #: application/components/ParserModuleConfig.php:72
947
- msgid "Первый элемент"
948
- msgstr ""
949
-
950
- #: application/components/ParserModuleConfig.php:73
951
- msgid "Второй элемент"
952
- msgstr ""
953
-
954
- #: application/components/ParserModuleConfig.php:74
955
- msgid "Случайный элемент"
956
- msgstr ""
957
-
958
- #: application/components/ParserModuleConfig.php:75
959
- msgid "Последний элемент"
960
- msgstr ""
961
-
962
- #: application/components/ParserModuleConfig.php:81
963
- msgid "Редирект"
964
- msgstr ""
965
-
966
- #: application/components/ParserModuleConfig.php:82
967
- msgid "Ссылки через локальный 301 редирект."
968
- msgstr ""
969
-
970
- #: application/components/TemplateManager.php:84
971
- msgid "[пользовательский]"
972
- msgstr ""
973
-
974
- #: application/models/AutoblogModel.php:66
975
- msgid "Дата создания"
976
- msgstr ""
977
-
978
- #: application/models/AutoblogModel.php:67
979
- msgid "Последний запуск"
980
- msgstr ""
981
-
982
- #: application/models/AutoblogModel.php:68
983
- msgid "Статус"
984
- msgstr ""
985
-
986
- #: application/models/AutoblogModel.php:69
987
- msgid "Всего постов"
988
- msgstr ""
989
-
990
- #: application/models/AutoblogModel.php:70
991
- msgid "Последняя ошибка"
992
- msgstr ""
993
-
994
- #: application/models/AutoblogModel.php:191
995
- msgid "Обязательный модуль %s не будет запущен. Модуль не настроен или исключен."
996
- msgstr ""
997
-
998
- #: application/models/AutoblogModel.php:219
999
- msgid "Не найдены данные для обязательного модуля %s."
1000
- msgstr ""
1001
-
1002
- #: application/models/AutoblogModel.php:226
1003
- msgid "Не достигнуто требуемое количество данных. Минимум требуется модулей: %d."
1004
- msgstr ""
1005
-
1006
- #: application/models/AutoblogModel.php:253
1007
- msgid "Пост не может быть создан. Неизвестная ошибка."
1008
- msgstr ""
1009
-
1010
- #: application/modules/AE/AEConfig.php:20
1011
- msgid "Партнеркая ссылка"
1012
- msgstr ""
1013
-
1014
- #: application/modules/AE/AEConfig.php:21
1015
- msgid "Укажите Deeplink одной из CPA-сетей. Для прямых партнерских программ вы можете использовать параметр вида <em>partner_id=12345</em>, или сформируйте партнерскую ссылку по шаблону, например: <em>{{url}}/partner_id-12345/</em>. Пример ссылки с deeplink: https://ad.admitad.com/g/g8f0qmlavfa/?ulp={{url_encoded}}. {{url}} и {{url_encoded}} - будут заменены на URL текущего товара)."
1016
- msgstr ""
1017
-
1018
- #: application/modules/AE/AEConfig.php:30
1019
- #: application/modules/AdmitadCoupons/AdmitadCouponsConfig.php:36
1020
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:56
1021
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:35
1022
- #: application/modules/AffilinetCoupons/AffilinetCouponsConfig.php:50
1023
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:50
1024
- #: application/modules/Aliexpress/AliexpressConfig.php:57
1025
- #: application/modules/Amazon/AmazonConfig.php:77
1026
- #: application/modules/BingImages/BingImagesConfig.php:35
1027
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:35
1028
- #: application/modules/CjLinks/CjLinksConfig.php:50
1029
- #: application/modules/CjProducts/CjProductsConfig.php:50
1030
- #: application/modules/Clickbank/ClickbankConfig.php:35
1031
- #: application/modules/Ebay/EbayConfig.php:87
1032
- #: application/modules/Flickr/FlickrConfig.php:35
1033
- #: application/modules/Flipkart/FlipkartConfig.php:50
1034
- #: application/modules/Freebase/FreebaseConfig.php:35
1035
- #: application/modules/GdeSlon/GdeSlonConfig.php:45
1036
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:35
1037
- #: application/modules/GoogleImages/GoogleImagesConfig.php:35
1038
- #: application/modules/GoogleNews/GoogleNewsConfig.php:20
1039
- #: application/modules/Linkshare/LinkshareConfig.php:35
1040
- #: application/modules/Market/MarketConfig.php:48
1041
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:94
1042
- #: application/modules/Ozon/OzonConfig.php:40
1043
- #: application/modules/PayTM/PayTMConfig.php:30
1044
- #: application/modules/Pixabay/PixabayConfig.php:35
1045
- #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:35
1046
- #: application/modules/RssFetcher/RssFetcherConfig.php:35
1047
- #: application/modules/Shareasale/ShareasaleConfig.php:65
1048
- #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:35
1049
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:35
1050
- #: application/modules/Twitter/TwitterConfig.php:80
1051
- #: application/modules/VkNews/VkNewsConfig.php:20
1052
- #: application/modules/Youtube/YoutubeConfig.php:35
1053
- #: application/modules/Zanox/ZanoxConfig.php:46
1054
- msgid "Результатов"
1055
- msgstr ""
1056
-
1057
- #: application/modules/AE/AEConfig.php:31
1058
- #: application/modules/AdmitadCoupons/AdmitadCouponsConfig.php:37
1059
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:57
1060
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:36
1061
- #: application/modules/AffilinetCoupons/AffilinetCouponsConfig.php:51
1062
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:51
1063
- #: application/modules/Aliexpress/AliexpressConfig.php:58
1064
- #: application/modules/Amazon/AmazonConfig.php:78
1065
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:36
1066
- #: application/modules/CjLinks/CjLinksConfig.php:51
1067
- #: application/modules/CjProducts/CjProductsConfig.php:51
1068
- #: application/modules/Clickbank/ClickbankConfig.php:36
1069
- #: application/modules/Ebay/EbayConfig.php:88
1070
- #: application/modules/Flipkart/FlipkartConfig.php:51
1071
- #: application/modules/GdeSlon/GdeSlonConfig.php:46
1072
- #: application/modules/Linkshare/LinkshareConfig.php:36
1073
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:95
1074
- #: application/modules/Ozon/OzonConfig.php:41
1075
- #: application/modules/PayTM/PayTMConfig.php:31
1076
- #: application/modules/Shareasale/ShareasaleConfig.php:66
1077
- #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:36
1078
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:36
1079
- #: application/modules/Zanox/ZanoxConfig.php:47
1080
- msgid "Количество результатов для одного поискового запроса."
1081
- msgstr ""
1082
-
1083
- #: application/modules/AE/AEConfig.php:40
1084
- #: application/modules/AE/AEConfig.php:56
1085
- #: application/modules/Amazon/AmazonConfig.php:88
1086
- #: application/modules/Amazon/AmazonConfig.php:105
1087
- #: application/modules/BingImages/BingImagesConfig.php:45
1088
- #: application/modules/Clickbank/ClickbankConfig.php:45
1089
- #: application/modules/Clickbank/ClickbankConfig.php:61
1090
- #: application/modules/RssFetcher/RssFetcherConfig.php:45
1091
- #: application/modules/Zanox/ZanoxConfig.php:56
1092
- #: application/modules/Zanox/ZanoxConfig.php:72
1093
- msgid "Поле \"Результатов\" не может быть больше 50."
1094
- msgstr ""
1095
-
1096
- #: application/modules/AE/AEConfig.php:46
1097
- #: application/modules/AdmitadCoupons/AdmitadCouponsConfig.php:47
1098
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:72
1099
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:46
1100
- #: application/modules/AffilinetCoupons/AffilinetCouponsConfig.php:61
1101
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:61
1102
- #: application/modules/Aliexpress/AliexpressConfig.php:73
1103
- #: application/modules/Amazon/AmazonConfig.php:94
1104
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:51
1105
- #: application/modules/CjLinks/CjLinksConfig.php:61
1106
- #: application/modules/CjProducts/CjProductsConfig.php:61
1107
- #: application/modules/Clickbank/ClickbankConfig.php:51
1108
- #: application/modules/Ebay/EbayConfig.php:103
1109
- #: application/modules/Flipkart/FlipkartConfig.php:66
1110
- #: application/modules/GdeSlon/GdeSlonConfig.php:61
1111
- #: application/modules/Linkshare/LinkshareConfig.php:46
1112
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:110
1113
- #: application/modules/Ozon/OzonConfig.php:51
1114
- #: application/modules/PayTM/PayTMConfig.php:41
1115
- #: application/modules/Shareasale/ShareasaleConfig.php:76
1116
- #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:46
1117
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:46
1118
- #: application/modules/Zanox/ZanoxConfig.php:62
1119
- msgid "Результатов для обновления"
1120
- msgstr ""
1121
-
1122
- #: application/modules/AE/AEConfig.php:47
1123
- #: application/modules/AdmitadCoupons/AdmitadCouponsConfig.php:48
1124
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:73
1125
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:47
1126
- #: application/modules/AffilinetCoupons/AffilinetCouponsConfig.php:62
1127
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:62
1128
- #: application/modules/Aliexpress/AliexpressConfig.php:74
1129
- #: application/modules/Amazon/AmazonConfig.php:95
1130
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:52
1131
- #: application/modules/CjLinks/CjLinksConfig.php:62
1132
- #: application/modules/CjProducts/CjProductsConfig.php:62
1133
- #: application/modules/Clickbank/ClickbankConfig.php:52
1134
- #: application/modules/Ebay/EbayConfig.php:104
1135
- #: application/modules/Flipkart/FlipkartConfig.php:67
1136
- #: application/modules/GdeSlon/GdeSlonConfig.php:62
1137
- #: application/modules/Linkshare/LinkshareConfig.php:47
1138
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:111
1139
- #: application/modules/Ozon/OzonConfig.php:52
1140
- #: application/modules/PayTM/PayTMConfig.php:42
1141
- #: application/modules/Shareasale/ShareasaleConfig.php:77
1142
- #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:47
1143
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:47
1144
- #: application/modules/Zanox/ZanoxConfig.php:63
1145
- msgid "Количество результатов для автоматического обновления и автоблоггинга."
1146
- msgstr ""
1147
-
1148
- #: application/modules/AE/AEConfig.php:62
1149
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:115
1150
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:126
1151
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:165
1152
- #: application/modules/Aliexpress/AliexpressConfig.php:206
1153
- #: application/modules/Amazon/AmazonConfig.php:289
1154
- #: application/modules/BingImages/BingImagesConfig.php:88
1155
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:215
1156
- #: application/modules/CjProducts/CjProductsConfig.php:216
1157
- #: application/modules/Ebay/EbayConfig.php:334
1158
- #: application/modules/Flickr/FlickrConfig.php:104
1159
- #: application/modules/Flipkart/FlipkartConfig.php:82
1160
- #: application/modules/Freebase/FreebaseConfig.php:67
1161
- #: application/modules/GdeSlon/GdeSlonConfig.php:110
1162
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:67
1163
- #: application/modules/GoogleImages/GoogleImagesConfig.php:142
1164
- #: application/modules/GoogleNews/GoogleNewsConfig.php:52
1165
- #: application/modules/Linkshare/LinkshareConfig.php:114
1166
- #: application/modules/Market/MarketConfig.php:170
1167
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:164
1168
- #: application/modules/Ozon/OzonConfig.php:178
1169
- #: application/modules/PayTM/PayTMConfig.php:103
1170
- #: application/modules/Pixabay/PixabayConfig.php:165
1171
- #: application/modules/Shareasale/ShareasaleConfig.php:107
1172
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:157
1173
- #: application/modules/Twitter/TwitterConfig.php:125
1174
- #: application/modules/VkNews/VkNewsConfig.php:42
1175
- #: application/modules/Zanox/ZanoxConfig.php:153
1176
- msgid "Сохранять картинки"
1177
- msgstr ""
1178
-
1179
- #: application/modules/AE/AEConfig.php:63
1180
- #: application/modules/Amazon/AmazonConfig.php:290
1181
- msgid "Сохранять картинки на сервер."
1182
- msgstr ""
1183
-
1184
- #: application/modules/AdmitadCoupons/AdmitadCouponsConfig.php:20
1185
- msgid "URL для получения XML-файла"
1186
- msgstr ""
1187
-
1188
- #: application/modules/AdmitadCoupons/AdmitadCouponsConfig.php:21
1189
- msgid "Перейдите в Admitad: Инструменты - Скидки и купоны - Экспорт - Получить ссылку."
1190
- msgstr ""
1191
-
1192
- #: application/modules/AdmitadCoupons/AdmitadCouponsConfig.php:22
1193
- msgid "Не забудьте установить галочку \"Только мои программы\" и другие фильтры."
1194
- msgstr ""
1195
-
1196
- #: application/modules/AdmitadCoupons/AdmitadCouponsConfig.php:30
1197
- msgid "Поле \"URL для получения XML-файла\" не может быть пустым."
1198
- msgstr ""
1199
-
1200
- #: application/modules/AdmitadCoupons/AdmitadCouponsModule.php:25
1201
- msgid "Добавляет купоны партнерской сети <a href=\"https://www.admitad.com/ru/promo/?ref=770f943d83\">Admitad</a>."
1202
- msgstr ""
1203
-
1204
- #: application/modules/AdmitadCoupons/AdmitadCouponsModule.php:25
1205
- #: application/modules/AdmitadProducts/AdmitadProductsModule.php:24
1206
- #: application/modules/TradedoublerCoupons/TradedoublerCouponsModule.php:25
1207
- msgid "Вы должны получить аппрув в каждой программе отдельно."
1208
- msgstr ""
1209
-
1210
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:20
1211
- msgid "ID оффера"
1212
- msgstr ""
1213
-
1214
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:21
1215
- msgid "Вы можете работать только с офферами, представленными на <a target=\"_blank\" href=\"https://www.admitadgoods.ru/offers.php\">этой странице</a>."
1216
- msgstr ""
1217
-
1218
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:22
1219
- msgid "ID оффера можно найти в URL, если кликнуть по логотипу оффера."
1220
- msgstr ""
1221
-
1222
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:30
1223
- msgid "Поле \"ID оффера\" не может быть пустым."
1224
- msgstr ""
1225
-
1226
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:37
1227
- msgid "Deeplink соотвествующего оффера."
1228
- msgstr ""
1229
-
1230
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:38
1231
- msgid "<a target=\"_blank\" href=\"http://keywordrush.com/manuals/affegg_manual.pdf\">Мануал</a> по настройке Deeplink для различных CPA-сетей."
1232
- msgstr ""
1233
-
1234
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:50
1235
- msgid "Поле \"Deeplink\" не может быть пустым."
1236
- msgstr ""
1237
-
1238
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:66
1239
- msgid "Поле \"Результатов\" не может быть больше 20."
1240
- msgstr ""
1241
-
1242
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:82
1243
- msgid "Поле \"Результатов для обновления\" не может быть больше 20."
1244
- msgstr ""
1245
-
1246
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:88
1247
- msgid "Скидка"
1248
- msgstr ""
1249
-
1250
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:89
1251
- msgid "Только товары со скидкой."
1252
- msgstr ""
1253
-
1254
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:95
1255
- #: application/modules/Aliexpress/AliexpressConfig.php:138
1256
- #: application/modules/Amazon/AmazonConfig.php:164
1257
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:118
1258
- #: application/modules/CjProducts/CjProductsConfig.php:96
1259
- #: application/modules/Ebay/EbayConfig.php:281
1260
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:136
1261
- #: application/modules/PayTM/PayTMConfig.php:69
1262
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:103
1263
- #: application/modules/Zanox/ZanoxConfig.php:101
1264
- msgid "Минимальная цена"
1265
- msgstr ""
1266
-
1267
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:105
1268
- #: application/modules/Aliexpress/AliexpressConfig.php:148
1269
- #: application/modules/Amazon/AmazonConfig.php:174
1270
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:128
1271
- #: application/modules/CjProducts/CjProductsConfig.php:106
1272
- #: application/modules/Ebay/EbayConfig.php:271
1273
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:146
1274
- #: application/modules/PayTM/PayTMConfig.php:79
1275
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:113
1276
- #: application/modules/Zanox/ZanoxConfig.php:111
1277
- msgid "Максимальная цена"
1278
- msgstr ""
1279
-
1280
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:116
1281
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:127
1282
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:166
1283
- #: application/modules/Aliexpress/AliexpressConfig.php:207
1284
- #: application/modules/BingImages/BingImagesConfig.php:89
1285
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:216
1286
- #: application/modules/CjProducts/CjProductsConfig.php:217
1287
- #: application/modules/Ebay/EbayConfig.php:335
1288
- #: application/modules/Flickr/FlickrConfig.php:105
1289
- #: application/modules/Flipkart/FlipkartConfig.php:83
1290
- #: application/modules/Freebase/FreebaseConfig.php:68
1291
- #: application/modules/GdeSlon/GdeSlonConfig.php:111
1292
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:68
1293
- #: application/modules/GoogleImages/GoogleImagesConfig.php:143
1294
- #: application/modules/GoogleNews/GoogleNewsConfig.php:53
1295
- #: application/modules/Linkshare/LinkshareConfig.php:115
1296
- #: application/modules/Market/MarketConfig.php:171
1297
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:165
1298
- #: application/modules/Ozon/OzonConfig.php:179
1299
- #: application/modules/PayTM/PayTMConfig.php:104
1300
- #: application/modules/Shareasale/ShareasaleConfig.php:108
1301
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:158
1302
- #: application/modules/Twitter/TwitterConfig.php:126
1303
- #: application/modules/VkNews/VkNewsConfig.php:43
1304
- #: application/modules/Zanox/ZanoxConfig.php:154
1305
- msgid "Сохранять картинки на сервер"
1306
- msgstr ""
1307
-
1308
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:122
1309
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:133
1310
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:172
1311
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:222
1312
- #: application/modules/CjProducts/CjProductsConfig.php:223
1313
- #: application/modules/Clickbank/ClickbankConfig.php:158
1314
- #: application/modules/Flickr/FlickrConfig.php:111
1315
- #: application/modules/Flipkart/FlipkartConfig.php:89
1316
- #: application/modules/Freebase/FreebaseConfig.php:74
1317
- #: application/modules/GdeSlon/GdeSlonConfig.php:117
1318
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:74
1319
- #: application/modules/GoogleImages/GoogleImagesConfig.php:149
1320
- #: application/modules/GoogleNews/GoogleNewsConfig.php:59
1321
- #: application/modules/Linkshare/LinkshareConfig.php:121
1322
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:171
1323
- #: application/modules/Ozon/OzonConfig.php:185
1324
- #: application/modules/PayTM/PayTMConfig.php:110
1325
- #: application/modules/Shareasale/ShareasaleConfig.php:114
1326
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:164
1327
- #: application/modules/VkNews/VkNewsConfig.php:49
1328
- #: application/modules/Youtube/YoutubeConfig.php:85
1329
- #: application/modules/Zanox/ZanoxConfig.php:160
1330
- msgid "Обрезать описание"
1331
- msgstr ""
1332
-
1333
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:123
1334
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:134
1335
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:173
1336
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:223
1337
- #: application/modules/CjProducts/CjProductsConfig.php:224
1338
- #: application/modules/Clickbank/ClickbankConfig.php:159
1339
- #: application/modules/Flickr/FlickrConfig.php:112
1340
- #: application/modules/Flipkart/FlipkartConfig.php:90
1341
- #: application/modules/Freebase/FreebaseConfig.php:75
1342
- #: application/modules/GdeSlon/GdeSlonConfig.php:118
1343
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:75
1344
- #: application/modules/GoogleImages/GoogleImagesConfig.php:150
1345
- #: application/modules/GoogleNews/GoogleNewsConfig.php:60
1346
- #: application/modules/Linkshare/LinkshareConfig.php:122
1347
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:172
1348
- #: application/modules/Ozon/OzonConfig.php:186
1349
- #: application/modules/PayTM/PayTMConfig.php:111
1350
- #: application/modules/Shareasale/ShareasaleConfig.php:115
1351
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:165
1352
- #: application/modules/VkNews/VkNewsConfig.php:50
1353
- #: application/modules/Youtube/YoutubeConfig.php:86
1354
- #: application/modules/Zanox/ZanoxConfig.php:161
1355
- msgid "Размер описания в символах (0 - не обрезать)"
1356
- msgstr ""
1357
-
1358
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:141
1359
- #: application/modules/AdmitadProducts/AdmitadProductsConfig.php:150
1360
- msgid "Поле \"%s\" не может быть меньше %d."
1361
- msgstr ""
1362
-
1363
- #: application/modules/AdmitadProducts/AdmitadProductsModule.php:24
1364
- msgid "Добавляет товары партнерской сети <a href=\"https://www.admitad.com/ru/promo/?ref=770f943d83\">Admitad</a>."
1365
- msgstr ""
1366
-
1367
- #: application/modules/AdmitadProducts/AdmitadProductsModule.php:25
1368
- msgid "Используется API <a href=\"https://www.admitadgoods.ru\" target=\"_blank\">Admitad Goods</a> WP плагин."
1369
- msgstr ""
1370
-
1371
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:21
1372
- msgid "Ключ для доступа к Productserve API. Найти можно <a href=\"https://www.affiliatewindow.com/affiliates/shopwindow/productserve-info.php\">здесь</a>."
1373
- msgstr ""
1374
-
1375
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:29
1376
- #: application/modules/Aliexpress/AliexpressConfig.php:30
1377
- #: application/modules/Flickr/FlickrConfig.php:29
1378
- #: application/modules/Freebase/FreebaseConfig.php:29
1379
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:29
1380
- #: application/modules/Market/MarketConfig.php:29
1381
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:29
1382
- #: application/modules/Youtube/YoutubeConfig.php:29
1383
- msgid "Поле \"API Key\" не может быть пустым."
1384
- msgstr ""
1385
-
1386
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:57
1387
- #: application/modules/Aliexpress/AliexpressConfig.php:178
1388
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:178
1389
- #: application/modules/CjProducts/CjProductsConfig.php:156
1390
- #: application/modules/Clickbank/ClickbankConfig.php:100
1391
- #: application/modules/Ebay/EbayConfig.php:119
1392
- #: application/modules/Flickr/FlickrConfig.php:57
1393
- #: application/modules/GdeSlon/GdeSlonConfig.php:77
1394
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:85
1395
- #: application/modules/Linkshare/LinkshareConfig.php:79
1396
- #: application/modules/Ozon/OzonConfig.php:62
1397
- #: application/modules/PayTM/PayTMConfig.php:89
1398
- #: application/modules/Pixabay/PixabayConfig.php:153
1399
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:143
1400
- #: application/modules/Twitter/TwitterConfig.php:112
1401
- #: application/modules/Youtube/YoutubeConfig.php:57
1402
- msgid "Сортировка"
1403
- msgstr ""
1404
-
1405
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:61
1406
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:101
1407
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:182
1408
- #: application/modules/GdeSlon/GdeSlonConfig.php:81
1409
- #: application/modules/PayTM/PayTMConfig.php:93
1410
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:147
1411
- msgid "По-умолчанию"
1412
- msgstr ""
1413
-
1414
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:75
1415
- msgid "Вы можете задать несколько Merchant IDs через запятую."
1416
- msgstr ""
1417
-
1418
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:97
1419
- msgid "Режим поиска"
1420
- msgstr ""
1421
-
1422
- #: application/modules/Affiliatewindow/AffiliatewindowConfig.php:98
1423
- msgid "Подробнее про различные режимы поиска <a href=\"http://wiki.affiliatewindow.com/index.php/GetProductList\">здесь</a>."
1424
- msgstr ""
1425
-
1426
- #: application/modules/Affiliatewindow/AffiliatewindowModule.php:26
1427
- msgid "Добавляет товары партнерской сети Affiliatewindow."
1428
- msgstr ""
1429
-
1430
- #: application/modules/AffilinetCoupons/AffilinetCouponsConfig.php:29
1431
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:29
1432
- msgid "Поле \"Publisher ID\" не может быть пустым."
1433
- msgstr ""
1434
-
1435
- #: application/modules/AffilinetCoupons/AffilinetCouponsConfig.php:36
1436
- msgid "Ключ для доступа к Publisher Webservice. Найти можно <a href=\"https://publisher.affili.net/Account/techSettingsPublisherWS.aspx\">здесь</a>."
1437
- msgstr ""
1438
-
1439
- #: application/modules/AffilinetCoupons/AffilinetCouponsConfig.php:44
1440
- msgid "Поле \"Publisher Webservice Password\" не может быть пустым."
1441
- msgstr ""
1442
-
1443
- #: application/modules/AffilinetCoupons/AffilinetCouponsModule.php:25
1444
- msgid "Добавляет купоны партнерской сети Affili.net. Вы должны получить аппрув в каждой программе отдельно."
1445
- msgstr ""
1446
-
1447
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:36
1448
- msgid "Ключ для доступа к Product Webservice. Найти можно <a href=\"https://publisher.affili.net/Account/techSettingsPublisherWS.aspx\">здесь</a>."
1449
- msgstr ""
1450
-
1451
- #: application/modules/AffilinetProducts/AffilinetProductsConfig.php:44
1452
- msgid "Поле \"Product Webservice Password\" не может быть пустым."
1453
- msgstr ""
1454
-
1455
- #: application/modules/AffilinetProducts/AffilinetProductsModule.php:26
1456
- msgid "Добавляет товары партнерской сети Affili.net. Вы должны получить аппрув в каждой программе отдельно."
1457
- msgstr ""
1458
-
1459
- #: application/modules/Aliexpress/AliexpressConfig.php:22
1460
- msgid "Специальный ключ для доступа к Aliexpress API. Получить можно <a target=\"_blank\" href=\"http://portals.aliexpress.com/adcenter/api_setting.htm\">здесь</a>."
1461
- msgstr ""
1462
-
1463
- #: application/modules/Aliexpress/AliexpressConfig.php:37
1464
- msgid "Укажите, если хотите посылать трафик через оригинальную партнерку Aliexpress. Найти можно <a target=\"_blank\" href=\"http://portals.aliexpress.com/track_id_manage.htm\">здесь</a>. Опция должна быть задана до сохранения товаров в базу данных."
1465
- msgstr ""
1466
-
1467
- #: application/modules/Aliexpress/AliexpressConfig.php:47
1468
- msgid "Укажите этот параметр, если хотите посылать трафик через одну из CPA-сетей с поддержкой aliexpress и deeplink. Опция должна быть задана до сохранения товаров в базу данных."
1469
- msgstr ""
1470
-
1471
- #: application/modules/Aliexpress/AliexpressConfig.php:67
1472
- #: application/modules/Aliexpress/AliexpressConfig.php:83
1473
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:45
1474
- msgid "Поле \"Результатов\" не может быть больше 40."
1475
- msgstr ""
1476
-
1477
- #: application/modules/Aliexpress/AliexpressConfig.php:90
1478
- msgid "Ограничить поиск товаров этой категорией."
1479
- msgstr ""
1480
-
1481
- #: application/modules/Aliexpress/AliexpressConfig.php:93
1482
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:61
1483
- msgid "Все категории"
1484
- msgstr ""
1485
-
1486
- #: application/modules/Aliexpress/AliexpressConfig.php:128
1487
- msgid "Минимальная комиссия"
1488
- msgstr ""
1489
-
1490
- #: application/modules/Aliexpress/AliexpressConfig.php:129
1491
- msgid "Минимальная комиссия в процентах. Например, 3"
1492
- msgstr ""
1493
-
1494
- #: application/modules/Aliexpress/AliexpressConfig.php:139
1495
- msgid "Должна быть указана в USD. Например, 12.34"
1496
- msgstr ""
1497
-
1498
- #: application/modules/Aliexpress/AliexpressConfig.php:149
1499
- msgid "Должна быть указана в USD. Например, 56.78"
1500
- msgstr ""
1501
-
1502
- #: application/modules/Aliexpress/AliexpressConfig.php:158
1503
- msgid "Минимальные продажи"
1504
- msgstr ""
1505
-
1506
- #: application/modules/Aliexpress/AliexpressConfig.php:159
1507
- msgid "Минимальное число партнерских продаж за последний месяц. Например, 123"
1508
- msgstr ""
1509
-
1510
- #: application/modules/Aliexpress/AliexpressConfig.php:168
1511
- msgid "Максимальные продажи"
1512
- msgstr ""
1513
-
1514
- #: application/modules/Aliexpress/AliexpressConfig.php:169
1515
- msgid "Максимальное число партнерских продаж за последний месяц. Например, 456"
1516
- msgstr ""
1517
-
1518
- #: application/modules/Aliexpress/AliexpressConfig.php:182
1519
- #: application/modules/Linkshare/LinkshareConfig.php:83
1520
- msgid "По умолчанию"
1521
- msgstr ""
1522
-
1523
- #: application/modules/Aliexpress/AliexpressConfig.php:183
1524
- msgid "Цена от низкой к выскокой"
1525
- msgstr ""
1526
-
1527
- #: application/modules/Aliexpress/AliexpressConfig.php:184
1528
- msgid "Цена от высокой к низкой"
1529
- msgstr ""
1530
-
1531
- #: application/modules/Aliexpress/AliexpressConfig.php:185
1532
- #: application/modules/Aliexpress/AliexpressConfig.php:195
1533
- msgid "Рейтинг продавца"
1534
- msgstr ""
1535
-
1536
- #: application/modules/Aliexpress/AliexpressConfig.php:186
1537
- msgid "Комиссия от низкой к высокой"
1538
- msgstr ""
1539
-
1540
- #: application/modules/Aliexpress/AliexpressConfig.php:187
1541
- msgid "Комиссия от высокой к низкой"
1542
- msgstr ""
1543
-
1544
- #: application/modules/Aliexpress/AliexpressConfig.php:188
1545
- msgid "Продажи"
1546
- msgstr ""
1547
-
1548
- #: application/modules/Aliexpress/AliexpressConfig.php:189
1549
- msgid "Время жизни от низкого к высокому"
1550
- msgstr ""
1551
-
1552
- #: application/modules/Aliexpress/AliexpressConfig.php:190
1553
- msgid "Время жизни от высокого к низкому"
1554
- msgstr ""
1555
-
1556
- #: application/modules/Aliexpress/AliexpressConfig.php:196
1557
- msgid "Минимальный рейтинг продавца, например, 12"
1558
- msgstr ""
1559
-
1560
- #: application/modules/Aliexpress/AliexpressModule.php:28
1561
- msgid "Добавляет товары aliexpress.com"
1562
- msgstr ""
1563
-
1564
- #: application/modules/Amazon/AmazonConfig.php:22
1565
- msgid "Специальный ключ для доступа к Amazon API."
1566
- msgstr ""
1567
-
1568
- #: application/modules/Amazon/AmazonConfig.php:30
1569
- msgid "Поле \"Access Key ID\" не может быть пустым."
1570
- msgstr ""
1571
-
1572
- #: application/modules/Amazon/AmazonConfig.php:37
1573
- msgid "Еще один специальный ключ для доступа к Amazon API."
1574
- msgstr ""
1575
-
1576
- #: application/modules/Amazon/AmazonConfig.php:45
1577
- msgid "Поле \"Secret Access Key\" не может быть пустым."
1578
- msgstr ""
1579
-
1580
- #: application/modules/Amazon/AmazonConfig.php:51
1581
- msgid "Tracking ID по-умолчанию"
1582
- msgstr ""
1583
-
1584
- #: application/modules/Amazon/AmazonConfig.php:52
1585
- msgid "Связь с вашим аккаунтом в партнерской программе. Чтобы получать комиссию от продаж, правильно укажите этот параметр."
1586
- msgstr ""
1587
-
1588
- #: application/modules/Amazon/AmazonConfig.php:53
1589
- msgid "Tracking ID должен соотвествовать установке локали по-умолчанию."
1590
- msgstr ""
1591
-
1592
- #: application/modules/Amazon/AmazonConfig.php:54
1593
- msgid "Ниже вы можете задать значения Tracking ID для остальных локалей, если хотите добавить товары более чем с одной локали."
1594
- msgstr ""
1595
-
1596
- #: application/modules/Amazon/AmazonConfig.php:62
1597
- msgid "Поле \"Tracking ID\" не может быть пустым."
1598
- msgstr ""
1599
-
1600
- #: application/modules/Amazon/AmazonConfig.php:69
1601
- msgid "Локаль по-умолчанию"
1602
- msgstr ""
1603
-
1604
- #: application/modules/Amazon/AmazonConfig.php:70
1605
- msgid "Локаль/сайт amazon. Для каждой локали необходима отдельная регистрация в соответствующей партнерской программе."
1606
- msgstr ""
1607
-
1608
- #: application/modules/Amazon/AmazonConfig.php:79
1609
- #: application/modules/Amazon/AmazonConfig.php:96
1610
- msgid "Получение более 10 результатов потребует дополнительное время на запрос данных."
1611
- msgstr ""
1612
-
1613
- #: application/modules/Amazon/AmazonConfig.php:111
1614
- msgid "Вид ссылок"
1615
- msgstr ""
1616
-
1617
- #: application/modules/Amazon/AmazonConfig.php:112
1618
- msgid "Вид партнерских ссылок. Узнайте больше про amazon <a target=\"_blank\" href=\"https://affiliate-program.amazon.com/gp/associates/help/t2/a11\">90 day cookie</a>."
1619
- msgstr ""
1620
-
1621
- #: application/modules/Amazon/AmazonConfig.php:122
1622
- msgid "Категория для поиска"
1623
- msgstr ""
1624
-
1625
- #: application/modules/Amazon/AmazonConfig.php:123
1626
- msgid "Список категорий для US Amazon. Для локальных филиалов некоторые категории могут быть недоступны. Если Вы не зададите категорию для поиска, то никакие другие опции фильтрации кроме поиска по ключевому слову (например, минимальная цена или сортировка) работать не будут."
1627
- msgstr ""
1628
-
1629
- #: application/modules/Amazon/AmazonConfig.php:130
1630
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:197
1631
- #: application/modules/CjProducts/CjProductsConfig.php:175
1632
- #: application/modules/Linkshare/LinkshareConfig.php:93
1633
- msgid "Порядок сортировки"
1634
- msgstr ""
1635
-
1636
- #: application/modules/Amazon/AmazonConfig.php:131
1637
- msgid "Варианты сортировки зависят от locale и выбранной категории. Список доступных значений можно найти <a href=\"http://docs.amazonwebservices.com/AWSECommerceService/latest/DG/index.html?APPNDX_SortValuesArticle.html\">здесь</a>."
1638
- msgstr ""
1639
-
1640
- #: application/modules/Amazon/AmazonConfig.php:140
1641
- msgid "Brouse node"
1642
- msgstr ""
1643
-
1644
- #: application/modules/Amazon/AmazonConfig.php:141
1645
- msgid "Целочисленное ID \"узла\" на amazon. Поиск будет произведен только в этом \"узле\"."
1646
- msgstr ""
1647
-
1648
- #: application/modules/Amazon/AmazonConfig.php:150
1649
- msgid "Поиск в названии"
1650
- msgstr ""
1651
-
1652
- #: application/modules/Amazon/AmazonConfig.php:151
1653
- msgid "Поиск будет произведет только по названиям товаров."
1654
- msgstr ""
1655
-
1656
- #: application/modules/Amazon/AmazonConfig.php:157
1657
- msgid "Только Amazon"
1658
- msgstr ""
1659
-
1660
- #: application/modules/Amazon/AmazonConfig.php:158
1661
- msgid "Выбрать товары, которые продает Amazon. Другие продавцы исключаются из поиска."
1662
- msgstr ""
1663
-
1664
- #: application/modules/Amazon/AmazonConfig.php:165
1665
- msgid "Например, 8.99"
1666
- msgstr ""
1667
-
1668
- #: application/modules/Amazon/AmazonConfig.php:175
1669
- msgid "Например, 98.50"
1670
- msgstr ""
1671
-
1672
- #: application/modules/Amazon/AmazonConfig.php:184
1673
- msgid "Минимальная скидка"
1674
- msgstr ""
1675
-
1676
- #: application/modules/Amazon/AmazonConfig.php:185
1677
- msgid "Выбрать товары со скидкой. Обязательно должна быть задана категория. Обратите внимание, эта опция работает не для всех категорий."
1678
- msgstr ""
1679
-
1680
- #: application/modules/Amazon/AmazonConfig.php:188
1681
- msgid "Неважно"
1682
- msgstr ""
1683
-
1684
- #: application/modules/Amazon/AmazonConfig.php:210
1685
- #: application/modules/Ozon/OzonConfig.php:121
1686
- msgid "Отзывы покупателей"
1687
- msgstr ""
1688
-
1689
- #: application/modules/Amazon/AmazonConfig.php:211
1690
- msgid "Получить отзывы покупателей. Отзывы будут показаны в iframe. iframe URL валидный 24 часа, используйте функцию автообноления, чтобы держать URL в актуальном состоянии."
1691
- msgstr ""
1692
-
1693
- #: application/modules/Amazon/AmazonConfig.php:226
1694
- #: application/modules/Market/MarketConfig.php:138
1695
- #: application/modules/Ozon/OzonConfig.php:155
1696
- msgid "Обрезать отзывы"
1697
- msgstr ""
1698
-
1699
- #: application/modules/Amazon/AmazonConfig.php:227
1700
- msgid "Количество символов для одного отзыва. 0 - максимально возможная длина текста."
1701
- msgstr ""
1702
-
1703
- #: application/modules/Amazon/AmazonConfig.php:251
1704
- msgid "Парсить отписание"
1705
- msgstr ""
1706
-
1707
- #: application/modules/Amazon/AmazonConfig.php:252
1708
- msgid "Парсить описание товаров от продавца."
1709
- msgstr ""
1710
-
1711
- #: application/modules/Amazon/AmazonConfig.php:258
1712
- msgid "Вид описания"
1713
- msgstr ""
1714
-
1715
- #: application/modules/Amazon/AmazonConfig.php:262
1716
- msgid "Как на Amazon"
1717
- msgstr ""
1718
-
1719
- #: application/modules/Amazon/AmazonConfig.php:263
1720
- msgid "Безопасный HTML"
1721
- msgstr ""
1722
-
1723
- #: application/modules/Amazon/AmazonConfig.php:264
1724
- msgid "Только разрешенные теги HTML"
1725
- msgstr ""
1726
-
1727
- #: application/modules/Amazon/AmazonConfig.php:265
1728
- msgid "Только текст"
1729
- msgstr ""
1730
-
1731
- #: application/modules/Amazon/AmazonConfig.php:271
1732
- #: application/modules/Ebay/EbayConfig.php:323
1733
- msgid "Размер описания"
1734
- msgstr ""
1735
-
1736
- #: application/modules/Amazon/AmazonConfig.php:272
1737
- #: application/modules/Ebay/EbayConfig.php:324
1738
- msgid "Максимальный размер описания товара. 0 - не обрезать."
1739
- msgstr ""
1740
-
1741
- #: application/modules/Amazon/AmazonConfig.php:282
1742
- msgid "Картинки через https"
1743
- msgstr ""
1744
-
1745
- #: application/modules/Amazon/AmazonConfig.php:283
1746
- msgid "Перезаписать адреса картинок через https протокол. Включите эту опцию, если вы используете SSL сертификат на своем домене."
1747
- msgstr ""
1748
-
1749
- #: application/modules/Amazon/AmazonConfig.php:290
1750
- msgid "Включение этой опции возможно нарушает правила API. Используйте на свой страх и риск."
1751
- msgstr ""
1752
-
1753
- #: application/modules/Amazon/AmazonConfig.php:300
1754
- msgid "Tracking ID для %s локали"
1755
- msgstr ""
1756
-
1757
- #: application/modules/Amazon/AmazonConfig.php:301
1758
- msgid "Задайте, если хотите добавлять товары с соответствующего amazon сайта (локали)."
1759
- msgstr ""
1760
-
1761
- #: application/modules/Amazon/AmazonModule.php:28
1762
- msgid "Добавляет товары amazon."
1763
- msgstr ""
1764
-
1765
- #: application/modules/Amazon/views/search_panel.php:17
1766
- msgid "Мин. скидка"
1767
- msgstr ""
1768
-
1769
- #: application/modules/Amazon/views/search_panel.php:18
1770
- msgid "5%"
1771
- msgstr ""
1772
-
1773
- #: application/modules/Amazon/views/search_panel.php:19
1774
- msgid "10%"
1775
- msgstr ""
1776
-
1777
- #: application/modules/Amazon/views/search_panel.php:20
1778
- msgid "15%"
1779
- msgstr ""
1780
-
1781
- #: application/modules/Amazon/views/search_panel.php:21
1782
- msgid "20%"
1783
- msgstr ""
1784
-
1785
- #: application/modules/Amazon/views/search_panel.php:22
1786
- msgid "25%"
1787
- msgstr ""
1788
-
1789
- #: application/modules/Amazon/views/search_panel.php:23
1790
- msgid "30%"
1791
- msgstr ""
1792
-
1793
- #: application/modules/Amazon/views/search_panel.php:24
1794
- msgid "35%"
1795
- msgstr ""
1796
-
1797
- #: application/modules/Amazon/views/search_panel.php:25
1798
- msgid "40%"
1799
- msgstr ""
1800
-
1801
- #: application/modules/Amazon/views/search_panel.php:26
1802
- msgid "50%"
1803
- msgstr ""
1804
-
1805
- #: application/modules/Amazon/views/search_panel.php:27
1806
- msgid "60%"
1807
- msgstr ""
1808
-
1809
- #: application/modules/Amazon/views/search_panel.php:28
1810
- msgid "70%"
1811
- msgstr ""
1812
-
1813
- #: application/modules/Amazon/views/search_panel.php:29
1814
- msgid "80%"
1815
- msgstr ""
1816
-
1817
- #: application/modules/Amazon/views/search_panel.php:30
1818
- msgid "90%"
1819
- msgstr ""
1820
-
1821
- #: application/modules/BingImages/BingImagesConfig.php:21
1822
- #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:21
1823
- msgid "Ключ доступа к Bing API. Получить можно <a href=\"https://datamarket.azure.com/account/keys\">здесь</a> (потребуется аккаунт в bing)."
1824
- msgstr ""
1825
-
1826
- #: application/modules/BingImages/BingImagesConfig.php:29
1827
- #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:29
1828
- #: application/modules/Twitter/TwitterConfig.php:29
1829
- #: application/modules/Twitter/TwitterConfig.php:44
1830
- #: application/modules/Twitter/TwitterConfig.php:59
1831
- #: application/modules/Twitter/TwitterConfig.php:74
1832
- msgid "Поле \"Account Key\" не может быть пустым."
1833
- msgstr ""
1834
-
1835
- #: application/modules/BingImages/BingImagesConfig.php:36
1836
- #: application/modules/Pixabay/PixabayConfig.php:36
1837
- msgid "Количество результатов для одного запроса."
1838
- msgstr ""
1839
-
1840
- #: application/modules/BingImages/BingImagesConfig.php:51
1841
- #: application/modules/Flickr/FlickrConfig.php:46
1842
- #: application/modules/Freebase/FreebaseConfig.php:51
1843
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:51
1844
- #: application/modules/GoogleImages/GoogleImagesConfig.php:51
1845
- #: application/modules/GoogleNews/GoogleNewsConfig.php:36
1846
- #: application/modules/Market/MarketConfig.php:64
1847
- #: application/modules/Pixabay/PixabayConfig.php:51
1848
- #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:51
1849
- #: application/modules/RssFetcher/RssFetcherConfig.php:51
1850
- #: application/modules/Twitter/TwitterConfig.php:96
1851
- #: application/modules/VkNews/VkNewsConfig.php:31
1852
- #: application/modules/Youtube/YoutubeConfig.php:46
1853
- msgid "Результатов для автоблоггинга"
1854
- msgstr ""
1855
-
1856
- #: application/modules/BingImages/BingImagesConfig.php:52
1857
- #: application/modules/Flickr/FlickrConfig.php:47
1858
- #: application/modules/Freebase/FreebaseConfig.php:52
1859
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:52
1860
- #: application/modules/GoogleImages/GoogleImagesConfig.php:52
1861
- #: application/modules/GoogleNews/GoogleNewsConfig.php:37
1862
- #: application/modules/Market/MarketConfig.php:65
1863
- #: application/modules/Pixabay/PixabayConfig.php:52
1864
- #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:52
1865
- #: application/modules/RssFetcher/RssFetcherConfig.php:52
1866
- #: application/modules/Twitter/TwitterConfig.php:97
1867
- #: application/modules/VkNews/VkNewsConfig.php:32
1868
- #: application/modules/Youtube/YoutubeConfig.php:47
1869
- msgid "Количество результатов для автоблоггинга."
1870
- msgstr ""
1871
-
1872
- #: application/modules/BingImages/BingImagesConfig.php:61
1873
- #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:61
1874
- #: application/modules/RssFetcher/RssFetcherConfig.php:61
1875
- msgid "Поле \"Результатов для автоблоггинга\" не может быть больше 50."
1876
- msgstr ""
1877
-
1878
- #: application/modules/BingImages/BingImagesConfig.php:67
1879
- msgid "Фильтр"
1880
- msgstr ""
1881
-
1882
- #: application/modules/BingImages/BingImagesConfig.php:71
1883
- #: application/modules/BingImages/views/search_panel.php:2
1884
- msgid "Без фильтра"
1885
- msgstr ""
1886
-
1887
- #: application/modules/BingImages/BingImagesConfig.php:72
1888
- #: application/modules/BingImages/views/search_panel.php:3
1889
- msgid "Маленькие изображения"
1890
- msgstr ""
1891
-
1892
- #: application/modules/BingImages/BingImagesConfig.php:73
1893
- #: application/modules/BingImages/views/search_panel.php:4
1894
- msgid "Средние изображения"
1895
- msgstr ""
1896
-
1897
- #: application/modules/BingImages/BingImagesConfig.php:74
1898
- #: application/modules/BingImages/views/search_panel.php:5
1899
- msgid "Большие изображения"
1900
- msgstr ""
1901
-
1902
- #: application/modules/BingImages/BingImagesConfig.php:75
1903
- #: application/modules/BingImages/views/search_panel.php:6
1904
- #: application/modules/GoogleImages/GoogleImagesConfig.php:73
1905
- msgid "Цветные"
1906
- msgstr ""
1907
-
1908
- #: application/modules/BingImages/BingImagesConfig.php:76
1909
- #: application/modules/BingImages/views/search_panel.php:7
1910
- #: application/modules/GoogleImages/GoogleImagesConfig.php:72
1911
- msgid "Черно-белые"
1912
- msgstr ""
1913
-
1914
- #: application/modules/BingImages/BingImagesConfig.php:77
1915
- #: application/modules/BingImages/views/search_panel.php:8
1916
- #: application/modules/GoogleImages/GoogleImagesConfig.php:122
1917
- msgid "Фотографии"
1918
- msgstr ""
1919
-
1920
- #: application/modules/BingImages/BingImagesConfig.php:78
1921
- #: application/modules/BingImages/views/search_panel.php:9
1922
- msgid "Графика и иллюстрации"
1923
- msgstr ""
1924
-
1925
- #: application/modules/BingImages/BingImagesConfig.php:79
1926
- #: application/modules/BingImages/views/search_panel.php:10
1927
- msgid "Содержит лица"
1928
- msgstr ""
1929
-
1930
- #: application/modules/BingImages/BingImagesConfig.php:80
1931
- #: application/modules/BingImages/views/search_panel.php:11
1932
- msgid "Портреты"
1933
- msgstr ""
1934
-
1935
- #: application/modules/BingImages/BingImagesConfig.php:81
1936
- #: application/modules/BingImages/views/search_panel.php:12
1937
- msgid "Не содержит лиц"
1938
- msgstr ""
1939
-
1940
- #: application/modules/BingImages/BingImagesConfig.php:95
1941
- #: application/modules/GoogleImages/GoogleImagesConfig.php:160
1942
- msgid "Поиск по сайту"
1943
- msgstr ""
1944
-
1945
- #: application/modules/BingImages/BingImagesConfig.php:96
1946
- msgid "Ограничить поиск только этим доменом. Например, задайте: wikimedia.org"
1947
- msgstr ""
1948
-
1949
- #: application/modules/BingImages/templates/data_simple.php:5
1950
- msgid "Simple"
1951
- msgstr ""
1952
-
1953
- #: application/modules/BingImages/templates/data_simple.php:18
1954
- #: application/modules/GoogleImages/templates/data_simple.php:20
1955
- msgid "Source: %s"
1956
- msgstr ""
1957
-
1958
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:20
1959
- msgid "Remote_auth"
1960
- msgstr ""
1961
-
1962
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:21
1963
- msgid "Ваш ключ для доступа к API. Войдите в систему -> \"Личный кабинет\" -> \"API\"."
1964
- msgstr ""
1965
-
1966
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:29
1967
- msgid "Поле \"Remote_auth\" не может быть пустым."
1968
- msgstr ""
1969
-
1970
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:45
1971
- #: application/modules/Ebay/EbayConfig.php:97
1972
- #: application/modules/GdeSlon/GdeSlonConfig.php:55
1973
- msgid "Поле \"Результатов\" не может быть больше 100."
1974
- msgstr ""
1975
-
1976
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:61
1977
- #: application/modules/Ebay/EbayConfig.php:113
1978
- #: application/modules/GdeSlon/GdeSlonConfig.php:71
1979
- msgid "Поле \"Результатов для обновления\" не может быть больше 100."
1980
- msgstr ""
1981
-
1982
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:77
1983
- #: application/modules/GdeSlon/GdeSlonConfig.php:100
1984
- msgid "ID магазина"
1985
- msgstr ""
1986
-
1987
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:78
1988
- msgid "Фильтр по магазинам. Целочисленные идентификаторы магазинов перечисляются через запятую."
1989
- msgstr ""
1990
-
1991
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:91
1992
- #: application/modules/Ozon/OzonConfig.php:95
1993
- #: application/modules/Pixabay/PixabayConfig.php:85
1994
- #: application/modules/Pixabay/PixabayConfig.php:99
1995
- #: application/modules/Pixabay/PixabayConfig.php:112
1996
- #: application/modules/Zanox/ZanoxConfig.php:146
1997
- msgid "Все"
1998
- msgstr ""
1999
-
2000
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:92
2001
- msgid "Товары для строительства и ремонта"
2002
- msgstr ""
2003
-
2004
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:93
2005
- #: application/modules/Ozon/OzonConfig.php:102
2006
- msgid "Музыка"
2007
- msgstr ""
2008
-
2009
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:94
2010
- msgid "Одежда, обувь и аксессуары"
2011
- msgstr ""
2012
-
2013
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:95
2014
- msgid "Товары для авто- и мототехники "
2015
- msgstr ""
2016
-
2017
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:96
2018
- msgid "Подарки, сувениры, цветы"
2019
- msgstr ""
2020
-
2021
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:97
2022
- msgid "Путешествия, туризм"
2023
- msgstr ""
2024
-
2025
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:98
2026
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:101
2027
- #: application/modules/Ozon/OzonConfig.php:97
2028
- msgid "Книги"
2029
- msgstr ""
2030
-
2031
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:99
2032
- msgid "Животные и растения"
2033
- msgstr ""
2034
-
2035
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:100
2036
- msgid "Товары для здоровья"
2037
- msgstr ""
2038
-
2039
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:101
2040
- msgid "Оборудование"
2041
- msgstr ""
2042
-
2043
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:102
2044
- msgid "Товары для дома и дачи"
2045
- msgstr ""
2046
-
2047
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:103
2048
- msgid "Продукты, напитки, табак"
2049
- msgstr ""
2050
-
2051
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:104
2052
- msgid "Интим товары"
2053
- msgstr ""
2054
-
2055
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:105
2056
- msgid "Электроника и Фото"
2057
- msgstr ""
2058
-
2059
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:106
2060
- #: application/modules/Ozon/OzonConfig.php:99
2061
- msgid "Бытовая техника"
2062
- msgstr ""
2063
-
2064
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:107
2065
- msgid "Спортивные товары "
2066
- msgstr ""
2067
-
2068
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:108
2069
- msgid "Компьютеры"
2070
- msgstr ""
2071
-
2072
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:109
2073
- msgid "Товары для детей"
2074
- msgstr ""
2075
-
2076
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:110
2077
- msgid "Товары для офиса"
2078
- msgstr ""
2079
-
2080
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:111
2081
- msgid "Телефоны"
2082
- msgstr ""
2083
-
2084
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:112
2085
- msgid "Мебель"
2086
- msgstr ""
2087
-
2088
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:119
2089
- msgid "Минимальная цена товара. Например, 10."
2090
- msgstr ""
2091
-
2092
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:129
2093
- msgid "Минимальная цена товара. Например, 100."
2094
- msgstr ""
2095
-
2096
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:138
2097
- msgid "Валюта"
2098
- msgstr ""
2099
-
2100
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:142
2101
- #: application/modules/CjLinks/CjLinksConfig.php:129
2102
- msgid "Любая"
2103
- msgstr ""
2104
-
2105
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:208
2106
- #: application/modules/PayTM/PayTMConfig.php:62
2107
- msgid "Наличие"
2108
- msgstr ""
2109
-
2110
- #: application/modules/CityadsProducts/CityadsProductsConfig.php:209
2111
- msgid "Только доступные товары"
2112
- msgstr ""
2113
-
2114
- #: application/modules/CityadsProducts/CityadsProductsModule.php:26
2115
- msgid "Добавляет товары партнерской сети cityads.com"
2116
- msgstr ""
2117
-
2118
- #: application/modules/CjLinks/CjLinksConfig.php:21
2119
- #: application/modules/CjProducts/CjProductsConfig.php:21
2120
- msgid "Ключ для доступа к CJ API. Получить нужно <a href=\"https://api.cj.com/sign_up.cj\">здесь</a>."
2121
- msgstr ""
2122
-
2123
- #: application/modules/CjLinks/CjLinksConfig.php:29
2124
- #: application/modules/CjProducts/CjProductsConfig.php:29
2125
- msgid "Поле \"Developer Key\" не может быть пустым."
2126
- msgstr ""
2127
-
2128
- #: application/modules/CjLinks/CjLinksConfig.php:44
2129
- #: application/modules/CjProducts/CjProductsConfig.php:44
2130
- msgid "Поле \"Website ID\" не может быть пустым."
2131
- msgstr ""
2132
-
2133
- #: application/modules/CjLinks/CjLinksConfig.php:72
2134
- #: application/modules/CjProducts/CjProductsConfig.php:72
2135
- msgid "Рекламодатели"
2136
- msgstr ""
2137
-
2138
- #: application/modules/CjLinks/CjLinksConfig.php:86
2139
- #: application/modules/CjLinks/CjLinksConfig.php:111
2140
- #: application/modules/Clickbank/ClickbankConfig.php:131
2141
- #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:71
2142
- msgid "Любой"
2143
- msgstr ""
2144
-
2145
- #: application/modules/CjLinks/CjLinksModule.php:27
2146
- msgid "Добавляет текстовые ссылки, купоны и баннеры партнерской сети Commission Junction. Вы должны получить аппрув в каждой программы отдельно."
2147
- msgstr ""
2148
-
2149
- #: application/modules/CjProducts/CjProductsConfig.php:36
2150
- msgid "PID - идентификатор сайта в CJ. Войдите в свой аккаунт CJ и следуйте: \"Account -> Websites\""
2151
- msgstr ""
2152
-
2153
- #: application/modules/CjProducts/CjProductsConfig.php:73
2154
- msgid "Вы можете задать Adverticer ID (CID) через запятую для ограничения поиска только по этим рекламодателям. Введите \"joined\", чтобы искать по всем вашим рекламодателям."
2155
- msgstr ""
2156
-
2157
- #: application/modules/CjProducts/CjProductsConfig.php:116
2158
- msgid "Минимальная цена распродажи"
2159
- msgstr ""
2160
-
2161
- #: application/modules/CjProducts/CjProductsConfig.php:126
2162
- msgid "Максимальная цена распродажи"
2163
- msgstr ""
2164
-
2165
- #: application/modules/CjProducts/CjProductsModule.php:27
2166
- msgid "Добавляет товары партнерской сети Commission Junction. Вы должны получить аппрув в каждой программы отдельно."
2167
- msgstr ""
2168
-
2169
- #: application/modules/Clickbank/ClickbankConfig.php:21
2170
- msgid "Ваш nickname на ClickBank."
2171
- msgstr ""
2172
-
2173
- #: application/modules/Clickbank/ClickbankConfig.php:29
2174
- msgid "Поле \"ClickBank nickname\" не может быть пустым."
2175
- msgstr ""
2176
-
2177
- #: application/modules/Clickbank/ClickbankConfig.php:117
2178
- msgid "Минимум Gravity"
2179
- msgstr ""
2180
-
2181
- #: application/modules/Clickbank/ClickbankConfig.php:127
2182
- msgid "Язык"
2183
- msgstr ""
2184
-
2185
- #: application/modules/Clickbank/ClickbankModule.php:26
2186
- msgid "Добавляет офферы партнерской сети clickbank.com."
2187
- msgstr ""
2188
-
2189
- #: application/modules/Clickbank/ClickbankModule.php:26
2190
- msgid "Модуль работает в тестовом режиме."
2191
- msgstr ""
2192
-
2193
- #: application/modules/Ebay/EbayConfig.php:22
2194
- msgid "Ваш ID для доступа к eBay API. Поучить ключ вы можете в <a href=\"http://developer.ebay.com/join\">eBay Developers Program</a>."
2195
- msgstr ""
2196
-
2197
- #: application/modules/Ebay/EbayConfig.php:30
2198
- msgid "Поле \"Application ID (AppID)\" не может быть пустым."
2199
- msgstr ""
2200
-
2201
- #: application/modules/Ebay/EbayConfig.php:37
2202
- msgid "Это связь с партнерской программой EPN. Campaign ID валидный для всех программ, в которые вы были приняты на EPN. Если не задано - комиссия за продажи начисляться не будет."
2203
- msgstr ""
2204
-
2205
- #: application/modules/Ebay/EbayConfig.php:46
2206
- msgid "EPN Custom ID (канал)"
2207
- msgstr ""
2208
-
2209
- #: application/modules/Ebay/EbayConfig.php:47
2210
- msgid "Любое слово, например, имя домена. Custom ID будет включен в отчеты по продажам на EPN, таким образом, вы сможете дополнительно отслеживать трафик."
2211
- msgstr ""
2212
-
2213
- #: application/modules/Ebay/EbayConfig.php:58
2214
- msgid "Skimlinks Site ID"
2215
- msgstr ""
2216
-
2217
- #: application/modules/Ebay/EbayConfig.php:59
2218
- msgid "Указывайте, если хотите слать трафик через <a href=\"http://www.keywordrush.com/go/skimlinks\">Skimlinks</a>. ID для соотвествущего домена можно найти <a href=\"https://hub.skimlinks.com/account\">здесь</a>."
2219
- msgstr ""
2220
-
2221
- #: application/modules/Ebay/EbayConfig.php:69
2222
- msgid "Viglink ID"
2223
- msgstr ""
2224
-
2225
- #: application/modules/Ebay/EbayConfig.php:70
2226
- msgid "Указывайте, если хотите слать трафик через <a href=\"http://www.keywordrush.com/go/viglink\">Viglink</a>. Ваш ID можно найти <a href=\"http://www.viglink.com/install\">здесь</a>, он одинаковый для всех доменов."
2227
- msgstr ""
2228
-
2229
- #: application/modules/Ebay/EbayConfig.php:79
2230
- msgid "Locale"
2231
- msgstr ""
2232
-
2233
- #: application/modules/Ebay/EbayConfig.php:80
2234
- msgid "Локальный сайт eBay. Для каждого локального филиала необходима отдельная регистрация в соответствующей партнерской программе."
2235
- msgstr ""
2236
-
2237
- #: application/modules/Ebay/EbayConfig.php:127
2238
- msgid "Время завершения"
2239
- msgstr ""
2240
-
2241
- #: application/modules/Ebay/EbayConfig.php:128
2242
- msgid "Срок жизни лотов в секундах. Будут выбраны только лоты, которые закроются не позже указанного времени."
2243
- msgstr ""
2244
-
2245
- #: application/modules/Ebay/EbayConfig.php:137
2246
- msgid "Категориия"
2247
- msgstr ""
2248
-
2249
- #: application/modules/Ebay/EbayConfig.php:138
2250
- msgid "ID категории для поиска. ID категорий можно найти в URL категорий на <a href=\"http://www.ebay.com/sch/allcategories/all-categories\">этой странице</a>. Можно задать до трех категорий через запятую, например, \"2195,2218,20094\"."
2251
- msgstr ""
2252
-
2253
- #: application/modules/Ebay/EbayConfig.php:147
2254
- msgid "Искать в описании"
2255
- msgstr ""
2256
-
2257
- #: application/modules/Ebay/EbayConfig.php:148
2258
- msgid "Включить поиск по описание товара в дополнение к названию товара. Это займет больше времени, чем поиск только по названию."
2259
- msgstr ""
2260
-
2261
- #: application/modules/Ebay/EbayConfig.php:154
2262
- #: application/modules/Linkshare/LinkshareConfig.php:67
2263
- msgid "Логика поиска"
2264
- msgstr ""
2265
-
2266
- #: application/modules/Ebay/EbayConfig.php:162
2267
- msgid "Состояние товара"
2268
- msgstr ""
2269
-
2270
- #: application/modules/Ebay/EbayConfig.php:170
2271
- msgid "Исключить категорию"
2272
- msgstr ""
2273
-
2274
- #: application/modules/Ebay/EbayConfig.php:171
2275
- msgid "ID категории, которую необходимо исключить при поиске. ID категорий можно найти в URL категорий на <a href=\"http://www.ebay.com/sch/allcategories/all-categories\">этой странице</a>. Можно задать до 25 категорий через запятую, например, \"2195,2218,20094\"."
2276
- msgstr ""
2277
-
2278
- #: application/modules/Ebay/EbayConfig.php:180
2279
- msgid "Минимальный ретинг продавца"
2280
- msgstr ""
2281
-
2282
- #: application/modules/Ebay/EbayConfig.php:188
2283
- msgid "Best Offer"
2284
- msgstr ""
2285
-
2286
- #: application/modules/Ebay/EbayConfig.php:189
2287
- msgid "Только \"Best Offer\" лоты."
2288
- msgstr ""
2289
-
2290
- #: application/modules/Ebay/EbayConfig.php:195
2291
- msgid "Featured"
2292
- msgstr ""
2293
-
2294
- #: application/modules/Ebay/EbayConfig.php:196
2295
- msgid "Только \"Featured\" лоты."
2296
- msgstr ""
2297
-
2298
- #: application/modules/Ebay/EbayConfig.php:202
2299
- msgid "Free Shipping"
2300
- msgstr ""
2301
-
2302
- #: application/modules/Ebay/EbayConfig.php:203
2303
- msgid "Только лоты с бесплатной доставкой."
2304
- msgstr ""
2305
-
2306
- #: application/modules/Ebay/EbayConfig.php:209
2307
- msgid "Local Pickup"
2308
- msgstr ""
2309
-
2310
- #: application/modules/Ebay/EbayConfig.php:210
2311
- msgid "Только лоты с опцией \"local pickup\"."
2312
- msgstr ""
2313
-
2314
- #: application/modules/Ebay/EbayConfig.php:216
2315
- msgid "Get It Fast"
2316
- msgstr ""
2317
-
2318
- #: application/modules/Ebay/EbayConfig.php:217
2319
- msgid "Только \"Get It Fast\" лоты."
2320
- msgstr ""
2321
-
2322
- #: application/modules/Ebay/EbayConfig.php:223
2323
- msgid "Top-rated seller"
2324
- msgstr ""
2325
-
2326
- #: application/modules/Ebay/EbayConfig.php:224
2327
- msgid "Только товары от \"Top-rated\" продавцов."
2328
- msgstr ""
2329
-
2330
- #: application/modules/Ebay/EbayConfig.php:230
2331
- msgid "Спрятать дубли"
2332
- msgstr ""
2333
-
2334
- #: application/modules/Ebay/EbayConfig.php:231
2335
- msgid "Отфильтровать похожие лоты."
2336
- msgstr ""
2337
-
2338
- #: application/modules/Ebay/EbayConfig.php:237
2339
- msgid "Тип аукциона"
2340
- msgstr ""
2341
-
2342
- #: application/modules/Ebay/EbayConfig.php:251
2343
- msgid "Максимум ставок"
2344
- msgstr ""
2345
-
2346
- #: application/modules/Ebay/EbayConfig.php:252
2347
- msgid "Например, 10"
2348
- msgstr ""
2349
-
2350
- #: application/modules/Ebay/EbayConfig.php:261
2351
- msgid "Минимум ставок"
2352
- msgstr ""
2353
-
2354
- #: application/modules/Ebay/EbayConfig.php:262
2355
- msgid "Например, 3"
2356
- msgstr ""
2357
-
2358
- #: application/modules/Ebay/EbayConfig.php:272
2359
- msgid "Например, 300.50"
2360
- msgstr ""
2361
-
2362
- #: application/modules/Ebay/EbayConfig.php:282
2363
- msgid "Например, 10.98"
2364
- msgstr ""
2365
-
2366
- #: application/modules/Ebay/EbayConfig.php:291
2367
- msgid "Варианты оплаты"
2368
- msgstr ""
2369
-
2370
- #: application/modules/Ebay/EbayConfig.php:316
2371
- msgid "Получить описание"
2372
- msgstr ""
2373
-
2374
- #: application/modules/Ebay/EbayConfig.php:317
2375
- msgid "Получить описание товара. Требует дополнительных запросов к eBay API, это замедляет работу поиска. Описание будет запрошено не более чем для 20 первых товаров за один поиск."
2376
- msgstr ""
2377
-
2378
- #: application/modules/Ebay/EbayModule.php:30
2379
- msgid "Добавляет товары eBay. Поддерживает различные локальные сайты. Несколько вариантов монетизации трафика."
2380
- msgstr ""
2381
-
2382
- #: application/modules/Flickr/FlickrConfig.php:21
2383
- msgid "Ключ для использования Flickr API. Получить можно <a href=\"http://www.flickr.com/services/api/misc.api_keys.html\">здесь</a>."
2384
- msgstr ""
2385
-
2386
- #: application/modules/Flickr/FlickrConfig.php:36
2387
- #: application/modules/Freebase/FreebaseConfig.php:36
2388
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:36
2389
- #: application/modules/GoogleNews/GoogleNewsConfig.php:21
2390
- #: application/modules/Market/MarketConfig.php:49
2391
- #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:36
2392
- #: application/modules/RssFetcher/RssFetcherConfig.php:36
2393
- #: application/modules/Twitter/TwitterConfig.php:81
2394
- #: application/modules/VkNews/VkNewsConfig.php:21
2395
- #: application/modules/Youtube/YoutubeConfig.php:36
2396
- msgid "Количество результатов для одного запроса"
2397
- msgstr ""
2398
-
2399
- #: application/modules/Flickr/FlickrConfig.php:61
2400
- #: application/modules/Flickr/views/search_panel.php:10
2401
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:89
2402
- #: application/modules/Ozon/OzonConfig.php:66
2403
- #: application/modules/Youtube/YoutubeConfig.php:63
2404
- #: application/modules/Youtube/views/search_panel.php:10
2405
- msgid "Релевантность"
2406
- msgstr ""
2407
-
2408
- #: application/modules/Flickr/FlickrConfig.php:62
2409
- #: application/modules/Flickr/views/search_panel.php:11
2410
- msgid "Дата поста"
2411
- msgstr ""
2412
-
2413
- #: application/modules/Flickr/FlickrConfig.php:63
2414
- #: application/modules/Flickr/views/search_panel.php:12
2415
- msgid "Дата съемки"
2416
- msgstr ""
2417
-
2418
- #: application/modules/Flickr/FlickrConfig.php:64
2419
- #: application/modules/Flickr/views/search_panel.php:13
2420
- msgid "Сначала интересные"
2421
- msgstr ""
2422
-
2423
- #: application/modules/Flickr/FlickrConfig.php:71
2424
- #: application/modules/GoogleImages/GoogleImagesConfig.php:20
2425
- #: application/modules/Youtube/YoutubeConfig.php:72
2426
- msgid "Тип лицензии"
2427
- msgstr ""
2428
-
2429
- #: application/modules/Flickr/FlickrConfig.php:72
2430
- msgid "Многие фотографии на Flickr загружены с лицензией Creative Commons. Подробнее <a href=\"http://www.flickr.com/creativecommons/\">здесь</a>."
2431
- msgstr ""
2432
-
2433
- #: application/modules/Flickr/FlickrConfig.php:75
2434
- #: application/modules/Flickr/views/search_panel.php:2
2435
- #: application/modules/GoogleImages/GoogleImagesConfig.php:24
2436
- #: application/modules/GoogleImages/views/search_panel.php:2
2437
- #: application/modules/Youtube/YoutubeConfig.php:76
2438
- #: application/modules/Youtube/views/search_panel.php:2
2439
- msgid "Любая лицензия"
2440
- msgstr ""
2441
-
2442
- #: application/modules/Flickr/FlickrConfig.php:76
2443
- #: application/modules/Flickr/views/search_panel.php:3
2444
- #: application/modules/GoogleImages/GoogleImagesConfig.php:25
2445
- #: application/modules/GoogleImages/views/search_panel.php:3
2446
- msgid "Любая Сreative Сommons"
2447
- msgstr ""
2448
-
2449
- #: application/modules/Flickr/FlickrConfig.php:77
2450
- #: application/modules/Flickr/views/search_panel.php:4
2451
- #: application/modules/GoogleImages/GoogleImagesConfig.php:26
2452
- #: application/modules/GoogleImages/views/search_panel.php:4
2453
- msgid "Разрешено коммерческое использование"
2454
- msgstr ""
2455
-
2456
- #: application/modules/Flickr/FlickrConfig.php:78
2457
- #: application/modules/Flickr/views/search_panel.php:5
2458
- #: application/modules/GoogleImages/GoogleImagesConfig.php:27
2459
- #: application/modules/GoogleImages/views/search_panel.php:5
2460
- msgid "Разрешено изменение"
2461
- msgstr ""
2462
-
2463
- #: application/modules/Flickr/FlickrConfig.php:79
2464
- #: application/modules/Flickr/views/search_panel.php:6
2465
- #: application/modules/GoogleImages/GoogleImagesConfig.php:28
2466
- #: application/modules/GoogleImages/views/search_panel.php:6
2467
- msgid "Коммерческое использование и изменение"
2468
- msgstr ""
2469
-
2470
- #: application/modules/Flickr/FlickrConfig.php:86
2471
- #: application/modules/GoogleImages/GoogleImagesConfig.php:101
2472
- #: application/modules/Pixabay/PixabayConfig.php:67
2473
- msgid "Размер"
2474
- msgstr ""
2475
-
2476
- #: application/modules/Flickr/FlickrConfig.php:90
2477
- msgid "75x75 пикселов"
2478
- msgstr ""
2479
-
2480
- #: application/modules/Flickr/FlickrConfig.php:91
2481
- msgid "150x150 пикселов"
2482
- msgstr ""
2483
-
2484
- #: application/modules/Flickr/FlickrConfig.php:92
2485
- msgid "100 пикселов по длинной стороне"
2486
- msgstr ""
2487
-
2488
- #: application/modules/Flickr/FlickrConfig.php:93
2489
- msgid "240 пикселов по длинной стороне"
2490
- msgstr ""
2491
-
2492
- #: application/modules/Flickr/FlickrConfig.php:94
2493
- msgid "320 пикселов по длинной стороне"
2494
- msgstr ""
2495
-
2496
- #: application/modules/Flickr/FlickrConfig.php:95
2497
- msgid "500 пикселов по длинной стороне"
2498
- msgstr ""
2499
-
2500
- #: application/modules/Flickr/FlickrConfig.php:96
2501
- msgid "640 пикселов по длинной стороне"
2502
- msgstr ""
2503
-
2504
- #: application/modules/Flickr/FlickrConfig.php:97
2505
- msgid "800 пикселов по длинной стороне"
2506
- msgstr ""
2507
-
2508
- #: application/modules/Flickr/FlickrConfig.php:98
2509
- msgid "1024 пикселов по длинной стороне"
2510
- msgstr ""
2511
-
2512
- #: application/modules/Flickr/FlickrConfig.php:123
2513
- msgid "Ограничить поиск только этим пользователем Flickr"
2514
- msgstr ""
2515
-
2516
- #: application/modules/Flipkart/FlipkartConfig.php:20
2517
- msgid "Affiliate Tracking ID"
2518
- msgstr ""
2519
-
2520
- #: application/modules/Flipkart/FlipkartConfig.php:21
2521
- msgid "Войдите в систему -> \"API\" -> \"API Token\""
2522
- msgstr ""
2523
-
2524
- #: application/modules/Flipkart/FlipkartConfig.php:29
2525
- msgid "Поле \"Affiliate Tracking ID\" не может быть пустым."
2526
- msgstr ""
2527
-
2528
- #: application/modules/Flipkart/FlipkartConfig.php:35
2529
- msgid "Token"
2530
- msgstr ""
2531
-
2532
- #: application/modules/Flipkart/FlipkartConfig.php:36
2533
- msgid "Ваш ключ для доступа к API. Войдите в систему -> \"API\" -> \"API Token\""
2534
- msgstr ""
2535
-
2536
- #: application/modules/Flipkart/FlipkartConfig.php:44
2537
- #: application/modules/Shareasale/ShareasaleConfig.php:44
2538
- #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:29
2539
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:29
2540
- msgid "Поле \"Token\" не может быть пустым."
2541
- msgstr ""
2542
-
2543
- #: application/modules/Flipkart/FlipkartConfig.php:60
2544
- #: application/modules/Freebase/FreebaseConfig.php:45
2545
- #: application/modules/GoogleNews/GoogleNewsConfig.php:30
2546
- #: application/modules/Market/MarketConfig.php:58
2547
- #: application/modules/Twitter/TwitterConfig.php:90
2548
- msgid "Поле \"Результатов\" не может быть больше 10."
2549
- msgstr ""
2550
-
2551
- #: application/modules/Flipkart/FlipkartConfig.php:76
2552
- msgid "Поле \"Результатов для обновления\" не может быть больше 10."
2553
- msgstr ""
2554
-
2555
- #: application/modules/Flipkart/FlipkartModule.php:24
2556
- msgid "Добавляет товары flipkart.com"
2557
- msgstr ""
2558
-
2559
- #: application/modules/Freebase/FreebaseConfig.php:21
2560
- msgid "Ключ для доступа к API. Получить можно в Google <a href=\"http://code.google.com/apis/console\">API консоли</a>."
2561
- msgstr ""
2562
-
2563
- #: application/modules/Freebase/FreebaseConfig.php:61
2564
- #: application/modules/GoogleNews/GoogleNewsConfig.php:46
2565
- #: application/modules/Market/MarketConfig.php:74
2566
- msgid "Поле \"Результатов для автоблоггинга\" не может быть больше 10."
2567
- msgstr ""
2568
-
2569
- #: application/modules/Freebase/FreebaseModule.php:28
2570
- msgid "Этот модуль больше не работает по причине закрытия Freebase API. Модуль оставлен в целях совместимости с предыдущими версиями плагина."
2571
- msgstr ""
2572
-
2573
- #: application/modules/GdeSlon/GdeSlonConfig.php:20
2574
- msgid "API ключ"
2575
- msgstr ""
2576
-
2577
- #: application/modules/GdeSlon/GdeSlonConfig.php:21
2578
- msgid "Ваш ключ для доступа к API. Войдите в систему -> \"Инструменты\" -> \"XML API\""
2579
- msgstr ""
2580
-
2581
- #: application/modules/GdeSlon/GdeSlonConfig.php:29
2582
- msgid "Поле \"API ключ\" не может быть пустым."
2583
- msgstr ""
2584
-
2585
- #: application/modules/GdeSlon/GdeSlonConfig.php:36
2586
- msgid "Буквенный или цифровой идентификатор, чтобы сегментировать данные о трафике."
2587
- msgstr ""
2588
-
2589
- #: application/modules/GdeSlon/GdeSlonConfig.php:82
2590
- msgid "Цена"
2591
- msgstr ""
2592
-
2593
- #: application/modules/GdeSlon/GdeSlonConfig.php:83
2594
- msgid "Конверт"
2595
- msgstr ""
2596
-
2597
- #: application/modules/GdeSlon/GdeSlonConfig.php:84
2598
- msgid "Новинки"
2599
- msgstr ""
2600
-
2601
- #: application/modules/GdeSlon/GdeSlonConfig.php:90
2602
- msgid "Категории для поиска"
2603
- msgstr ""
2604
-
2605
- #: application/modules/GdeSlon/GdeSlonConfig.php:91
2606
- msgid "Ограничить поиск задаными категориями. Найти ID категорий можно Найти ID магазинов можно <a target=\"_blank\" href=\"http://api.gdeslon.ru/merchants\">здесь</a>. Можно задать несколько ID через запятую."
2607
- msgstr ""
2608
-
2609
- #: application/modules/GdeSlon/GdeSlonConfig.php:101
2610
- msgid "Ограничить поиск по выбранному магазину. Найти ID магазинов можно <a target=\"_blank\" href=\"http://api.gdeslon.ru/merchants\">здесь</a>. Можно задать несколько ID через запятую."
2611
- msgstr ""
2612
-
2613
- #: application/modules/GdeSlon/GdeSlonModule.php:26
2614
- msgid "Добавляет товары партнерской сети gdeslon.ru"
2615
- msgstr ""
2616
-
2617
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:21
2618
- #: application/modules/Youtube/YoutubeConfig.php:21
2619
- msgid "Ключ для доступа к API. Получить можно в Google <a href=\"http://code.google.com/apis/console\">API консоли</a>"
2620
- msgstr ""
2621
-
2622
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:61
2623
- msgid "Поле \"Результатов для автоблоггинга\" не может быть больше 40."
2624
- msgstr ""
2625
-
2626
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:90
2627
- msgid "Новизна"
2628
- msgstr ""
2629
-
2630
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:96
2631
- msgid "Тип издания"
2632
- msgstr ""
2633
-
2634
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:100
2635
- msgid "Любые"
2636
- msgstr ""
2637
-
2638
- #: application/modules/GoogleBooks/GoogleBooksConfig.php:102
2639
- msgid "Журналы"
2640
- msgstr ""
2641
-
2642
- #: application/modules/GoogleImages/GoogleImagesConfig.php:21
2643
- msgid "Поиск изображений, которые можно использовать. Подробнее <a href=\"https://support.google.com/websearch/answer/29508\">здесь</a>."
2644
- msgstr ""
2645
-
2646
- #: application/modules/GoogleImages/GoogleImagesConfig.php:36
2647
- msgid "Количество результатов для одного запроса. Не может быть больше 8."
2648
- msgstr ""
2649
-
2650
- #: application/modules/GoogleImages/GoogleImagesConfig.php:45
2651
- msgid "Поле \"Результатов\" не может быть больше 8."
2652
- msgstr ""
2653
-
2654
- #: application/modules/GoogleImages/GoogleImagesConfig.php:61
2655
- msgid "Поле \"Результатов для автоблоггинга\" не может быть больше 8."
2656
- msgstr ""
2657
-
2658
- #: application/modules/GoogleImages/GoogleImagesConfig.php:67
2659
- msgid "Цвет"
2660
- msgstr ""
2661
-
2662
- #: application/modules/GoogleImages/GoogleImagesConfig.php:71
2663
- msgid "Любого цвета"
2664
- msgstr ""
2665
-
2666
- #: application/modules/GoogleImages/GoogleImagesConfig.php:79
2667
- msgid "Преобладание цвета"
2668
- msgstr ""
2669
-
2670
- #: application/modules/GoogleImages/GoogleImagesConfig.php:83
2671
- msgid "Любой цвет"
2672
- msgstr ""
2673
-
2674
- #: application/modules/GoogleImages/GoogleImagesConfig.php:84
2675
- msgid "Черный"
2676
- msgstr ""
2677
-
2678
- #: application/modules/GoogleImages/GoogleImagesConfig.php:85
2679
- msgid "Синий"
2680
- msgstr ""
2681
-
2682
- #: application/modules/GoogleImages/GoogleImagesConfig.php:86
2683
- msgid "Коричневый"
2684
- msgstr ""
2685
-
2686
- #: application/modules/GoogleImages/GoogleImagesConfig.php:87
2687
- msgid "Серый"
2688
- msgstr ""
2689
-
2690
- #: application/modules/GoogleImages/GoogleImagesConfig.php:88
2691
- msgid "Зеленый"
2692
- msgstr ""
2693
-
2694
- #: application/modules/GoogleImages/GoogleImagesConfig.php:89
2695
- msgid "Оранжевый"
2696
- msgstr ""
2697
-
2698
- #: application/modules/GoogleImages/GoogleImagesConfig.php:90
2699
- msgid "Розовый"
2700
- msgstr ""
2701
-
2702
- #: application/modules/GoogleImages/GoogleImagesConfig.php:91
2703
- msgid "Фиолетовый"
2704
- msgstr ""
2705
-
2706
- #: application/modules/GoogleImages/GoogleImagesConfig.php:92
2707
- msgid "Красный"
2708
- msgstr ""
2709
-
2710
- #: application/modules/GoogleImages/GoogleImagesConfig.php:93
2711
- msgid "Бирюзовый"
2712
- msgstr ""
2713
-
2714
- #: application/modules/GoogleImages/GoogleImagesConfig.php:94
2715
- msgid "Белый"
2716
- msgstr ""
2717
-
2718
- #: application/modules/GoogleImages/GoogleImagesConfig.php:95
2719
- msgid "Желтый"
2720
- msgstr ""
2721
-
2722
- #: application/modules/GoogleImages/GoogleImagesConfig.php:105
2723
- #: application/modules/GoogleImages/GoogleImagesConfig.php:120
2724
- #: application/modules/GoogleImages/views/search_panel.php:11
2725
- msgid "Любого размера"
2726
- msgstr ""
2727
-
2728
- #: application/modules/GoogleImages/GoogleImagesConfig.php:106
2729
- #: application/modules/GoogleImages/views/search_panel.php:12
2730
- msgid "Маленькие"
2731
- msgstr ""
2732
-
2733
- #: application/modules/GoogleImages/GoogleImagesConfig.php:107
2734
- #: application/modules/GoogleImages/views/search_panel.php:13
2735
- msgid "Средние"
2736
- msgstr ""
2737
-
2738
- #: application/modules/GoogleImages/GoogleImagesConfig.php:108
2739
- #: application/modules/GoogleImages/views/search_panel.php:14
2740
- msgid "Большие"
2741
- msgstr ""
2742
-
2743
- #: application/modules/GoogleImages/GoogleImagesConfig.php:109
2744
- #: application/modules/GoogleImages/views/search_panel.php:15
2745
- msgid "Огромные"
2746
- msgstr ""
2747
-
2748
- #: application/modules/GoogleImages/GoogleImagesConfig.php:116
2749
- #: application/modules/Ozon/OzonConfig.php:78
2750
- msgid "Тип"
2751
- msgstr ""
2752
-
2753
- #: application/modules/GoogleImages/GoogleImagesConfig.php:121
2754
- msgid "Лица"
2755
- msgstr ""
2756
-
2757
- #: application/modules/GoogleImages/GoogleImagesConfig.php:123
2758
- msgid "Клип-арт"
2759
- msgstr ""
2760
-
2761
- #: application/modules/GoogleImages/GoogleImagesConfig.php:124
2762
- msgid "Ч/б рисунки"
2763
- msgstr ""
2764
-
2765
- #: application/modules/GoogleImages/GoogleImagesConfig.php:130
2766
- #: application/modules/Pixabay/PixabayConfig.php:146
2767
- msgid "Безопасный поиск"
2768
- msgstr ""
2769
-
2770
- #: application/modules/GoogleImages/GoogleImagesConfig.php:134
2771
- msgid "Включен"
2772
- msgstr ""
2773
-
2774
- #: application/modules/GoogleImages/GoogleImagesConfig.php:135
2775
- msgid "Модерация"
2776
- msgstr ""
2777
-
2778
- #: application/modules/GoogleImages/GoogleImagesConfig.php:136
2779
- msgid "Отключен"
2780
- msgstr ""
2781
-
2782
- #: application/modules/GoogleImages/GoogleImagesConfig.php:161
2783
- msgid "Ограничить поиск только этим доменом. Например, задайте: photobucket.com"
2784
- msgstr ""
2785
-
2786
- #: application/modules/GoogleImages/GoogleImagesModule.php:25
2787
- msgid "<span style=\"color:red;\">Этот модуль больше не работает по причине закрытия Google Image Search API. Модуль оставлен в целях совместимости с предыдущими версиями плагина.</span>"
2788
- msgstr ""
2789
-
2790
- #: application/modules/Linkshare/LinkshareConfig.php:21
2791
- msgid "Ключ для доступа к LinkShare API. Войдите в аккаунт Linkshare и следуйте: \"LINKS -> Web Service\"."
2792
- msgstr ""
2793
-
2794
- #: application/modules/Linkshare/LinkshareConfig.php:29
2795
- msgid "Поле \"Web Services Token\" не может быть пустым."
2796
- msgstr ""
2797
-
2798
- #: application/modules/Linkshare/LinkshareConfig.php:58
2799
- msgid "Ограничить поиск по Advertiser ID. Войдите в аккаунт LinkShare и следуйте: PROGRAMS -> My Advertisers -> Выбираете рекламодателя -> Advertiser Info."
2800
- msgstr ""
2801
-
2802
- #: application/modules/Linkshare/LinkshareConfig.php:71
2803
- msgid "Искать по всем слова - AND"
2804
- msgstr ""
2805
-
2806
- #: application/modules/Linkshare/LinkshareConfig.php:72
2807
- msgid "Любое из слов - OR"
2808
- msgstr ""
2809
-
2810
- #: application/modules/Linkshare/LinkshareConfig.php:73
2811
- msgid "Точное вхождение - EXACT"
2812
- msgstr ""
2813
-
2814
- #: application/modules/Linkshare/LinkshareConfig.php:105
2815
- msgid "Ограничить поиск по заданной категории. Каждый присоединенный продавец имеет свои категории."
2816
- msgstr ""
2817
-
2818
- #: application/modules/Linkshare/LinkshareModule.php:26
2819
- msgid "Добавляет товары партнерской сети Rakuten Linkshare. Вы должны получить аппрув в каждой программы отдельно."
2820
- msgstr ""
2821
-
2822
- #: application/modules/Market/MarketConfig.php:21
2823
- msgid "Ключ для доступа к Яндекс Маркет API. Отправить запрос на получение можно <a href=\"http://feedback2.yandex.ru/api-market-content/key/\">здесь</a>."
2824
- msgstr ""
2825
-
2826
- #: application/modules/Market/MarketConfig.php:35
2827
- #: application/modules/Zanox/ZanoxConfig.php:90
2828
- msgid "Регион"
2829
- msgstr ""
2830
-
2831
- #: application/modules/Market/MarketConfig.php:39
2832
- msgid "Россия"
2833
- msgstr ""
2834
-
2835
- #: application/modules/Market/MarketConfig.php:40
2836
- msgid "Украина"
2837
- msgstr ""
2838
-
2839
- #: application/modules/Market/MarketConfig.php:41
2840
- msgid "Казахстан"
2841
- msgstr ""
2842
-
2843
- #: application/modules/Market/MarketConfig.php:42
2844
- msgid "Беларусь"
2845
- msgstr ""
2846
-
2847
- #: application/modules/Market/MarketConfig.php:80
2848
- msgid "Предложения"
2849
- msgstr ""
2850
-
2851
- #: application/modules/Market/MarketConfig.php:81
2852
- msgid "Получить список предложений на модель."
2853
- msgstr ""
2854
-
2855
- #: application/modules/Market/MarketConfig.php:87
2856
- msgid "Количество предложений"
2857
- msgstr ""
2858
-
2859
- #: application/modules/Market/MarketConfig.php:97
2860
- msgid "Поле \"Количество предложений\" не может быть больше 30."
2861
- msgstr ""
2862
-
2863
- #: application/modules/Market/MarketConfig.php:103
2864
- msgid "Отзывы"
2865
- msgstr ""
2866
-
2867
- #: application/modules/Market/MarketConfig.php:104
2868
- msgid "Получить отзывы о модели."
2869
- msgstr ""
2870
-
2871
- #: application/modules/Market/MarketConfig.php:110
2872
- #: application/modules/Ozon/OzonConfig.php:144
2873
- msgid "Количество отзывов"
2874
- msgstr ""
2875
-
2876
- #: application/modules/Market/MarketConfig.php:120
2877
- msgid "Поле \"Количество отзывов\" не может быть больше 30."
2878
- msgstr ""
2879
-
2880
- #: application/modules/Market/MarketConfig.php:126
2881
- #: application/modules/Ozon/OzonConfig.php:166
2882
- msgid "Сортировка отзывов"
2883
- msgstr ""
2884
-
2885
- #: application/modules/Market/MarketConfig.php:130
2886
- msgid "Сортировка по оценке пользователем модели"
2887
- msgstr ""
2888
-
2889
- #: application/modules/Market/MarketConfig.php:131
2890
- msgid "Сортировка по дате написания отзыва"
2891
- msgstr ""
2892
-
2893
- #: application/modules/Market/MarketConfig.php:132
2894
- msgid "Сортировка по полезности отзыва"
2895
- msgstr ""
2896
-
2897
- #: application/modules/Market/MarketConfig.php:139
2898
- msgid "Размер отзывов в символах (0 - не обрезать)"
2899
- msgstr ""
2900
-
2901
- #: application/modules/Market/MarketModule.php:28
2902
- msgid "Добавляет товары из русскоязычного каталога Яндекс.Маркет"
2903
- msgstr ""
2904
-
2905
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:21
2906
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:36
2907
- msgid "Следуйте: My Details -> Accout Details -> API Key"
2908
- msgstr ""
2909
-
2910
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:44
2911
- msgid "Поле Private Key\" не может быть пустым."
2912
- msgstr ""
2913
-
2914
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:59
2915
- #: application/modules/Shareasale/ShareasaleConfig.php:29
2916
- msgid "Поле \"Affiliate ID\" не может быть пустым."
2917
- msgstr ""
2918
-
2919
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:65
2920
- msgid "Agency"
2921
- msgstr ""
2922
-
2923
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:88
2924
- msgid "Поле \"Currency\" не может быть пустым."
2925
- msgstr ""
2926
-
2927
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:104
2928
- #: application/modules/Optimisemedia/OptimisemediaConfig.php:120
2929
- msgid "Поле \"Результатов\" не может быть больше 500."
2930
- msgstr ""
2931
-
2932
- #: application/modules/Optimisemedia/OptimisemediaModule.php:27
2933
- msgid "Добавляет товары партнерской сети Optimise Network."
2934
- msgstr ""
2935
-
2936
- #: application/modules/Ozon/OzonConfig.php:20
2937
- msgid "Партнерский идентификатор"
2938
- msgstr ""
2939
-
2940
- #: application/modules/Ozon/OzonConfig.php:21
2941
- msgid "Укажите, если хотите посылать трафик на \"родную\" партнерскую программу ozon. Найти идентификатор можно <a href=\"https://www.ozon.ru/?context=partner_data\">здесь</a>."
2942
- msgstr ""
2943
-
2944
- #: application/modules/Ozon/OzonConfig.php:30
2945
- msgid "Deeplink"
2946
- msgstr ""
2947
-
2948
- #: application/modules/Ozon/OzonConfig.php:31
2949
- msgid "Deeplink одной из CPA-сетей с поддержкой ozon. Укажите, если хотите посылать трафик через CPA-сеть."
2950
- msgstr ""
2951
-
2952
- #: application/modules/Ozon/OzonConfig.php:67
2953
- msgid "Обратная релевантность"
2954
- msgstr ""
2955
-
2956
- #: application/modules/Ozon/OzonConfig.php:68
2957
- msgid "Ozon Special По умолчанию"
2958
- msgstr ""
2959
-
2960
- #: application/modules/Ozon/OzonConfig.php:69
2961
- msgid "Ozon Special Имя"
2962
- msgstr ""
2963
-
2964
- #: application/modules/Ozon/OzonConfig.php:70
2965
- msgid "Ozon Special Бестселлеры"
2966
- msgstr ""
2967
-
2968
- #: application/modules/Ozon/OzonConfig.php:71
2969
- msgid "Ozon Special Рейтинг"
2970
- msgstr ""
2971
-
2972
- #: application/modules/Ozon/OzonConfig.php:72
2973
- msgid "Ozon Special Год выхода"
2974
- msgstr ""
2975
-
2976
- #: application/modules/Ozon/OzonConfig.php:73
2977
- msgid "Ozon Special Цена"
2978
- msgstr ""
2979
-
2980
- #: application/modules/Ozon/OzonConfig.php:74
2981
- msgid "Доступность"
2982
- msgstr ""
2983
-
2984
- #: application/modules/Ozon/OzonConfig.php:75
2985
- msgid "Обратная доступность"
2986
- msgstr ""
2987
-
2988
- #: application/modules/Ozon/OzonConfig.php:76
2989
- msgid "Год"
2990
- msgstr ""
2991
-
2992
- #: application/modules/Ozon/OzonConfig.php:77
2993
- msgid "Год в обратном порядке"
2994
- msgstr ""
2995
-
2996
- #: application/modules/Ozon/OzonConfig.php:79
2997
- msgid "Тип в обратном порядке"
2998
- msgstr ""
2999
-
3000
- #: application/modules/Ozon/OzonConfig.php:80
3001
- msgid "Увеличение цены"
3002
- msgstr ""
3003
-
3004
- #: application/modules/Ozon/OzonConfig.php:81
3005
- msgid "Уменьшение цены"
3006
- msgstr ""
3007
-
3008
- #: application/modules/Ozon/OzonConfig.php:83
3009
- msgid "Название в обратном порядке"
3010
- msgstr ""
3011
-
3012
- #: application/modules/Ozon/OzonConfig.php:84
3013
- msgid "Автор"
3014
- msgstr ""
3015
-
3016
- #: application/modules/Ozon/OzonConfig.php:85
3017
- msgid "Автор в обратном порядке"
3018
- msgstr ""
3019
-
3020
- #: application/modules/Ozon/OzonConfig.php:96
3021
- msgid "Детям и мамам"
3022
- msgstr ""
3023
-
3024
- #: application/modules/Ozon/OzonConfig.php:98
3025
- msgid "Электроника"
3026
- msgstr ""
3027
-
3028
- #: application/modules/Ozon/OzonConfig.php:100
3029
- msgid "Софт и игры"
3030
- msgstr ""
3031
-
3032
- #: application/modules/Ozon/OzonConfig.php:101
3033
- msgid "DVD и Blu-ray"
3034
- msgstr ""
3035
-
3036
- #: application/modules/Ozon/OzonConfig.php:103
3037
- msgid "Дом, сад, зоотовары"
3038
- msgstr ""
3039
-
3040
- #: application/modules/Ozon/OzonConfig.php:104
3041
- msgid "Спорт и отдых"
3042
- msgstr ""
3043
-
3044
- #: application/modules/Ozon/OzonConfig.php:105
3045
- msgid "Красота и здоровье"
3046
- msgstr ""
3047
-
3048
- #: application/modules/Ozon/OzonConfig.php:106
3049
- msgid "Одежда, обувь, аксессуары"
3050
- msgstr ""
3051
-
3052
- #: application/modules/Ozon/OzonConfig.php:107
3053
- msgid "Подарки и сувениры"
3054
- msgstr ""
3055
-
3056
- #: application/modules/Ozon/OzonConfig.php:108
3057
- msgid "Антиквариат, винтаж, искусство"
3058
- msgstr ""
3059
-
3060
- #: application/modules/Ozon/OzonConfig.php:114
3061
- msgid "Характеристики"
3062
- msgstr ""
3063
-
3064
- #: application/modules/Ozon/OzonConfig.php:115
3065
- msgid "Парсить характеристики товаров (максимум для 3-х товаров)."
3066
- msgstr ""
3067
-
3068
- #: application/modules/Ozon/OzonConfig.php:122
3069
- msgid "Парсить отзывы покупателей."
3070
- msgstr ""
3071
-
3072
- #: application/modules/Ozon/OzonConfig.php:128
3073
- msgid "Количество товаров с отзывами"
3074
- msgstr ""
3075
-
3076
- #: application/modules/Ozon/OzonConfig.php:129
3077
- msgid "Парсить отзывы только для заданного количества товаров. Максимум - 3."
3078
- msgstr ""
3079
-
3080
- #: application/modules/Ozon/OzonConfig.php:138
3081
- msgid "Поле \"Количество товаров с отзывами\" не может быть больше 3."
3082
- msgstr ""
3083
-
3084
- #: application/modules/Ozon/OzonConfig.php:145
3085
- msgid "Сколько отзывов парсить для одного товара."
3086
- msgstr ""
3087
-
3088
- #: application/modules/Ozon/OzonConfig.php:156
3089
- msgid "Размер отзыва в символах (0 - не обрезать)"
3090
- msgstr ""
3091
-
3092
- #: application/modules/Ozon/OzonConfig.php:170
3093
- msgid "Полезность"
3094
- msgstr ""
3095
-
3096
- #: application/modules/Ozon/OzonConfig.php:171
3097
- msgid "Дата публикации"
3098
- msgstr ""
3099
-
3100
- #: application/modules/Ozon/OzonConfig.php:172
3101
- #: application/modules/Youtube/YoutubeConfig.php:62
3102
- #: application/modules/Youtube/views/search_panel.php:9
3103
- msgid "Рейтинг"
3104
- msgstr ""
3105
-
3106
- #: application/modules/Ozon/OzonModule.php:26
3107
- msgid "Добавляет товары OZON.ru"
3108
- msgstr ""
3109
-
3110
- #: application/modules/PayTM/PayTMConfig.php:21
3111
- msgid "Deeplink одной из CPA-сетей с поддержкой PayTM. Обязательно указывайте этот параметр, чтобы получать партнерское вознаграждение."
3112
- msgstr ""
3113
-
3114
- #: application/modules/PayTM/PayTMConfig.php:53
3115
- msgid "Искать только в указаной категории. Параметр category можно найти в URL на сайте paytm при использовании поиска по категории."
3116
- msgstr ""
3117
-
3118
- #: application/modules/PayTM/PayTMConfig.php:63
3119
- msgid "Только товары в наличии."
3120
- msgstr ""
3121
-
3122
- #: application/modules/PayTM/PayTMModule.php:24
3123
- msgid "Добавляет товары paytm.com"
3124
- msgstr ""
3125
-
3126
- #: application/modules/Pixabay/PixabayConfig.php:21
3127
- msgid "Ключ доступа к Pixabay API. Найти можно <a href=\"https://pixabay.com/api/docs/\">здесь</a> (сначала залогиньтесь в свой аккаунт pixabay)."
3128
- msgstr ""
3129
-
3130
- #: application/modules/Pixabay/PixabayConfig.php:29
3131
- msgid "Поле \"Key\" не может быть пустым."
3132
- msgstr ""
3133
-
3134
- #: application/modules/Pixabay/PixabayConfig.php:45
3135
- msgid "Поле \"Результатов\" не может быть больше 200."
3136
- msgstr ""
3137
-
3138
- #: application/modules/Pixabay/PixabayConfig.php:61
3139
- msgid "Поле \"Результатов для автоблоггинга\" не может быть больше 200."
3140
- msgstr ""
3141
-
3142
- #: application/modules/Pixabay/PixabayConfig.php:68
3143
- msgid "Размер изображения по высоте."
3144
- msgstr ""
3145
-
3146
- #: application/modules/Pixabay/PixabayConfig.php:81
3147
- msgid "Тип изображения"
3148
- msgstr ""
3149
-
3150
- #: application/modules/Pixabay/PixabayConfig.php:95
3151
- msgid "Ориентация"
3152
- msgstr ""
3153
-
3154
- #: application/modules/Pixabay/PixabayConfig.php:139
3155
- msgid "Выбор редактора"
3156
- msgstr ""
3157
-
3158
- #: application/modules/Pixabay/PixabayConfig.php:140
3159
- msgid "Select images that have received an Editor's Choice award."
3160
- msgstr ""
3161
-
3162
- #: application/modules/Pixabay/PixabayConfig.php:147
3163
- msgid "A flag indicating that only images suitable for all ages should be returned."
3164
- msgstr ""
3165
-
3166
- #: application/modules/Pixabay/PixabayConfig.php:166
3167
- msgid "Сохранять картинки на сервер. Hotlinking не разрешен правилами pixabay API. Ссылки на картинки pixabay будут валидны 24 часа."
3168
- msgstr ""
3169
-
3170
- #: application/modules/Pixabay/PixabayModule.php:24
3171
- msgid "Поиск фотографий и иллюстраций со свободной лицензией CC0 Public Domain на pixabay.com."
3172
- msgstr ""
3173
-
3174
- #: application/modules/RelatedKeywords/RelatedKeywordsConfig.php:45
3175
- msgid "Поле \"Результатов\" не может быть больше 5ы0."
3176
- msgstr ""
3177
-
3178
- #: application/modules/RelatedKeywords/RelatedKeywordsModule.php:26
3179
- msgid "Находит родственные ключевые слова и выводит их в посте."
3180
- msgstr ""
3181
-
3182
- #: application/modules/RssFetcher/RssFetcherConfig.php:21
3183
- msgid "Для подстановки текущего ключевого слова используйте <em>%KEYWORD%</em>."
3184
- msgstr ""
3185
-
3186
- #: application/modules/RssFetcher/RssFetcherConfig.php:29
3187
- msgid "Поле \"RSS URL\" не может быть пустым."
3188
- msgstr ""
3189
-
3190
- #: application/modules/RssFetcher/RssFetcherConfig.php:67
3191
- msgid "Разрешенные теги"
3192
- msgstr ""
3193
-
3194
- #: application/modules/RssFetcher/RssFetcherConfig.php:68
3195
- msgid "Теги, которые разрешены в title и description."
3196
- msgstr ""
3197
-
3198
- #: application/modules/RssFetcher/RssFetcherModule.php:25
3199
- msgid "Парсит любую RSS-ленту."
3200
- msgstr ""
3201
-
3202
- #: application/modules/RssFetcher/RssFetcherModule.php:26
3203
- msgid "Важно, чтобы в URL была возможность использовать ключевое слово, т.е. лента должна содержать результаты поиска по ключевому слову."
3204
- msgstr ""
3205
-
3206
- #: application/modules/Shareasale/ShareasaleConfig.php:21
3207
- msgid "Ваш Affiliate ID."
3208
- msgstr ""
3209
-
3210
- #: application/modules/Shareasale/ShareasaleConfig.php:36
3211
- msgid "Token в комбинации с IP адресом используется для версификации запросов к API. Найти можно <a target=\"_blank\" href=\"https://account.shareasale.com/a-apimanager.cfm\">здесь</a>."
3212
- msgstr ""
3213
-
3214
- #: application/modules/Shareasale/ShareasaleConfig.php:51
3215
- msgid "Secret Key для доступа к API. Найти можно <a target=\"_blank\" href=\"https://account.shareasale.com/a-apimanager.cfm\">здесь</a>."
3216
- msgstr ""
3217
-
3218
- #: application/modules/Shareasale/ShareasaleConfig.php:59
3219
- msgid "Поле \"Secret Key\" не может быть пустым."
3220
- msgstr ""
3221
-
3222
- #: application/modules/Shareasale/ShareasaleConfig.php:88
3223
- msgid "Вернуть продукты только этого мерчанта."
3224
- msgstr ""
3225
-
3226
- #: application/modules/Shareasale/ShareasaleConfig.php:97
3227
- msgid "Исключить мерчанта"
3228
- msgstr ""
3229
-
3230
- #: application/modules/Shareasale/ShareasaleConfig.php:98
3231
- msgid "Задайте ID мерчанта, товары которого необходимо исключить из поиска."
3232
- msgstr ""
3233
-
3234
- #: application/modules/Shareasale/ShareasaleModule.php:26
3235
- msgid "Добавляет товары партнерской сети Shareasale.com. Вы должны получить аппрув от каждой программы отдельно."
3236
- msgstr ""
3237
-
3238
- #: application/modules/TradedoublerCoupons/TradedoublerCouponsConfig.php:21
3239
- msgid "Ключ для доступа к Tradedoubler Coupons API. Найти можно <a href=\"https://login.tradedoubler.com/publisher/aManageTokens.action\">здесь</a>."
3240
- msgstr ""
3241
-
3242
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:21
3243
- msgid "Ключ для доступа к Tradedoubler Products API. Найти можно <a href=\"https://login.tradedoubler.com/publisher/aManageTokens.action\">здесь</a>."
3244
- msgstr ""
3245
-
3246
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:92
3247
- msgid "Feed ID"
3248
- msgstr ""
3249
-
3250
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:93
3251
- msgid "Вы можете задать несколько Feed IDs через запятую."
3252
- msgstr ""
3253
-
3254
- #: application/modules/TradedoublerProducts/TradedoublerProductsConfig.php:94
3255
- msgid "Список ваших фидов можно найти <a href=\"http://api.tradedoubler.com/1.0/productFeeds;pretty=true?token={token}\">здесь</a> (замените в URL {token} на ваш Token)."
3256
- msgstr ""
3257
-
3258
- #: application/modules/TradedoublerProducts/TradedoublerProductsModule.php:26
3259
- msgid "Добавляет товары партнерской сети Tradedoubler. Вы должны получить аппрув в каждой программы отдельно."
3260
- msgstr ""
3261
-
3262
- #: application/modules/Twitter/TwitterConfig.php:21
3263
- #: application/modules/Twitter/TwitterConfig.php:36
3264
- #: application/modules/Twitter/TwitterConfig.php:51
3265
- #: application/modules/Twitter/TwitterConfig.php:66
3266
- msgid "Получить можно <a href=\"https://dev.twitter.com/apps/\">здесь</a>."
3267
- msgstr ""
3268
-
3269
- #: application/modules/Twitter/TwitterConfig.php:106
3270
- msgid "Поле \"Результатов для автоблоггинга\" не может быть больше 100."
3271
- msgstr ""
3272
-
3273
- #: application/modules/Twitter/TwitterConfig.php:116
3274
- #: application/modules/Twitter/views/search_panel.php:2
3275
- msgid "Новые"
3276
- msgstr ""
3277
-
3278
- #: application/modules/Twitter/TwitterConfig.php:117
3279
- #: application/modules/Twitter/views/search_panel.php:3
3280
- msgid "Популярные"
3281
- msgstr ""
3282
-
3283
- #: application/modules/Twitter/TwitterConfig.php:118
3284
- #: application/modules/Twitter/views/search_panel.php:4
3285
- msgid "Микс"
3286
- msgstr ""
3287
-
3288
- #: application/modules/VkNews/VkNewsModule.php:25
3289
- msgid "Добавляет новости из русскоязычной социальной сети vk.com"
3290
- msgstr ""
3291
-
3292
- #: application/modules/Youtube/YoutubeConfig.php:61
3293
- #: application/modules/Youtube/views/search_panel.php:8
3294
- msgid "Дата"
3295
- msgstr ""
3296
-
3297
- #: application/modules/Youtube/YoutubeConfig.php:65
3298
- #: application/modules/Youtube/views/search_panel.php:12
3299
- msgid "Просмотры"
3300
- msgstr ""
3301
-
3302
- #: application/modules/Youtube/YoutubeConfig.php:73
3303
- msgid "Многие видео на Youtube загружены с лицензией Creative Commons. <a href=\"http://www.google.com/support/youtube/bin/answer.py?answer=1284989\">Узнать больше</a>."
3304
- msgstr ""
3305
-
3306
- #: application/modules/Youtube/YoutubeConfig.php:77
3307
- msgid "Сreative Сommons лицензия"
3308
- msgstr ""
3309
-
3310
- #: application/modules/Youtube/YoutubeConfig.php:78
3311
- #: application/modules/Youtube/views/search_panel.php:4
3312
- msgid "Стандартная лицензия"
3313
- msgstr ""
3314
-
3315
- #: application/modules/Youtube/views/search_panel.php:3
3316
- msgid "Сreative Сommons"
3317
- msgstr ""
3318
-
3319
- #: application/modules/Zanox/ZanoxConfig.php:22
3320
- msgid "Специальный ключ для доступа к Zanox API, а также ваша связь с партнерской программой."
3321
- msgstr ""
3322
-
3323
- #: application/modules/Zanox/ZanoxConfig.php:30
3324
- msgid "Поле \"Connect ID\" не может быть пустым."
3325
- msgstr ""
3326
-
3327
- #: application/modules/Zanox/ZanoxConfig.php:37
3328
- msgid "Вернуть партнерские ссылки для этого ad space."
3329
- msgstr ""
3330
-
3331
- #: application/modules/Zanox/ZanoxConfig.php:78
3332
- msgid "Тип поиска"
3333
- msgstr ""
3334
-
3335
- #: application/modules/Zanox/ZanoxConfig.php:79
3336
- msgid "\"Автоматически\" означает, что тип поиска будет выбран в зависимости от длины поисковой фразы."
3337
- msgstr ""
3338
-
3339
- #: application/modules/Zanox/ZanoxConfig.php:82
3340
- msgid "Автоматически"
3341
- msgstr ""
3342
-
3343
- #: application/modules/Zanox/ZanoxConfig.php:83
3344
- msgid "Фраза"
3345
- msgstr ""
3346
-
3347
- #: application/modules/Zanox/ZanoxConfig.php:84
3348
- msgid "Контекстный"
3349
- msgstr ""
3350
-
3351
- #: application/modules/Zanox/ZanoxConfig.php:91
3352
- msgid "Ограничить результаты поиска выбранным регионом."
3353
- msgstr ""
3354
-
3355
- #: application/modules/Zanox/ZanoxConfig.php:94
3356
- msgid "Любой регион"
3357
- msgstr ""
3358
-
3359
- #: application/modules/Zanox/ZanoxConfig.php:121
3360
- msgid "ID программы"
3361
- msgstr ""
3362
-
3363
- #: application/modules/Zanox/ZanoxConfig.php:122
3364
- msgid "Ограничить результаты поиска конкретной программой. Вы можете указать несколько ID через запятую. Например: \"1234\", \"1234,5678,9123\". Если не указано, поиск будет произведен по всем вашим подключенным программам."
3365
- msgstr ""
3366
-
3367
- #: application/modules/Zanox/ZanoxConfig.php:142
3368
- msgid "Партнерство"
3369
- msgstr ""
3370
-
3371
- #: application/modules/Zanox/ZanoxConfig.php:143
3372
- msgid "Если выбрано \"Все\", партнерские ссылки не будут включены в результат. Используйте только для оценки доступных товаров."
3373
- msgstr ""
3374
-
3375
- #: application/modules/Zanox/ZanoxConfig.php:147
3376
- msgid "Подтвержденные"
3377
- msgstr ""
3378
-
3379
- #: application/modules/Zanox/ZanoxModule.php:27
3380
- msgid "Добавляет товары партнерской сети zanox.com. Вы должны получить аппрув от каждой программы отдельно."
3381
- msgstr ""
3382
- #. Plugin Name of the plugin/theme
3383
- msgid "Content Egg"
3384
- msgstr ""
3385
-
3386
- #. Plugin URI of the plugin/theme
3387
- msgid "http://www.keywordrush.com/contentegg"
3388
- msgstr ""
3389
-
3390
- #. Description of the plugin/theme
3391
- msgid "Easily adding auto updating products from affiliate systems and additional content to posts."
3392
- msgstr ""
3393
-
3394
- #. Author of the plugin/theme
3395
- msgid "keywordrush.com"
3396
- msgstr ""
3397
-
3398
- #. Author URI of the plugin/theme
3399
- msgid "http://www.keywordrush.com"
3400
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/languages/index.php DELETED
@@ -1,2 +0,0 @@
1
- <?php
2
- //Nothing to see here
 
 
trunk/languages/tpl/content-egg-tpl-DE.mo DELETED
Binary file
trunk/languages/tpl/content-egg-tpl-DE.pot DELETED
@@ -1,392 +0,0 @@
1
- # Copyright (C) 2015 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 2.1.0\n"
6
- "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg-tpl\n"
7
- "POT-Creation-Date: 2016-02-10 13:11+0100\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=UTF-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2016-09-05 17:35+0200\n"
12
- "Language-Team: \n"
13
- "X-Generator: Poedit 1.6.10\n"
14
- "Last-Translator: Sizam themes <sizamtheme@gmail.com>\n"
15
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
16
- "Language: de_DE\n"
17
-
18
- #: application/helpers/TemplateHelper.php:28
19
- msgid "number_format_decimal_point"
20
- msgstr ","
21
-
22
- #: application/helpers/TemplateHelper.php:29
23
- msgid "number_format_thousands_sep"
24
- msgstr "."
25
-
26
- #: application/helpers/TemplateHelper.php:99
27
- msgid "d"
28
- msgstr "Tage"
29
-
30
- #: application/helpers/TemplateHelper.php:101
31
- msgid "h"
32
- msgstr "Stunden"
33
-
34
- #: application/helpers/TemplateHelper.php:103
35
- #: application/helpers/TemplateHelper.php:105
36
- #: application/modules/Ebay/templates/data_item.php:90
37
- #: application/modules/Ebay/templates/data_list.php:42
38
- msgid "m"
39
- msgstr "Minuten"
40
-
41
- #: application/modules/AffilinetCoupons/templates/data_coupons.php:6
42
- msgid "Coupons"
43
- msgstr "Coupon"
44
-
45
- #: application/modules/AffilinetCoupons/templates/data_coupons.php:35
46
- #: application/modules/CjLinks/templates/data_universal.php:36
47
- msgid "Coupon code:"
48
- msgstr "Coupon Code:"
49
-
50
- #: application/modules/AffilinetCoupons/templates/data_coupons.php:37
51
- #: application/modules/CjLinks/templates/data_universal.php:38
52
- msgid "Ends:"
53
- msgstr "Endet:"
54
-
55
- #: application/modules/AffilinetCoupons/templates/data_coupons.php:46
56
- #: application/modules/CjLinks/templates/data_universal.php:49
57
- msgid "Shop Sale"
58
- msgstr "Angebot"
59
-
60
- #: application/modules/AffilinetProducts/templates/data_grid.php:6
61
- #: application/modules/Aliexpress/templates/data_grid.php:6
62
- #: application/modules/Amazon/templates/data_grid.php:6
63
- #: application/modules/CityadsProducts/templates/data_grid.php:6
64
- #: application/modules/CjProducts/templates/data_grid.php:6
65
- #: application/modules/Ebay/templates/data_grid.php:6
66
- #: application/modules/GdeSlon/templates/data_grid.php:6
67
- #: application/modules/Linkshare/templates/data_grid.php:6
68
- #: application/modules/Ozon/templates/data_grid.php:6
69
- #: application/modules/Shareasale/templates/data_grid.php:6
70
- #: application/modules/Zanox/templates/data_grid.php:6
71
- msgid "Grid"
72
- msgstr "Gitter"
73
-
74
- #: application/modules/AffilinetProducts/templates/data_item.php:6
75
- #: application/modules/Aliexpress/templates/data_item.php:6
76
- #: application/modules/Amazon/templates/data_item.php:6
77
- #: application/modules/CityadsProducts/templates/data_item.php:6
78
- #: application/modules/CjProducts/templates/data_item.php:6
79
- #: application/modules/Ebay/templates/data_item.php:6
80
- #: application/modules/GdeSlon/templates/data_item.php:6
81
- #: application/modules/Linkshare/templates/data_item.php:6
82
- #: application/modules/Market/templates/data_item.php:5
83
- #: application/modules/Ozon/templates/data_item.php:6
84
- #: application/modules/Shareasale/templates/data_item.php:6
85
- #: application/modules/Zanox/templates/data_item.php:6
86
- msgid "Product card"
87
- msgstr "Produktkarte"
88
-
89
- #: application/modules/AffilinetProducts/templates/data_item.php:50
90
- #: application/modules/Aliexpress/templates/data_item.php:50
91
- #: application/modules/Amazon/templates/data_compare.php:118
92
- #: application/modules/Amazon/templates/data_compare.php:239
93
- #: application/modules/Amazon/templates/data_item.php:75
94
- #: application/modules/CityadsProducts/templates/data_item.php:50
95
- #: application/modules/CjProducts/templates/data_item.php:46
96
- #: application/modules/Ebay/templates/data_item.php:68
97
- #: application/modules/GdeSlon/templates/data_item.php:46
98
- #: application/modules/Linkshare/templates/data_item.php:46
99
- #: application/modules/Ozon/templates/data_compare.php:87
100
- #: application/modules/Ozon/templates/data_compare.php:168
101
- #: application/modules/Ozon/templates/data_item.php:59
102
- #: application/modules/Shareasale/templates/data_item.php:50
103
- #: application/modules/Zanox/templates/data_item.php:46
104
- msgid "BUY THIS ITEM"
105
- msgstr "Jetzt kaufen bei"
106
-
107
- #: application/modules/AffilinetProducts/templates/data_list.php:6
108
- #: application/modules/Aliexpress/templates/data_list.php:6
109
- #: application/modules/Amazon/templates/data_list.php:6
110
- #: application/modules/CityadsProducts/templates/data_list.php:6
111
- #: application/modules/CjProducts/templates/data_list.php:6
112
- #: application/modules/Ebay/templates/data_list.php:6
113
- #: application/modules/GdeSlon/templates/data_list.php:6
114
- #: application/modules/Linkshare/templates/data_list.php:6
115
- #: application/modules/Ozon/templates/data_list.php:6
116
- #: application/modules/Shareasale/templates/data_list.php:6
117
- #: application/modules/Zanox/templates/data_list.php:6
118
- msgid "List"
119
- msgstr "Liste"
120
-
121
- #: application/modules/Amazon/templates/data_compare.php:6
122
- #: application/modules/Amazon/templates/data_compare.php:40
123
- #: application/modules/Ozon/templates/data_compare.php:6
124
- #: application/modules/Ozon/templates/data_compare.php:28
125
- msgid "Compare"
126
- msgstr "Vergleich"
127
-
128
- #: application/modules/Amazon/templates/data_compare.php:58
129
- #: application/modules/Ozon/templates/data_compare.php:45
130
- msgid "User Rating"
131
- msgstr "Kundenbewertungen"
132
-
133
- #: application/modules/Amazon/templates/data_compare.php:67
134
- msgid "ratings"
135
- msgstr "Bewertungen"
136
-
137
- #: application/modules/Amazon/templates/data_compare.php:71
138
- #: application/modules/Ozon/templates/data_compare.php:57
139
- msgid "See all reviews"
140
- msgstr "Zeige alle Bewertungen"
141
-
142
- #: application/modules/Amazon/templates/data_compare.php:79
143
- #: application/modules/Ozon/templates/data_compare.php:65
144
- msgid "Price"
145
- msgstr "Preis"
146
-
147
- #: application/modules/Amazon/templates/data_compare.php:87
148
- #: application/modules/Amazon/templates/data_item.php:51
149
- #: application/modules/Amazon/templates/data_list.php:45
150
- msgid "Too low to display"
151
- msgstr "Zu gering"
152
-
153
- #: application/modules/Amazon/templates/data_compare.php:90
154
- #: application/modules/Amazon/templates/data_item.php:55
155
- #: application/modules/Amazon/templates/data_list.php:49
156
- #: application/modules/Ebay/templates/data_item.php:99
157
- #: application/modules/Ebay/templates/data_list.php:69
158
- msgid "Free shipping"
159
- msgstr "Gratis Versand"
160
-
161
- #: application/modules/Amazon/templates/data_compare.php:96
162
- #: application/modules/Amazon/templates/data_item.php:61
163
- msgid "new"
164
- msgstr "neu"
165
-
166
- #: application/modules/Amazon/templates/data_compare.php:96
167
- #: application/modules/Amazon/templates/data_compare.php:101
168
- #: application/modules/Amazon/templates/data_item.php:61
169
- #: application/modules/Amazon/templates/data_item.php:66
170
- msgid "from"
171
- msgstr "ab"
172
-
173
- #: application/modules/Amazon/templates/data_compare.php:101
174
- #: application/modules/Amazon/templates/data_item.php:66
175
- msgid "used"
176
- msgstr "gebraucht"
177
-
178
- #: application/modules/Amazon/templates/data_compare.php:106
179
- #: application/modules/Amazon/templates/data_item.php:71
180
- #: application/modules/Ozon/templates/data_compare.php:75
181
- msgid "as of"
182
- msgstr "am"
183
-
184
- #: application/modules/Amazon/templates/data_compare.php:114
185
- #: application/modules/Amazon/templates/data_compare.php:235
186
- #: application/modules/Ozon/templates/data_compare.php:83
187
- #: application/modules/Ozon/templates/data_compare.php:164
188
- msgid "Shop Now"
189
- msgstr "Jetzt kaufen"
190
-
191
- #: application/modules/Amazon/templates/data_compare.php:127
192
- #: application/modules/Amazon/templates/data_item.php:90
193
- #: application/modules/Ozon/templates/data_item.php:95
194
- msgid "Features"
195
- msgstr "Eigenschaften"
196
-
197
- #: application/modules/Amazon/templates/data_compare.php:177
198
- #: application/modules/Ozon/templates/data_compare.php:137
199
- msgid "User Reviews"
200
- msgstr "Kundenbewertungen"
201
-
202
- #: application/modules/Amazon/templates/data_compare.php:202
203
- msgid "Expert Reviews"
204
- msgstr "Expertenmeinungen"
205
-
206
- #: application/modules/Amazon/templates/data_compare.php:218
207
- msgid "Barcodes"
208
- msgstr "Barcodes"
209
-
210
- #: application/modules/Amazon/templates/data_compare.php:246
211
- msgid "Images"
212
- msgstr "Bilder"
213
-
214
- #: application/modules/Amazon/templates/data_grid.php:65
215
- #: application/modules/Amazon/templates/data_list.php:57
216
- msgid "Last updated on"
217
- msgstr "Letztes Update am"
218
-
219
- #: application/modules/Amazon/templates/data_item.php:102
220
- #: application/modules/Market/templates/data_item.php:106
221
- #: application/modules/Ozon/templates/data_item.php:80
222
- msgid "Customer reviews"
223
- msgstr "Kundenbewertungen"
224
-
225
- #: application/modules/Amazon/templates/data_item.php:107
226
- msgid "customer reviews"
227
- msgstr "Kundenbewertungen"
228
-
229
- #: application/modules/BingImages/templates/data_image.php:5
230
- #: application/modules/GoogleImages/templates/data_image.php:5
231
- msgid "Image"
232
- msgstr "Bild"
233
-
234
- #: application/modules/BingImages/templates/data_justified_gallery.php:7
235
- #: application/modules/Flickr/templates/data_justified_gallery.php:7
236
- #: application/modules/GoogleImages/templates/data_justified_gallery.php:7
237
- #: application/modules/Ozon/templates/data_compare.php:177
238
- msgid "Gallery"
239
- msgstr "Galerie"
240
-
241
- #: application/modules/CjLinks/templates/data_universal.php:6
242
- msgid "Universal"
243
- msgstr "Universal"
244
-
245
- #: application/modules/Clickbank/templates/data_simple.php:6
246
- #: application/modules/Flickr/templates/data_simple.php:5
247
- #: application/modules/Freebase/templates/data_simple.php:5
248
- #: application/modules/GoogleBooks/templates/data_simple.php:5
249
- #: application/modules/GoogleImages/templates/data_simple.php:5
250
- #: application/modules/Twitter/templates/data_simple.php:5
251
- #: application/modules/VkNews/templates/data_simple.php:5
252
- #: application/modules/Youtube/templates/data_simple.php:5
253
- msgid "Simple"
254
- msgstr "Einfach"
255
-
256
- #: application/modules/Ebay/templates/data_grid.php:51
257
- #: application/modules/Ebay/templates/data_item.php:45
258
- #: application/modules/Ebay/templates/data_item.php:52
259
- #: application/modules/Ebay/templates/data_list.php:62
260
- msgid "Buy It Now"
261
- msgstr "Jetzt kaufen"
262
-
263
- #: application/modules/Ebay/templates/data_grid.php:53
264
- #: application/modules/Ebay/templates/data_item.php:76
265
- #: application/modules/Ebay/templates/data_list.php:64
266
- msgid "Bids:"
267
- msgstr "Gebote:"
268
-
269
- #: application/modules/Ebay/templates/data_item.php:54
270
- msgid "Current Price"
271
- msgstr "Aktueller Preis"
272
-
273
- #: application/modules/Ebay/templates/data_item.php:68
274
- msgid "VIEW THIS ITEM"
275
- msgstr "Produkt anzeigen"
276
-
277
- #: application/modules/Ebay/templates/data_item.php:81
278
- msgid "Item condition:"
279
- msgstr "Zustand"
280
-
281
- #: application/modules/Ebay/templates/data_item.php:89
282
- #: application/modules/Ebay/templates/data_list.php:41
283
- msgid "Time left:"
284
- msgstr "Restzeit:"
285
-
286
- #: application/modules/Ebay/templates/data_item.php:94
287
- #: application/modules/Ebay/templates/data_list.php:46
288
- msgid "Ended:"
289
- msgstr "Endet:"
290
-
291
- #: application/modules/Ebay/templates/data_item.php:103
292
- msgid "EEK:"
293
- msgstr ""
294
-
295
- #: application/modules/Flickr/templates/data_simple.php:20
296
- msgid "Photo %s on Flickr"
297
- msgstr ""
298
-
299
- #: application/modules/Freebase/templates/data_simple.php:27
300
- msgid "Source:"
301
- msgstr "Quelle:"
302
-
303
- #: application/modules/Market/templates/data_item.php:32
304
- msgid "Customer reviews:"
305
- msgstr "Kundenbewertungen"
306
-
307
- #: application/modules/Market/templates/data_item.php:38
308
- msgid "Average price"
309
- msgstr "Durchschnittspreis"
310
-
311
- #: application/modules/Market/templates/data_item.php:49
312
- msgid "Data from Yandex.Market"
313
- msgstr ""
314
-
315
- #: application/modules/Market/templates/data_item.php:79
316
- msgid "free"
317
- msgstr "gratis"
318
-
319
- #: application/modules/Market/templates/data_item.php:86
320
- msgid "Pickup"
321
- msgstr "Abholung"
322
-
323
- #: application/modules/Market/templates/data_item.php:90
324
- msgid "In stock"
325
- msgstr "auf Lager"
326
-
327
- #: application/modules/Market/templates/data_item.php:92
328
- msgid "Not available"
329
- msgstr "nicht verfügbar"
330
-
331
- #: application/modules/Market/templates/data_item.php:97
332
- msgid "Visit store"
333
- msgstr "Shop besuchen"
334
-
335
- #: application/modules/Market/templates/data_item.php:123
336
- msgid "Pros:"
337
- msgstr "Pro:"
338
-
339
- #: application/modules/Market/templates/data_item.php:124
340
- msgid "Cons:"
341
- msgstr "Kontra:"
342
-
343
- #: application/modules/Market/templates/data_item.php:125
344
- msgid "Comment:"
345
- msgstr "Kommentar:"
346
-
347
- #: application/modules/Market/templates/data_item.php:130
348
- msgid "All reviews on Yandex.Market"
349
- msgstr ""
350
-
351
- #: application/modules/Ozon/templates/data_compare.php:54
352
- #: application/modules/Ozon/templates/data_item.php:41
353
- msgid "Reviews:"
354
- msgstr "Bewertungen:"
355
-
356
- #: application/modules/Ozon/templates/data_compare.php:96
357
- msgid "Description"
358
- msgstr "Beschreibung"
359
-
360
- #: application/modules/Youtube/templates/data_responsive_embed.php:5
361
- msgid "Large"
362
- msgstr "Groß"
363
-
364
- #: application/modules/Youtube/templates/data_tile.php:5
365
- msgid "Tile"
366
- msgstr "Kachel"
367
-
368
- #: templates/block_offers_list.php:9
369
- msgid "All offers list"
370
- msgstr "Liste aller Angebote"
371
-
372
- #. Plugin Name of the plugin/theme
373
- msgid "Content Egg"
374
- msgstr ""
375
-
376
- #. Plugin URI of the plugin/theme
377
- msgid "http://www.keywordrush.com/contentegg"
378
- msgstr ""
379
-
380
- #. Description of the plugin/theme
381
- msgid ""
382
- "Easily adding auto updating products from affiliate systems and additional "
383
- "content to posts."
384
- msgstr ""
385
-
386
- #. Author of the plugin/theme
387
- msgid "keywordrush.com"
388
- msgstr ""
389
-
390
- #. Author URI of the plugin/theme
391
- msgid "http://www.keywordrush.com"
392
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/languages/tpl/content-egg-tpl-ES.mo DELETED
Binary file
trunk/languages/tpl/content-egg-tpl-ES.po DELETED
@@ -1,396 +0,0 @@
1
- # Copyright (C) 2016 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 2.2.0\n"
6
- "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg-tpl\n"
7
- "POT-Creation-Date: 2016-03-16 19:54+0100\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=UTF-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2016-03-21 20:03+0200\n"
12
- "Language-Team: \n"
13
- "X-Generator: Poedit 1.6.10\n"
14
- "Last-Translator: Sizam themes <sizamtheme@gmail.com>\n"
15
- "Plural-Forms: nplurals=2; plural=(n != 1);\n"
16
- "Language: es_ES\n"
17
-
18
- #: application/helpers/TemplateHelper.php:28
19
- msgid "number_format_decimal_point"
20
- msgstr ","
21
-
22
- #: application/helpers/TemplateHelper.php:29
23
- msgid "number_format_thousands_sep"
24
- msgstr "."
25
-
26
- #: application/helpers/TemplateHelper.php:99
27
- msgid "d"
28
- msgstr "d"
29
-
30
- #: application/helpers/TemplateHelper.php:101
31
- msgid "h"
32
- msgstr "h"
33
-
34
- #: application/helpers/TemplateHelper.php:103
35
- #: application/helpers/TemplateHelper.php:105
36
- #: application/modules/Ebay/templates/data_item.php:90
37
- #: application/modules/Ebay/templates/data_list.php:42
38
- msgid "m"
39
- msgstr "m"
40
-
41
- #: application/modules/AffilinetCoupons/templates/data_coupons.php:6
42
- msgid "Coupons"
43
- msgstr "Cupones"
44
-
45
- #: application/modules/AffilinetCoupons/templates/data_coupons.php:35
46
- #: application/modules/CjLinks/templates/data_universal.php:36
47
- msgid "Coupon code:"
48
- msgstr "Código del cupón:"
49
-
50
- #: application/modules/AffilinetCoupons/templates/data_coupons.php:37
51
- #: application/modules/CjLinks/templates/data_universal.php:38
52
- msgid "Ends:"
53
- msgstr "Finaliza:"
54
-
55
- #: application/modules/AffilinetCoupons/templates/data_coupons.php:46
56
- #: application/modules/CjLinks/templates/data_universal.php:49
57
- msgid "Shop Sale"
58
- msgstr "Tienda "
59
-
60
- #: application/modules/AffilinetProducts/templates/data_grid.php:6
61
- #: application/modules/Aliexpress/templates/data_grid.php:6
62
- #: application/modules/Amazon/templates/data_grid.php:6
63
- #: application/modules/CityadsProducts/templates/data_grid.php:6
64
- #: application/modules/CjProducts/templates/data_grid.php:6
65
- #: application/modules/Ebay/templates/data_grid.php:6
66
- #: application/modules/GdeSlon/templates/data_grid.php:6
67
- #: application/modules/Linkshare/templates/data_grid.php:6
68
- #: application/modules/Ozon/templates/data_grid.php:6
69
- #: application/modules/Shareasale/templates/data_grid.php:6
70
- #: application/modules/Zanox/templates/data_grid.php:6
71
- msgid "Grid"
72
- msgstr "Cuadrícula"
73
-
74
- #: application/modules/AffilinetProducts/templates/data_item.php:6
75
- #: application/modules/Aliexpress/templates/data_item.php:6
76
- #: application/modules/Amazon/templates/data_item.php:6
77
- #: application/modules/CityadsProducts/templates/data_item.php:6
78
- #: application/modules/CjProducts/templates/data_item.php:6
79
- #: application/modules/Ebay/templates/data_item.php:6
80
- #: application/modules/GdeSlon/templates/data_item.php:6
81
- #: application/modules/Linkshare/templates/data_item.php:6
82
- #: application/modules/Market/templates/data_item.php:5
83
- #: application/modules/Ozon/templates/data_item.php:6
84
- #: application/modules/Shareasale/templates/data_item.php:6
85
- #: application/modules/Zanox/templates/data_item.php:6
86
- msgid "Product card"
87
- msgstr "Ficha de producto"
88
-
89
- #: application/modules/AffilinetProducts/templates/data_item.php:50
90
- #: application/modules/Aliexpress/templates/data_item.php:50
91
- #: application/modules/Amazon/templates/data_compare.php:120
92
- #: application/modules/Amazon/templates/data_compare.php:241
93
- #: application/modules/Amazon/templates/data_item.php:77
94
- #: application/modules/CityadsProducts/templates/data_item.php:50
95
- #: application/modules/CjProducts/templates/data_item.php:46
96
- #: application/modules/Ebay/templates/data_item.php:68
97
- #: application/modules/GdeSlon/templates/data_item.php:46
98
- #: application/modules/Linkshare/templates/data_item.php:46
99
- #: application/modules/Ozon/templates/data_compare.php:87
100
- #: application/modules/Ozon/templates/data_compare.php:168
101
- #: application/modules/Ozon/templates/data_item.php:59
102
- #: application/modules/Shareasale/templates/data_item.php:50
103
- #: application/modules/Zanox/templates/data_item.php:46
104
- msgid "BUY THIS ITEM"
105
- msgstr "Comprar este producto"
106
-
107
- #: application/modules/AffilinetProducts/templates/data_list.php:6
108
- #: application/modules/Aliexpress/templates/data_list.php:6
109
- #: application/modules/Amazon/templates/data_list.php:6
110
- #: application/modules/CityadsProducts/templates/data_list.php:6
111
- #: application/modules/CjProducts/templates/data_list.php:6
112
- #: application/modules/Ebay/templates/data_list.php:6
113
- #: application/modules/GdeSlon/templates/data_list.php:6
114
- #: application/modules/Linkshare/templates/data_list.php:6
115
- #: application/modules/Ozon/templates/data_list.php:6
116
- #: application/modules/Shareasale/templates/data_list.php:6
117
- #: application/modules/Zanox/templates/data_list.php:6
118
- msgid "List"
119
- msgstr "Lista"
120
-
121
- #: application/modules/Amazon/templates/data_compare.php:6
122
- #: application/modules/Amazon/templates/data_compare.php:40
123
- #: application/modules/Ozon/templates/data_compare.php:6
124
- #: application/modules/Ozon/templates/data_compare.php:28
125
- msgid "Compare"
126
- msgstr "Comparar"
127
-
128
- #: application/modules/Amazon/templates/data_compare.php:58
129
- #: application/modules/Ozon/templates/data_compare.php:45
130
- msgid "User Rating"
131
- msgstr "Valoración del usuario"
132
-
133
- #: application/modules/Amazon/templates/data_compare.php:67
134
- msgid "ratings"
135
- msgstr "Valoraciones"
136
-
137
- #: application/modules/Amazon/templates/data_compare.php:71
138
- #: application/modules/Ozon/templates/data_compare.php:57
139
- msgid "See all reviews"
140
- msgstr "Ver todas las reviews"
141
-
142
- #: application/modules/Amazon/templates/data_compare.php:79
143
- #: application/modules/Ozon/templates/data_compare.php:65
144
- msgid "Price"
145
- msgstr "Precio"
146
-
147
- #: application/modules/Amazon/templates/data_compare.php:87
148
- #: application/modules/Amazon/templates/data_item.php:51
149
- #: application/modules/Amazon/templates/data_list.php:45
150
- msgid "Too low to display"
151
- msgstr "Demasiado bajo para mostrar"
152
-
153
- #: application/modules/Amazon/templates/data_compare.php:90
154
- #: application/modules/Amazon/templates/data_item.php:55
155
- #: application/modules/Amazon/templates/data_list.php:49
156
- #: application/modules/Ebay/templates/data_item.php:99
157
- #: application/modules/Ebay/templates/data_list.php:69
158
- msgid "Free shipping"
159
- msgstr "Envío gratuito"
160
-
161
- #: application/modules/Amazon/templates/data_compare.php:96
162
- #: application/modules/Amazon/templates/data_item.php:61
163
- msgid "new"
164
- msgstr "Nuevo"
165
-
166
- #: application/modules/Amazon/templates/data_compare.php:98
167
- #: application/modules/Amazon/templates/data_compare.php:103
168
- #: application/modules/Amazon/templates/data_item.php:63
169
- #: application/modules/Amazon/templates/data_item.php:68
170
- msgid "from"
171
- msgstr "Desde"
172
-
173
- #: application/modules/Amazon/templates/data_compare.php:103
174
- #: application/modules/Amazon/templates/data_item.php:68
175
- msgid "used"
176
- msgstr "Usado"
177
-
178
- #: application/modules/Amazon/templates/data_compare.php:108
179
- #: application/modules/Amazon/templates/data_item.php:73
180
- #: application/modules/Ozon/templates/data_compare.php:75
181
- msgid "as of"
182
- msgstr "A partir de"
183
-
184
- #: application/modules/Amazon/templates/data_compare.php:116
185
- #: application/modules/Amazon/templates/data_compare.php:237
186
- #: application/modules/Ozon/templates/data_compare.php:83
187
- #: application/modules/Ozon/templates/data_compare.php:164
188
- msgid "Shop Now"
189
- msgstr "Comprar ahora"
190
-
191
- #: application/modules/Amazon/templates/data_compare.php:129
192
- #: application/modules/Amazon/templates/data_item.php:92
193
- #: application/modules/Ozon/templates/data_item.php:95
194
- msgid "Features"
195
- msgstr "Características"
196
-
197
- #: application/modules/Amazon/templates/data_compare.php:179
198
- #: application/modules/Ozon/templates/data_compare.php:137
199
- msgid "User Reviews"
200
- msgstr "Reviews del usuario"
201
-
202
- #: application/modules/Amazon/templates/data_compare.php:204
203
- msgid "Expert Reviews"
204
- msgstr "Reviews expertas"
205
-
206
- #: application/modules/Amazon/templates/data_compare.php:220
207
- msgid "Barcodes"
208
- msgstr "Código de barras"
209
-
210
- #: application/modules/Amazon/templates/data_compare.php:248
211
- msgid "Images"
212
- msgstr "Imágenes"
213
-
214
- #: application/modules/Amazon/templates/data_grid.php:65
215
- #: application/modules/Amazon/templates/data_list.php:57
216
- msgid "Last updated on"
217
- msgstr "Última actualización:"
218
-
219
- #: application/modules/Amazon/templates/data_item.php:104
220
- #: application/modules/Market/templates/data_item.php:106
221
- #: application/modules/Ozon/templates/data_item.php:80
222
- msgid "Customer reviews"
223
- msgstr "Opinión de los usuarios"
224
-
225
- #: application/modules/Amazon/templates/data_item.php:109
226
- msgid "customer reviews"
227
- msgstr "opinión de los usuarios"
228
-
229
- #: application/modules/BingImages/templates/data_image.php:5
230
- #: application/modules/GoogleImages/templates/data_image.php:5
231
- #: application/modules/Pixabay/templates/data_image.php:5
232
- msgid "Image"
233
- msgstr "Imagen"
234
-
235
- #: application/modules/BingImages/templates/data_justified_gallery.php:7
236
- #: application/modules/Flickr/templates/data_justified_gallery.php:7
237
- #: application/modules/GoogleImages/templates/data_justified_gallery.php:7
238
- #: application/modules/Ozon/templates/data_compare.php:177
239
- #: application/modules/Pixabay/templates/data_justified_gallery.php:7
240
- msgid "Gallery"
241
- msgstr "Galería"
242
-
243
- #: application/modules/CjLinks/templates/data_universal.php:6
244
- msgid "Universal"
245
- msgstr "Universal"
246
-
247
- #: application/modules/Clickbank/templates/data_simple.php:6
248
- #: application/modules/Flickr/templates/data_simple.php:5
249
- #: application/modules/Freebase/templates/data_simple.php:5
250
- #: application/modules/GoogleBooks/templates/data_simple.php:5
251
- #: application/modules/GoogleImages/templates/data_simple.php:5
252
- #: application/modules/Twitter/templates/data_simple.php:5
253
- #: application/modules/VkNews/templates/data_simple.php:5
254
- #: application/modules/Youtube/templates/data_simple.php:5
255
- msgid "Simple"
256
- msgstr "Simple"
257
-
258
- #: application/modules/Ebay/templates/data_grid.php:51
259
- #: application/modules/Ebay/templates/data_item.php:45
260
- #: application/modules/Ebay/templates/data_item.php:52
261
- #: application/modules/Ebay/templates/data_list.php:62
262
- msgid "Buy It Now"
263
- msgstr "Comprar ahora"
264
-
265
- #: application/modules/Ebay/templates/data_grid.php:53
266
- #: application/modules/Ebay/templates/data_item.php:76
267
- #: application/modules/Ebay/templates/data_list.php:64
268
- msgid "Bids:"
269
- msgstr "Pujas"
270
-
271
- #: application/modules/Ebay/templates/data_item.php:54
272
- msgid "Current Price"
273
- msgstr "Precio actual"
274
-
275
- #: application/modules/Ebay/templates/data_item.php:68
276
- msgid "VIEW THIS ITEM"
277
- msgstr "Ver este producto"
278
-
279
- #: application/modules/Ebay/templates/data_item.php:81
280
- msgid "Item condition:"
281
- msgstr "Estado del producto:"
282
-
283
- #: application/modules/Ebay/templates/data_item.php:89
284
- #: application/modules/Ebay/templates/data_list.php:41
285
- msgid "Time left:"
286
- msgstr "Tiempo restante:"
287
-
288
- #: application/modules/Ebay/templates/data_item.php:94
289
- #: application/modules/Ebay/templates/data_list.php:46
290
- msgid "Ended:"
291
- msgstr "Finalizado:"
292
-
293
- #: application/modules/Ebay/templates/data_item.php:103
294
- msgid "EEK:"
295
- msgstr "EEK:"
296
-
297
- #: application/modules/Flickr/templates/data_simple.php:20
298
- msgid "Photo %s on Flickr"
299
- msgstr "Foto %s en Flickr"
300
-
301
- #: application/modules/Freebase/templates/data_simple.php:27
302
- msgid "Source:"
303
- msgstr "Fuente:"
304
-
305
- #: application/modules/Market/templates/data_item.php:32
306
- msgid "Customer reviews:"
307
- msgstr "Opinión de los usuarios:"
308
-
309
- #: application/modules/Market/templates/data_item.php:38
310
- msgid "Average price"
311
- msgstr "Precio Medio:"
312
-
313
- #: application/modules/Market/templates/data_item.php:49
314
- msgid "Data from Yandex.Market"
315
- msgstr "Datos de Yandex.Market"
316
-
317
- #: application/modules/Market/templates/data_item.php:79
318
- msgid "free"
319
- msgstr "Gratis"
320
-
321
- #: application/modules/Market/templates/data_item.php:86
322
- msgid "Pickup"
323
- msgstr "Recogida"
324
-
325
- #: application/modules/Market/templates/data_item.php:90
326
- msgid "In stock"
327
- msgstr "En stock"
328
-
329
- #: application/modules/Market/templates/data_item.php:92
330
- msgid "Not available"
331
- msgstr "No disponible"
332
-
333
- #: application/modules/Market/templates/data_item.php:97
334
- msgid "Visit store"
335
- msgstr "Visitar la tienda"
336
-
337
- #: application/modules/Market/templates/data_item.php:123
338
- msgid "Pros:"
339
- msgstr "Pros:"
340
-
341
- #: application/modules/Market/templates/data_item.php:124
342
- msgid "Cons:"
343
- msgstr "Contras:"
344
-
345
- #: application/modules/Market/templates/data_item.php:125
346
- msgid "Comment:"
347
- msgstr "Comentario:"
348
-
349
- #: application/modules/Market/templates/data_item.php:130
350
- msgid "All reviews on Yandex.Market"
351
- msgstr "Todas las reviews en Yandex.Market"
352
-
353
- #: application/modules/Ozon/templates/data_compare.php:54
354
- #: application/modules/Ozon/templates/data_item.php:41
355
- msgid "Reviews:"
356
- msgstr "Reviews:"
357
-
358
- #: application/modules/Ozon/templates/data_compare.php:96
359
- msgid "Description"
360
- msgstr "Descripción:"
361
-
362
- #: application/modules/Youtube/templates/data_responsive_embed.php:5
363
- msgid "Large"
364
- msgstr "Grande:"
365
-
366
- #: application/modules/Youtube/templates/data_tile.php:5
367
- msgid "Tile"
368
- msgstr "Tile"
369
-
370
- #: templates/block_offers_list.php:9
371
- msgid "All offers list"
372
- msgstr "Todas las ofertas"
373
-
374
- #. Plugin Name of the plugin/theme
375
- msgid "Content Egg"
376
- msgstr "Content Egg"
377
-
378
- #. Plugin URI of the plugin/theme
379
- msgid "http://www.keywordrush.com/contentegg"
380
- msgstr "http://www.keywordrush.com/contentegg"
381
-
382
- #. Description of the plugin/theme
383
- msgid ""
384
- "Easily adding auto updating products from affiliate systems and additional "
385
- "content to posts."
386
- msgstr ""
387
- "Añada fácilmente productos auto actualizables de sistemas de afiliación y "
388
- "contenido adicional a las entradas"
389
-
390
- #. Author of the plugin/theme
391
- msgid "keywordrush.com"
392
- msgstr "keywordrush.com"
393
-
394
- #. Author URI of the plugin/theme
395
- msgid "http://www.keywordrush.com"
396
- msgstr "http://www.keywordrush.com"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/languages/tpl/content-egg-tpl-IT.mo DELETED
Binary file
trunk/languages/tpl/content-egg-tpl-RU.mo DELETED
Binary file
trunk/languages/tpl/content-egg-tpl-RU.po DELETED
@@ -1,653 +0,0 @@
1
- # Copyright (C) 2015 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 1.1.1\n"
6
- "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg-tpl\n"
7
- "POT-Creation-Date: \n"
8
- "PO-Revision-Date: 2016-10-25 18:45+0200\n"
9
- "Last-Translator: \n"
10
- "Language-Team: LANGUAGE <LL@li.org>\n"
11
- "Language: ru\n"
12
- "MIME-Version: 1.0\n"
13
- "Content-Type: text/plain; charset=UTF-8\n"
14
- "Content-Transfer-Encoding: 8bit\n"
15
- "X-Generator: Poedit 1.6.5\n"
16
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
17
- "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
18
-
19
- #: application/PriceAlert.php:88
20
- msgid "All fields are required."
21
- msgstr "Все поля являются обязательными."
22
-
23
- #: application/PriceAlert.php:91
24
- msgid "Your email address is invalid."
25
- msgstr "Некорректный email адрес."
26
-
27
- #: application/PriceAlert.php:94
28
- msgid "The price has already been reached."
29
- msgstr "Желаемая цена уже достигнута."
30
-
31
- #: application/PriceAlert.php:102
32
- msgid "You already tracking this product."
33
- msgstr "Вы уже отсеживаете этот товар."
34
-
35
- #: application/PriceAlert.php:120
36
- msgid ""
37
- "We are now tracking this product for you. Please verify your email address "
38
- "to be notified of price drops."
39
- msgstr ""
40
- "Мы отслеживаем этот продукт для вас. Пожалуйста, подтвердите свой адрес "
41
- "электронной почты, чтобы получать уведомления о снижении цены."
42
-
43
- #: application/PriceAlert.php:122
44
- msgid "Internal Error. Please notify the administrator."
45
- msgstr "Внутрення ошибка. Пожалуйста, сообщите администрации сайта."
46
-
47
- #: application/PriceAlert.php:128
48
- msgid "Welcome to %s"
49
- msgstr "%s привествует вас"
50
-
51
- #: application/PriceAlert.php:138
52
- msgid "Hello,"
53
- msgstr "Добрый день,"
54
-
55
- #: application/PriceAlert.php:139
56
- msgid "You have successfully set a price drop alert for %s."
57
- msgstr "Вы успешно установили слежение за ценой для %s."
58
-
59
- #: application/PriceAlert.php:140
60
- msgid ""
61
- "We will not send you any price alerts until you verified your email address."
62
- msgstr ""
63
- "Мы не будем отправлять вам никакие оповещения о цене, пока вы не подтвердите "
64
- "свой адрес электронной почты."
65
-
66
- #: application/PriceAlert.php:141
67
- msgid ""
68
- "Please open this link to validate your email address:<br> <a href=\"%s\">%s</"
69
- "a>"
70
- msgstr ""
71
- "Пожалуйста, перейдите по этой ссылке для валидации вашего email адреса:<br> "
72
- "<a href=\"%s\">%s</a>"
73
-
74
- #: application/PriceAlert.php:202
75
- msgid ""
76
- "Your email has been verified. We will let you know by email when the Price "
77
- "Drops."
78
- msgstr ""
79
- "Ваш email был проверен. Мы сообщим вам по email, когда цена на товар упадет."
80
-
81
- #: application/PriceAlert.php:202
82
- msgid "Success!"
83
- msgstr "Успех!"
84
-
85
- #: application/PriceAlert.php:219
86
- msgid "You are now unsubscribed from our Price Alerts via email."
87
- msgstr "Вы отписались от всех наших оповещениях о снижении цены."
88
-
89
- #: application/PriceAlert.php:219
90
- msgid "Unsubscribed!"
91
- msgstr "Отписка!"
92
-
93
- #: application/PriceAlert.php:235
94
- msgid " Ok "
95
- msgstr " Ok "
96
-
97
- #: application/PriceAlert.php:289
98
- msgid "Price alert: \"%s\""
99
- msgstr "Снижение цены: \"%s\""
100
-
101
- #: application/PriceAlert.php:305
102
- msgid "Good news!"
103
- msgstr "Отличные новости!"
104
-
105
- #: application/PriceAlert.php:306
106
- msgid "The price target you set for the item has been reached."
107
- msgstr "Желаемая цена для товара была достигнута."
108
-
109
- #: application/PriceAlert.php:307
110
- msgid "<a href=\"%s\">Save %s (%s%%) on %s</a>"
111
- msgstr "<a href=\"%s\">Экономьте %s (%s%%) на %s</a>"
112
-
113
- #: application/PriceAlert.php:309
114
- msgid "Desired Price: %s"
115
- msgstr "Ожидаемая цена: %s"
116
-
117
- #: application/PriceAlert.php:310
118
- msgid "Current Price: <strong>%s</strong>"
119
- msgstr "Текущая цена: <strong>%s</strong>"
120
-
121
- #: application/PriceAlert.php:311
122
- #: application/modules/Amazon/templates/data_compare.php:108
123
- #: application/modules/Amazon/templates/data_item.php:75
124
- #: application/modules/Ozon/templates/data_compare.php:75
125
- #: application/templates/data_price_tracker_alert.php:43
126
- msgid "as of"
127
- msgstr "от"
128
-
129
- #: application/PriceAlert.php:312
130
- msgid "Price dropped from %s to %s"
131
- msgstr "Цена снизилась с %s до %s"
132
-
133
- #: application/PriceAlert.php:314
134
- msgid "<a href=\"%s\">More info...</a>"
135
- msgstr "<a href=\"%s\">Больше информации...</a>"
136
-
137
- #: application/PriceAlert.php:317
138
- msgid ""
139
- "This present alert has now expired. You may <a href=\"%s\">create a new "
140
- "alert</a> for this item."
141
- msgstr ""
142
- "Эта подписка на слежение за ценой будет удалена. Вы можете <a href=\"%s"
143
- "\">создать новое слежение за ценой</a> для этого товара."
144
-
145
- #: application/PriceAlert.php:318
146
- msgid ""
147
- "If you don't want to receive any price alerts from us in the future, <a href="
148
- "\"%s\">please click here</a>."
149
- msgstr ""
150
- "Если вы больше не хотите получать никакие уведомления от нас, <a href=\"%s"
151
- "\">перейдите по ссылке</a>."
152
-
153
- #: application/helpers/TemplateHelper.php:20
154
- #: application/helpers/TemplateHelper.php:41
155
- msgid "number_format_decimal_point"
156
- msgstr ","
157
-
158
- #: application/helpers/TemplateHelper.php:21
159
- #: application/helpers/TemplateHelper.php:42
160
- msgid "number_format_thousands_sep"
161
- msgstr " "
162
-
163
- #: application/helpers/TemplateHelper.php:113
164
- msgid "d"
165
- msgstr "д"
166
-
167
- #: application/helpers/TemplateHelper.php:115
168
- msgid "h"
169
- msgstr "ч"
170
-
171
- #: application/helpers/TemplateHelper.php:117
172
- #: application/helpers/TemplateHelper.php:119
173
- #: application/modules/Ebay/templates/data_item.php:90
174
- #: application/modules/Ebay/templates/data_list.php:42
175
- msgid "m"
176
- msgstr "м"
177
-
178
- #: application/helpers/TemplateHelper.php:300
179
- #: application/modules/Amazon/templates/data_compare.php:79
180
- #: application/modules/Ozon/templates/data_compare.php:65
181
- #: application/templates/data_price_tracker_alert.php:41
182
- msgid "Price"
183
- msgstr "Цена"
184
-
185
- #: application/modules/AE/templates/data_grid.php:6
186
- #: application/modules/AdmitadProducts/templates/data_grid.php:6
187
- #: application/modules/Affiliatewindow/templates/data_grid.php:6
188
- #: application/modules/AffilinetProducts/templates/data_grid.php:6
189
- #: application/modules/Aliexpress/templates/data_grid.php:6
190
- #: application/modules/Amazon/templates/data_grid.php:6
191
- #: application/modules/CityadsProducts/templates/data_grid.php:6
192
- #: application/modules/CjProducts/templates/data_grid.php:6
193
- #: application/modules/Ebay/templates/data_grid.php:6
194
- #: application/modules/Flipkart/templates/data_grid.php:6
195
- #: application/modules/GdeSlon/templates/data_grid.php:6
196
- #: application/modules/Linkshare/templates/data_grid.php:6
197
- #: application/modules/Optimisemedia/templates/data_grid.php:6
198
- #: application/modules/Ozon/templates/data_grid.php:6
199
- #: application/modules/PayTM/templates/data_grid.php:6
200
- #: application/modules/Shareasale/templates/data_grid.php:6
201
- #: application/modules/TradedoublerProducts/templates/data_grid.php:6
202
- #: application/modules/Zanox/templates/data_grid.php:6
203
- msgid "Grid"
204
- msgstr "Сетка"
205
-
206
- #: application/modules/AE/templates/data_item.php:6
207
- #: application/modules/AdmitadProducts/templates/data_item.php:6
208
- #: application/modules/Affiliatewindow/templates/data_item.php:6
209
- #: application/modules/AffilinetProducts/templates/data_item.php:6
210
- #: application/modules/Aliexpress/templates/data_item.php:6
211
- #: application/modules/Amazon/templates/data_item.php:6
212
- #: application/modules/CityadsProducts/templates/data_item.php:6
213
- #: application/modules/CjProducts/templates/data_item.php:6
214
- #: application/modules/Ebay/templates/data_item.php:6
215
- #: application/modules/Flipkart/templates/data_item.php:6
216
- #: application/modules/GdeSlon/templates/data_item.php:6
217
- #: application/modules/Linkshare/templates/data_item.php:6
218
- #: application/modules/Market/templates/data_item.php:5
219
- #: application/modules/Optimisemedia/templates/data_item.php:6
220
- #: application/modules/Ozon/templates/data_item.php:6
221
- #: application/modules/PayTM/templates/data_item.php:6
222
- #: application/modules/Shareasale/templates/data_item.php:6
223
- #: application/modules/TradedoublerProducts/templates/data_item.php:6
224
- #: application/modules/Zanox/templates/data_item.php:6
225
- msgid "Product card"
226
- msgstr "Карточка товара"
227
-
228
- #: application/modules/AE/templates/data_item.php:61
229
- #: application/modules/AdmitadProducts/templates/data_item.php:52
230
- #: application/modules/Affiliatewindow/templates/data_item.php:46
231
- #: application/modules/AffilinetProducts/templates/data_item.php:50
232
- #: application/modules/Aliexpress/templates/data_item.php:50
233
- #: application/modules/Amazon/templates/data_compare.php:120
234
- #: application/modules/Amazon/templates/data_compare.php:241
235
- #: application/modules/Amazon/templates/data_item.php:79
236
- #: application/modules/CityadsProducts/templates/data_item.php:50
237
- #: application/modules/CjProducts/templates/data_item.php:46
238
- #: application/modules/Ebay/templates/data_item.php:68
239
- #: application/modules/Flipkart/templates/data_item.php:55
240
- #: application/modules/GdeSlon/templates/data_item.php:46
241
- #: application/modules/Linkshare/templates/data_item.php:46
242
- #: application/modules/Optimisemedia/templates/data_item.php:46
243
- #: application/modules/Ozon/templates/data_compare.php:87
244
- #: application/modules/Ozon/templates/data_compare.php:168
245
- #: application/modules/Ozon/templates/data_item.php:59
246
- #: application/modules/PayTM/templates/data_item.php:55
247
- #: application/modules/Shareasale/templates/data_item.php:50
248
- #: application/modules/TradedoublerProducts/templates/data_item.php:46
249
- #: application/modules/Zanox/templates/data_item.php:46
250
- #: application/templates/data_price_tracker_alert.php:49
251
- msgid "BUY THIS ITEM"
252
- msgstr "КУПИТЬ СЕЙЧАС"
253
-
254
- #: application/modules/AE/templates/data_item.php:82
255
- #: application/modules/AdmitadProducts/templates/data_item.php:65
256
- #: application/modules/Amazon/templates/data_compare.php:129
257
- #: application/modules/Amazon/templates/data_item.php:94
258
- #: application/modules/Flipkart/templates/data_item.php:81
259
- #: application/modules/Ozon/templates/data_item.php:95
260
- msgid "Features"
261
- msgstr "Характеристики"
262
-
263
- #: application/modules/AE/templates/data_item.php:91
264
- msgid "User reviews"
265
- msgstr "Отзывы покупателей"
266
-
267
- #: application/modules/AE/templates/data_item.php:103
268
- msgid "View all reviews"
269
- msgstr "Все отзывы"
270
-
271
- #: application/modules/AE/templates/data_list.php:6
272
- #: application/modules/AdmitadProducts/templates/data_list.php:6
273
- #: application/modules/Affiliatewindow/templates/data_list.php:6
274
- #: application/modules/AffilinetProducts/templates/data_list.php:6
275
- #: application/modules/Aliexpress/templates/data_list.php:6
276
- #: application/modules/Amazon/templates/data_list.php:6
277
- #: application/modules/CityadsProducts/templates/data_list.php:6
278
- #: application/modules/CjProducts/templates/data_list.php:6
279
- #: application/modules/Ebay/templates/data_list.php:6
280
- #: application/modules/Flipkart/templates/data_list.php:6
281
- #: application/modules/GdeSlon/templates/data_list.php:6
282
- #: application/modules/Linkshare/templates/data_list.php:6
283
- #: application/modules/Optimisemedia/templates/data_list.php:6
284
- #: application/modules/Ozon/templates/data_list.php:6
285
- #: application/modules/PayTM/templates/data_list.php:6
286
- #: application/modules/Shareasale/templates/data_list.php:6
287
- #: application/modules/TradedoublerProducts/templates/data_list.php:6
288
- #: application/modules/Zanox/templates/data_list.php:6
289
- msgid "List"
290
- msgstr "Список"
291
-
292
- #: application/modules/AE/templates/data_price_tracker_alert.php:6
293
- #: application/modules/AdmitadProducts/templates/data_price_tracker_alert.php:6
294
- #: application/modules/Affiliatewindow/templates/data_price_tracker_alert.php:6
295
- #: application/modules/AffilinetProducts/templates/data_price_tracker_alert.php:6
296
- #: application/modules/Aliexpress/templates/data_price_tracker_alert.php:6
297
- #: application/modules/Amazon/templates/data_price_tracker_alert.php:6
298
- #: application/modules/CjProducts/templates/data_price_tracker_alert.php:6
299
- #: application/modules/GdeSlon/templates/data_price_tracker_alert.php:6
300
- #: application/modules/Linkshare/templates/data_price_tracker_alert.php:6
301
- #: application/modules/Optimisemedia/templates/data_price_tracker_alert.php:6
302
- #: application/modules/Ozon/templates/data_price_tracker_alert.php:6
303
- #: application/modules/PayTM/templates/data_price_tracker_alert.php:6
304
- #: application/modules/Shareasale/templates/data_price_tracker_alert.php:6
305
- #: application/modules/TradedoublerProducts/templates/data_price_tracker_alert.php:6
306
- #: application/modules/Zanox/templates/data_price_tracker_alert.php:6
307
- #: application/templates/data_price_tracker_alert.php:5
308
- msgid "Price tracker & alert"
309
- msgstr "Трекер цены и оповещения"
310
-
311
- #: application/modules/AdmitadCoupons/templates/data_coupons.php:6
312
- #: application/modules/AffilinetCoupons/templates/data_coupons.php:6
313
- #: application/modules/TradedoublerCoupons/templates/data_coupons.php:6
314
- msgid "Coupons"
315
- msgstr "Купоны"
316
-
317
- #: application/modules/AdmitadCoupons/templates/data_coupons.php:36
318
- #: application/modules/AffilinetCoupons/templates/data_coupons.php:35
319
- #: application/modules/CjLinks/templates/data_universal.php:36
320
- #: application/modules/TradedoublerCoupons/templates/data_coupons.php:37
321
- msgid "Coupon code:"
322
- msgstr "Купон:"
323
-
324
- #: application/modules/AdmitadCoupons/templates/data_coupons.php:42
325
- #: application/modules/TradedoublerCoupons/templates/data_coupons.php:44
326
- msgid "OFF"
327
- msgstr "скидка"
328
-
329
- #: application/modules/AdmitadCoupons/templates/data_coupons.php:47
330
- #: application/modules/AffilinetCoupons/templates/data_coupons.php:37
331
- #: application/modules/CjLinks/templates/data_universal.php:38
332
- #: application/modules/TradedoublerCoupons/templates/data_coupons.php:49
333
- msgid "Ends:"
334
- msgstr "Окончание:"
335
-
336
- #: application/modules/AdmitadCoupons/templates/data_coupons.php:57
337
- #: application/modules/AffilinetCoupons/templates/data_coupons.php:46
338
- #: application/modules/CjLinks/templates/data_universal.php:49
339
- #: application/modules/TradedoublerCoupons/templates/data_coupons.php:59
340
- msgid "Shop Sale"
341
- msgstr "Купить со скидкой"
342
-
343
- #: application/modules/Amazon/templates/data_compare.php:6
344
- #: application/modules/Amazon/templates/data_compare.php:40
345
- #: application/modules/Ozon/templates/data_compare.php:6
346
- #: application/modules/Ozon/templates/data_compare.php:28
347
- msgid "Compare"
348
- msgstr "Сравнить"
349
-
350
- #: application/modules/Amazon/templates/data_compare.php:58
351
- #: application/modules/Ozon/templates/data_compare.php:45
352
- msgid "User Rating"
353
- msgstr "Рейтинг"
354
-
355
- #: application/modules/Amazon/templates/data_compare.php:67
356
- msgid "ratings"
357
- msgstr "рейтинг"
358
-
359
- #: application/modules/Amazon/templates/data_compare.php:71
360
- #: application/modules/Ozon/templates/data_compare.php:57
361
- msgid "See all reviews"
362
- msgstr "Все отзывы"
363
-
364
- #: application/modules/Amazon/templates/data_compare.php:87
365
- #: application/modules/Amazon/templates/data_item.php:53
366
- #: application/modules/Amazon/templates/data_list.php:45
367
- msgid "Too low to display"
368
- msgstr "Уточните на сайте"
369
-
370
- #: application/modules/Amazon/templates/data_compare.php:90
371
- #: application/modules/Amazon/templates/data_item.php:57
372
- #: application/modules/Amazon/templates/data_list.php:49
373
- #: application/modules/Ebay/templates/data_item.php:99
374
- #: application/modules/Ebay/templates/data_list.php:69
375
- msgid "Free shipping"
376
- msgstr "Бесплатная доставка"
377
-
378
- #: application/modules/Amazon/templates/data_compare.php:96
379
- #: application/modules/Amazon/templates/data_item.php:63
380
- msgid "new"
381
- msgstr "новый"
382
-
383
- #: application/modules/Amazon/templates/data_compare.php:98
384
- #: application/modules/Amazon/templates/data_compare.php:103
385
- #: application/modules/Amazon/templates/data_item.php:65
386
- #: application/modules/Amazon/templates/data_item.php:70
387
- msgid "from"
388
- msgstr "от"
389
-
390
- #: application/modules/Amazon/templates/data_compare.php:103
391
- #: application/modules/Amazon/templates/data_item.php:70
392
- msgid "used"
393
- msgstr "б.у."
394
-
395
- #: application/modules/Amazon/templates/data_compare.php:116
396
- #: application/modules/Amazon/templates/data_compare.php:237
397
- #: application/modules/Ozon/templates/data_compare.php:83
398
- #: application/modules/Ozon/templates/data_compare.php:164
399
- msgid "Shop Now"
400
- msgstr "Купить"
401
-
402
- #: application/modules/Amazon/templates/data_compare.php:179
403
- #: application/modules/Ozon/templates/data_compare.php:137
404
- msgid "User Reviews"
405
- msgstr "Отзывы покупателей"
406
-
407
- #: application/modules/Amazon/templates/data_compare.php:204
408
- msgid "Expert Reviews"
409
- msgstr "От производителя"
410
-
411
- #: application/modules/Amazon/templates/data_compare.php:220
412
- msgid "Barcodes"
413
- msgstr "Код"
414
-
415
- #: application/modules/Amazon/templates/data_compare.php:248
416
- msgid "Images"
417
- msgstr "Изображения"
418
-
419
- #: application/modules/Amazon/templates/data_grid.php:65
420
- #: application/modules/Amazon/templates/data_list.php:57
421
- msgid "Last updated on"
422
- msgstr "Последнее обновление:"
423
-
424
- #: application/modules/Amazon/templates/data_item.php:106
425
- #: application/modules/Market/templates/data_item.php:106
426
- #: application/modules/Ozon/templates/data_item.php:80
427
- msgid "Customer reviews"
428
- msgstr "Отзывы покупателей"
429
-
430
- #: application/modules/Amazon/templates/data_item.php:111
431
- msgid "customer reviews"
432
- msgstr "отзывы покупателей"
433
-
434
- #: application/modules/BingImages/templates/data_image.php:5
435
- #: application/modules/GoogleImages/templates/data_image.php:5
436
- #: application/modules/Pixabay/templates/data_image.php:5
437
- msgid "Image"
438
- msgstr "Картинка"
439
-
440
- #: application/modules/BingImages/templates/data_justified_gallery.php:7
441
- #: application/modules/Flickr/templates/data_justified_gallery.php:7
442
- #: application/modules/GoogleImages/templates/data_justified_gallery.php:7
443
- #: application/modules/Ozon/templates/data_compare.php:177
444
- #: application/modules/Pixabay/templates/data_justified_gallery.php:7
445
- msgid "Gallery"
446
- msgstr "Галерея"
447
-
448
- #: application/modules/CjLinks/templates/data_universal.php:6
449
- msgid "Universal"
450
- msgstr "Универсальный"
451
-
452
- #: application/modules/Clickbank/templates/data_simple.php:6
453
- #: application/modules/Flickr/templates/data_simple.php:5
454
- #: application/modules/Freebase/templates/data_simple.php:5
455
- #: application/modules/GoogleBooks/templates/data_simple.php:5
456
- #: application/modules/GoogleImages/templates/data_simple.php:5
457
- #: application/modules/Twitter/templates/data_simple.php:5
458
- #: application/modules/VkNews/templates/data_simple.php:5
459
- #: application/modules/Youtube/templates/data_simple.php:5
460
- msgid "Simple"
461
- msgstr "Простой"
462
-
463
- #: application/modules/Ebay/templates/data_grid.php:51
464
- #: application/modules/Ebay/templates/data_item.php:45
465
- #: application/modules/Ebay/templates/data_item.php:52
466
- #: application/modules/Ebay/templates/data_list.php:62
467
- msgid "Buy It Now"
468
- msgstr "Buy It Now"
469
-
470
- #: application/modules/Ebay/templates/data_grid.php:53
471
- #: application/modules/Ebay/templates/data_item.php:76
472
- #: application/modules/Ebay/templates/data_list.php:64
473
- msgid "Bids:"
474
- msgstr "Ставки"
475
-
476
- #: application/modules/Ebay/templates/data_item.php:54
477
- #: application/templates/blocks/price_history.php:17
478
- msgid "Current Price"
479
- msgstr "Текущая цена"
480
-
481
- #: application/modules/Ebay/templates/data_item.php:68
482
- msgid "VIEW THIS ITEM"
483
- msgstr "СМОТРЕТЬ"
484
-
485
- #: application/modules/Ebay/templates/data_item.php:81
486
- msgid "Item condition:"
487
- msgstr "Состояние"
488
-
489
- #: application/modules/Ebay/templates/data_item.php:89
490
- #: application/modules/Ebay/templates/data_list.php:41
491
- msgid "Time left:"
492
- msgstr "Оставшееся время:"
493
-
494
- #: application/modules/Ebay/templates/data_item.php:94
495
- #: application/modules/Ebay/templates/data_list.php:46
496
- msgid "Ended:"
497
- msgstr "Завершен:"
498
-
499
- #: application/modules/Ebay/templates/data_item.php:103
500
- msgid "EEK:"
501
- msgstr "EEK:"
502
-
503
- #: application/modules/Flickr/templates/data_justified_gallery.php:62
504
- msgid "Photo: %s on Flickr"
505
- msgstr "Фото %s на Flickr"
506
-
507
- #: application/modules/Flickr/templates/data_simple.php:20
508
- msgid "Photo %s on Flickr"
509
- msgstr "Фото %s на Flickr"
510
-
511
- #: application/modules/Freebase/templates/data_simple.php:27
512
- msgid "Source:"
513
- msgstr "Источник:"
514
-
515
- #: application/modules/Market/templates/data_item.php:32
516
- msgid "Customer reviews:"
517
- msgstr "Отзывы покупателей:"
518
-
519
- #: application/modules/Market/templates/data_item.php:38
520
- msgid "Average price"
521
- msgstr "Средняя цена"
522
-
523
- #: application/modules/Market/templates/data_item.php:49
524
- msgid "Data from Yandex.Market"
525
- msgstr "Данные Яндекс.Маркет"
526
-
527
- #: application/modules/Market/templates/data_item.php:79
528
- msgid "free"
529
- msgstr "бесплатно"
530
-
531
- #: application/modules/Market/templates/data_item.php:86
532
- msgid "Pickup"
533
- msgstr "Самовывоз"
534
-
535
- #: application/modules/Market/templates/data_item.php:90
536
- msgid "In stock"
537
- msgstr "В наличии"
538
-
539
- #: application/modules/Market/templates/data_item.php:92
540
- msgid "Not available"
541
- msgstr "Нет в наличии"
542
-
543
- #: application/modules/Market/templates/data_item.php:97
544
- msgid "Visit store"
545
- msgstr "В магазин"
546
-
547
- #: application/modules/Market/templates/data_item.php:123
548
- msgid "Pros:"
549
- msgstr "Плюсы:"
550
-
551
- #: application/modules/Market/templates/data_item.php:124
552
- msgid "Cons:"
553
- msgstr "Минусы:"
554
-
555
- #: application/modules/Market/templates/data_item.php:125
556
- msgid "Comment:"
557
- msgstr "Комментарий:"
558
-
559
- #: application/modules/Market/templates/data_item.php:130
560
- msgid "All reviews on Yandex.Market"
561
- msgstr "Все отзывы на Яндекс.Маркет"
562
-
563
- #: application/modules/Ozon/templates/data_compare.php:54
564
- #: application/modules/Ozon/templates/data_item.php:41
565
- msgid "Reviews:"
566
- msgstr "Отзывы покупателей:"
567
-
568
- #: application/modules/Ozon/templates/data_compare.php:96
569
- msgid "Description"
570
- msgstr "Описание"
571
-
572
- #: application/modules/Youtube/templates/data_responsive_embed.php:5
573
- msgid "Large"
574
- msgstr "Широкий"
575
-
576
- #: application/modules/Youtube/templates/data_tile.php:5
577
- msgid "Tile"
578
- msgstr "Плитка"
579
-
580
- #: application/templates/blocks/price_alert_inline.php:8
581
- msgid "Wait For A Price Drop"
582
- msgstr "Узнать о снижении цены"
583
-
584
- #: application/templates/blocks/price_alert_inline.php:14
585
- #: application/templates/blocks/price_alert_inline.php:15
586
- msgid "Your Email"
587
- msgstr "Ваш Email"
588
-
589
- #: application/templates/blocks/price_alert_inline.php:18
590
- #: application/templates/blocks/price_alert_inline.php:24
591
- msgid "Desired Price"
592
- msgstr "Ожидаемая цена"
593
-
594
- #: application/templates/blocks/price_alert_inline.php:30
595
- msgid "SET ALERT"
596
- msgstr "ПОДПИСАТЬСЯ"
597
-
598
- #: application/templates/blocks/price_alert_inline.php:35
599
- msgid "You will receive a notification when the price drops."
600
- msgstr "Вы получите уведомление, когда цена упадет."
601
-
602
- #: application/templates/blocks/price_history.php:5
603
- msgid "Price History"
604
- msgstr "Динамика цены"
605
-
606
- #: application/templates/blocks/price_history.php:14
607
- msgid "Statistics"
608
- msgstr "Статистика"
609
-
610
- #: application/templates/blocks/price_history.php:29
611
- msgid "Highest Price"
612
- msgstr "Максимальная цена"
613
-
614
- #: application/templates/blocks/price_history.php:35
615
- msgid "Lowest Price"
616
- msgstr "Минимальная цена"
617
-
618
- #: application/templates/blocks/price_history.php:41
619
- msgid "Since"
620
- msgstr "Начиная с"
621
-
622
- #: application/templates/blocks/price_history.php:44
623
- msgid "Last price changes"
624
- msgstr "Динамика цен"
625
-
626
- #: templates/block_offers_list.php:9
627
- msgid "All offers list"
628
- msgstr "Все предложения"
629
-
630
- #. Plugin Name of the plugin/theme
631
- msgid "Content Egg"
632
- msgstr ""
633
-
634
- #. Plugin URI of the plugin/theme
635
- msgid "http://www.keywordrush.com/contentegg"
636
- msgstr "http://www.keywordrush.com/contentegg"
637
-
638
- #. Description of the plugin/theme
639
- msgid ""
640
- "Easily adding auto updating products from affiliate systems and additional "
641
- "content to posts."
642
- msgstr ""
643
-
644
- #. Author of the plugin/theme
645
- msgid "keywordrush.com"
646
- msgstr "keywordrush.com"
647
-
648
- #. Author URI of the plugin/theme
649
- msgid "http://www.keywordrush.com"
650
- msgstr "http://www.keywordrush.com"
651
-
652
- #~ msgid "Source: %s"
653
- #~ msgstr "Источник: %s"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
trunk/languages/tpl/content-egg-tpl.pot DELETED
@@ -1,628 +0,0 @@
1
- # Copyright (C) 2016 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 2.8.0\n"
6
- "Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/content-egg-tpl\n"
7
- "POT-Creation-Date: 2016-10-25 15:44:37+00:00\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=UTF-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2016-MO-DA HO:MI+ZONE\n"
12
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
- "Language-Team: LANGUAGE <LL@li.org>\n"
14
-
15
- #: application/PriceAlert.php:88
16
- msgid "All fields are required."
17
- msgstr ""
18
-
19
- #: application/PriceAlert.php:91
20
- msgid "Your email address is invalid."
21
- msgstr ""
22
-
23
- #: application/PriceAlert.php:94
24
- msgid "The price has already been reached."
25
- msgstr ""
26
-
27
- #: application/PriceAlert.php:102
28
- msgid "You already tracking this product."
29
- msgstr ""
30
-
31
- #: application/PriceAlert.php:120
32
- msgid "We are now tracking this product for you. Please verify your email address to be notified of price drops."
33
- msgstr ""
34
-
35
- #: application/PriceAlert.php:122
36
- msgid "Internal Error. Please notify the administrator."
37
- msgstr ""
38
-
39
- #: application/PriceAlert.php:128
40
- msgid "Welcome to %s"
41
- msgstr ""
42
-
43
- #: application/PriceAlert.php:138
44
- msgid "Hello,"
45
- msgstr ""
46
-
47
- #: application/PriceAlert.php:139
48
- msgid "You have successfully set a price drop alert for %s."
49
- msgstr ""
50
-
51
- #: application/PriceAlert.php:140
52
- msgid "We will not send you any price alerts until you verified your email address."
53
- msgstr ""
54
-
55
- #: application/PriceAlert.php:141
56
- msgid "Please open this link to validate your email address:<br> <a href=\"%s\">%s</a>"
57
- msgstr ""
58
-
59
- #: application/PriceAlert.php:149
60
- msgid ""
61
- "<br><pre class=\"moz-signature\" cols=\"72\">--
62
- "Thank You,
63
- " Team %s</pre>"
64
- msgstr ""
65
-
66
- #: application/PriceAlert.php:202
67
- msgid "Your email has been verified. We will let you know by email when the Price Drops."
68
- msgstr ""
69
-
70
- #: application/PriceAlert.php:202
71
- msgid "Success!"
72
- msgstr ""
73
-
74
- #: application/PriceAlert.php:219
75
- msgid "You are now unsubscribed from our Price Alerts via email."
76
- msgstr ""
77
-
78
- #: application/PriceAlert.php:219
79
- msgid "Unsubscribed!"
80
- msgstr ""
81
-
82
- #: application/PriceAlert.php:235
83
- msgid " Ok "
84
- msgstr ""
85
-
86
- #: application/PriceAlert.php:289
87
- msgid "Price alert: \"%s\""
88
- msgstr ""
89
-
90
- #: application/PriceAlert.php:305
91
- msgid "Good news!"
92
- msgstr ""
93
-
94
- #: application/PriceAlert.php:306
95
- msgid "The price target you set for the item has been reached."
96
- msgstr ""
97
-
98
- #: application/PriceAlert.php:307
99
- msgid "<a href=\"%s\">Save %s (%s%%) on %s</a>"
100
- msgstr ""
101
-
102
- #: application/PriceAlert.php:309
103
- msgid "Desired Price: %s"
104
- msgstr ""
105
-
106
- #: application/PriceAlert.php:310
107
- msgid "Current Price: <strong>%s</strong>"
108
- msgstr ""
109
-
110
- #: application/PriceAlert.php:311
111
- #: application/modules/Amazon/templates/data_compare.php:108
112
- #: application/modules/Amazon/templates/data_item.php:75
113
- #: application/modules/Ozon/templates/data_compare.php:75
114
- #: application/templates/data_price_tracker_alert.php:43
115
- msgid "as of"
116
- msgstr ""
117
-
118
- #: application/PriceAlert.php:312
119
- msgid "Price dropped from %s to %s"
120
- msgstr ""
121
-
122
- #: application/PriceAlert.php:314
123
- msgid "<a href=\"%s\">More info...</a>"
124
- msgstr ""
125
-
126
- #: application/PriceAlert.php:317
127
- msgid "This present alert has now expired. You may <a href=\"%s\">create a new alert</a> for this item."
128
- msgstr ""
129
-
130
- #: application/PriceAlert.php:318
131
- msgid "If you don't want to receive any price alerts from us in the future, <a href=\"%s\">please click here</a>."
132
- msgstr ""
133
-
134
- #: application/helpers/TemplateHelper.php:20
135
- #: application/helpers/TemplateHelper.php:41
136
- msgid "number_format_decimal_point"
137
- msgstr ""
138
-
139
- #: application/helpers/TemplateHelper.php:21
140
- #: application/helpers/TemplateHelper.php:42
141
- msgid "number_format_thousands_sep"
142
- msgstr ""
143
-
144
- #: application/helpers/TemplateHelper.php:113
145
- msgid "d"
146
- msgstr ""
147
-
148
- #: application/helpers/TemplateHelper.php:115
149
- msgid "h"
150
- msgstr ""
151
-
152
- #: application/helpers/TemplateHelper.php:117
153
- #: application/helpers/TemplateHelper.php:119
154
- #: application/modules/Ebay/templates/data_item.php:90
155
- #: application/modules/Ebay/templates/data_list.php:42
156
- msgid "m"
157
- msgstr ""
158
-
159
- #: application/helpers/TemplateHelper.php:300
160
- #: application/modules/Amazon/templates/data_compare.php:79
161
- #: application/modules/Ozon/templates/data_compare.php:65
162
- #: application/templates/data_price_tracker_alert.php:41
163
- msgid "Price"
164
- msgstr ""
165
-
166
- #: application/modules/AE/templates/data_grid.php:6
167
- #: application/modules/AdmitadProducts/templates/data_grid.php:6
168
- #: application/modules/Affiliatewindow/templates/data_grid.php:6
169
- #: application/modules/AffilinetProducts/templates/data_grid.php:6
170
- #: application/modules/Aliexpress/templates/data_grid.php:6
171
- #: application/modules/Amazon/templates/data_grid.php:6
172
- #: application/modules/CityadsProducts/templates/data_grid.php:6
173
- #: application/modules/CjProducts/templates/data_grid.php:6
174
- #: application/modules/Ebay/templates/data_grid.php:6
175
- #: application/modules/Flipkart/templates/data_grid.php:6
176
- #: application/modules/GdeSlon/templates/data_grid.php:6
177
- #: application/modules/Linkshare/templates/data_grid.php:6
178
- #: application/modules/Optimisemedia/templates/data_grid.php:6
179
- #: application/modules/Ozon/templates/data_grid.php:6
180
- #: application/modules/PayTM/templates/data_grid.php:6
181
- #: application/modules/Shareasale/templates/data_grid.php:6
182
- #: application/modules/TradedoublerProducts/templates/data_grid.php:6
183
- #: application/modules/Zanox/templates/data_grid.php:6
184
- msgid "Grid"
185
- msgstr ""
186
-
187
- #: application/modules/AE/templates/data_item.php:6
188
- #: application/modules/AdmitadProducts/templates/data_item.php:6
189
- #: application/modules/Affiliatewindow/templates/data_item.php:6
190
- #: application/modules/AffilinetProducts/templates/data_item.php:6
191
- #: application/modules/Aliexpress/templates/data_item.php:6
192
- #: application/modules/Amazon/templates/data_item.php:6
193
- #: application/modules/CityadsProducts/templates/data_item.php:6
194
- #: application/modules/CjProducts/templates/data_item.php:6
195
- #: application/modules/Ebay/templates/data_item.php:6
196
- #: application/modules/Flipkart/templates/data_item.php:6
197
- #: application/modules/GdeSlon/templates/data_item.php:6
198
- #: application/modules/Linkshare/templates/data_item.php:6
199
- #: application/modules/Market/templates/data_item.php:5
200
- #: application/modules/Optimisemedia/templates/data_item.php:6
201
- #: application/modules/Ozon/templates/data_item.php:6
202
- #: application/modules/PayTM/templates/data_item.php:6
203
- #: application/modules/Shareasale/templates/data_item.php:6
204
- #: application/modules/TradedoublerProducts/templates/data_item.php:6
205
- #: application/modules/Zanox/templates/data_item.php:6
206
- msgid "Product card"
207
- msgstr ""
208
-
209
- #: application/modules/AE/templates/data_item.php:61
210
- #: application/modules/AdmitadProducts/templates/data_item.php:52
211
- #: application/modules/Affiliatewindow/templates/data_item.php:46
212
- #: application/modules/AffilinetProducts/templates/data_item.php:50
213
- #: application/modules/Aliexpress/templates/data_item.php:50
214
- #: application/modules/Amazon/templates/data_compare.php:120
215
- #: application/modules/Amazon/templates/data_compare.php:241
216
- #: application/modules/Amazon/templates/data_item.php:79
217
- #: application/modules/CityadsProducts/templates/data_item.php:50
218
- #: application/modules/CjProducts/templates/data_item.php:46
219
- #: application/modules/Ebay/templates/data_item.php:68
220
- #: application/modules/Flipkart/templates/data_item.php:55
221
- #: application/modules/GdeSlon/templates/data_item.php:46
222
- #: application/modules/Linkshare/templates/data_item.php:46
223
- #: application/modules/Optimisemedia/templates/data_item.php:46
224
- #: application/modules/Ozon/templates/data_compare.php:87
225
- #: application/modules/Ozon/templates/data_compare.php:168
226
- #: application/modules/Ozon/templates/data_item.php:59
227
- #: application/modules/PayTM/templates/data_item.php:55
228
- #: application/modules/Shareasale/templates/data_item.php:50
229
- #: application/modules/TradedoublerProducts/templates/data_item.php:46
230
- #: application/modules/Zanox/templates/data_item.php:46
231
- #: application/templates/data_price_tracker_alert.php:49
232
- msgid "BUY THIS ITEM"
233
- msgstr ""
234
-
235
- #: application/modules/AE/templates/data_item.php:82
236
- #: application/modules/AdmitadProducts/templates/data_item.php:65
237
- #: application/modules/Amazon/templates/data_compare.php:129
238
- #: application/modules/Amazon/templates/data_item.php:94
239
- #: application/modules/Flipkart/templates/data_item.php:81
240
- #: application/modules/Ozon/templates/data_item.php:95
241
- msgid "Features"
242
- msgstr ""
243
-
244
- #: application/modules/AE/templates/data_item.php:91
245
- msgid "User reviews"
246
- msgstr ""
247
-
248
- #: application/modules/AE/templates/data_item.php:103
249
- msgid "View all reviews"
250
- msgstr ""
251
-
252
- #: application/modules/AE/templates/data_list.php:6
253
- #: application/modules/AdmitadProducts/templates/data_list.php:6
254
- #: application/modules/Affiliatewindow/templates/data_list.php:6
255
- #: application/modules/AffilinetProducts/templates/data_list.php:6
256
- #: application/modules/Aliexpress/templates/data_list.php:6
257
- #: application/modules/Amazon/templates/data_list.php:6
258
- #: application/modules/CityadsProducts/templates/data_list.php:6
259
- #: application/modules/CjProducts/templates/data_list.php:6
260
- #: application/modules/Ebay/templates/data_list.php:6
261
- #: application/modules/Flipkart/templates/data_list.php:6
262
- #: application/modules/GdeSlon/templates/data_list.php:6
263
- #: application/modules/Linkshare/templates/data_list.php:6
264
- #: application/modules/Optimisemedia/templates/data_list.php:6
265
- #: application/modules/Ozon/templates/data_list.php:6
266
- #: application/modules/PayTM/templates/data_list.php:6
267
- #: application/modules/Shareasale/templates/data_list.php:6
268
- #: application/modules/TradedoublerProducts/templates/data_list.php:6
269
- #: application/modules/Zanox/templates/data_list.php:6
270
- msgid "List"
271
- msgstr ""
272
-
273
- #: application/modules/AE/templates/data_price_tracker_alert.php:6
274
- #: application/modules/AdmitadProducts/templates/data_price_tracker_alert.php:6
275
- #: application/modules/Affiliatewindow/templates/data_price_tracker_alert.php:6
276
- #: application/modules/AffilinetProducts/templates/data_price_tracker_alert.php:6
277
- #: application/modules/Aliexpress/templates/data_price_tracker_alert.php:6
278
- #: application/modules/Amazon/templates/data_price_tracker_alert.php:6
279
- #: application/modules/CjProducts/templates/data_price_tracker_alert.php:6
280
- #: application/modules/GdeSlon/templates/data_price_tracker_alert.php:6
281
- #: application/modules/Linkshare/templates/data_price_tracker_alert.php:6
282
- #: application/modules/Optimisemedia/templates/data_price_tracker_alert.php:6
283
- #: application/modules/Ozon/templates/data_price_tracker_alert.php:6
284
- #: application/modules/PayTM/templates/data_price_tracker_alert.php:6
285
- #: application/modules/Shareasale/templates/data_price_tracker_alert.php:6
286
- #: application/modules/TradedoublerProducts/templates/data_price_tracker_alert.php:6
287
- #: application/modules/Zanox/templates/data_price_tracker_alert.php:6
288
- #: application/templates/data_price_tracker_alert.php:5
289
- msgid "Price tracker & alert"
290
- msgstr ""
291
-
292
- #: application/modules/AdmitadCoupons/templates/data_coupons.php:6
293
- #: application/modules/AffilinetCoupons/templates/data_coupons.php:6
294
- #: application/modules/TradedoublerCoupons/templates/data_coupons.php:6
295
- msgid "Coupons"
296
- msgstr ""
297
-
298
- #: application/modules/AdmitadCoupons/templates/data_coupons.php:36
299
- #: application/modules/AffilinetCoupons/templates/data_coupons.php:35
300
- #: application/modules/CjLinks/templates/data_universal.php:36
301
- #: application/modules/TradedoublerCoupons/templates/data_coupons.php:37
302
- msgid "Coupon code:"
303
- msgstr ""
304
-
305
- #: application/modules/AdmitadCoupons/templates/data_coupons.php:42
306
- #: application/modules/TradedoublerCoupons/templates/data_coupons.php:44
307
- msgid "OFF"
308
- msgstr ""
309
-
310
- #: application/modules/AdmitadCoupons/templates/data_coupons.php:47
311
- #: application/modules/AffilinetCoupons/templates/data_coupons.php:37
312
- #: application/modules/CjLinks/templates/data_universal.php:38
313
- #: application/modules/TradedoublerCoupons/templates/data_coupons.php:49
314
- msgid "Ends:"
315
- msgstr ""
316
-
317
- #: application/modules/AdmitadCoupons/templates/data_coupons.php:57
318
- #: application/modules/AffilinetCoupons/templates/data_coupons.php:46
319
- #: application/modules/CjLinks/templates/data_universal.php:49
320
- #: application/modules/TradedoublerCoupons/templates/data_coupons.php:59
321
- msgid "Shop Sale"
322
- msgstr ""
323
-
324
- #: application/modules/Amazon/templates/data_compare.php:6
325
- #: application/modules/Amazon/templates/data_compare.php:40
326
- #: application/modules/Ozon/templates/data_compare.php:6
327
- #: application/modules/Ozon/templates/data_compare.php:28
328
- msgid "Compare"
329
- msgstr ""
330
-
331
- #: application/modules/Amazon/templates/data_compare.php:58
332
- #: application/modules/Ozon/templates/data_compare.php:45
333
- msgid "User Rating"
334
- msgstr ""
335
-
336
- #: application/modules/Amazon/templates/data_compare.php:67
337
- msgid "ratings"
338
- msgstr ""
339
-
340
- #: application/modules/Amazon/templates/data_compare.php:71
341
- #: application/modules/Ozon/templates/data_compare.php:57
342
- msgid "See all reviews"
343
- msgstr ""
344
-
345
- #: application/modules/Amazon/templates/data_compare.php:87
346
- #: application/modules/Amazon/templates/data_item.php:53
347
- #: application/modules/Amazon/templates/data_list.php:45
348
- msgid "Too low to display"
349
- msgstr ""
350
-
351
- #: application/modules/Amazon/templates/data_compare.php:90
352
- #: application/modules/Amazon/templates/data_item.php:57
353
- #: application/modules/Amazon/templates/data_list.php:49
354
- #: application/modules/Ebay/templates/data_item.php:99
355
- #: application/modules/Ebay/templates/data_list.php:69
356
- msgid "Free shipping"
357
- msgstr ""
358
-
359
- #: application/modules/Amazon/templates/data_compare.php:96
360
- #: application/modules/Amazon/templates/data_item.php:63
361
- msgid "new"
362
- msgstr ""
363
-
364
- #: application/modules/Amazon/templates/data_compare.php:98
365
- #: application/modules/Amazon/templates/data_compare.php:103
366
- #: application/modules/Amazon/templates/data_item.php:65
367
- #: application/modules/Amazon/templates/data_item.php:70
368
- msgid "from"
369
- msgstr ""
370
-
371
- #: application/modules/Amazon/templates/data_compare.php:103
372
- #: application/modules/Amazon/templates/data_item.php:70
373
- msgid "used"
374
- msgstr ""
375
-
376
- #: application/modules/Amazon/templates/data_compare.php:116
377
- #: application/modules/Amazon/templates/data_compare.php:237
378
- #: application/modules/Ozon/templates/data_compare.php:83
379
- #: application/modules/Ozon/templates/data_compare.php:164
380
- msgid "Shop Now"
381
- msgstr ""
382
-
383
- #: application/modules/Amazon/templates/data_compare.php:179
384
- #: application/modules/Ozon/templates/data_compare.php:137
385
- msgid "User Reviews"
386
- msgstr ""
387
-
388
- #: application/modules/Amazon/templates/data_compare.php:204
389
- msgid "Expert Reviews"
390
- msgstr ""
391
-
392
- #: application/modules/Amazon/templates/data_compare.php:220
393
- msgid "Barcodes"
394
- msgstr ""
395
-
396
- #: application/modules/Amazon/templates/data_compare.php:248
397
- msgid "Images"
398
- msgstr ""
399
-
400
- #: application/modules/Amazon/templates/data_grid.php:65
401
- #: application/modules/Amazon/templates/data_list.php:57
402
- msgid "Last updated on"
403
- msgstr ""
404
-
405
- #: application/modules/Amazon/templates/data_item.php:106
406
- #: application/modules/Market/templates/data_item.php:106
407
- #: application/modules/Ozon/templates/data_item.php:80
408
- msgid "Customer reviews"
409
- msgstr ""
410
-
411
- #: application/modules/Amazon/templates/data_item.php:111
412
- msgid "customer reviews"
413
- msgstr ""
414
-
415
- #: application/modules/BingImages/templates/data_image.php:5
416
- #: application/modules/GoogleImages/templates/data_image.php:5
417
- #: application/modules/Pixabay/templates/data_image.php:5
418
- msgid "Image"
419
- msgstr ""
420
-
421
- #: application/modules/BingImages/templates/data_justified_gallery.php:7
422
- #: application/modules/Flickr/templates/data_justified_gallery.php:7
423
- #: application/modules/GoogleImages/templates/data_justified_gallery.php:7
424
- #: application/modules/Ozon/templates/data_compare.php:177
425
- #: application/modules/Pixabay/templates/data_justified_gallery.php:7
426
- msgid "Gallery"
427
- msgstr ""
428
-
429
- #: application/modules/CjLinks/templates/data_universal.php:6
430
- msgid "Universal"
431
- msgstr ""
432
-
433
- #: application/modules/Clickbank/templates/data_simple.php:6
434
- #: application/modules/Flickr/templates/data_simple.php:5
435
- #: application/modules/Freebase/templates/data_simple.php:5
436
- #: application/modules/GoogleBooks/templates/data_simple.php:5
437
- #: application/modules/GoogleImages/templates/data_simple.php:5
438
- #: application/modules/Twitter/templates/data_simple.php:5
439
- #: application/modules/VkNews/templates/data_simple.php:5
440
- #: application/modules/Youtube/templates/data_simple.php:5
441
- msgid "Simple"
442
- msgstr ""
443
-
444
- #: application/modules/Ebay/templates/data_grid.php:51
445
- #: application/modules/Ebay/templates/data_item.php:45
446
- #: application/modules/Ebay/templates/data_item.php:52
447
- #: application/modules/Ebay/templates/data_list.php:62
448
- msgid "Buy It Now"
449
- msgstr ""
450
-
451
- #: application/modules/Ebay/templates/data_grid.php:53
452
- #: application/modules/Ebay/templates/data_item.php:76
453
- #: application/modules/Ebay/templates/data_list.php:64
454
- msgid "Bids:"
455
- msgstr ""
456
-
457
- #: application/modules/Ebay/templates/data_item.php:54
458
- #: application/templates/blocks/price_history.php:17
459
- msgid "Current Price"
460
- msgstr ""
461
-
462
- #: application/modules/Ebay/templates/data_item.php:68
463
- msgid "VIEW THIS ITEM"
464
- msgstr ""
465
-
466
- #: application/modules/Ebay/templates/data_item.php:81
467
- msgid "Item condition:"
468
- msgstr ""
469
-
470
- #: application/modules/Ebay/templates/data_item.php:89
471
- #: application/modules/Ebay/templates/data_list.php:41
472
- msgid "Time left:"
473
- msgstr ""
474
-
475
- #: application/modules/Ebay/templates/data_item.php:94
476
- #: application/modules/Ebay/templates/data_list.php:46
477
- msgid "Ended:"
478
- msgstr ""
479
-
480
- #: application/modules/Ebay/templates/data_item.php:103
481
- msgid "EEK:"
482
- msgstr ""
483
-
484
- #: application/modules/Flickr/templates/data_justified_gallery.php:62
485
- msgid "Photo: %s on Flickr"
486
- msgstr ""
487
-
488
- #: application/modules/Flickr/templates/data_simple.php:20
489
- msgid "Photo %s on Flickr"
490
- msgstr ""
491
-
492
- #: application/modules/Freebase/templates/data_simple.php:27
493
- msgid "Source:"
494
- msgstr ""
495
-
496
- #: application/modules/Market/templates/data_item.php:32
497
- msgid "Customer reviews:"
498
- msgstr ""
499
-
500
- #: application/modules/Market/templates/data_item.php:38
501
- msgid "Average price"
502
- msgstr ""
503
-
504
- #: application/modules/Market/templates/data_item.php:49
505
- msgid "Data from Yandex.Market"
506
- msgstr ""
507
-
508
- #: application/modules/Market/templates/data_item.php:79
509
- msgid "free"
510
- msgstr ""
511
-
512
- #: application/modules/Market/templates/data_item.php:86
513
- msgid "Pickup"
514
- msgstr ""
515
-
516
- #: application/modules/Market/templates/data_item.php:90
517
- msgid "In stock"
518
- msgstr ""
519
-
520
- #: application/modules/Market/templates/data_item.php:92
521
- msgid "Not available"
522
- msgstr ""
523
-
524
- #: application/modules/Market/templates/data_item.php:97
525
- msgid "Visit store"
526
- msgstr ""
527
-
528
- #: application/modules/Market/templates/data_item.php:123
529
- msgid "Pros:"
530
- msgstr ""
531
-
532
- #: application/modules/Market/templates/data_item.php:124
533
- msgid "Cons:"
534
- msgstr ""
535
-
536
- #: application/modules/Market/templates/data_item.php:125
537
- msgid "Comment:"
538
- msgstr ""
539
-
540
- #: application/modules/