WP RSS Aggregator - Version 4.8

Version Description

(2015-12-30) = * Fixed bug: Licensing notices will now be displayed again. * Enhanced: Major licensing system improvements.

Download this release

Release Info

Developer markzahra
Plugin Icon 128x128 WP RSS Aggregator
Version 4.8
Comparing to
See all releases

Code changes from version 4.7.8 to 4.8

includes/Aventura/Wprss/Core/Licensing/License.php CHANGED
@@ -160,6 +160,52 @@ class License {
160
  return $this->_addonCode;
161
  }
162
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
163
  /**
164
  * Gets the default values for all properties of the license.
165
  *
160
  return $this->_addonCode;
161
  }
162
 
163
+ /**
164
+ * Checks if the license status is valid.
165
+ *
166
+ * @return boolean True if the status is valid, false otherwise.
167
+ */
168
+ public function isValid() {
169
+ return $this->getStatus() === Status::VALID;
170
+ }
171
+
172
+ /**
173
+ * Checks if the license is invalid.
174
+ *
175
+ * @return boolean True if the license is invalid, false if otherwise.
176
+ */
177
+ public function isInvalid() {
178
+ return $this->getStatus() === Status::INVALID;
179
+ }
180
+
181
+ /**
182
+ * Checks if the license is expired.
183
+ *
184
+ * @return boolean True if the license is expired, false if otherwise.
185
+ */
186
+ public function isExpired() {
187
+ return $this->getStatus() === Status::EXPIRED;
188
+ }
189
+
190
+ /**
191
+ * Alias method for License::isValid(). Checks if the license is active.
192
+ *
193
+ * @uses Aventura\Wprss\Core\Licensing\License::isValid()
194
+ * @return boolean True if the license is active, false if otherwise.
195
+ */
196
+ public function isActive() {
197
+ return $this->isValid();
198
+ }
199
+
200
+ /**
201
+ * Checks if the license is inactive.
202
+ *
203
+ * @return boolean True if the license is inactive, false if otherwise.
204
+ */
205
+ public function isInactive() {
206
+ return $this->getStatus() === Status::INACTIVE || $this->getStatus() === Status::SITE_INACTIVE;
207
+ }
208
+
209
  /**
210
  * Gets the default values for all properties of the license.
211
  *
includes/Aventura/Wprss/Core/Licensing/License/Status.php CHANGED
@@ -6,8 +6,9 @@ namespace Aventura\Wprss\Core\Licensing\License;
6
  * Enum-style abstract class for license statuses.
7
  */
8
  abstract class Status {
9
- const VALID = 'valid';
10
- const INVALID = 'invalid';
11
- const INACTIVE = 'inactive';
12
- const EXPIRED = 'expired';
 
13
  }
6
  * Enum-style abstract class for license statuses.
7
  */
8
  abstract class Status {
9
+ const VALID = 'valid';
10
+ const INVALID = 'invalid';
11
+ const INACTIVE = 'inactive';
12
+ const SITE_INACTIVE = 'site_inactive';
13
+ const EXPIRED = 'expired';
14
  }
includes/Aventura/Wprss/Core/Licensing/Manager.php CHANGED
@@ -263,7 +263,7 @@ class Manager {
263
  /**
264
  * Gets all licenses with the given status.
265
  *
266
- * @param string $status The status to search for.
267
  * @param boolean $negation If true, the method will search for licenses that do NOT have the given status.
268
  * If false, the method will search for licenses with the given status.
269
  * Default: false
@@ -272,7 +272,10 @@ class Manager {
272
  public function getLicensesWithStatus( $status, $negation = false ) {
273
  $licenses = array();
274
  foreach ( $this->_licenses as $_addonId => $_license ) {
275
- if ( $_license->getStatus() === $status xor $negation === true ) {
 
 
 
276
  $licenses[ $_addonId ] = $_license;
277
  }
278
  }
@@ -283,7 +286,7 @@ class Manager {
283
  /**
284
  * Checks if a license with the given status exists, stopping at the first match.
285
  *
286
- * @param string $status The status to search for.
287
  * @param boolean $negation If true, the method will search for licenses that do NOT have the given status.
288
  * If false, the method will search for licenses with the given status.
289
  * Default: false
@@ -294,6 +297,23 @@ class Manager {
294
  }
295
 
296
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
  /**
298
  * Gets the licenses that are soon to be expired.
299
  *
@@ -307,21 +327,36 @@ class Manager {
307
  // Prepare the list
308
  $expiringLicences = array();
309
  // Iterate all licenses
310
- foreach ( $this->_licenses as $addonId => $license ) {
311
- // Get expiry
312
- $expires = $license->getExpiry();
313
- // Split using space and get first part only (date only)
314
- $parts = explode( ' ', $expires );
315
- $dateOnly = strtotime( $parts[0] );
316
- // Check if the expiry date is zero, or is within the expiration notice period
317
- if ( $dateOnly == 0 || $dateOnly < $ste ) {
318
- $expiringLicences[ $addonId ] = $license;
319
  }
320
  }
321
  return $expiringLicences;
322
  }
323
 
324
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
325
  /**
326
  * Checks if there are licenses that will soon expire.
327
  *
@@ -487,41 +522,36 @@ class Manager {
487
 
488
 
489
  /**
490
- * Sets up the EDD updater for all registered add-ons.
491
- *
492
- * @since 4.6.3
493
- */
494
- public function initUpdaterInstances() {
495
- // Stop if doing autosave or ajax
496
- if ( ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) return;
497
-
498
- // Get all registered addons
499
- $addons = $this->getAddons();
500
-
501
- // Iterate the addons
502
- foreach( $addons as $id => $name ) {
503
- // Prepare the data
504
- $license = $this->getLicense( $id );
505
- // If the addon doesn't have a license or the license is not valid, skip this addon
506
- if ( $license === null || $license->getStatus() !== Status::VALID ) continue;
507
- $uid = strtoupper( $id );
508
- $name = constant("WPRSS_{$uid}_SL_ITEM_NAME");
509
- $version = constant("WPRSS_{$uid}_VERSION");
510
- $path = constant("WPRSS_{$uid}_PATH");
511
- $storeUrl = defined( "WPRSS_{$uid}_SL_STORE_URL")
512
- ? constant( "WPRSS_{$uid}_SL_STORE_URL" )
513
- : WPRSS_SL_STORE_URL;
514
-
515
- // Set up an updater and register the instance
516
- $this->_setUpdaterInstance(
517
- $id,
518
- $this->newUpdater($storeUrl, $path, array(
519
- 'version' => $version, // current version number
520
- 'license' => $license, // license key (used get_option above to retrieve from DB)
521
- 'item_name' => $name, // name of this plugin
522
- ))
523
- );
524
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
525
  }
526
 
527
 
263
  /**
264
  * Gets all licenses with the given status.
265
  *
266
+ * @param mixed $status The status to search for, or an array of statuses.
267
  * @param boolean $negation If true, the method will search for licenses that do NOT have the given status.
268
  * If false, the method will search for licenses with the given status.
269
  * Default: false
272
  public function getLicensesWithStatus( $status, $negation = false ) {
273
  $licenses = array();
274
  foreach ( $this->_licenses as $_addonId => $_license ) {
275
+ $_isStatus = is_array($status)
276
+ ? in_array($_license->getStatus())
277
+ : $_license->getStatus() === $status;
278
+ if ( $_isStatus xor $negation === true ) {
279
  $licenses[ $_addonId ] = $_license;
280
  }
281
  }
286
  /**
287
  * Checks if a license with the given status exists, stopping at the first match.
288
  *
289
+ * @param mixed $status The status to search for, or an array of statuses.
290
  * @param boolean $negation If true, the method will search for licenses that do NOT have the given status.
291
  * If false, the method will search for licenses with the given status.
292
  * Default: false
297
  }
298
 
299
 
300
+ /**
301
+ * Gets inactive licenses.
302
+ *
303
+ * @uses self::getLicensesWithStatus
304
+ * @return array
305
+ */
306
+ public function getInactiveLicenses() {
307
+ $licenses = array();
308
+ foreach ( $this->_licenses as $_addonId => $_license ) {
309
+ if ($_license->isInactive()) {
310
+ $licenses[ $_addonId ] = $_license;
311
+ }
312
+ }
313
+ return $licenses;
314
+ }
315
+
316
+
317
  /**
318
  * Gets the licenses that are soon to be expired.
319
  *
327
  // Prepare the list
328
  $expiringLicences = array();
329
  // Iterate all licenses
330
+ foreach ( $this->_licenses as $_addonId => $_license ) {
331
+ if ($this->isLicenseExpiring($_addonId)) {
332
+ $expiringLicences[ $addonId ] = $_license;
 
 
 
 
 
 
333
  }
334
  }
335
  return $expiringLicences;
336
  }
337
 
338
 
339
+ /**
340
+ * Checks if a license is about to expire, according to the expiration period.
341
+ *
342
+ * @param string $addonId The ID of the addon whose license is to be checked for expiry.
343
+ * @return boolean True if the addon's license is about to expire, false if the addon license does not exist or is not about to expire.
344
+ */
345
+ public function isLicenseExpiring( $addonId ) {
346
+ if (!$this->licenseExists($addonId)) {
347
+ return false;
348
+ }
349
+ $license = $this->getLicense($addonId);
350
+ // Get expiry
351
+ $expires = $license->getExpiry();
352
+ // Split using space and get first part only (date only)
353
+ $parts = explode( ' ', $expires );
354
+ $dateOnly = strtotime( $parts[0] );
355
+ // Check if the expiry date is zero, or is within the expiration notice period
356
+ return $dateOnly == 0 || $dateOnly < $this->getSteTimestamp();
357
+ }
358
+
359
+
360
  /**
361
  * Checks if there are licenses that will soon expire.
362
  *
522
 
523
 
524
  /**
525
+ * Creates an updater instance for an addon.
526
+ *
527
+ * @param string $id The ID of the addon.
528
+ * @param string $itemName The name of the addon as registered in EDD on our servers.
529
+ * @param string $version The current version of the addon.
530
+ * @param string $path The path to the addon's main file.
531
+ * @param string $storeUrl The URL of the server that handles the licensing and serves the updates.
532
+ * @return boolean True if the updater was initialized, false on failure due to an invalid license.
533
+ */
534
+ public function initUpdaterInstance($id, $itemName, $version, $path, $storeUrl = WPRSS_SL_STORE_URL) {
535
+ // Prepare the data
536
+ $license = $this->getLicense( $id );
537
+ // If the addon doesn't have a license or the license is not valid, do not set the updater.
538
+ // Returns false to indicate this failure.
539
+ if ( $license === null || $license->getStatus() !== Status::VALID ) {
540
+ return false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
541
  }
542
+
543
+ // Create an updater
544
+ $updater = $this->newUpdater($storeUrl, $path, array(
545
+ 'version' => $version, // current version number
546
+ 'license' => $license, // license key (used get_option above to retrieve from DB)
547
+ 'item_name' => $itemName, // name of this plugin
548
+ ));
549
+
550
+ // Register the updater
551
+ $this->_setUpdaterInstance($id, $updater);
552
+
553
+ // Return true to indicate success
554
+ return true;
555
  }
556
 
557
 
includes/Aventura/Wprss/Core/Licensing/Settings.php CHANGED
@@ -41,7 +41,7 @@ class Settings {
41
  public function __construct() {
42
  $this->_setManager( wprss_licensing_get_manager() );
43
  // Only load notices if on admin side
44
- if ( is_admin() ) {
45
  $this->_initNotices();
46
  }
47
  }
@@ -74,14 +74,44 @@ class Settings {
74
  protected function _initNotices() {
75
  $noticesCollection = wprss_admin_notice_get_collection();
76
  foreach ( $this->getManager()->getAddons() as $_addonId => $_addonName ) {
77
- $_notice = array(
78
- 'id' => sprintf( 'invalid_licenses_exist_%s', $_addonId ),
79
- 'notice_type' => 'error',
80
- 'content' => $this->getInvalidLicenseNoticeContent( $_addonId ),
81
- 'condition' => array( array( $this, 'invalidLicensesNoticeCondition' ) ),
82
- 'addon' => $_addonId
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  );
84
- $noticesCollection->add_notice( $_notice );
85
  }
86
 
87
  return $this;
@@ -92,28 +122,40 @@ class Settings {
92
  *
93
  * @return boolean True if the notice is to be shown, false if not.
94
  */
95
- public function invalidLicensesNoticeCondition( $args ) {
96
- if ( isset( $args['addon'] ) ) return false;
97
  $license = $this->getManager()->getLicense( $args['addon'] );
98
- return $license !== null && $license->getStatus() !== Status::VALID;
99
  }
100
 
 
101
  /**
102
- * Gets the content of the notice that informs the user of invalid licenses.
103
  *
104
- * @param string $addonId The ID of addon that has the invalid license.
105
- * @return string
106
  */
107
- public function getInvalidLicenseNoticeContent( $addonId ) {
108
- $addons = $this->getManager()->getAddons();
109
- $addonName = $addons[ $addonId ];
110
- return sprintf(
111
- __( '<p>Remember to <a href="%s">enter your plugin license code</a> for the WP RSS Aggregator <strong>%s</strong> add-on to benefit from updates and support.</p>', WPRSS_TEXT_DOMAIN ),
112
- esc_attr( admin_url( 'edit.php?post_type=wprss_feed&page=wprss-aggregator-settings&tab=licenses_settings' ) ),
113
- $addonName
114
- );
115
  }
116
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  /**
118
  * Registers the WordPress settings.
119
  */
41
  public function __construct() {
42
  $this->_setManager( wprss_licensing_get_manager() );
43
  // Only load notices if on admin side
44
+ if ( is_main_site() && is_admin() ) {
45
  $this->_initNotices();
46
  }
47
  }
74
  protected function _initNotices() {
75
  $noticesCollection = wprss_admin_notice_get_collection();
76
  foreach ( $this->getManager()->getAddons() as $_addonId => $_addonName ) {
77
+ $_year = date('Y');
78
+ $noticesCollection->add_notice(
79
+ array(
80
+ 'id' => sprintf( 'empty_license_notice_%s', $_addonId ),
81
+ 'addon' => $_addonId,
82
+ 'notice_type' => 'error',
83
+ 'condition' => array( array( $this, 'emptyLicenseKeyNoticeCondition' ) ),
84
+ 'content' => sprintf(
85
+ __( '<p>Remember to <a href="%1$s">enter your license key</a> for the <strong>WP RSS Aggregator - %2$s</strong> add-on to benefit from updates and support.</p>', WPRSS_TEXT_DOMAIN ),
86
+ esc_attr( admin_url( 'edit.php?post_type=wprss_feed&page=wprss-aggregator-settings&tab=licenses_settings' ) ),
87
+ $_addonName
88
+ )
89
+ )
90
+ )->add_notice(
91
+ array(
92
+ 'id' => sprintf( 'saved_inactive_license_notice_%s', $_addonId ),
93
+ 'addon' => $_addonId,
94
+ 'notice_type' => 'error',
95
+ 'condition' => array( array( $this, 'savedInactiveLicenseNoticeCondition' ) ),
96
+ 'content' => sprintf(
97
+ __( '<p>The license key for the <strong>WP RSS Aggregator - %2$s</strong> add-on is saved but not activated. In order to benefit from updates and support, it must be <a href="%1$s">activated</a>.</p>', WPRSS_TEXT_DOMAIN ),
98
+ esc_attr( admin_url( 'edit.php?post_type=wprss_feed&page=wprss-aggregator-settings&tab=licenses_settings' ) ),
99
+ $_addonName
100
+ )
101
+ )
102
+ )->add_notice(
103
+ array(
104
+ 'id' => sprintf( 'soon_to_expire_license_notice_%s_%s', $_addonId, $_year ),
105
+ 'addon' => $_addonId,
106
+ 'notice_type' => 'error',
107
+ 'condition' => array( array( $this, 'soonToExpireLicenseNoticeCondition' ) ),
108
+ 'content' => sprintf(
109
+ __( '<p>The license for the <strong>WP RSS Aggregator - %2$s</strong> add-on is about to expire. Make sure to renew it to keep receiving updates and benefit from support.</p>', WPRSS_TEXT_DOMAIN ),
110
+ esc_attr( admin_url( 'edit.php?post_type=wprss_feed&page=wprss-aggregator-settings&tab=licenses_settings' ) ),
111
+ $_addonName
112
+ )
113
+ )
114
  );
 
115
  }
116
 
117
  return $this;
122
  *
123
  * @return boolean True if the notice is to be shown, false if not.
124
  */
125
+ public function emptyLicenseKeyNoticeCondition( $args ) {
126
+ if ( ! isset( $args['addon'] ) ) return false;
127
  $license = $this->getManager()->getLicense( $args['addon'] );
128
+ return $license !== null && ! $license->isValid();
129
  }
130
 
131
+
132
  /**
133
+ * Condition callback for the "inactive saved license" notice.
134
  *
135
+ * @return boolean True if the notice is to be shown, false if not.
 
136
  */
137
+ public function savedInactiveLicenseNoticeCondition( $args ) {
138
+ if ( ! isset( $args['addon'] ) ) return false;
139
+ $license = $this->getManager()->getLicense( $args['addon'] );
140
+ return $license !== null && strlen( $license->getKey() ) > 0 && $license->isInactive();
 
 
 
 
141
  }
142
 
143
+
144
+ /**
145
+ * Condition callback for the "soon to expire license" notice.
146
+ *
147
+ * @return boolean True if the notice is to be shown, false if not.
148
+ */
149
+ public function soonToExpireLicenseNoticeCondition( $args ) {
150
+ if ( ! isset( $args['addon'] ) ) return false;
151
+ $manager = $this->getManager();
152
+ if ( !($license = $manager->getLicense( $args['addon'] )) ) {
153
+ return false;
154
+ }
155
+ return $license->isValid() && $manager->isLicenseExpiring($args['addon']);
156
+ }
157
+
158
+
159
  /**
160
  * Registers the WordPress settings.
161
  */
includes/admin.php CHANGED
@@ -115,30 +115,3 @@
115
  }
116
  return $action_links;
117
  }
118
-
119
-
120
-
121
- if ( is_main_site() ) {
122
- add_action( 'admin_notices', 'wprss_notify_inactive_licenses' );
123
- }
124
- /**
125
- * Shows a notification that tells the user that there are saved licenses that have not been activated.
126
- *
127
- * @since 3.8.1
128
- */
129
- function wprss_notify_inactive_licenses() {
130
- // Check if a transient to show the notice is set
131
- $transient = get_transient( 'wprss_notify_inactive_licenses' );
132
- // If it is not set, then do nothing and return
133
- if ( $transient === FALSE ) return;
134
- // If it is set, delete it
135
- delete_transient( 'wprss_notify_inactive_licenses' );
136
-
137
- // Show the notice ?>
138
- <div class="wprss-license-notice updated">
139
- <?php echo wpautop( sprintf( __('<b>WP RSS Aggregator</b>:'
140
- . ' There are saved licenses that have not yet been activated. Go to the'
141
- . ' <a href="%1$s">License page</a> to activate them.', WPRSS_TEXT_DOMAIN ), admin_url() . 'edit.php?post_type=wprss_feed&page=wprss-aggregator-settings&tab=licenses_settings' ) ) ?>
142
- </div>
143
- <?php
144
- }
115
  }
116
  return $action_links;
117
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/licensing.php CHANGED
@@ -62,25 +62,39 @@ function wprss_get_addons($noCache = false) {
62
  /**
63
  * Hooks the licensing system into WordPress.
64
  */
65
- function wprss_init_licensing() {
66
- // Get licensing class instances
67
- $manager = wprss_licensing_get_manager();
68
- $settingsController = wprss_licensing_get_settings_controller();
69
- $ajaxController = wprss_licensing_get_ajax_controller();
70
-
71
- // Set up Ajax Controller pointers
72
- $ajaxController->setManager( $manager );
73
- $ajaxController->setSettingsController( $settingsController );
74
-
75
- // Licensing Manager hooks
76
- add_action( 'admin_init', array( $manager, 'initUpdaterInstances' ) );
77
-
78
- // Licensing Ajax Controller hooks
79
- add_action( 'wp_ajax_wprss_ajax_manage_license', array( $ajaxController, 'handleAjaxManageLicense' ) );
80
- add_action( 'wp_ajax_wprss_ajax_fetch_license', array( $ajaxController, 'handleAjaxFetchLicense' ) );
81
-
82
- // Licensing Settings Controller hooks
83
- add_action( 'wprss_admin_init', array( $settingsController, 'registerSettings' ), 100 );
84
- add_action( 'admin_init', array( $settingsController, 'handleLicenseStatusChange' ), 10 );
85
- add_action( 'wprss_settings_license_key_is_valid', array( $settingsController, 'validateLicenseKeyForSave' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  }
62
  /**
63
  * Hooks the licensing system into WordPress.
64
  */
65
+ function wprss_licensing() {
66
+ static $licensing = null;
67
+
68
+ if ( is_null( $licensing ) ) {
69
+ // Get licensing class instances
70
+ $manager = wprss_licensing_get_manager();
71
+ $settingsController = wprss_licensing_get_settings_controller();
72
+ $ajaxController = wprss_licensing_get_ajax_controller();
73
+
74
+ // Set up Ajax Controller pointers
75
+ $ajaxController->setManager( $manager );
76
+ $ajaxController->setSettingsController( $settingsController );
77
+
78
+ // Licensing Ajax Controller hooks
79
+ add_action( 'wp_ajax_wprss_ajax_manage_license', array( $ajaxController, 'handleAjaxManageLicense' ) );
80
+ add_action( 'wp_ajax_wprss_ajax_fetch_license', array( $ajaxController, 'handleAjaxFetchLicense' ) );
81
+
82
+ // Licensing Settings Controller hooks
83
+ add_action( 'wprss_admin_init', array( $settingsController, 'registerSettings' ), 100 );
84
+ add_action( 'admin_init', array( $settingsController, 'handleLicenseStatusChange' ), 10 );
85
+ add_action( 'wprss_settings_license_key_is_valid', array( $settingsController, 'validateLicenseKeyForSave' ) );
86
+
87
+ $licensing = (object) compact( 'manager', 'settingsController', 'ajaxController' );
88
+
89
+ // Action for hooking after licensing has been initialized
90
+ do_action( 'wprss_init_licensing' );
91
+
92
+ // Backwards compatibility with old licensing lib
93
+ // This ensures that, if an addon is loading an older version of the licensing library, the old method for initializing the updaters is called.
94
+ if ( method_exists($manager, 'initUpdaterInstances') ) {
95
+ add_action( 'admin_init', array($manager, 'initUpdaterInstances') );
96
+ }
97
+ }
98
+
99
+ return $licensing;
100
  }
nbproject/project.properties ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ include.path=${php.global.include.path}
2
+ php.version=PHP_53
3
+ source.encoding=UTF-8
4
+ src.dir=.
5
+ tags.asp=false
6
+ tags.short=false
7
+ web.root=.
nbproject/project.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://www.netbeans.org/ns/project/1">
3
+ <type>org.netbeans.modules.php.project</type>
4
+ <configuration>
5
+ <data xmlns="http://www.netbeans.org/ns/php-project/1">
6
+ <name>WPRACORE</name>
7
+ </data>
8
+ </configuration>
9
+ </project>
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: jeangalea, Mekku, xedin.unknown, markzahra, doytch, chiragswadia
3
  Plugin URI: http://www.wprssaggregator.com
4
  Tags: rss, aggregation, autoblog, autoblog aggregator, autoblogger, autoblogging, autopost, content curation, feed aggregation, feed aggregator, feed import, feed reader, feed to post, feeds, multi feed import, multi feed importer, multi rss feeds, multiple feed import, multiple rss feeds,rss aggregator, rss feader, RSS Feed, rss feed to post, rss feeder, RSS import, rss multi importer, rss post importer, rss retriever, rss to post, syndication
5
  Requires at least: 4.0
6
- Tested up to: 4.3.1
7
- Stable tag: 4.7.8
8
  License: GPLv2 or later
9
  The no.1 RSS feed importer for WordPress. Premium add-ons available for more functionality.
10
 
@@ -193,6 +193,10 @@ The full documentation section can be found on the [WP RSS Aggregator website](h
193
 
194
  == Changelog ==
195
 
 
 
 
 
196
  = 4.7.8 (2015-11-18) =
197
  * Fixed bug: Sticky posts no longer get deleted when truncating, unless imported from a feed source.
198
  * Enhanced: Added autoloading and refactored licensing.
3
  Plugin URI: http://www.wprssaggregator.com
4
  Tags: rss, aggregation, autoblog, autoblog aggregator, autoblogger, autoblogging, autopost, content curation, feed aggregation, feed aggregator, feed import, feed reader, feed to post, feeds, multi feed import, multi feed importer, multi rss feeds, multiple feed import, multiple rss feeds,rss aggregator, rss feader, RSS Feed, rss feed to post, rss feeder, RSS import, rss multi importer, rss post importer, rss retriever, rss to post, syndication
5
  Requires at least: 4.0
6
+ Tested up to: 4.4
7
+ Stable tag: 4.8
8
  License: GPLv2 or later
9
  The no.1 RSS feed importer for WordPress. Premium add-ons available for more functionality.
10
 
193
 
194
  == Changelog ==
195
 
196
+ = 4.8 (2015-12-30) =
197
+ * Fixed bug: Licensing notices will now be displayed again.
198
+ * Enhanced: Major licensing system improvements.
199
+
200
  = 4.7.8 (2015-11-18) =
201
  * Fixed bug: Sticky posts no longer get deleted when truncating, unless imported from a feed source.
202
  * Enhanced: Added autoloading and refactored licensing.
wp-rss-aggregator.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: WP RSS Aggregator
4
  Plugin URI: http://www.wprssaggregator.com
5
  Description: Imports and aggregates multiple RSS Feeds using SimplePie
6
- Version: 4.7.8
7
  Author: Jean Galea
8
  Author URI: http://www.wprssaggregator.com
9
  License: GPLv2
@@ -29,7 +29,7 @@
29
 
30
  /**
31
  * @package WPRSSAggregator
32
- * @version 4.7.8
33
  * @since 1.0
34
  * @author Jean Galea <info@wprssaggregator.com>
35
  * @copyright Copyright (c) 2012-2015, Jean Galea
@@ -43,7 +43,7 @@
43
 
44
  // Set the version number of the plugin.
45
  if( !defined( 'WPRSS_VERSION' ) )
46
- define( 'WPRSS_VERSION', '4.7.8', true );
47
 
48
  if( !defined( 'WPRSS_WP_MIN_VERSION' ) )
49
  define( 'WPRSS_WP_MIN_VERSION', '4.0', true );
@@ -240,8 +240,7 @@
240
  require_once ( WPRSS_INC . 'fallback-mbstring.php' );
241
 
242
  // Initializes licensing
243
- // Needs autoloading
244
- // add_action( 'plugins_loaded', 'wprss_init_licensing' );
245
 
246
  register_activation_hook( __FILE__ , 'wprss_activate' );
247
  register_deactivation_hook( __FILE__ , 'wprss_deactivate' );
3
  Plugin Name: WP RSS Aggregator
4
  Plugin URI: http://www.wprssaggregator.com
5
  Description: Imports and aggregates multiple RSS Feeds using SimplePie
6
+ Version: 4.8
7
  Author: Jean Galea
8
  Author URI: http://www.wprssaggregator.com
9
  License: GPLv2
29
 
30
  /**
31
  * @package WPRSSAggregator
32
+ * @version 4.8
33
  * @since 1.0
34
  * @author Jean Galea <info@wprssaggregator.com>
35
  * @copyright Copyright (c) 2012-2015, Jean Galea
43
 
44
  // Set the version number of the plugin.
45
  if( !defined( 'WPRSS_VERSION' ) )
46
+ define( 'WPRSS_VERSION', '4.8', true );
47
 
48
  if( !defined( 'WPRSS_WP_MIN_VERSION' ) )
49
  define( 'WPRSS_WP_MIN_VERSION', '4.0', true );
240
  require_once ( WPRSS_INC . 'fallback-mbstring.php' );
241
 
242
  // Initializes licensing
243
+ add_action( 'plugins_loaded', 'wprss_licensing' );
 
244
 
245
  register_activation_hook( __FILE__ , 'wprss_activate' );
246
  register_deactivation_hook( __FILE__ , 'wprss_deactivate' );