FEEDZY RSS Feeds Lite - Version 3.2.0

Version Description

  • 2017-08-17
Download this release

Release Info

Developer codeinwp
Plugin Icon 128x128 FEEDZY RSS Feeds Lite
Version 3.2.0
Comparing to
See all releases

Code changes from version 3.1.10 to 3.2.0

CHANGELOG.md CHANGED
@@ -1,7 +1,13 @@
1
 
2
- ### v3.1.10 - 2017-08-07
3
  **Changes:**
4
 
 
 
 
 
 
 
5
  ### v3.1.10 - 2017-08-03
6
  **Changes:**
7
  * Fixed typos in shortcode builder.
1
 
2
+ ### v3.2.0 - 2017-08-17
3
  **Changes:**
4
 
5
+ ### v3.2.0 - 2017-08-17
6
+ **Changes:**
7
+ * Fix for image URL issue following some strange patterns.
8
+ * Added fallback for broken feed, now if one feed from the list is not working, others will will be used.
9
+ * Added shortcode parameter for feed cache control.
10
+
11
  ### v3.1.10 - 2017-08-03
12
  **Changes:**
13
  * Fixed typos in shortcode builder.
css/feedzy-rss-feeds.css CHANGED
@@ -2,7 +2,7 @@
2
  * feedzy-rss-feeds.css
3
  * Feedzy RSS Feed
4
  * Copyright: (c) 2016 Themeisle, themeisle.com
5
- * Version: 3.1.10
6
  * Plugin Name: FEEDZY RSS Feeds
7
  * Plugin URI: http://themeisle.com/plugins/feedzy-rss-feeds/
8
  * Author: Themeisle
@@ -524,3 +524,12 @@ input:checked + .feedzy-track:before {
524
  font-size: 17px;
525
  vertical-align: -3px;
526
  }
 
 
 
 
 
 
 
 
 
2
  * feedzy-rss-feeds.css
3
  * Feedzy RSS Feed
4
  * Copyright: (c) 2016 Themeisle, themeisle.com
5
+ * Version: 3.2.0
6
  * Plugin Name: FEEDZY RSS Feeds
7
  * Plugin URI: http://themeisle.com/plugins/feedzy-rss-feeds/
8
  * Author: Themeisle
524
  font-size: 17px;
525
  vertical-align: -3px;
526
  }
527
+
528
+ .post-type-feedzy_categories .postbox-container div#submitdiv,
529
+ .post-type-feedzy_categories #feedzy_category_feeds_rn {
530
+ display: block !important;
531
+ }
532
+
533
+ .post-type-feedzy_categories .postbox-container > div > .postbox:not(#feedzy_category_feeds) {
534
+ display: none;
535
+ }
feedzy-rss-feed.php CHANGED
@@ -15,7 +15,7 @@
15
  * Plugin Name: Feedzy RSS Feeds Lite
16
  * Plugin URI: https://themeisle.com/plugins/feedzy-rss-feeds-lite/
17
  * Description: A small and lightweight RSS aggregator plugin. Fast and very easy to use, it allows you to aggregate multiple RSS feeds into your WordPress site through fully customizable shortcodes & widgets.
18
- * Version: 3.1.10
19
  * Author: Themeisle
20
  * Author URI: http://themeisle.com
21
  * License: GPL-2.0+
15
  * Plugin Name: Feedzy RSS Feeds Lite
16
  * Plugin URI: https://themeisle.com/plugins/feedzy-rss-feeds-lite/
17
  * Description: A small and lightweight RSS aggregator plugin. Fast and very easy to use, it allows you to aggregate multiple RSS feeds into your WordPress site through fully customizable shortcodes & widgets.
18
+ * Version: 3.2.0
19
  * Author: Themeisle
20
  * Author URI: http://themeisle.com
21
  * License: GPL-2.0+
includes/abstract/feedzy-rss-feeds-admin-abstract.php CHANGED
@@ -101,6 +101,10 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
101
  * @access public
102
  *
103
  * @param string $itemAttr The item attribute.
 
 
 
 
104
  *
105
  * @return string
106
  */
@@ -227,7 +231,8 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
227
  public function feedzy_rss( $atts, $content = '' ) {
228
  $sc = $this->get_short_code_attributes( $atts );
229
  $feedURL = $this->normalize_urls( $sc['feeds'] );
230
- $feed = $this->fetch_feed( $feedURL );
 
231
  if ( is_string( $feed ) ) {
232
  return $feed;
233
  }
@@ -274,6 +279,8 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
274
  'size' => '',
275
  // thumbs pixel size
276
  'keywords_title' => '',
 
 
277
  // only display item if title contains specific keywords (comma-separated list/case sensitive)
278
  ), $atts, 'feedzy_default'
279
  );
@@ -314,13 +321,28 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
314
  * @since 3.1.7
315
  * @access private
316
  * @param string $feedURL The feed URL.
 
317
  * @return SimplePie
318
  */
319
- private function init_feed( $feedURL ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
320
  $feed = new SimplePie();
321
  $feed->set_cache_class( 'WP_Feed_Cache' );
322
  $feed->set_file_class( 'WP_SimplePie_File' );
323
- $feed->set_cache_duration( apply_filters( 'wp_feed_cache_transient_lifetime', 12 * HOUR_IN_SECONDS, $feedURL ) );
324
  $feed->set_feed_url( $feedURL );
325
  $feed->init();
326
  $feed->handle_content_type();
@@ -331,11 +353,14 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
331
  /**
332
  * Fetch the content feed from a group of urls.
333
  *
334
- * @param array $feedURL The feeds urls to fetch content from.
335
- *
 
 
 
336
  * @return SimplePie|string|void|WP_Error The feed resource.
337
  */
338
- public function fetch_feed( $feedURL ) {
339
  // Load SimplePie if not already
340
  if ( ! class_exists( 'SimplePie' ) ) {
341
  require_once( ABSPATH . WPINC . '/feed.php' );
@@ -351,17 +376,65 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
351
  } else {
352
  $feedURL = html_entity_decode( $feedURL );
353
  }
354
- $feed = fetch_feed( $feedURL ); // Not used as log as #41304 is Opened.
355
- if ( is_wp_error( $feed ) ) {
356
- return __( 'An error occured for when trying to retrieve feeds! Check the URL\'s provided as feed sources.', 'feedzy-rss-feeds' );
357
- }
358
  }
359
 
360
- $feed = $this->init_feed( $feedURL ); // Added in 3.1.7 -- TODO: Remove this line when #41304 is fixed.
361
 
 
362
  return $feed;
363
  }
364
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
365
  /**
366
  * Sanitizes the shortcode array and sets the defaults
367
  *
@@ -579,7 +652,7 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
579
  if ( ( ! empty( $theThumbnail ) && $sc['thumb'] == 'auto' ) || $sc['thumb'] == 'yes' ) {
580
  if ( ! empty( $theThumbnail ) ) {
581
  $theThumbnail = $this->feedzy_image_encode( $theThumbnail );
582
- $contentThumb .= '<span class="fetched" style="background-image: url(' . $theThumbnail . ');" title="' . $item->get_title() . '"></span>';
583
  }
584
  if ( $sc['thumb'] == 'yes' ) {
585
  $contentThumb .= '<span class="default" style="background-image:url(' . $sc['default'] . ');" title="' . $item->get_title() . '"></span>';
@@ -725,8 +798,6 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
725
  $theThumbnail = $this->feedzy_return_image( $feedDescription );
726
  }
727
 
728
- $theThumbnail = preg_replace( '/\s+/', '-', trim( preg_replace( '/[\s-]+/', ' ', $theThumbnail ) ) );
729
-
730
  return $theThumbnail;
731
  }
732
 
@@ -783,7 +854,7 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
783
  $match = $link;
784
  preg_match( $pattern, $string, $link );
785
  if ( ! empty( $link ) && isset( $link[1] ) ) {
786
- $match = urldecode( $link[1] );
787
  }
788
 
789
  return $match;
101
  * @access public
102
  *
103
  * @param string $itemAttr The item attribute.
104
+ * @param string $sizes The item sizes.
105
+ * @param string $item The feed item.
106
+ * @param string $feedURL The feed URL.
107
+ * @param string $sc The short code attributes.
108
  *
109
  * @return string
110
  */
231
  public function feedzy_rss( $atts, $content = '' ) {
232
  $sc = $this->get_short_code_attributes( $atts );
233
  $feedURL = $this->normalize_urls( $sc['feeds'] );
234
+ $cache = $sc['refresh'];
235
+ $feed = $this->fetch_feed( $feedURL, $cache );
236
  if ( is_string( $feed ) ) {
237
  return $feed;
238
  }
279
  'size' => '',
280
  // thumbs pixel size
281
  'keywords_title' => '',
282
+ // cache refresh
283
+ 'refresh' => '12_hours',
284
  // only display item if title contains specific keywords (comma-separated list/case sensitive)
285
  ), $atts, 'feedzy_default'
286
  );
321
  * @since 3.1.7
322
  * @access private
323
  * @param string $feedURL The feed URL.
324
+ * @param string $cache The cache string (eg. 1_hour, 30_min etc.).
325
  * @return SimplePie
326
  */
327
+ private function init_feed( $feedURL, $cache ) {
328
+ $unit_defaults = array(
329
+ 'mins' => MINUTE_IN_SECONDS,
330
+ 'hours' => HOUR_IN_SECONDS,
331
+ 'days' => DAY_IN_SECONDS,
332
+ );
333
+ $cache_time = 12 * HOUR_IN_SECONDS;
334
+ if ( isset( $cache ) && $cache != '' ) {
335
+ list( $value, $unit ) = explode( '_', $cache );
336
+ if ( isset( $value ) && is_numeric( $value ) && $value >= 1 && $value <= 100 ) {
337
+ if ( isset( $unit ) && in_array( strtolower( $unit ), array( 'mins', 'hours', 'days' ) ) ) {
338
+ $cache_time = $value * $unit_defaults[ $unit ];
339
+ }
340
+ }
341
+ }
342
  $feed = new SimplePie();
343
  $feed->set_cache_class( 'WP_Feed_Cache' );
344
  $feed->set_file_class( 'WP_SimplePie_File' );
345
+ $feed->set_cache_duration( apply_filters( 'wp_feed_cache_transient_lifetime', $cache_time, $feedURL ) );
346
  $feed->set_feed_url( $feedURL );
347
  $feed->init();
348
  $feed->handle_content_type();
353
  /**
354
  * Fetch the content feed from a group of urls.
355
  *
356
+ * @since 3.0.0
357
+ * @access public
358
+ * @updated 3.2.0
359
+ * @param array $feedURL The feeds urls to fetch content from.
360
+ * @param string $cache The cache string (eg. 1_hour, 30_min etc.).
361
  * @return SimplePie|string|void|WP_Error The feed resource.
362
  */
363
+ public function fetch_feed( $feedURL, $cache = '12_hours' ) {
364
  // Load SimplePie if not already
365
  if ( ! class_exists( 'SimplePie' ) ) {
366
  require_once( ABSPATH . WPINC . '/feed.php' );
376
  } else {
377
  $feedURL = html_entity_decode( $feedURL );
378
  }
379
+
380
+ $feedURL = $this->get_valid_feed_urls( $feedURL, $cache );
381
+
382
+ // $feed = fetch_feed( $validFeedURL ); // Not used as log as #41304 is Opened.
383
  }
384
 
385
+ $feed = $this->init_feed( $feedURL, $cache ); // Added in 3.1.7 -- TODO: Remove this line when #41304 is fixed.
386
 
387
+ // var_dump( $feed );
388
  return $feed;
389
  }
390
 
391
+ /**
392
+ * Returns only valid URLs for fetching.
393
+ *
394
+ * @since 3.2.0
395
+ * @access private
396
+ * @param array|string $feedURL The feeds URL/s.
397
+ * @param string $cache The cache string (eg. 1_hour, 30_min etc.).
398
+ * @return array
399
+ */
400
+ private function get_valid_feed_urls( $feedURL, $cache ) {
401
+ $validFeedURL = array();
402
+ if ( is_array( $feedURL ) ) {
403
+ foreach ( $feedURL as $url ) {
404
+ if ( $this->check_valid_xml( $url, $cache ) ) {
405
+ $validFeedURL[] = $url;
406
+ } else {
407
+ echo sprintf( __( 'Feed URL: %s not valid and removed from fetch.', 'feedzy-rss-feeds' ), '<b>' . $url . '</b>' );
408
+ }
409
+ }
410
+ } else {
411
+ if ( $this->check_valid_xml( $feedURL, $cache ) ) {
412
+ $validFeedURL[] = $feedURL;
413
+ } else {
414
+ echo sprintf( __( 'Feed URL: %s not valid and removed from fetch.', 'feedzy-rss-feeds' ), '<b>' . $feedURL . '</b>' );
415
+ }
416
+ }
417
+
418
+ return $validFeedURL;
419
+ }
420
+
421
+ /**
422
+ * Checks if a url is a valid feed.
423
+ *
424
+ * @since 3.2.0
425
+ * @access private
426
+ * @param string $url The URL to validate.
427
+ * @param string $cache The cache string (eg. 1_hour, 30_min etc.).
428
+ * @return bool
429
+ */
430
+ private function check_valid_xml( $url, $cache ) {
431
+ $feed = $this->init_feed( $url, $cache );
432
+ if ( $feed->error() ) {
433
+ return false;
434
+ }
435
+ return true;
436
+ }
437
+
438
  /**
439
  * Sanitizes the shortcode array and sets the defaults
440
  *
652
  if ( ( ! empty( $theThumbnail ) && $sc['thumb'] == 'auto' ) || $sc['thumb'] == 'yes' ) {
653
  if ( ! empty( $theThumbnail ) ) {
654
  $theThumbnail = $this->feedzy_image_encode( $theThumbnail );
655
+ $contentThumb .= '<span class="fetched" style="background-image: url(\'' . $theThumbnail . '\');" title="' . $item->get_title() . '"></span>';
656
  }
657
  if ( $sc['thumb'] == 'yes' ) {
658
  $contentThumb .= '<span class="default" style="background-image:url(' . $sc['default'] . ');" title="' . $item->get_title() . '"></span>';
798
  $theThumbnail = $this->feedzy_return_image( $feedDescription );
799
  }
800
 
 
 
801
  return $theThumbnail;
802
  }
803
 
854
  $match = $link;
855
  preg_match( $pattern, $string, $link );
856
  if ( ! empty( $link ) && isset( $link[1] ) ) {
857
+ $match = $link[1];
858
  }
859
 
860
  return $match;
includes/admin/feedzy-rss-feeds-admin.php CHANGED
@@ -151,6 +151,21 @@ class Feedzy_Rss_Feeds_Admin extends Feedzy_Rss_Feeds_Admin_Abstract {
151
  'feedzy_category_feed',
152
  ), 'feedzy_categories', 'normal', 'high'
153
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
154
  }
155
 
156
  /**
151
  'feedzy_category_feed',
152
  ), 'feedzy_categories', 'normal', 'high'
153
  );
154
+ add_meta_box(
155
+ 'feedzy_category_feeds_rn', __( 'Increase your social media presence', 'feedzy-rss-feeds' ), array(
156
+ $this,
157
+ 'render_upsell_rn',
158
+ ), 'feedzy_categories', 'side', 'low'
159
+ );
160
+ }
161
+
162
+ /**
163
+ * Render RN upsell metabox.
164
+ */
165
+ public function render_upsell_rn() {
166
+ echo '<p>Learn how you can connect with people by sharing content from RSS feeds on your social media accounts. </p>';
167
+ echo '<a class="button button-primary " href="https://revive.social/plugins/revive-network/" target="_blank">View more details</a>';
168
+
169
  }
170
 
171
  /**
includes/admin/feedzy-rss-feeds-ui-lang.php CHANGED
@@ -16,7 +16,6 @@ if ( ! defined( 'ABSPATH' ) ) {
16
  die( 'Direct access not allowed!' );
17
  }
18
 
19
-
20
  /**
21
  *
22
  * Translation for TinyMCE
@@ -36,7 +35,7 @@ class Feedzy_Rss_Feeds_Ui_Lang {
36
  *
37
  * @since 3.0.0
38
  * @access protected
39
- * @var array $strings The ID of this plugin.
40
  */
41
  protected $strings;
42
 
@@ -48,33 +47,17 @@ class Feedzy_Rss_Feeds_Ui_Lang {
48
  */
49
  public function __construct() {
50
  $this->strings = array(
51
- 'popup_url' => wp_nonce_url( 'admin-ajax.php', 'feedzy_ajax_token', 'feedzy_request_form_token' ),
52
- 'pro_url' => FEEDZY_UPSELL_LINK,
53
- 'plugin_label' => __( 'Feedzy Lite', 'feedzy-rss-feeds' ),
54
- 'plugin_title' => __( 'Insert Feedzy RSS Feeds Shortcode', 'feedzy-rss-feeds' ),
55
- 'image_button' => __( 'Use Image', 'feedzy-rss-feeds' ),
56
  'insert_button' => __( 'Insert Shortcode', 'feedzy-rss-feeds' ),
57
  'cancel_button' => __( 'Cancel', 'feedzy-rss-feeds' ),
58
- 'pro_button' => __( 'Get Feedzy RSS Feeds Premium', 'feedzy-rss-feeds' ),
59
  );
60
  }
61
 
62
- /**
63
- *
64
- * The method that returns the translation array
65
- *
66
- * @since 3.0.0
67
- * @access public
68
- * @return string
69
- */
70
- public function feedzy_tinymce_translation() {
71
-
72
- $locale = _WP_Editors::$mce_locale;
73
- $translated = 'tinyMCE.addI18n("' . $locale . '.feedzy_tinymce_plugin", ' . json_encode( $this->strings ) . ");\n";
74
-
75
- return $translated;
76
- }
77
-
78
  /**
79
  * Return the default values of the forms elements
80
  *
@@ -82,16 +65,18 @@ class Feedzy_Rss_Feeds_Ui_Lang {
82
  */
83
  public static function get_form_defaults() {
84
 
85
- $html_parts = self::get_form_elements();
86
- $all_options = wp_list_pluck( array_values( $html_parts ),'elements' );
87
  $all_options = call_user_func_array( 'array_merge', $all_options );
88
- $defaults = array();
89
 
90
  foreach ( $all_options as $id => $option ) {
91
  $defaults[ $id ] = $option['value'];
92
  }
 
93
  return $defaults;
94
  }
 
95
  /**
96
  * The method for localizing and generating of the tinyMCE popup form.
97
  *
@@ -104,20 +89,20 @@ class Feedzy_Rss_Feeds_Ui_Lang {
104
  */
105
  public static function get_form_elements() {
106
  $elements = array(
107
- 'section_feed' => array(
108
- 'title' => __( 'Feed Source', 'feedzy-rss-feeds' ),
109
  'elements' => array(
110
- 'feeds' => array(
111
- 'label' => __( 'The feed(s) URL (comma-separated list).', 'feedzy-rss-feeds' ) . ' ' . __( 'Check feed before insert.', 'feedzy-rss-feeds' ),
112
  'placeholder' => __( 'Feed URL', 'feedzy-rss-feeds' ),
113
- 'type' => 'text',
114
- 'value' => '',
115
  ),
116
- 'max' => array(
117
- 'label' => __( 'Number of items to display.', 'feedzy-rss-feeds' ),
118
  'placeholder' => __( '(eg: 5)', 'feedzy-rss-feeds' ),
119
- 'type' => 'text',
120
- 'value' => '',
121
  ),
122
  'feed_title' => array(
123
  'label' => __( 'Should we display the RSS title?', 'feedzy-rss-feeds' ),
@@ -128,39 +113,71 @@ class Feedzy_Rss_Feeds_Ui_Lang {
128
  'label' => __( 'Yes', 'feedzy-rss-feeds' ),
129
  'value' => 'yes',
130
  ),
131
- 'no' => array(
132
  'label' => __( 'No', 'feedzy-rss-feeds' ),
133
  'value' => 'no',
134
  ),
135
  ),
136
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  ),
138
  ),
139
- 'section_item' => array(
140
- 'title' => __( 'Item Options', 'feedzy-rss-feeds' ),
141
  'elements' => array(
142
- 'target' => array(
143
  'label' => __( 'Links may be opened in the same window or a new tab.', 'feedzy-rss-feeds' ),
144
  'type' => 'select',
145
  'value' => '',
146
  'opts' => array(
147
- 'auto' => array(
148
  'label' => __( 'Auto', 'feedzy-rss-feeds' ),
149
  'value' => '',
150
  ),
151
- '_blank' => array(
152
  'label' => __( '_blank', 'feedzy-rss-feeds' ),
153
  'value' => '_blank',
154
  ),
155
- '_self' => array(
156
  'label' => __( '_self', 'feedzy-rss-feeds' ),
157
  'value' => '_self',
158
  ),
159
- '_parent' => array(
160
  'label' => __( '_parent', 'feedzy-rss-feeds' ),
161
  'value' => '_parent',
162
  ),
163
- '_top' => array(
164
  'label' => __( '_top', 'feedzy-rss-feeds' ),
165
  'value' => '_top',
166
  ),
@@ -170,13 +187,13 @@ class Feedzy_Rss_Feeds_Ui_Lang {
170
  ),
171
  ),
172
  ),
173
- 'title' => array(
174
- 'label' => __( 'Trim the title of the item after X characters.', 'feedzy-rss-feeds' ),
175
  'placeholder' => __( '(eg: 160)', 'feedzy-rss-feeds' ),
176
- 'type' => 'text',
177
- 'value' => '',
178
  ),
179
- 'meta' => array(
180
  'label' => __( 'Should we display the date of publication and the author name?', 'feedzy-rss-feeds' ),
181
  'type' => 'select',
182
  'value' => '',
@@ -185,13 +202,13 @@ class Feedzy_Rss_Feeds_Ui_Lang {
185
  'label' => __( 'Yes', 'feedzy-rss-feeds' ),
186
  'value' => 'yes',
187
  ),
188
- 'no' => array(
189
  'label' => __( 'No', 'feedzy-rss-feeds' ),
190
  'value' => 'no',
191
  ),
192
  ),
193
  ),
194
- 'summary' => array(
195
  'label' => __( 'Should we display a description (abstract) of the retrieved item?', 'feedzy-rss-feeds' ),
196
  'type' => 'select',
197
  'value' => '',
@@ -200,38 +217,38 @@ class Feedzy_Rss_Feeds_Ui_Lang {
200
  'label' => __( 'Yes', 'feedzy-rss-feeds' ),
201
  'value' => 'yes',
202
  ),
203
- 'no' => array(
204
  'label' => __( 'No', 'feedzy-rss-feeds' ),
205
  'value' => 'no',
206
  ),
207
  ),
208
  ),
209
- 'summarylength' => array(
210
- 'label' => __( 'Crop description (summary) of the element after X characters.', 'feedzy-rss-feeds' ),
211
- 'type' => 'text',
212
  'placeholder' => __( '(eg: 160)', 'feedzy-rss-feeds' ),
213
- 'value' => '',
214
  ),
215
  'keywords_title' => array(
216
- 'label' => __( 'Only display item if title contains specific keyword(s) (comma-separated list/case sensitive).', 'feedzy-rss-feeds' ),
217
  'placeholder' => __( '(eg: news, sports etc.)', 'feedzy-rss-feeds' ),
218
- 'type' => 'text',
219
- 'value' => '',
220
- 'disabled' => feedzy_is_new(),
221
  ),
222
- 'keywords_ban' => array(
223
- 'label' => __( 'Exclude items if title or content contains specific keyword(s) (comma-separated list/case sensitive). ', 'feedzy-rss-feeds' ),
224
  'placeholder' => __( '(eg: politics, gossip etc.)', 'feedzy-rss-feeds' ),
225
- 'type' => 'text',
226
- 'value' => '',
227
- 'disabled' => true,
228
  ),
229
  ),
230
  ),
231
  'section_image' => array(
232
- 'title' => __( 'Item Image Options', 'feedzy-rss-feeds' ),
233
  'elements' => array(
234
- 'thumb' => array(
235
  'label' => __( 'Should we display the first image of the content if it is available?', 'feedzy-rss-feeds' ),
236
  'type' => 'select',
237
  'value' => '',
@@ -240,82 +257,82 @@ class Feedzy_Rss_Feeds_Ui_Lang {
240
  'label' => __( 'Auto', 'feedzy-rss-feeds' ),
241
  'value' => '',
242
  ),
243
- 'yes' => array(
244
  'label' => __( 'Yes', 'feedzy-rss-feeds' ),
245
  'value' => 'yes',
246
  ),
247
- 'no' => array(
248
  'label' => __( 'No', 'feedzy-rss-feeds' ),
249
  'value' => 'no',
250
  ),
251
  ),
252
  ),
253
  'default' => array(
254
- 'label' => __( 'Default thumbnail URL if no image is found.', 'feedzy-rss-feeds' ),
255
  'placeholder' => __( 'Image URL', 'feedzy-rss-feeds' ),
256
- 'type' => 'file',
257
- 'value' => '',
258
- 'button' => array(
259
  'button_text' => __( 'Select from Gallery', 'feedzy-rss-feeds' ),
260
  ),
261
  ),
262
- 'size' => array(
263
- 'label' => __( 'Thumbnails dimension. Do not include "px". Eg: 150', 'feedzy-rss-feeds' ),
264
  'placeholder' => __( '(eg: 150)', 'feedzy-rss-feeds' ),
265
- 'type' => 'text',
266
- 'value' => '',
267
  ),
268
  ),
269
  ),
270
- 'section_pro' => array(
271
- 'title' => __( 'PRO Options', 'feedzy-rss-feeds' ),
272
  'description' => __( 'Get access to more options and customizations with full version of Feedzy RSS Feeds . Use existing templates or extend them and make them your own.', 'feedzy-rss-feeds' ) . '<br/>' . '<a href="' . FEEDZY_UPSELL_LINK . '" target="_blank"><small>' . __( 'See more features of Feedzy RSS Feeds ', 'feedzy-rss-feeds' ) . '</small></a>',
273
- 'elements' => array(
274
- 'price' => array(
275
- 'label' => __( 'Should we display the price from the feed if it is available?', 'feedzy-rss-feeds' ),
276
- 'type' => 'select',
277
  'disabled' => true,
278
- 'value' => '',
279
- 'opts' => array(
280
  'yes' => array(
281
  'label' => __( 'Yes', 'feedzy-rss-feeds' ),
282
  'value' => 'yes',
283
  ),
284
- 'no' => array(
285
  'label' => __( 'No', 'feedzy-rss-feeds' ),
286
  'value' => 'no',
287
  ),
288
  ),
289
  ),
290
  'referral_url' => array(
291
- 'label' => __( 'Referral URL parameters (w/o "?").', 'feedzy-rss-feeds' ),
292
  'placeholder' => __( '(eg. promo_code=feedzy_is_awesome)', 'feedzy-rss-feeds' ),
293
- 'type' => 'text',
294
- 'disabled' => true,
295
- 'value' => '',
296
  ),
297
- 'columns' => array(
298
- 'label' => __( 'How many columns we should use to display the feed items', 'feedzy-rss-feeds' ),
299
  'placeholder' => __( '(eg. 1, 2, ..., 6)', 'feedzy-rss-feeds' ),
300
- 'type' => 'number',
301
- 'disabled' => true,
302
- 'value' => '1',
303
  ),
304
- 'template' => array(
305
- 'label' => __( 'Template to use when displaying the feed.', 'feedzy-rss-feeds' ),
306
- 'type' => 'radio',
307
  'disabled' => true,
308
- 'value' => '',
309
- 'opts' => array(
310
  'auto' => array(
311
  'label' => __( 'Default', 'feedzy-rss-feeds' ),
312
  'value' => 'default',
313
  ),
314
- 'yes' => array(
315
  'label' => __( 'Style 1', 'feedzy-rss-feeds' ),
316
  'value' => 'style1',
317
  ),
318
- 'no' => array(
319
  'label' => __( 'Style 2', 'feedzy-rss-feeds' ),
320
  'value' => 'style2',
321
  ),
@@ -330,7 +347,23 @@ class Feedzy_Rss_Feeds_Ui_Lang {
330
  return $elements;
331
  }
332
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
333
  }
334
 
335
  $feedzyLangClass = new Feedzy_Rss_Feeds_Ui_Lang();
336
- $strings = $feedzyLangClass->feedzy_tinymce_translation();
16
  die( 'Direct access not allowed!' );
17
  }
18
 
 
19
  /**
20
  *
21
  * Translation for TinyMCE
35
  *
36
  * @since 3.0.0
37
  * @access protected
38
+ * @var array $strings The ID of this plugin.
39
  */
40
  protected $strings;
41
 
47
  */
48
  public function __construct() {
49
  $this->strings = array(
50
+ 'popup_url' => wp_nonce_url( 'admin-ajax.php', 'feedzy_ajax_token', 'feedzy_request_form_token' ),
51
+ 'pro_url' => FEEDZY_UPSELL_LINK,
52
+ 'plugin_label' => __( 'Feedzy Lite', 'feedzy-rss-feeds' ),
53
+ 'plugin_title' => __( 'Insert Feedzy RSS Feeds Shortcode', 'feedzy-rss-feeds' ),
54
+ 'image_button' => __( 'Use Image', 'feedzy-rss-feeds' ),
55
  'insert_button' => __( 'Insert Shortcode', 'feedzy-rss-feeds' ),
56
  'cancel_button' => __( 'Cancel', 'feedzy-rss-feeds' ),
57
+ 'pro_button' => __( 'Get Feedzy RSS Feeds Premium', 'feedzy-rss-feeds' ),
58
  );
59
  }
60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  /**
62
  * Return the default values of the forms elements
63
  *
65
  */
66
  public static function get_form_defaults() {
67
 
68
+ $html_parts = self::get_form_elements();
69
+ $all_options = wp_list_pluck( array_values( $html_parts ), 'elements' );
70
  $all_options = call_user_func_array( 'array_merge', $all_options );
71
+ $defaults = array();
72
 
73
  foreach ( $all_options as $id => $option ) {
74
  $defaults[ $id ] = $option['value'];
75
  }
76
+
77
  return $defaults;
78
  }
79
+
80
  /**
81
  * The method for localizing and generating of the tinyMCE popup form.
82
  *
89
  */
90
  public static function get_form_elements() {
91
  $elements = array(
92
+ 'section_feed' => array(
93
+ 'title' => __( 'Feed Source', 'feedzy-rss-feeds' ),
94
  'elements' => array(
95
+ 'feeds' => array(
96
+ 'label' => __( 'The feed(s) URL (comma-separated list).', 'feedzy-rss-feeds' ) . ' ' . __( 'Check feed before insert.', 'feedzy-rss-feeds' ),
97
  'placeholder' => __( 'Feed URL', 'feedzy-rss-feeds' ),
98
+ 'type' => 'text',
99
+ 'value' => '',
100
  ),
101
+ 'max' => array(
102
+ 'label' => __( 'Number of items to display.', 'feedzy-rss-feeds' ),
103
  'placeholder' => __( '(eg: 5)', 'feedzy-rss-feeds' ),
104
+ 'type' => 'text',
105
+ 'value' => '',
106
  ),
107
  'feed_title' => array(
108
  'label' => __( 'Should we display the RSS title?', 'feedzy-rss-feeds' ),
113
  'label' => __( 'Yes', 'feedzy-rss-feeds' ),
114
  'value' => 'yes',
115
  ),
116
+ 'no' => array(
117
  'label' => __( 'No', 'feedzy-rss-feeds' ),
118
  'value' => 'no',
119
  ),
120
  ),
121
  ),
122
+ 'refresh' => array(
123
+ 'label' => __( 'For how long we will cache the feed results.', 'feedzy-rss-feeds' ),
124
+ 'placeholder' => __( '(eg: 1_days, defaults: 12_hours)', 'feedzy-rss-feeds' ),
125
+ 'type' => 'select',
126
+ 'value' => '12_hours',
127
+ 'opts' => array(
128
+ '1_hours' => array(
129
+ 'label' => '1' . ' ' . __( 'Hour', 'feedzy-rss-feeds' ),
130
+ 'value' => '1_hours',
131
+ ),
132
+ '3_hours' => array(
133
+ 'label' => '3' . ' ' . __( 'Hours', 'feedzy-rss-feeds' ),
134
+ 'value' => '3_hours',
135
+ ),
136
+ '12_hours' => array(
137
+ 'label' => '12' . ' ' . __( 'Hours', 'feedzy-rss-feeds' ),
138
+ 'value' => '12_hours',
139
+ ),
140
+ '1_days' => array(
141
+ 'label' => '1' . ' ' . __( 'Day', 'feedzy-rss-feeds' ),
142
+ 'value' => '1_days',
143
+ ),
144
+ '3_days' => array(
145
+ 'label' => '3' . ' ' . __( 'Days', 'feedzy-rss-feeds' ),
146
+ 'value' => '3_days',
147
+ ),
148
+ '15_days' => array(
149
+ 'label' => '15' . ' ' . __( 'Days', 'feedzy-rss-feeds' ),
150
+ 'value' => '15_days',
151
+ ),
152
+ ),
153
+ ),
154
  ),
155
  ),
156
+ 'section_item' => array(
157
+ 'title' => __( 'Item Options', 'feedzy-rss-feeds' ),
158
  'elements' => array(
159
+ 'target' => array(
160
  'label' => __( 'Links may be opened in the same window or a new tab.', 'feedzy-rss-feeds' ),
161
  'type' => 'select',
162
  'value' => '',
163
  'opts' => array(
164
+ 'auto' => array(
165
  'label' => __( 'Auto', 'feedzy-rss-feeds' ),
166
  'value' => '',
167
  ),
168
+ '_blank' => array(
169
  'label' => __( '_blank', 'feedzy-rss-feeds' ),
170
  'value' => '_blank',
171
  ),
172
+ '_self' => array(
173
  'label' => __( '_self', 'feedzy-rss-feeds' ),
174
  'value' => '_self',
175
  ),
176
+ '_parent' => array(
177
  'label' => __( '_parent', 'feedzy-rss-feeds' ),
178
  'value' => '_parent',
179
  ),
180
+ '_top' => array(
181
  'label' => __( '_top', 'feedzy-rss-feeds' ),
182
  'value' => '_top',
183
  ),
187
  ),
188
  ),
189
  ),
190
+ 'title' => array(
191
+ 'label' => __( 'Trim the title of the item after X characters.', 'feedzy-rss-feeds' ),
192
  'placeholder' => __( '(eg: 160)', 'feedzy-rss-feeds' ),
193
+ 'type' => 'text',
194
+ 'value' => '',
195
  ),
196
+ 'meta' => array(
197
  'label' => __( 'Should we display the date of publication and the author name?', 'feedzy-rss-feeds' ),
198
  'type' => 'select',
199
  'value' => '',
202
  'label' => __( 'Yes', 'feedzy-rss-feeds' ),
203
  'value' => 'yes',
204
  ),
205
+ 'no' => array(
206
  'label' => __( 'No', 'feedzy-rss-feeds' ),
207
  'value' => 'no',
208
  ),
209
  ),
210
  ),
211
+ 'summary' => array(
212
  'label' => __( 'Should we display a description (abstract) of the retrieved item?', 'feedzy-rss-feeds' ),
213
  'type' => 'select',
214
  'value' => '',
217
  'label' => __( 'Yes', 'feedzy-rss-feeds' ),
218
  'value' => 'yes',
219
  ),
220
+ 'no' => array(
221
  'label' => __( 'No', 'feedzy-rss-feeds' ),
222
  'value' => 'no',
223
  ),
224
  ),
225
  ),
226
+ 'summarylength' => array(
227
+ 'label' => __( 'Crop description (summary) of the element after X characters.', 'feedzy-rss-feeds' ),
228
+ 'type' => 'text',
229
  'placeholder' => __( '(eg: 160)', 'feedzy-rss-feeds' ),
230
+ 'value' => '',
231
  ),
232
  'keywords_title' => array(
233
+ 'label' => __( 'Only display item if title contains specific keyword(s) (comma-separated list/case sensitive).', 'feedzy-rss-feeds' ),
234
  'placeholder' => __( '(eg: news, sports etc.)', 'feedzy-rss-feeds' ),
235
+ 'type' => 'text',
236
+ 'value' => '',
237
+ 'disabled' => feedzy_is_new(),
238
  ),
239
+ 'keywords_ban' => array(
240
+ 'label' => __( 'Exclude items if title or content contains specific keyword(s) (comma-separated list/case sensitive). ', 'feedzy-rss-feeds' ),
241
  'placeholder' => __( '(eg: politics, gossip etc.)', 'feedzy-rss-feeds' ),
242
+ 'type' => 'text',
243
+ 'value' => '',
244
+ 'disabled' => true,
245
  ),
246
  ),
247
  ),
248
  'section_image' => array(
249
+ 'title' => __( 'Item Image Options', 'feedzy-rss-feeds' ),
250
  'elements' => array(
251
+ 'thumb' => array(
252
  'label' => __( 'Should we display the first image of the content if it is available?', 'feedzy-rss-feeds' ),
253
  'type' => 'select',
254
  'value' => '',
257
  'label' => __( 'Auto', 'feedzy-rss-feeds' ),
258
  'value' => '',
259
  ),
260
+ 'yes' => array(
261
  'label' => __( 'Yes', 'feedzy-rss-feeds' ),
262
  'value' => 'yes',
263
  ),
264
+ 'no' => array(
265
  'label' => __( 'No', 'feedzy-rss-feeds' ),
266
  'value' => 'no',
267
  ),
268
  ),
269
  ),
270
  'default' => array(
271
+ 'label' => __( 'Default thumbnail URL if no image is found.', 'feedzy-rss-feeds' ),
272
  'placeholder' => __( 'Image URL', 'feedzy-rss-feeds' ),
273
+ 'type' => 'file',
274
+ 'value' => '',
275
+ 'button' => array(
276
  'button_text' => __( 'Select from Gallery', 'feedzy-rss-feeds' ),
277
  ),
278
  ),
279
+ 'size' => array(
280
+ 'label' => __( 'Thumbnails dimension. Do not include "px". Eg: 150', 'feedzy-rss-feeds' ),
281
  'placeholder' => __( '(eg: 150)', 'feedzy-rss-feeds' ),
282
+ 'type' => 'text',
283
+ 'value' => '',
284
  ),
285
  ),
286
  ),
287
+ 'section_pro' => array(
288
+ 'title' => __( 'PRO Options', 'feedzy-rss-feeds' ),
289
  'description' => __( 'Get access to more options and customizations with full version of Feedzy RSS Feeds . Use existing templates or extend them and make them your own.', 'feedzy-rss-feeds' ) . '<br/>' . '<a href="' . FEEDZY_UPSELL_LINK . '" target="_blank"><small>' . __( 'See more features of Feedzy RSS Feeds ', 'feedzy-rss-feeds' ) . '</small></a>',
290
+ 'elements' => array(
291
+ 'price' => array(
292
+ 'label' => __( 'Should we display the price from the feed if it is available?', 'feedzy-rss-feeds' ),
293
+ 'type' => 'select',
294
  'disabled' => true,
295
+ 'value' => '',
296
+ 'opts' => array(
297
  'yes' => array(
298
  'label' => __( 'Yes', 'feedzy-rss-feeds' ),
299
  'value' => 'yes',
300
  ),
301
+ 'no' => array(
302
  'label' => __( 'No', 'feedzy-rss-feeds' ),
303
  'value' => 'no',
304
  ),
305
  ),
306
  ),
307
  'referral_url' => array(
308
+ 'label' => __( 'Referral URL parameters (w/o "?").', 'feedzy-rss-feeds' ),
309
  'placeholder' => __( '(eg. promo_code=feedzy_is_awesome)', 'feedzy-rss-feeds' ),
310
+ 'type' => 'text',
311
+ 'disabled' => true,
312
+ 'value' => '',
313
  ),
314
+ 'columns' => array(
315
+ 'label' => __( 'How many columns we should use to display the feed items', 'feedzy-rss-feeds' ),
316
  'placeholder' => __( '(eg. 1, 2, ..., 6)', 'feedzy-rss-feeds' ),
317
+ 'type' => 'number',
318
+ 'disabled' => true,
319
+ 'value' => '1',
320
  ),
321
+ 'template' => array(
322
+ 'label' => __( 'Template to use when displaying the feed.', 'feedzy-rss-feeds' ),
323
+ 'type' => 'radio',
324
  'disabled' => true,
325
+ 'value' => '',
326
+ 'opts' => array(
327
  'auto' => array(
328
  'label' => __( 'Default', 'feedzy-rss-feeds' ),
329
  'value' => 'default',
330
  ),
331
+ 'yes' => array(
332
  'label' => __( 'Style 1', 'feedzy-rss-feeds' ),
333
  'value' => 'style1',
334
  ),
335
+ 'no' => array(
336
  'label' => __( 'Style 2', 'feedzy-rss-feeds' ),
337
  'value' => 'style2',
338
  ),
347
  return $elements;
348
  }
349
 
350
+ /**
351
+ *
352
+ * The method that returns the translation array
353
+ *
354
+ * @since 3.0.0
355
+ * @access public
356
+ * @return string
357
+ */
358
+ public function feedzy_tinymce_translation() {
359
+
360
+ $locale = _WP_Editors::$mce_locale;
361
+ $translated = 'tinyMCE.addI18n("' . $locale . '.feedzy_tinymce_plugin", ' . json_encode( $this->strings ) . ");\n";
362
+
363
+ return $translated;
364
+ }
365
+
366
  }
367
 
368
  $feedzyLangClass = new Feedzy_Rss_Feeds_Ui_Lang();
369
+ $strings = $feedzyLangClass->feedzy_tinymce_translation();
includes/feedzy-rss-feeds.php CHANGED
@@ -104,7 +104,7 @@ class Feedzy_Rss_Feeds {
104
  */
105
  public function init() {
106
  self::$plugin_name = 'feedzy-rss-feeds';
107
- self::$version = '3.1.10';
108
  self::$instance->load_dependencies();
109
  self::$instance->set_locale();
110
  self::$instance->define_admin_hooks();
104
  */
105
  public function init() {
106
  self::$plugin_name = 'feedzy-rss-feeds';
107
+ self::$version = '3.2.0';
108
  self::$instance->load_dependencies();
109
  self::$instance->set_locale();
110
  self::$instance->define_admin_hooks();
languages/feedzy-rss-feeds.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the GPL-2.0+.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Feedzy RSS Feeds Lite 3.1.9\n"
6
  "Report-Msgid-Bugs-To: https://github.com/Codeinwp/feedzy-rss-feeds/issues\n"
7
- "POT-Creation-Date: 2017-07-26 20:26:01+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -32,21 +32,20 @@ msgstr ""
32
  msgid "Sorry, this feed is currently unavailable or does not exists anymore."
33
  msgstr ""
34
 
35
- #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:356
36
- msgid ""
37
- "An error occured for when trying to retrieve feeds! Check the URL's "
38
- "provided as feed sources."
39
  msgstr ""
40
 
41
- #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:622
42
  msgid "by"
43
  msgstr ""
44
 
45
- #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:628
46
  msgid "on"
47
  msgstr ""
48
 
49
- #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:630
50
  msgid "at"
51
  msgstr ""
52
 
@@ -91,266 +90,296 @@ msgstr ""
91
  msgid "Category Feeds"
92
  msgstr ""
93
 
94
- #: includes/admin/feedzy-rss-feeds-admin.php:170
 
 
 
 
95
  msgid "Place your URL's here followed by a comma."
96
  msgstr ""
97
 
98
- #: includes/admin/feedzy-rss-feeds-admin.php:231
99
  msgid "Category Title"
100
  msgstr ""
101
 
102
- #: includes/admin/feedzy-rss-feeds-admin.php:232
103
- #: includes/admin/feedzy-rss-feeds-admin.php:235
104
  msgid "Slug"
105
  msgstr ""
106
 
107
- #: includes/admin/feedzy-rss-feeds-admin.php:259
108
  msgid "Undefined"
109
  msgstr ""
110
 
111
- #: includes/admin/feedzy-rss-feeds-admin.php:284
112
  msgid "Documentation and examples"
113
  msgstr ""
114
 
115
- #: includes/admin/feedzy-rss-feeds-admin.php:285
116
  msgid "More Plugins"
117
  msgstr ""
118
 
119
- #: includes/admin/feedzy-rss-feeds-admin.php:285
120
- #: includes/admin/feedzy-rss-feeds-admin.php:304
121
  msgid "More Features"
122
  msgstr ""
123
 
124
- #: includes/admin/feedzy-rss-feeds-admin.php:301
125
  #: includes/admin/feedzy-wp-widget.php:40
126
  msgid "Feedzy RSS Feeds"
127
  msgstr ""
128
 
129
- #: includes/admin/feedzy-rss-feeds-admin.php:301
130
  msgid "Feedzy RSS"
131
  msgstr ""
132
 
133
- #: includes/admin/feedzy-rss-feeds-admin.php:314
134
  msgid "Import Posts"
135
  msgstr ""
136
 
137
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:53
138
  msgid "Feedzy Lite"
139
  msgstr ""
140
 
141
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:54
142
  msgid "Insert Feedzy RSS Feeds Shortcode"
143
  msgstr ""
144
 
145
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:55
146
  msgid "Use Image"
147
  msgstr ""
148
 
149
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:56
150
  msgid "Insert Shortcode"
151
  msgstr ""
152
 
153
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:57
154
  msgid "Cancel"
155
  msgstr ""
156
 
157
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:58
158
  msgid "Get Feedzy RSS Feeds Premium"
159
  msgstr ""
160
 
161
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:108
162
  msgid "Feed Source"
163
  msgstr ""
164
 
165
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:111
166
  msgid "The feed(s) URL (comma-separated list)."
167
  msgstr ""
168
 
169
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:111
170
  msgid "Check feed before insert."
171
  msgstr ""
172
 
173
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:112
174
  msgid "Feed URL"
175
  msgstr ""
176
 
177
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:117
178
  msgid "Number of items to display."
179
  msgstr ""
180
 
181
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:118
182
  msgid "(eg: 5)"
183
  msgstr ""
184
 
185
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:123
186
  msgid "Should we display the RSS title?"
187
  msgstr ""
188
 
189
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:128
190
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:185
191
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:200
192
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:244
193
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:281
194
  msgid "Yes"
195
  msgstr ""
196
 
197
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:132
198
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:189
199
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:204
200
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:248
201
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:285
202
  msgid "No"
203
  msgstr ""
204
 
205
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:140
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
206
  msgid "Item Options"
207
  msgstr ""
208
 
209
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:143
210
  msgid "Links may be opened in the same window or a new tab."
211
  msgstr ""
212
 
213
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:148
214
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:240
215
  msgid "Auto"
216
  msgstr ""
217
 
218
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:152
219
  msgid "_blank"
220
  msgstr ""
221
 
222
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:156
223
  msgid "_self"
224
  msgstr ""
225
 
226
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:160
227
  msgid "_parent"
228
  msgstr ""
229
 
230
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:164
231
  msgid "_top"
232
  msgstr ""
233
 
234
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:168
235
  msgid "framename"
236
  msgstr ""
237
 
238
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:174
239
  msgid "Trim the title of the item after X characters."
240
  msgstr ""
241
 
242
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:175
243
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:212
244
  msgid "(eg: 160)"
245
  msgstr ""
246
 
247
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:180
248
  msgid "Should we display the date of publication and the author name?"
249
  msgstr ""
250
 
251
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:195
252
  msgid "Should we display a description (abstract) of the retrieved item?"
253
  msgstr ""
254
 
255
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:210
256
  msgid "Crop description (summary) of the element after X characters."
257
  msgstr ""
258
 
259
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:216
260
  msgid ""
261
  "Only display item if title contains specific keyword(s) (comma-separated "
262
  "list/case sensitive)."
263
  msgstr ""
264
 
265
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:217
266
  msgid "(eg: news, sports etc.)"
267
  msgstr ""
268
 
269
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:223
270
  msgid ""
271
  "Exclude items if title or content contains specific keyword(s) "
272
  "(comma-separated list/case sensitive). "
273
  msgstr ""
274
 
275
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:224
276
  msgid "(eg: politics, gossip etc.)"
277
  msgstr ""
278
 
279
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:232
280
  msgid "Item Image Options"
281
  msgstr ""
282
 
283
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:235
284
  msgid "Should we display the first image of the content if it is available?"
285
  msgstr ""
286
 
287
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:254
288
  msgid "Default thumbnail URL if no image is found."
289
  msgstr ""
290
 
291
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:255
292
  msgid "Image URL"
293
  msgstr ""
294
 
295
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:259
296
  msgid "Select from Gallery"
297
  msgstr ""
298
 
299
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:263
300
  msgid "Thumbnails dimension. Do not include \"px\". Eg: 150"
301
  msgstr ""
302
 
303
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:264
304
  msgid "(eg: 150)"
305
  msgstr ""
306
 
307
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:271
308
  msgid "PRO Options"
309
  msgstr ""
310
 
311
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:272
312
  msgid ""
313
  "Get access to more options and customizations with full version of Feedzy "
314
  "RSS Feeds . Use existing templates or extend them and make them your own."
315
  msgstr ""
316
 
317
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:272
318
  msgid "See more features of Feedzy RSS Feeds "
319
  msgstr ""
320
 
321
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:275
322
  msgid "Should we display the price from the feed if it is available?"
323
  msgstr ""
324
 
325
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:291
326
  msgid "Referral URL parameters (w/o \"?\")."
327
  msgstr ""
328
 
329
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:292
330
  msgid "(eg. promo_code=feedzy_is_awesome)"
331
  msgstr ""
332
 
333
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:298
334
  msgid "How many columns we should use to display the feed items"
335
  msgstr ""
336
 
337
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:299
338
  msgid "(eg. 1, 2, ..., 6)"
339
  msgstr ""
340
 
341
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:305
342
  msgid "Template to use when displaying the feed."
343
  msgstr ""
344
 
345
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:311
346
  msgid "Default"
347
  msgstr ""
348
 
349
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:315
350
  msgid "Style 1"
351
  msgstr ""
352
 
353
- #: includes/admin/feedzy-rss-feeds-ui-lang.php:319
354
  msgid "Style 2"
355
  msgstr ""
356
 
@@ -362,6 +391,16 @@ msgstr ""
362
  msgid "Intro text"
363
  msgstr ""
364
 
 
 
 
 
 
 
 
 
 
 
365
  #. Plugin Name of the plugin/theme
366
  msgid "Feedzy RSS Feeds Lite"
367
  msgstr ""
2
  # This file is distributed under the GPL-2.0+.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Feedzy RSS Feeds Lite 3.2.0\n"
6
  "Report-Msgid-Bugs-To: https://github.com/Codeinwp/feedzy-rss-feeds/issues\n"
7
+ "POT-Creation-Date: 2017-08-17 13:49:33+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
32
  msgid "Sorry, this feed is currently unavailable or does not exists anymore."
33
  msgstr ""
34
 
35
+ #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:407
36
+ #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:414
37
+ msgid "Feed URL: %s not valid and removed from fetch."
 
38
  msgstr ""
39
 
40
+ #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:695
41
  msgid "by"
42
  msgstr ""
43
 
44
+ #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:701
45
  msgid "on"
46
  msgstr ""
47
 
48
+ #: includes/abstract/feedzy-rss-feeds-admin-abstract.php:703
49
  msgid "at"
50
  msgstr ""
51
 
90
  msgid "Category Feeds"
91
  msgstr ""
92
 
93
+ #: includes/admin/feedzy-rss-feeds-admin.php:155
94
+ msgid "Increase your social media presence"
95
+ msgstr ""
96
+
97
+ #: includes/admin/feedzy-rss-feeds-admin.php:185
98
  msgid "Place your URL's here followed by a comma."
99
  msgstr ""
100
 
101
+ #: includes/admin/feedzy-rss-feeds-admin.php:246
102
  msgid "Category Title"
103
  msgstr ""
104
 
105
+ #: includes/admin/feedzy-rss-feeds-admin.php:247
106
+ #: includes/admin/feedzy-rss-feeds-admin.php:250
107
  msgid "Slug"
108
  msgstr ""
109
 
110
+ #: includes/admin/feedzy-rss-feeds-admin.php:274
111
  msgid "Undefined"
112
  msgstr ""
113
 
114
+ #: includes/admin/feedzy-rss-feeds-admin.php:299
115
  msgid "Documentation and examples"
116
  msgstr ""
117
 
118
+ #: includes/admin/feedzy-rss-feeds-admin.php:300
119
  msgid "More Plugins"
120
  msgstr ""
121
 
122
+ #: includes/admin/feedzy-rss-feeds-admin.php:300
123
+ #: includes/admin/feedzy-rss-feeds-admin.php:319
124
  msgid "More Features"
125
  msgstr ""
126
 
127
+ #: includes/admin/feedzy-rss-feeds-admin.php:316
128
  #: includes/admin/feedzy-wp-widget.php:40
129
  msgid "Feedzy RSS Feeds"
130
  msgstr ""
131
 
132
+ #: includes/admin/feedzy-rss-feeds-admin.php:316
133
  msgid "Feedzy RSS"
134
  msgstr ""
135
 
136
+ #: includes/admin/feedzy-rss-feeds-admin.php:329
137
  msgid "Import Posts"
138
  msgstr ""
139
 
140
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:52
141
  msgid "Feedzy Lite"
142
  msgstr ""
143
 
144
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:53
145
  msgid "Insert Feedzy RSS Feeds Shortcode"
146
  msgstr ""
147
 
148
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:54
149
  msgid "Use Image"
150
  msgstr ""
151
 
152
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:55
153
  msgid "Insert Shortcode"
154
  msgstr ""
155
 
156
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:56
157
  msgid "Cancel"
158
  msgstr ""
159
 
160
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:57
161
  msgid "Get Feedzy RSS Feeds Premium"
162
  msgstr ""
163
 
164
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:93
165
  msgid "Feed Source"
166
  msgstr ""
167
 
168
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:96
169
  msgid "The feed(s) URL (comma-separated list)."
170
  msgstr ""
171
 
172
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:96
173
  msgid "Check feed before insert."
174
  msgstr ""
175
 
176
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:97
177
  msgid "Feed URL"
178
  msgstr ""
179
 
180
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:102
181
  msgid "Number of items to display."
182
  msgstr ""
183
 
184
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:103
185
  msgid "(eg: 5)"
186
  msgstr ""
187
 
188
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:108
189
  msgid "Should we display the RSS title?"
190
  msgstr ""
191
 
192
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:113
193
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:202
194
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:217
195
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:261
196
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:298
197
  msgid "Yes"
198
  msgstr ""
199
 
200
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:117
201
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:206
202
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:221
203
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:265
204
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:302
205
  msgid "No"
206
  msgstr ""
207
 
208
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:123
209
+ msgid "For how long we will cache the feed results."
210
+ msgstr ""
211
+
212
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:124
213
+ msgid "(eg: 1_days, defaults: 12_hours)"
214
+ msgstr ""
215
+
216
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:129
217
+ msgid "Hour"
218
+ msgstr ""
219
+
220
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:133
221
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:137
222
+ msgid "Hours"
223
+ msgstr ""
224
+
225
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:141
226
+ msgid "Day"
227
+ msgstr ""
228
+
229
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:145
230
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:149
231
+ msgid "Days"
232
+ msgstr ""
233
+
234
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:157
235
  msgid "Item Options"
236
  msgstr ""
237
 
238
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:160
239
  msgid "Links may be opened in the same window or a new tab."
240
  msgstr ""
241
 
242
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:165
243
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:257
244
  msgid "Auto"
245
  msgstr ""
246
 
247
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:169
248
  msgid "_blank"
249
  msgstr ""
250
 
251
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:173
252
  msgid "_self"
253
  msgstr ""
254
 
255
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:177
256
  msgid "_parent"
257
  msgstr ""
258
 
259
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:181
260
  msgid "_top"
261
  msgstr ""
262
 
263
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:185
264
  msgid "framename"
265
  msgstr ""
266
 
267
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:191
268
  msgid "Trim the title of the item after X characters."
269
  msgstr ""
270
 
271
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:192
272
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:229
273
  msgid "(eg: 160)"
274
  msgstr ""
275
 
276
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:197
277
  msgid "Should we display the date of publication and the author name?"
278
  msgstr ""
279
 
280
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:212
281
  msgid "Should we display a description (abstract) of the retrieved item?"
282
  msgstr ""
283
 
284
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:227
285
  msgid "Crop description (summary) of the element after X characters."
286
  msgstr ""
287
 
288
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:233
289
  msgid ""
290
  "Only display item if title contains specific keyword(s) (comma-separated "
291
  "list/case sensitive)."
292
  msgstr ""
293
 
294
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:234
295
  msgid "(eg: news, sports etc.)"
296
  msgstr ""
297
 
298
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:240
299
  msgid ""
300
  "Exclude items if title or content contains specific keyword(s) "
301
  "(comma-separated list/case sensitive). "
302
  msgstr ""
303
 
304
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:241
305
  msgid "(eg: politics, gossip etc.)"
306
  msgstr ""
307
 
308
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:249
309
  msgid "Item Image Options"
310
  msgstr ""
311
 
312
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:252
313
  msgid "Should we display the first image of the content if it is available?"
314
  msgstr ""
315
 
316
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:271
317
  msgid "Default thumbnail URL if no image is found."
318
  msgstr ""
319
 
320
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:272
321
  msgid "Image URL"
322
  msgstr ""
323
 
324
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:276
325
  msgid "Select from Gallery"
326
  msgstr ""
327
 
328
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:280
329
  msgid "Thumbnails dimension. Do not include \"px\". Eg: 150"
330
  msgstr ""
331
 
332
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:281
333
  msgid "(eg: 150)"
334
  msgstr ""
335
 
336
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:288
337
  msgid "PRO Options"
338
  msgstr ""
339
 
340
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:289
341
  msgid ""
342
  "Get access to more options and customizations with full version of Feedzy "
343
  "RSS Feeds . Use existing templates or extend them and make them your own."
344
  msgstr ""
345
 
346
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:289
347
  msgid "See more features of Feedzy RSS Feeds "
348
  msgstr ""
349
 
350
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:292
351
  msgid "Should we display the price from the feed if it is available?"
352
  msgstr ""
353
 
354
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:308
355
  msgid "Referral URL parameters (w/o \"?\")."
356
  msgstr ""
357
 
358
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:309
359
  msgid "(eg. promo_code=feedzy_is_awesome)"
360
  msgstr ""
361
 
362
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:315
363
  msgid "How many columns we should use to display the feed items"
364
  msgstr ""
365
 
366
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:316
367
  msgid "(eg. 1, 2, ..., 6)"
368
  msgstr ""
369
 
370
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:322
371
  msgid "Template to use when displaying the feed."
372
  msgstr ""
373
 
374
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:328
375
  msgid "Default"
376
  msgstr ""
377
 
378
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:332
379
  msgid "Style 1"
380
  msgstr ""
381
 
382
+ #: includes/admin/feedzy-rss-feeds-ui-lang.php:336
383
  msgid "Style 2"
384
  msgstr ""
385
 
391
  msgid "Intro text"
392
  msgstr ""
393
 
394
+ #: vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-licenser.php:453
395
+ msgid ""
396
+ "Updating this theme will lose any customizations you have made. Cancel to "
397
+ "stop, OK to update."
398
+ msgstr ""
399
+
400
+ #: vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-widget-dashboard-blog.php:197
401
+ msgid "Install"
402
+ msgstr ""
403
+
404
  #. Plugin Name of the plugin/theme
405
  msgid "Feedzy RSS Feeds Lite"
406
  msgstr ""
readme.txt CHANGED
@@ -17,6 +17,8 @@ FEEDZY RSS Feeds is a small and lightweight RSS aggregator plugin. Fast and very
17
 
18
  > **Time-saving features available in the FULL version:**
19
  >
 
 
20
  > * Convert feed items to WordPress posts/pages/any
21
  > * Multiple templates for feed items
22
  > * Automatically build affiliate links
@@ -30,7 +32,13 @@ FEEDZY RSS Feeds is a small and lightweight RSS aggregator plugin. Fast and very
30
 
31
  The plugin uses the SimplePie php CLASS natively included in WordPress. SimplePie is a RSS parser that can read the information contained in a feed, process it, and finally display it.
32
 
33
- **Using the latest version you can now group feeds into categories and reuse them across your content without worrying of their url**
 
 
 
 
 
 
34
 
35
 
36
  FEEDZY RSS Feeds therefore supports any additional library and uses only the bare minimum to ensure good performance (minimalistic CSS + cache). This will ensure compatibility with any hosting provider that supports WordPress, but if for any reason it doesn't work for yours feel free to <a href="http://themeisle.com/contact/" rel="nofollow">contact us</a>.
@@ -38,6 +46,7 @@ FEEDZY RSS Feeds therefore supports any additional library and uses only the bar
38
 
39
  = See how Feedzy can integrate with your website =
40
 
 
41
  * [Shop feed – 3 columns layout](https://demo.themeisle.com/feedzy-rss-feeds/shop-feed/)
42
  * [Feed categories – 1 columns layout](https://demo.themeisle.com/feedzy-rss-feeds/group-feeds-categories/)
43
  * [Large image square grid – 2 columns layout](https://demo.themeisle.com/feedzy-rss-feeds/2-columns-large-images-square-grid/)
@@ -67,6 +76,7 @@ By activating this plugin, your cover picture will be inserted into your RSS fee
67
  * summarylength
68
  * thumb
69
  * default
 
70
  * size
71
  * keywords_title
72
  `
@@ -82,7 +92,7 @@ By activating this plugin, your cover picture will be inserted into your RSS fee
82
 
83
  = Advanced example =
84
 
85
- `[feedzy-rss feeds="http://themeisle.com/feed" max="2" feed_title="yes" target="_blank" title="50" meta="yes" summary="yes" summarylength="300" thumb="yes" size="100" default="http://your-site/default-image.jpg" keywords_title="WordPress"]`
86
 
87
 
88
  = Available Hooks =
@@ -211,6 +221,13 @@ You have to check first if your feed is valid. Please test it here: https://vali
211
 
212
 
213
  == Changelog ==
 
 
 
 
 
 
 
214
  = 3.1.10 - 2017-08-03 =
215
 
216
  * Fixed typos in shortcode builder.
17
 
18
  > **Time-saving features available in the FULL version:**
19
  >
20
+ > * Integration with WordAI to avoid duplicate content
21
+ > * Audio playback template
22
  > * Convert feed items to WordPress posts/pages/any
23
  > * Multiple templates for feed items
24
  > * Automatically build affiliate links
32
 
33
  The plugin uses the SimplePie php CLASS natively included in WordPress. SimplePie is a RSS parser that can read the information contained in a feed, process it, and finally display it.
34
 
35
+ **Full cache control**
36
+
37
+ Choose right from the shortcode how often do you want your content from feeds to get updated.
38
+
39
+ **Feed Categories**
40
+
41
+ You can now group feeds into categories and reuse them across your content without worrying of their url.
42
 
43
 
44
  FEEDZY RSS Feeds therefore supports any additional library and uses only the bare minimum to ensure good performance (minimalistic CSS + cache). This will ensure compatibility with any hosting provider that supports WordPress, but if for any reason it doesn't work for yours feel free to <a href="http://themeisle.com/contact/" rel="nofollow">contact us</a>.
46
 
47
  = See how Feedzy can integrate with your website =
48
 
49
+ * [Audio playback template](https://demo.themeisle.com/feedzy-rss-feeds/audio-feed-template/)
50
  * [Shop feed – 3 columns layout](https://demo.themeisle.com/feedzy-rss-feeds/shop-feed/)
51
  * [Feed categories – 1 columns layout](https://demo.themeisle.com/feedzy-rss-feeds/group-feeds-categories/)
52
  * [Large image square grid – 2 columns layout](https://demo.themeisle.com/feedzy-rss-feeds/2-columns-large-images-square-grid/)
76
  * summarylength
77
  * thumb
78
  * default
79
+ * refresh
80
  * size
81
  * keywords_title
82
  `
92
 
93
  = Advanced example =
94
 
95
+ `[feedzy-rss feeds="http://themeisle.com/feed" max="2" feed_title="yes" target="_blank" refresh="12_hours" title="50" meta="yes" summary="yes" summarylength="300" thumb="yes" size="100" default="http://your-site/default-image.jpg" keywords_title="WordPress"]`
96
 
97
 
98
  = Available Hooks =
221
 
222
 
223
  == Changelog ==
224
+ = 3.2.0 - 2017-08-17 =
225
+
226
+ * Fix for image URL issue following some strange patterns.
227
+ * Added fallback for broken feed, now if one feed from the list is not working, others will will be used.
228
+ * Added shortcode parameter for feed cache control.
229
+
230
+
231
  = 3.1.10 - 2017-08-03 =
232
 
233
  * Fixed typos in shortcode builder.
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit7261a8751a6448dcb948c98e3fc2b13d::getLoader();
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit858f4bd6988fbef9ce8c9bdd9f52c407::getLoader();
vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInit6defe65396badecd56440924d9151502::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInit66f0edee7658d67c88aa60a93e45fd69::getLoader();
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-feedback-deactivate.php CHANGED
@@ -19,9 +19,9 @@ if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Deactivate' ) ) :
19
  class ThemeIsle_SDK_Feedback_Deactivate extends ThemeIsle_SDK_Feedback {
20
 
21
  /**
22
- * @var array $options The main options list
23
  */
24
- private $options = array(
25
  'I only needed the plugin for a short period' => array(
26
  'id' => 1,
27
  ),
@@ -46,6 +46,26 @@ if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Deactivate' ) ) :
46
  ),
47
  );
48
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  /**
50
  * @var array $other The other option
51
  */
@@ -58,9 +78,14 @@ if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Deactivate' ) ) :
58
  );
59
 
60
  /**
61
- * @var string $heading The heading of the modal
 
 
 
 
 
62
  */
63
- private $heading = 'If you have a moment, please let us know why you are deactivating:';
64
 
65
  /**
66
  * @var string $button_submit_before The text of the deactivate button before an option is chosen
@@ -77,6 +102,16 @@ if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Deactivate' ) ) :
77
  */
78
  private $button_cancel = 'Cancel';
79
 
 
 
 
 
 
 
 
 
 
 
80
  /**
81
  * ThemeIsle_SDK_Feedback_Deactivate constructor.
82
  *
@@ -91,7 +126,8 @@ if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Deactivate' ) ) :
91
  */
92
  public function setup_hooks_child() {
93
  global $pagenow;
94
- if ( 'plugins.php' === $pagenow ) {
 
95
  add_action( 'admin_head', array( $this, 'load_resources' ) );
96
  }
97
  add_action( 'wp_ajax_' . $this->product->get_key() . __CLASS__, array( $this, 'post_deactivate' ) );
@@ -105,18 +141,20 @@ if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Deactivate' ) ) :
105
 
106
  $id = $this->product->get_key() . '_deactivate';
107
 
108
- $this->add_css( $this->product->get_key() );
109
- $this->add_js( $this->product->get_key(), '#TB_inline?' . apply_filters( $this->product->get_key() . '_feedback_deactivate_attributes', 'width=600&height=550' ) . '&inlineId=' . $id );
110
 
111
- echo '<div id="' . $id . '" style="display:none;" class="themeisle-deactivate-box">' . $this->get_html( $this->product->get_key() ) . '</div>';
112
  }
113
 
114
  /**
115
  * Loads the css
116
  *
 
117
  * @param string $key The product key.
118
  */
119
- function add_css( $key ) {
 
120
  ?>
121
  <style type="text/css" id="<?php echo $key; ?>ti-deactivate-css">
122
  input[name="ti-deactivate-option"] ~ div {
@@ -127,59 +165,59 @@ if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Deactivate' ) ) :
127
  display: block;
128
  }
129
 
130
- body.plugins-php .<?php echo $key; ?>-container #TB_window.thickbox-loading:before {
131
  background: none !important;
132
  }
133
 
134
- body.plugins-php .<?php echo $key; ?>-container #TB_title {
135
  font-size: 21px;
136
  padding: 20px 0;
137
  background-color: #f3f3f3;
138
  }
139
 
140
- body.plugins-php .<?php echo $key; ?>-container div.actions {
141
  padding: 20px 0;
142
  background-color: #f3f3f3;
143
  border-top: 1px solid #dddddd;
144
  }
145
 
146
- body.plugins-php .<?php echo $key; ?>-container input.button.button-primary {
147
  margin-right: 20px;
148
  }
149
 
150
- body.plugins-php .<?php echo $key; ?>-container input.button {
151
  margin-right: 20px;
152
  }
153
 
154
- body.plugins-php .<?php echo $key; ?>-container #TB_ajaxWindowTitle {
155
  text-align: left;
156
  margin-left: 15px;
157
  }
158
 
159
- body.plugins-php .<?php echo $key; ?>-container div.revive_network-container {
160
  background-color: #ffffff;
161
  }
162
 
163
- body.plugins-php .<?php echo $key; ?>-container ul.ti-list li {
164
  font-size: 14px;
165
  }
166
 
167
- body.plugins-php .<?php echo $key; ?>-container ul.ti-list li label {
168
  margin-left: 10px;
169
  line-height: 32px;
170
  font-size: 16px;
171
  }
172
 
173
- body.plugins-php .<?php echo $key; ?>-container #TB_ajaxContent {
174
  padding: 10px 20px;
175
  }
176
 
177
- body.plugins-php .<?php echo $key; ?>-container li div textarea {
178
  padding: 10px 15px;
179
  width: 100%;
180
  }
181
 
182
- body.plugins-php .<?php echo $key; ?>-container ul.ti-list li div {
183
  margin: 10px 30px;
184
  }
185
 
@@ -187,7 +225,7 @@ if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Deactivate' ) ) :
187
  display: block;
188
  }
189
 
190
- body.plugins-php .<?php echo $key; ?>-container .actions {
191
 
192
  width: 100%;
193
  display: block;
@@ -197,14 +235,29 @@ if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Deactivate' ) ) :
197
  text-align: right;
198
  }
199
 
200
- body.plugins-php .<?php echo $key; ?>-container #TB_title {
201
 
202
  height: 33px;
203
  width: 100%;
204
  text-align: center;
205
  }
206
 
207
- body.plugins-php .<?php echo $key; ?>-container {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
208
 
209
  margin: auto !important;
210
  height: 550px !important;
@@ -220,21 +273,53 @@ if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Deactivate' ) ) :
220
  /**
221
  * Loads the js
222
  *
 
223
  * @param string $key The product key.
224
  * @param string $src The url that will hijack the deactivate button url.
225
  */
226
- function add_js( $key, $src ) {
227
-
228
- $heading = apply_filters( $this->product->get_key() . '_feedback_deactivate_heading', $this->heading );
229
  ?>
230
  <script type="text/javascript" id="ti-deactivate-js">
231
  (function ($) {
232
  $(document).ready(function () {
 
 
 
 
 
 
 
 
 
 
 
 
 
233
 
234
- var href = $('tr[data-plugin^="<?php echo $this->product->get_slug(); ?>/"] span.deactivate a').attr('href');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
235
  $('#<?php echo $key; ?>ti-deactivate-no').on('click', function (e) {
236
  e.preventDefault();
237
  e.stopPropagation();
 
238
  $('body').unbind('thickbox:removed');
239
  tb_remove();
240
  });
@@ -264,17 +349,26 @@ if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Deactivate' ) ) :
264
  url: ajaxurl,
265
  method: 'post',
266
  data: {
267
- 'action': '<?php echo $key . __CLASS__; ?>',
268
- 'nonce': '<?php echo wp_create_nonce( (string) __CLASS__ ); ?>',
269
- 'id': $('#<?php echo $key; ?> input[name="ti-deactivate-option"]:checked').parent().attr('ti-option-id'),
270
- 'msg': $('#<?php echo $key; ?> input[name="ti-deactivate-option"]:checked').parent().find('textarea').val()
 
 
271
  },
272
  });
273
- location.href = $(this).attr('data-ti-action');
 
 
 
 
 
 
274
  });
275
- $('tr[data-plugin^="<?php echo $this->product->get_slug(); ?>/"] span.deactivate a').attr('name', '<?php echo esc_html( $heading ); ?>').attr('href', '<?php echo $src; ?>').addClass('thickbox');
 
276
  var thicbox_timer;
277
- $('tr[data-plugin^="<?php echo $this->product->get_slug(); ?>/"] span.deactivate a').on('click', function () {
278
  tiBindThickbox();
279
  });
280
 
@@ -299,12 +393,16 @@ if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Deactivate' ) ) :
299
  /**
300
  * Generates the HTML
301
  *
 
302
  * @param string $key The product key.
303
  */
304
- function get_html( $key ) {
305
- $options = $this->randomize_options( apply_filters( $this->product->get_key() . '_feedback_deactivate_options', $this->options ) );
306
- $button_submit_before = apply_filters( $this->product->get_key() . '_feedback_deactivate_button_submit_before', $this->button_submit_before );
307
- $button_submit = apply_filters( $this->product->get_key() . '_feedback_deactivate_button_submit', $this->button_submit );
 
 
 
308
  $button_cancel = apply_filters( $this->product->get_key() . '_feedback_deactivate_button_cancel', $this->button_cancel );
309
 
310
  $options += $this->other;
@@ -312,7 +410,7 @@ if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Deactivate' ) ) :
312
  $list = '';
313
  foreach ( $options as $title => $attributes ) {
314
  $id = $attributes['id'];
315
- $list .= '<li ti-option-id="' . $id . '"><input type="radio" name="ti-deactivate-option" id="' . $key . $id . '"><label for="' . $key . $id . '">' . __( $title ) . '</label>';
316
  if ( array_key_exists( 'type', $attributes ) ) {
317
  $list .= '<div>';
318
  $placeholder = array_key_exists( 'placeholder', $attributes ) ? __( $attributes['placeholder'] ) : '';
@@ -356,6 +454,17 @@ if ( ! class_exists( 'ThemeIsle_SDK_Feedback_Deactivate' ) ) :
356
  )
357
  );
358
  }
 
 
 
 
 
 
 
 
 
 
 
359
  }
360
  }
361
  endif;
19
  class ThemeIsle_SDK_Feedback_Deactivate extends ThemeIsle_SDK_Feedback {
20
 
21
  /**
22
+ * @var array $options_plugin The main options list for plugins.
23
  */
24
+ private $options_plugin = array(
25
  'I only needed the plugin for a short period' => array(
26
  'id' => 1,
27
  ),
46
  ),
47
  );
48
 
49
+ /**
50
+ * @var array $options_theme The main options list for themes.
51
+ */
52
+ private $options_theme = array(
53
+ 'I don\'t know how to make it look like demo' => array(
54
+ 'id' => 7,
55
+ ),
56
+ 'It lacks options' => array(
57
+ 'id' => 8,
58
+ ),
59
+ 'Is not working with a plugin that I need' => array(
60
+ 'id' => 9,
61
+ 'type' => 'text',
62
+ 'placeholder' => 'What is the name of the plugin',
63
+ ),
64
+ 'I want to try a new design, I don\'t like {theme} style' => array(
65
+ 'id' => 10,
66
+ ),
67
+ );
68
+
69
  /**
70
  * @var array $other The other option
71
  */
78
  );
79
 
80
  /**
81
+ * @var string $heading_plugin The heading of the modal
82
+ */
83
+ private $heading_plugin = 'If you have a moment, please let us know why you are deactivating:';
84
+
85
+ /**
86
+ * @var string $heading_theme The heading of the modal
87
  */
88
+ private $heading_theme = 'Looking to change {theme}, what doesn\'t work for you?';
89
 
90
  /**
91
  * @var string $button_submit_before The text of the deactivate button before an option is chosen
102
  */
103
  private $button_cancel = 'Cancel';
104
 
105
+ /**
106
+ * @var int how many seconds before the deactivation window is triggered for themes
107
+ */
108
+ const AUTO_TRIGGER_DEACTIVATE_WINDOW_SECONDS = 3;
109
+
110
+ /**
111
+ * @var int how many days before the deactivation window pops up again for the theme
112
+ */
113
+ const PAUSE_DEACTIVATE_WINDOW_DAYS = 100;
114
+
115
  /**
116
  * ThemeIsle_SDK_Feedback_Deactivate constructor.
117
  *
126
  */
127
  public function setup_hooks_child() {
128
  global $pagenow;
129
+
130
+ if ( ( $this->product->get_type() === 'plugin' && $pagenow === 'plugins.php' ) || ( $this->product->get_type() === 'theme' && $pagenow === 'theme-install.php' ) ) {
131
  add_action( 'admin_head', array( $this, 'load_resources' ) );
132
  }
133
  add_action( 'wp_ajax_' . $this->product->get_key() . __CLASS__, array( $this, 'post_deactivate' ) );
141
 
142
  $id = $this->product->get_key() . '_deactivate';
143
 
144
+ $this->add_css( $this->product->get_type(), $this->product->get_key() );
145
+ $this->add_js( $this->product->get_type(), $this->product->get_key(), '#TB_inline?' . apply_filters( $this->product->get_key() . '_feedback_deactivate_attributes', 'width=600&height=550' ) . '&inlineId=' . $id );
146
 
147
+ echo '<div id="' . $id . '" style="display:none;" class="themeisle-deactivate-box">' . $this->get_html( $this->product->get_type(), $this->product->get_key() ) . '</div>';
148
  }
149
 
150
  /**
151
  * Loads the css
152
  *
153
+ * @param string $type The type of product.
154
  * @param string $key The product key.
155
  */
156
+ function add_css( $type, $key ) {
157
+ $suffix = 'theme' === $type ? 'theme-install-php' : 'plugins-php';
158
  ?>
159
  <style type="text/css" id="<?php echo $key; ?>ti-deactivate-css">
160
  input[name="ti-deactivate-option"] ~ div {
165
  display: block;
166
  }
167
 
168
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #TB_window.thickbox-loading:before {
169
  background: none !important;
170
  }
171
 
172
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #TB_title {
173
  font-size: 21px;
174
  padding: 20px 0;
175
  background-color: #f3f3f3;
176
  }
177
 
178
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container div.actions {
179
  padding: 20px 0;
180
  background-color: #f3f3f3;
181
  border-top: 1px solid #dddddd;
182
  }
183
 
184
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container input.button.button-primary {
185
  margin-right: 20px;
186
  }
187
 
188
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container input.button {
189
  margin-right: 20px;
190
  }
191
 
192
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #TB_ajaxWindowTitle {
193
  text-align: left;
194
  margin-left: 15px;
195
  }
196
 
197
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container div.revive_network-container {
198
  background-color: #ffffff;
199
  }
200
 
201
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container ul.ti-list li {
202
  font-size: 14px;
203
  }
204
 
205
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container ul.ti-list li label {
206
  margin-left: 10px;
207
  line-height: 32px;
208
  font-size: 16px;
209
  }
210
 
211
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #TB_ajaxContent {
212
  padding: 10px 20px;
213
  }
214
 
215
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container li div textarea {
216
  padding: 10px 15px;
217
  width: 100%;
218
  }
219
 
220
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container ul.ti-list li div {
221
  margin: 10px 30px;
222
  }
223
 
225
  display: block;
226
  }
227
 
228
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container .actions {
229
 
230
  width: 100%;
231
  display: block;
235
  text-align: right;
236
  }
237
 
238
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #TB_title {
239
 
240
  height: 33px;
241
  width: 100%;
242
  text-align: center;
243
  }
244
 
245
+ .theme-install-php .<?php echo $key; ?>-container #TB_closeWindowButton .tb-close-icon:before {
246
+ font-size: 32px;
247
+ }
248
+
249
+ .<?php echo $key; ?>-container #TB_closeWindowButton .tb-close-icon {
250
+
251
+ color: #eee;
252
+ }
253
+
254
+ .<?php echo $key; ?>-container #TB_closeWindowButton {
255
+ left: auto;
256
+ right: -30px;
257
+ color: #eee;
258
+ }
259
+
260
+ body.<?php echo $suffix; ?> .<?php echo $key; ?>-container {
261
 
262
  margin: auto !important;
263
  height: 550px !important;
273
  /**
274
  * Loads the js
275
  *
276
+ * @param string $type The type of product.
277
  * @param string $key The product key.
278
  * @param string $src The url that will hijack the deactivate button url.
279
  */
280
+ function add_js( $type, $key, $src ) {
281
+ $heading = 'plugin' === $type ? $this->heading_plugin : str_replace( '{theme}', $this->product->get_name(), $this->heading_theme );
282
+ $heading = apply_filters( $this->product->get_key() . '_feedback_deactivate_heading', $heading );
283
  ?>
284
  <script type="text/javascript" id="ti-deactivate-js">
285
  (function ($) {
286
  $(document).ready(function () {
287
+ var auto_trigger = false;
288
+ var target_element = 'tr[data-plugin^="<?php echo $this->product->get_slug(); ?>/"] span.deactivate a';
289
+ <?php
290
+ if ( 'theme' === $type ) {
291
+ ?>
292
+ auto_trigger = true;
293
+ if ($('a.ti-auto-anchor').length == 0) {
294
+ $('body').append($('<a class="ti-auto-anchor" href=""></a>'));
295
+ }
296
+ target_element = 'a.ti-auto-anchor';
297
+ <?php
298
+ }
299
+ ?>
300
 
301
+ if (auto_trigger) {
302
+ setTimeout(function () {
303
+ $('a.ti-auto-anchor').trigger('click');
304
+ }, <?php echo self::AUTO_TRIGGER_DEACTIVATE_WINDOW_SECONDS * 1000; ?> );
305
+ }
306
+ $( document ).on( 'thickbox:removed', function() {
307
+ $.ajax({
308
+ url: ajaxurl,
309
+ method: 'post',
310
+ data: {
311
+ 'action' : '<?php echo $key . __CLASS__; ?>',
312
+ 'nonce' : '<?php echo wp_create_nonce( (string) __CLASS__ ); ?>',
313
+ 'type' : '<?php echo $type; ?>',
314
+ 'key' : '<?php echo $key; ?>'
315
+ },
316
+ });
317
+ });
318
+ var href = $(target_element).attr('href');
319
  $('#<?php echo $key; ?>ti-deactivate-no').on('click', function (e) {
320
  e.preventDefault();
321
  e.stopPropagation();
322
+
323
  $('body').unbind('thickbox:removed');
324
  tb_remove();
325
  });
349
  url: ajaxurl,
350
  method: 'post',
351
  data: {
352
+ 'action' : '<?php echo $key . __CLASS__; ?>',
353
+ 'nonce' : '<?php echo wp_create_nonce( (string) __CLASS__ ); ?>',
354
+ 'id' : $('#<?php echo $key; ?> input[name="ti-deactivate-option"]:checked').parent().attr('ti-option-id'),
355
+ 'msg' : $('#<?php echo $key; ?> input[name="ti-deactivate-option"]:checked').parent().find('textarea').val(),
356
+ 'type' : '<?php echo $type; ?>',
357
+ 'key' : '<?php echo $key; ?>'
358
  },
359
  });
360
+ var redirect = $(this).attr('data-ti-action');
361
+ if (redirect != '') {
362
+ location.href = redirect;
363
+ } else {
364
+ $('body').unbind('thickbox:removed');
365
+ tb_remove();
366
+ }
367
  });
368
+
369
+ $(target_element).attr('name', '<?php echo esc_html( $heading ); ?>').attr('href', '<?php echo $src; ?>').addClass('thickbox');
370
  var thicbox_timer;
371
+ $(target_element).on('click', function () {
372
  tiBindThickbox();
373
  });
374
 
393
  /**
394
  * Generates the HTML
395
  *
396
+ * @param string $type The type of product.
397
  * @param string $key The product key.
398
  */
399
+ function get_html( $type, $key ) {
400
+ $options = 'plugin' === $type ? $this->options_plugin : $this->options_theme;
401
+ $button_submit_before = 'plugin' === $type ? $this->button_submit_before : 'Submit';
402
+ $button_submit = 'plugin' === $type ? $this->button_submit : 'Submit';
403
+ $options = $this->randomize_options( apply_filters( $this->product->get_key() . '_feedback_deactivate_options', $options ) );
404
+ $button_submit_before = apply_filters( $this->product->get_key() . '_feedback_deactivate_button_submit_before', $button_submit_before );
405
+ $button_submit = apply_filters( $this->product->get_key() . '_feedback_deactivate_button_submit', $button_submit );
406
  $button_cancel = apply_filters( $this->product->get_key() . '_feedback_deactivate_button_cancel', $this->button_cancel );
407
 
408
  $options += $this->other;
410
  $list = '';
411
  foreach ( $options as $title => $attributes ) {
412
  $id = $attributes['id'];
413
+ $list .= '<li ti-option-id="' . $id . '"><input type="radio" name="ti-deactivate-option" id="' . $key . $id . '"><label for="' . $key . $id . '">' . str_replace( '{theme}', $this->product->get_name(), $title ) . '</label>';
414
  if ( array_key_exists( 'type', $attributes ) ) {
415
  $list .= '<div>';
416
  $placeholder = array_key_exists( 'placeholder', $attributes ) ? __( $attributes['placeholder'] ) : '';
454
  )
455
  );
456
  }
457
+
458
+ $this->post_deactivate_or_cancel();
459
+ }
460
+
461
+ /**
462
+ * Called when the deactivate/cancel button is clicked
463
+ */
464
+ private function post_deactivate_or_cancel() {
465
+ if ( isset( $_POST['type'] ) && isset( $_POST['key'] ) && 'theme' === $_POST['type'] ) {
466
+ set_transient( 'ti_sdk_pause_' . $_POST['key'], true, PAUSE_DEACTIVATE_WINDOW_DAYS * DAY_IN_SECONDS );
467
+ }
468
  }
469
  }
470
  endif;
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-product.php CHANGED
@@ -60,7 +60,7 @@ if ( ! class_exists( 'ThemeIsle_SDK_Product' ) ) :
60
  /**
61
  * @var array $allowed_authors The allowed authors.
62
  */
63
- private $allowed_authors = array( 'proteusthemes.com' );
64
  /**
65
  * @var bool $requires_license Either user needs to activate it with license.
66
  */
@@ -385,7 +385,16 @@ if ( ! class_exists( 'ThemeIsle_SDK_Product' ) ) :
385
  * @return bool Either we should require feedback on uninstall or not.
386
  */
387
  public function require_uninstall_feedback() {
388
- return $this->get_type() === 'plugin';
 
 
 
 
 
 
 
 
 
389
  }
390
 
391
  }
60
  /**
61
  * @var array $allowed_authors The allowed authors.
62
  */
63
+ private $allowed_authors = array( 'proteusthemes.com', 'anarieldesign.com' );
64
  /**
65
  * @var bool $requires_license Either user needs to activate it with license.
66
  */
385
  * @return bool Either we should require feedback on uninstall or not.
386
  */
387
  public function require_uninstall_feedback() {
388
+ if ( $this->get_type() == 'theme' && ! $this->is_external_author() ) {
389
+ return ! get_transient( 'ti_sdk_pause_' . $this->get_key(), false );
390
+ }
391
+
392
+ if ( $this->get_type() == 'plugin' ) {
393
+
394
+ return true;
395
+ }
396
+
397
+ return false;
398
  }
399
 
400
  }
vendor/codeinwp/themeisle-sdk/load.php CHANGED
@@ -11,7 +11,7 @@
11
  */
12
 
13
  // Current SDK version and path.
14
- $themeisle_sdk_version = '1.5.0';
15
  $themeisle_sdk_path = dirname( __FILE__ );
16
 
17
  global $themeisle_sdk_max_version;
11
  */
12
 
13
  // Current SDK version and path.
14
+ $themeisle_sdk_version = '1.5.5';
15
  $themeisle_sdk_path = dirname( __FILE__ );
16
 
17
  global $themeisle_sdk_max_version;
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit7261a8751a6448dcb948c98e3fc2b13d
6
  {
7
  private static $loader;
8
 
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit7261a8751a6448dcb948c98e3fc2b13d
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit7261a8751a6448dcb948c98e3fc2b13d', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit7261a8751a6448dcb948c98e3fc2b13d', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
@@ -42,14 +42,14 @@ class ComposerAutoloaderInit7261a8751a6448dcb948c98e3fc2b13d
42
 
43
  $includeFiles = require __DIR__ . '/autoload_files.php';
44
  foreach ($includeFiles as $fileIdentifier => $file) {
45
- composerRequire7261a8751a6448dcb948c98e3fc2b13d($fileIdentifier, $file);
46
  }
47
 
48
  return $loader;
49
  }
50
  }
51
 
52
- function composerRequire7261a8751a6448dcb948c98e3fc2b13d($fileIdentifier, $file)
53
  {
54
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
55
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit858f4bd6988fbef9ce8c9bdd9f52c407
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit858f4bd6988fbef9ce8c9bdd9f52c407', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit858f4bd6988fbef9ce8c9bdd9f52c407', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
42
 
43
  $includeFiles = require __DIR__ . '/autoload_files.php';
44
  foreach ($includeFiles as $fileIdentifier => $file) {
45
+ composerRequire858f4bd6988fbef9ce8c9bdd9f52c407($fileIdentifier, $file);
46
  }
47
 
48
  return $loader;
49
  }
50
  }
51
 
52
+ function composerRequire858f4bd6988fbef9ce8c9bdd9f52c407($fileIdentifier, $file)
53
  {
54
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
55
  require $file;
vendor/composer/autoload_real_52.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
- class ComposerAutoloaderInit6defe65396badecd56440924d9151502 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit6defe65396badecd56440924d9151502 {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit6defe65396badecd56440924d9151502', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit6defe65396badecd56440924d9151502', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
+ class ComposerAutoloaderInit66f0edee7658d67c88aa60a93e45fd69 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit66f0edee7658d67c88aa60a93e45fd69', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit66f0edee7658d67c88aa60a93e45fd69', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
vendor/composer/installed.json CHANGED
@@ -39,15 +39,15 @@
39
  "source": {
40
  "type": "git",
41
  "url": "https://github.com/Codeinwp/themeisle-sdk.git",
42
- "reference": "b3c85372e9a5c8f692747445c7921634d457f7cb"
43
  },
44
  "dist": {
45
  "type": "zip",
46
- "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/b3c85372e9a5c8f692747445c7921634d457f7cb",
47
- "reference": "b3c85372e9a5c8f692747445c7921634d457f7cb",
48
  "shasum": ""
49
  },
50
- "time": "2017-08-07 08:36:48",
51
  "type": "library",
52
  "installation-source": "dist",
53
  "autoload": {
39
  "source": {
40
  "type": "git",
41
  "url": "https://github.com/Codeinwp/themeisle-sdk.git",
42
+ "reference": "f05bd8f0fe4d628424484e2bdd6d20ee65f454ee"
43
  },
44
  "dist": {
45
  "type": "zip",
46
+ "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/f05bd8f0fe4d628424484e2bdd6d20ee65f454ee",
47
+ "reference": "f05bd8f0fe4d628424484e2bdd6d20ee65f454ee",
48
  "shasum": ""
49
  },
50
+ "time": "2017-08-08 22:09:54",
51
  "type": "library",
52
  "installation-source": "dist",
53
  "autoload": {