Version Description
(2019-10-03) =
Added - Links and integrations with Lorem for custom developer work.
Changed - The default logging type is now "debug". - Feeds are now sorted alphabetically by default.
Fixed - Multisite installations only allowed the main site to have activated licenses. - License notices now only appear on the main site if the site is a multisite network. - Blacklist items would occassionally be saved without a permalink. - Older versions of add-ons triggered errors when trying to log messages with the default log type. - Fixed checkbox legacy display options not saving correctly. - A saved empty useragent string in the settings caused the internal default to not be used. - The certificate path option was not defaulting correctly. - Media thumbnail images were not being detected properly. - An invalid feed would trigger false positive errors on fetch.
Release Info
Developer | Mekku |
Plugin | WP RSS Aggregator |
Version | 4.15.2 |
Comparing to | |
See all releases |
Code changes from version 4.15.1 to 4.15.2
- CHANGELOG.md +19 -0
- README.md +0 -24
- includes/Aventura/Wprss/Core/Licensing/Manager.php +1 -1
- includes/Aventura/Wprss/Core/Licensing/Settings.php +5 -0
- includes/admin-display.php +22 -20
- includes/admin-help.php +2 -1
- includes/admin-log.php +4 -2
- includes/admin-options-legacy.php +28 -35
- includes/admin-options.php +12 -4
- includes/admin-update-page.php +1 -1
- includes/feed-access.php +1 -17
- includes/feed-blacklist.php +4 -2
- includes/feed-importing-images.php +2 -2
- includes/feed-importing.php +10 -11
- includes/system-info.php +13 -3
- includes/update.php +1 -0
- readme.txt +14 -14
- src/Handlers/AbstractSavePostHandler.php +2 -2
- src/Handlers/FeedBlacklist/SaveBlacklistHandler.php +6 -2
- src/Modules/LoremModule.php +2 -2
- templates/admin/update-page.twig +30 -90
- templates/custom-feed/entry.twig +10 -4
- vendor/autoload.php +1 -1
- vendor/composer/autoload_real.php +7 -7
- vendor/composer/autoload_static.php +5 -5
- wp-rss-aggregator.php +3 -3
@@ -4,6 +4,25 @@ All notable changes to this project will be documented in this file.
|
|
4 |
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
5 |
and this project adheres to [Semantic Versioning](http://semver.org/).
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
## [4.15.1] - 2019-08-14
|
8 |
### Added
|
9 |
* New link to the custom feed in the "Custom Feed" settings page.
|
4 |
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
5 |
and this project adheres to [Semantic Versioning](http://semver.org/).
|
6 |
|
7 |
+
## [4.15.2] - 2019-10-03
|
8 |
+
### Added
|
9 |
+
* Links and integrations with Lorem for custom developer work.
|
10 |
+
|
11 |
+
### Changed
|
12 |
+
* The default logging type is now "debug".
|
13 |
+
- Feeds are now sorted alphabetically by default.
|
14 |
+
|
15 |
+
### Fixed
|
16 |
+
* Multisite installations only allowed the main site to have activated licenses.
|
17 |
+
* License notices now only appear on the main site if the site is a multisite network.
|
18 |
+
* Blacklist items would occassionally be saved without a permalink.
|
19 |
+
* Older versions of add-ons triggered errors when trying to log messages with the default log type.
|
20 |
+
* Fixed checkbox legacy display options not saving correctly.
|
21 |
+
* A saved empty useragent string in the settings caused the internal default to not be used.
|
22 |
+
* The certificate path option was not defaulting correctly.
|
23 |
+
* Media thumbnail images were not being detected properly.
|
24 |
+
* An invalid feed would trigger false positive errors on fetch.
|
25 |
+
|
26 |
## [4.15.1] - 2019-08-14
|
27 |
### Added
|
28 |
* New link to the custom feed in the "Custom Feed" settings page.
|
@@ -1,24 +0,0 @@
|
|
1 |
-
![](https://repository-images.githubusercontent.com/15269888/73ca9400-669f-11e9-9e18-5662f7b5bd68)
|
2 |
-
|
3 |
-
## Requirements
|
4 |
-
|
5 |
-
**Recommended**
|
6 |
-
* PHP 7+
|
7 |
-
* PHP `curl` extension
|
8 |
-
* PHP `simplexml` extension
|
9 |
-
* PHP `mbstring` extension
|
10 |
-
* PHP `gd` extension
|
11 |
-
* WordPress 5.0+
|
12 |
-
|
13 |
-
**Minimum**
|
14 |
-
* PHP 5.4+
|
15 |
-
* PHP `curl` extension
|
16 |
-
* PHP `simplexml` extension
|
17 |
-
* WordPress 4.8+
|
18 |
-
|
19 |
-
## Links
|
20 |
-
|
21 |
-
* [Website](https://wprssaggregator.com)
|
22 |
-
* [Premium Addons](https://wprssaggregator.com/pricing)
|
23 |
-
* [Knowledge Base](https://kb.wprssaggregator.com)
|
24 |
-
* [WordPress.org Page](https://wordpress.org/plugins/wp-rss-aggregator)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -541,7 +541,7 @@ class Manager {
|
|
541 |
'edd_action' => null,
|
542 |
'license' => null,
|
543 |
'item_name' => null,
|
544 |
-
'url' =>
|
545 |
'time' => time(),
|
546 |
);
|
547 |
|
541 |
'edd_action' => null,
|
542 |
'license' => null,
|
543 |
'item_name' => null,
|
544 |
+
'url' => network_home_url(),
|
545 |
'time' => time(),
|
546 |
);
|
547 |
|
@@ -112,6 +112,11 @@ class Settings {
|
|
112 |
if ( ! isset( $args['addon'] ) ) {
|
113 |
return false;
|
114 |
}
|
|
|
|
|
|
|
|
|
|
|
115 |
$license = $this->getManager()->getLicense( $args['addon'] );
|
116 |
|
117 |
return is_null($license) || strlen( $license->getKey() ) === 0;
|
112 |
if ( ! isset( $args['addon'] ) ) {
|
113 |
return false;
|
114 |
}
|
115 |
+
|
116 |
+
if (!is_main_site()) {
|
117 |
+
return false;
|
118 |
+
}
|
119 |
+
|
120 |
$license = $this->getManager()->getLicense( $args['addon'] );
|
121 |
|
122 |
return is_null($license) || strlen( $license->getKey() ) === 0;
|
@@ -230,40 +230,42 @@
|
|
230 |
if ( !is_admin() || !$query->is_main_query() || $query->get('post_type') !== 'wprss_feed' ) {
|
231 |
return;
|
232 |
}
|
233 |
-
// Check if the orderby query variable is set
|
234 |
-
if ( !( $orderby = $query->get( 'orderby' ) ) ) return;
|
235 |
|
236 |
-
//
|
237 |
-
$query->
|
238 |
-
|
239 |
-
|
240 |
-
//
|
241 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
242 |
|
243 |
// Check what we are sorting by
|
244 |
switch ( $orderby ) {
|
245 |
-
case 'title':
|
246 |
-
$query->set( 'orderby', 'title' );
|
247 |
-
break;
|
248 |
case 'state':
|
249 |
$query->set('meta_key', 'wprss_state');
|
|
|
250 |
break;
|
|
|
251 |
case 'updates':
|
252 |
$query->set('meta_key', 'wprss_next_update');
|
253 |
-
$query->set('orderby', 'meta_value'
|
254 |
-
|
255 |
break;
|
256 |
case 'feed-count':
|
257 |
$query->set('meta_key', 'wprss_items_imported');
|
258 |
-
$query->set('orderby', 'meta_value_num'
|
259 |
-
if ( !$got_order ) $query->set( 'order', 'DESC' );
|
260 |
-
break;
|
261 |
-
}
|
262 |
|
263 |
-
|
264 |
-
$query->set( 'order', 'ASC' );
|
265 |
}
|
266 |
-
|
267 |
|
268 |
|
269 |
add_filter( 'manage_wprss_feed_item_posts_columns', 'wprss_set_feed_item_custom_columns', 20, 1 );
|
230 |
if ( !is_admin() || !$query->is_main_query() || $query->get('post_type') !== 'wprss_feed' ) {
|
231 |
return;
|
232 |
}
|
|
|
|
|
233 |
|
234 |
+
// Get the sorting query args
|
235 |
+
$order = strtoupper($query->get('order'));
|
236 |
+
$orderby = $query->get('orderby');
|
237 |
+
|
238 |
+
// If order is not specified, default to ascending
|
239 |
+
if ($order !== 'ASC' && $order !== 'DESC') {
|
240 |
+
$order = 'ASC';
|
241 |
+
}
|
242 |
+
|
243 |
+
$query->set('order', $order);
|
244 |
+
|
245 |
+
// If not explicitly sorting or sorting by title, sort by title
|
246 |
+
if (!$orderby || $orderby === 'title') {
|
247 |
+
$query->set('orderby', 'title');
|
248 |
+
}
|
249 |
|
250 |
// Check what we are sorting by
|
251 |
switch ( $orderby ) {
|
|
|
|
|
|
|
252 |
case 'state':
|
253 |
$query->set('meta_key', 'wprss_state');
|
254 |
+
$query->set('orderby', 'meta_value');
|
255 |
break;
|
256 |
+
|
257 |
case 'updates':
|
258 |
$query->set('meta_key', 'wprss_next_update');
|
259 |
+
$query->set('orderby', 'meta_value');
|
260 |
+
|
261 |
break;
|
262 |
case 'feed-count':
|
263 |
$query->set('meta_key', 'wprss_items_imported');
|
264 |
+
$query->set('orderby', 'meta_value_num');
|
|
|
|
|
|
|
265 |
|
266 |
+
break;
|
|
|
267 |
}
|
268 |
+
}
|
269 |
|
270 |
|
271 |
add_filter( 'manage_wprss_feed_item_posts_columns', 'wprss_set_feed_item_custom_columns', 20, 1 );
|
@@ -81,7 +81,8 @@
|
|
81 |
<?php wp_nonce_field('wprss_hs_beacon_enabled'); ?>
|
82 |
</form>
|
83 |
</div>
|
84 |
-
|
|
|
85 |
}
|
86 |
|
87 |
// Handler to update the HS beacon enabled option
|
81 |
<?php wp_nonce_field('wprss_hs_beacon_enabled'); ?>
|
82 |
</form>
|
83 |
</div>
|
84 |
+
<?php
|
85 |
+
do_action('wpra/help_page/bottom');
|
86 |
}
|
87 |
|
88 |
// Handler to update the HS beacon enabled option
|
@@ -105,7 +105,9 @@ function wprss_reset_log()
|
|
105 |
*/
|
106 |
function wprss_log($message, $src = null, $log_level = null)
|
107 |
{
|
108 |
-
$log_level = ($log_level
|
|
|
|
|
109 |
|
110 |
wpra_get_logger()->log($log_level, $message);
|
111 |
}
|
@@ -115,7 +117,7 @@ function wprss_log($message, $src = null, $log_level = null)
|
|
115 |
*
|
116 |
* @since 3.9.6
|
117 |
*/
|
118 |
-
function wprss_log_obj($message, $obj, $src = '', $log_level =
|
119 |
{
|
120 |
$message = sprintf('%s: %s', $message, print_r($obj, true));
|
121 |
|
105 |
*/
|
106 |
function wprss_log($message, $src = null, $log_level = null)
|
107 |
{
|
108 |
+
$log_level = ($log_level === null)
|
109 |
+
? LogLevel::DEBUG
|
110 |
+
: $log_level;
|
111 |
|
112 |
wpra_get_logger()->log($log_level, $message);
|
113 |
}
|
117 |
*
|
118 |
* @since 3.9.6
|
119 |
*/
|
120 |
+
function wprss_log_obj($message, $obj, $src = '', $log_level = null)
|
121 |
{
|
122 |
$message = sprintf('%s: %s', $message, print_r($obj, true));
|
123 |
|
@@ -147,13 +147,12 @@ function wprss_settings_date_callback()
|
|
147 |
function wprss_setting_title_link_callback($field)
|
148 |
{
|
149 |
$title_link = wprss_get_general_setting('title_link');
|
150 |
-
$checked = ($title_link == '1');
|
151 |
|
152 |
-
echo
|
153 |
$field['field_id'],
|
154 |
-
'
|
155 |
-
|
156 |
-
|
157 |
);
|
158 |
echo wprss_settings_inline_help($field['field_id'], $field['tooltip']);
|
159 |
}
|
@@ -192,13 +191,12 @@ function wprss_setting_title_length_callback($field)
|
|
192 |
function wprss_setting_authors_enable_callback($field)
|
193 |
{
|
194 |
$authors_enable = wprss_get_general_setting('authors_enable');
|
195 |
-
$checked = ($authors_enable == '1');
|
196 |
|
197 |
-
echo
|
198 |
$field['field_id'],
|
199 |
-
'
|
200 |
-
|
201 |
-
|
202 |
);
|
203 |
echo wprss_settings_inline_help($field['field_id'], $field['tooltip']);
|
204 |
}
|
@@ -291,13 +289,12 @@ function wprss_setting_open_dd_callback($field)
|
|
291 |
function wprss_setting_follow_dd_callback($field)
|
292 |
{
|
293 |
$follow_dd = wprss_get_general_setting('follow_dd');
|
294 |
-
$checked = ($follow_dd === 'no_follow');
|
295 |
|
296 |
-
echo
|
297 |
$field['field_id'],
|
298 |
-
'
|
299 |
-
|
300 |
-
|
301 |
);
|
302 |
echo wprss_settings_inline_help($field['field_id'], $field['tooltip']);
|
303 |
}
|
@@ -312,13 +309,12 @@ function wprss_setting_follow_dd_callback($field)
|
|
312 |
function wprss_setting_source_enable_callback($field)
|
313 |
{
|
314 |
$source_enable = wprss_get_general_setting('source_enable');
|
315 |
-
$checked = ($source_enable == '1');
|
316 |
|
317 |
-
echo
|
318 |
$field['field_id'],
|
319 |
-
'
|
320 |
-
|
321 |
-
|
322 |
);
|
323 |
echo wprss_settings_inline_help($field['field_id'], $field['tooltip']);
|
324 |
}
|
@@ -352,13 +348,12 @@ function wprss_setting_text_preceding_source_callback($field)
|
|
352 |
function wprss_setting_source_link_callback($field)
|
353 |
{
|
354 |
$source_link = wprss_get_general_setting('source_link');
|
355 |
-
$checked = ($source_link == '1');
|
356 |
|
357 |
-
echo
|
358 |
$field['field_id'],
|
359 |
-
'
|
360 |
-
|
361 |
-
|
362 |
);
|
363 |
echo wprss_settings_inline_help($field['field_id'], $field['tooltip']);
|
364 |
}
|
@@ -373,13 +368,12 @@ function wprss_setting_source_link_callback($field)
|
|
373 |
function wprss_setting_date_enable_callback($field)
|
374 |
{
|
375 |
$date_enable = wprss_get_general_setting('date_enable');
|
376 |
-
$checked = ($date_enable == '1');
|
377 |
|
378 |
-
echo
|
379 |
$field['field_id'],
|
380 |
-
'
|
381 |
-
|
382 |
-
|
383 |
);
|
384 |
echo wprss_settings_inline_help($field['field_id'], $field['tooltip']);
|
385 |
}
|
@@ -438,13 +432,12 @@ function wprss_setting_date_format_callback($field)
|
|
438 |
function wprss_setting_time_ago_format_enable_callback($field)
|
439 |
{
|
440 |
$time_ago_format = wprss_get_general_setting('time_ago_format_enable');
|
441 |
-
$checked = ($time_ago_format == '1');
|
442 |
|
443 |
-
echo
|
444 |
$field['field_id'],
|
445 |
-
'
|
446 |
-
|
447 |
-
|
448 |
);
|
449 |
echo wprss_settings_inline_help($field['field_id'], $field['tooltip']);
|
450 |
}
|
147 |
function wprss_setting_title_link_callback($field)
|
148 |
{
|
149 |
$title_link = wprss_get_general_setting('title_link');
|
|
|
150 |
|
151 |
+
echo wprss_options_render_checkbox(
|
152 |
$field['field_id'],
|
153 |
+
'title_link',
|
154 |
+
$title_link,
|
155 |
+
'1'
|
156 |
);
|
157 |
echo wprss_settings_inline_help($field['field_id'], $field['tooltip']);
|
158 |
}
|
191 |
function wprss_setting_authors_enable_callback($field)
|
192 |
{
|
193 |
$authors_enable = wprss_get_general_setting('authors_enable');
|
|
|
194 |
|
195 |
+
echo wprss_options_render_checkbox(
|
196 |
$field['field_id'],
|
197 |
+
'authors_enable',
|
198 |
+
$authors_enable,
|
199 |
+
'1'
|
200 |
);
|
201 |
echo wprss_settings_inline_help($field['field_id'], $field['tooltip']);
|
202 |
}
|
289 |
function wprss_setting_follow_dd_callback($field)
|
290 |
{
|
291 |
$follow_dd = wprss_get_general_setting('follow_dd');
|
|
|
292 |
|
293 |
+
echo wprss_options_render_checkbox(
|
294 |
$field['field_id'],
|
295 |
+
'follow_dd',
|
296 |
+
$follow_dd,
|
297 |
+
'no_follow'
|
298 |
);
|
299 |
echo wprss_settings_inline_help($field['field_id'], $field['tooltip']);
|
300 |
}
|
309 |
function wprss_setting_source_enable_callback($field)
|
310 |
{
|
311 |
$source_enable = wprss_get_general_setting('source_enable');
|
|
|
312 |
|
313 |
+
echo wprss_options_render_checkbox(
|
314 |
$field['field_id'],
|
315 |
+
'source_enable',
|
316 |
+
$source_enable,
|
317 |
+
'1'
|
318 |
);
|
319 |
echo wprss_settings_inline_help($field['field_id'], $field['tooltip']);
|
320 |
}
|
348 |
function wprss_setting_source_link_callback($field)
|
349 |
{
|
350 |
$source_link = wprss_get_general_setting('source_link');
|
|
|
351 |
|
352 |
+
echo wprss_options_render_checkbox(
|
353 |
$field['field_id'],
|
354 |
+
'source_link',
|
355 |
+
$source_link,
|
356 |
+
'1'
|
357 |
);
|
358 |
echo wprss_settings_inline_help($field['field_id'], $field['tooltip']);
|
359 |
}
|
368 |
function wprss_setting_date_enable_callback($field)
|
369 |
{
|
370 |
$date_enable = wprss_get_general_setting('date_enable');
|
|
|
371 |
|
372 |
+
echo wprss_options_render_checkbox(
|
373 |
$field['field_id'],
|
374 |
+
'date_enable',
|
375 |
+
$date_enable,
|
376 |
+
'1'
|
377 |
);
|
378 |
echo wprss_settings_inline_help($field['field_id'], $field['tooltip']);
|
379 |
}
|
432 |
function wprss_setting_time_ago_format_enable_callback($field)
|
433 |
{
|
434 |
$time_ago_format = wprss_get_general_setting('time_ago_format_enable');
|
|
|
435 |
|
436 |
+
echo wprss_options_render_checkbox(
|
437 |
$field['field_id'],
|
438 |
+
'time_ago_format_enable',
|
439 |
+
$time_ago_format,
|
440 |
+
'1'
|
441 |
);
|
442 |
echo wprss_settings_inline_help($field['field_id'], $field['tooltip']);
|
443 |
}
|
@@ -14,14 +14,22 @@
|
|
14 |
/**
|
15 |
* Returns the given general setting option value form the database, or the default value if it is not found.
|
16 |
*
|
17 |
-
* @param option_name The name of the option to get
|
|
|
18 |
* @return mixed
|
19 |
* @since 3.7.1
|
20 |
*/
|
21 |
-
function wprss_get_general_setting( $option_name ) {
|
22 |
$options = get_option( 'wprss_settings_general', array() );
|
23 |
$defaults = wprss_get_default_settings_general();
|
24 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
}
|
26 |
|
27 |
/**
|
@@ -746,7 +754,7 @@
|
|
746 |
$attributes = [];
|
747 |
|
748 |
if ($checked) {
|
749 |
-
$attributes['checked'] = '
|
750 |
}
|
751 |
|
752 |
return wprss_settings_render_input($id, $name, $value, 'checkbox', $attributes);
|
14 |
/**
|
15 |
* Returns the given general setting option value form the database, or the default value if it is not found.
|
16 |
*
|
17 |
+
* @param string $option_name The name of the option to get
|
18 |
+
* @param bool $not_empty If true, the default value will be returned if the option exists but is empty.
|
19 |
* @return mixed
|
20 |
* @since 3.7.1
|
21 |
*/
|
22 |
+
function wprss_get_general_setting( $option_name, $not_empty = false ) {
|
23 |
$options = get_option( 'wprss_settings_general', array() );
|
24 |
$defaults = wprss_get_default_settings_general();
|
25 |
+
|
26 |
+
$value = isset($options[$option_name])
|
27 |
+
? $options[$option_name]
|
28 |
+
: $defaults[$option_name];
|
29 |
+
|
30 |
+
return ($not_empty && empty($value))
|
31 |
+
? $defaults[$option_name]
|
32 |
+
: $value;
|
33 |
}
|
34 |
|
35 |
/**
|
754 |
$attributes = [];
|
755 |
|
756 |
if ($checked) {
|
757 |
+
$attributes['checked'] = '';
|
758 |
}
|
759 |
|
760 |
return wprss_settings_render_input($id, $name, $value, 'checkbox', $attributes);
|
@@ -51,7 +51,7 @@ function wprss_render_update_page()
|
|
51 |
'path' => array(
|
52 |
'images' => WPRSS_IMG,
|
53 |
),
|
54 |
-
'changelog' => $parsedown->text($changelog[
|
55 |
));
|
56 |
}
|
57 |
|
51 |
'path' => array(
|
52 |
'images' => WPRSS_IMG,
|
53 |
),
|
54 |
+
'changelog' => $parsedown->text($changelog[WPRSS_VERSION]['raw'])
|
55 |
));
|
56 |
}
|
57 |
|
@@ -49,7 +49,6 @@ class WPRSS_Feed_Access
|
|
49 |
$wprss = wprss();
|
50 |
add_action( 'wprss_fetch_feed_before', array( $this, 'set_feed_options' ), 10, 2 );
|
51 |
add_action( 'wprss_settings_array', array( $this, 'add_settings' ) );
|
52 |
-
add_action( 'wprss_default_settings_general', array( $this, 'add_default_settings' ) );
|
53 |
$wprss->on('fields', array($this, 'add_feed_source_fields'));
|
54 |
}
|
55 |
|
@@ -111,7 +110,7 @@ class WPRSS_Feed_Access
|
|
111 |
*/
|
112 |
public function get_useragent_setting()
|
113 |
{
|
114 |
-
return wprss_get_general_setting( self::SETTING_KEY_FEED_REQUEST_USERAGENT );
|
115 |
}
|
116 |
|
117 |
/**
|
@@ -236,21 +235,6 @@ class WPRSS_Feed_Access
|
|
236 |
return $fields;
|
237 |
}
|
238 |
|
239 |
-
|
240 |
-
/**
|
241 |
-
* @since 4.7
|
242 |
-
* @param array $settings The array of settings, where key is
|
243 |
-
* @return array The new array of default settings
|
244 |
-
*/
|
245 |
-
public function add_default_settings( $settings ) {
|
246 |
-
$settings[ self::SETTING_KEY_CERTIFICATE_PATH ] = implode( '/', array( WPINC, 'certificates', 'ca-bundle.crt' ) );
|
247 |
-
/** @since 4.8.2 */
|
248 |
-
$settings[ self::SETTING_KEY_FEED_REQUEST_USERAGENT ] = '';
|
249 |
-
|
250 |
-
return $settings;
|
251 |
-
}
|
252 |
-
|
253 |
-
|
254 |
/**
|
255 |
* Renders the setting field for the certificate path.
|
256 |
*
|
49 |
$wprss = wprss();
|
50 |
add_action( 'wprss_fetch_feed_before', array( $this, 'set_feed_options' ), 10, 2 );
|
51 |
add_action( 'wprss_settings_array', array( $this, 'add_settings' ) );
|
|
|
52 |
$wprss->on('fields', array($this, 'add_feed_source_fields'));
|
53 |
}
|
54 |
|
110 |
*/
|
111 |
public function get_useragent_setting()
|
112 |
{
|
113 |
+
return wprss_get_general_setting( self::SETTING_KEY_FEED_REQUEST_USERAGENT, true );
|
114 |
}
|
115 |
|
116 |
/**
|
235 |
return $fields;
|
236 |
}
|
237 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
238 |
/**
|
239 |
* Renders the setting field for the certificate path.
|
240 |
*
|
@@ -92,9 +92,11 @@ function wprss_blacklist_item( $ID ) {
|
|
92 |
$id = wp_insert_post(array(
|
93 |
'post_title' => $title,
|
94 |
'post_type' => 'wprss_blacklist',
|
95 |
-
'post_status' => 'publish'
|
|
|
|
|
|
|
96 |
));
|
97 |
-
update_post_meta( $id, 'wprss_permalink', $permalink );
|
98 |
}
|
99 |
|
100 |
/**
|
92 |
$id = wp_insert_post(array(
|
93 |
'post_title' => $title,
|
94 |
'post_type' => 'wprss_blacklist',
|
95 |
+
'post_status' => 'publish',
|
96 |
+
'meta_input' => [
|
97 |
+
'wprss_permalink' => $permalink,
|
98 |
+
],
|
99 |
));
|
|
|
100 |
}
|
101 |
|
102 |
/**
|
@@ -120,8 +120,8 @@ function wpra_import_item_images($itemId, $item, $sourceId)
|
|
120 |
break;
|
121 |
|
122 |
case 'media':
|
123 |
-
if (isset($images['media'])) {
|
124 |
-
$ftImageUrl = $images['media'];
|
125 |
}
|
126 |
break;
|
127 |
|
120 |
break;
|
121 |
|
122 |
case 'media':
|
123 |
+
if (isset($images['media']) && !empty($images['media'])) {
|
124 |
+
$ftImageUrl = reset($images['media']);
|
125 |
}
|
126 |
break;
|
127 |
|
@@ -238,23 +238,22 @@
|
|
238 |
/* Fetch the feed from the soure URL specified */
|
239 |
$feed = wprss_fetch_feed( $feed_url, $source, $force_feed );
|
240 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
241 |
update_post_meta( $source, 'wprss_site_url', $feed->get_permalink() );
|
242 |
update_post_meta( $source, 'wprss_feed_image', $feed->get_image_url() );
|
243 |
|
244 |
// Remove previously added filters and actions
|
245 |
remove_filter( 'wp_feed_cache_transient_lifetime' , 'wprss_feed_cache_lifetime' );
|
246 |
|
247 |
-
|
248 |
-
// Return the items in the feed.
|
249 |
-
return @$feed->get_items();
|
250 |
-
}
|
251 |
-
|
252 |
-
wpra_get_logger($source)->error('Failed to fetch the feed from {0}. Error: {1}', [
|
253 |
-
$feed_url,
|
254 |
-
$feed->get_error_message()
|
255 |
-
]);
|
256 |
-
|
257 |
-
return NULL;
|
258 |
}
|
259 |
|
260 |
//add_action ('cron_request', 'wpse_cron_add_xdebug_cookie', 10, 2) ;
|
238 |
/* Fetch the feed from the soure URL specified */
|
239 |
$feed = wprss_fetch_feed( $feed_url, $source, $force_feed );
|
240 |
|
241 |
+
if (is_wp_error($feed)) {
|
242 |
+
wpra_get_logger($source)->error('Failed to fetch the feed from {0}. Error: {1}', [
|
243 |
+
$feed_url,
|
244 |
+
$feed->get_error_message()
|
245 |
+
]);
|
246 |
+
|
247 |
+
return NULL;
|
248 |
+
}
|
249 |
+
|
250 |
update_post_meta( $source, 'wprss_site_url', $feed->get_permalink() );
|
251 |
update_post_meta( $source, 'wprss_feed_image', $feed->get_image_url() );
|
252 |
|
253 |
// Remove previously added filters and actions
|
254 |
remove_filter( 'wp_feed_cache_transient_lifetime' , 'wprss_feed_cache_lifetime' );
|
255 |
|
256 |
+
return @$feed->get_items();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
257 |
}
|
258 |
|
259 |
//add_action ('cron_request', 'wpse_cron_add_xdebug_cookie', 10, 2) ;
|
@@ -197,13 +197,23 @@ SETTINGS:
|
|
197 |
|
198 |
<?php
|
199 |
$options_table = $wpdb->prefix . 'options';
|
200 |
-
$options_query = sprintf(
|
|
|
|
|
|
|
201 |
$options = $wpdb->get_results($options_query, OBJECT_K);
|
202 |
|
|
|
|
|
203 |
foreach ($options as $option) {
|
204 |
$unserialized = @unserialize($option->option_value);
|
|
|
|
|
|
|
|
|
|
|
205 |
|
206 |
-
if (!$
|
207 |
printf(
|
208 |
'%s %s',
|
209 |
str_pad($option->option_name, 30),
|
@@ -214,7 +224,7 @@ foreach ($options as $option) {
|
|
214 |
}
|
215 |
|
216 |
printf('[%s]: ', $option->option_name);
|
217 |
-
print_r($
|
218 |
}
|
219 |
|
220 |
?>
|
197 |
|
198 |
<?php
|
199 |
$options_table = $wpdb->prefix . 'options';
|
200 |
+
$options_query = sprintf(
|
201 |
+
'SELECT * FROM %s WHERE `option_name` LIKE "wprss%%" OR `option_name` LIKE "wpra%%"',
|
202 |
+
$options_table
|
203 |
+
);
|
204 |
$options = $wpdb->get_results($options_query, OBJECT_K);
|
205 |
|
206 |
+
$options = apply_filters('wpra/debug/sysinfo/options', $options);
|
207 |
+
|
208 |
foreach ($options as $option) {
|
209 |
$unserialized = @unserialize($option->option_value);
|
210 |
+
$value = apply_filters('wpra/debug/sysinfo/option_value', $unserialized, $option->option_name);
|
211 |
+
|
212 |
+
if ($value === null) {
|
213 |
+
continue;
|
214 |
+
}
|
215 |
|
216 |
+
if (!$value || is_scalar($value)) {
|
217 |
printf(
|
218 |
'%s %s',
|
219 |
str_pad($option->option_name, 30),
|
224 |
}
|
225 |
|
226 |
printf('[%s]: ', $option->option_name);
|
227 |
+
print_r($value);
|
228 |
}
|
229 |
|
230 |
?>
|
@@ -286,6 +286,7 @@
|
|
286 |
|
287 |
// From 4.8.2
|
288 |
'feed_request_useragent' => 'Mozilla/5.0 (Linux 10.0; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',
|
|
|
289 |
|
290 |
// From 4.11.2
|
291 |
'limit_feed_items_per_import' => null,
|
286 |
|
287 |
// From 4.8.2
|
288 |
'feed_request_useragent' => 'Mozilla/5.0 (Linux 10.0; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36',
|
289 |
+
'certificate-path' => implode( '/', array( WPINC, 'certificates', 'ca-bundle.crt' ) ),
|
290 |
|
291 |
// From 4.11.2
|
292 |
'limit_feed_items_per_import' => null,
|
@@ -5,7 +5,7 @@ Tags: RSS import, RSS aggregator, feed import, content curation, feed to post
|
|
5 |
Requires at least: 4.0 or higher
|
6 |
Tested up to: 5.2.2
|
7 |
Requires PHP: 5.4
|
8 |
-
Stable tag: 4.15.
|
9 |
License: GPLv3
|
10 |
|
11 |
WP RSS Aggregator is the original & most popular WordPress solution for importing RSS feeds, auto-blogging, content curation & aggregation.
|
@@ -259,22 +259,22 @@ Our complete Knowledge Base with FAQs can be found [here](https://kb.wprssaggreg
|
|
259 |
|
260 |
== Changelog ==
|
261 |
|
262 |
-
= 4.15.
|
263 |
|
264 |
**Added**
|
265 |
-
-
|
266 |
|
267 |
**Changed**
|
268 |
-
-
|
269 |
-
-
|
270 |
|
271 |
**Fixed**
|
272 |
-
-
|
273 |
-
-
|
274 |
-
-
|
275 |
-
-
|
276 |
-
-
|
277 |
-
-
|
278 |
-
-
|
279 |
-
-
|
280 |
-
-
|
5 |
Requires at least: 4.0 or higher
|
6 |
Tested up to: 5.2.2
|
7 |
Requires PHP: 5.4
|
8 |
+
Stable tag: 4.15.2
|
9 |
License: GPLv3
|
10 |
|
11 |
WP RSS Aggregator is the original & most popular WordPress solution for importing RSS feeds, auto-blogging, content curation & aggregation.
|
259 |
|
260 |
== Changelog ==
|
261 |
|
262 |
+
= 4.15.2 (2019-10-03) =
|
263 |
|
264 |
**Added**
|
265 |
+
- Links and integrations with Lorem for custom developer work.
|
266 |
|
267 |
**Changed**
|
268 |
+
- The default logging type is now "debug".
|
269 |
+
- Feeds are now sorted alphabetically by default.
|
270 |
|
271 |
**Fixed**
|
272 |
+
- Multisite installations only allowed the main site to have activated licenses.
|
273 |
+
- License notices now only appear on the main site if the site is a multisite network.
|
274 |
+
- Blacklist items would occassionally be saved without a permalink.
|
275 |
+
- Older versions of add-ons triggered errors when trying to log messages with the default log type.
|
276 |
+
- Fixed checkbox legacy display options not saving correctly.
|
277 |
+
- A saved empty useragent string in the settings caused the internal default to not be used.
|
278 |
+
- The certificate path option was not defaulting correctly.
|
279 |
+
- Media thumbnail images were not being detected properly.
|
280 |
+
- An invalid feed would trigger false positive errors on fetch.
|
@@ -105,7 +105,7 @@ abstract class AbstractSavePostHandler
|
|
105 |
$this->saving = true;
|
106 |
|
107 |
// Parse the meta
|
108 |
-
$metaData = $this->parseArgsWithSchema($_REQUEST, $this->getMetaSchema());
|
109 |
// Check if the post is an auto draft
|
110 |
$autoDraft = ($post->post_status === 'auto-draft');
|
111 |
|
@@ -194,5 +194,5 @@ abstract class AbstractSavePostHandler
|
|
194 |
*
|
195 |
* @return array The schema.
|
196 |
*/
|
197 |
-
abstract protected function getMetaSchema();
|
198 |
}
|
105 |
$this->saving = true;
|
106 |
|
107 |
// Parse the meta
|
108 |
+
$metaData = $this->parseArgsWithSchema($_REQUEST, $this->getMetaSchema($post));
|
109 |
// Check if the post is an auto draft
|
110 |
$autoDraft = ($post->post_status === 'auto-draft');
|
111 |
|
194 |
*
|
195 |
* @return array The schema.
|
196 |
*/
|
197 |
+
abstract protected function getMetaSchema(WP_Post $post);
|
198 |
}
|
@@ -39,6 +39,9 @@ class SaveBlacklistHandler extends AbstractSavePostHandler
|
|
39 |
];
|
40 |
}
|
41 |
|
|
|
|
|
|
|
42 |
// Empty titles default to the URL
|
43 |
if (empty($post->post_title)) {
|
44 |
wp_update_post([
|
@@ -55,11 +58,12 @@ class SaveBlacklistHandler extends AbstractSavePostHandler
|
|
55 |
*
|
56 |
* @since 4.13
|
57 |
*/
|
58 |
-
protected function getMetaSchema()
|
59 |
{
|
60 |
return [
|
61 |
'wprss_permalink' => [
|
62 |
-
'filter' =>
|
|
|
63 |
],
|
64 |
];
|
65 |
}
|
39 |
];
|
40 |
}
|
41 |
|
42 |
+
// Save the the blacklisted permalink
|
43 |
+
update_post_meta($post->ID, 'wprss_permalink', $meta['wprss_permalink']);
|
44 |
+
|
45 |
// Empty titles default to the URL
|
46 |
if (empty($post->post_title)) {
|
47 |
wp_update_post([
|
58 |
*
|
59 |
* @since 4.13
|
60 |
*/
|
61 |
+
protected function getMetaSchema(WP_Post $post)
|
62 |
{
|
63 |
return [
|
64 |
'wprss_permalink' => [
|
65 |
+
'filter' => FILTER_SANITIZE_URL,
|
66 |
+
'default' => get_post_meta($post->ID, 'wprss_permalink', true)
|
67 |
],
|
68 |
];
|
69 |
}
|
@@ -25,7 +25,7 @@ class LoremModule implements ModuleInterface
|
|
25 |
add_action('wprss_admin_exclusive_scripts_styles', $c->get('wpra/lorem/script/enqueue_fn'));
|
26 |
|
27 |
// Adds the Lorem embed on the "Help & Support" page, after the page title.
|
28 |
-
add_action('wpra/help_page/
|
29 |
echo $c->get('wpra/lorem/help_page/html');
|
30 |
});
|
31 |
}
|
@@ -95,7 +95,7 @@ class LoremModule implements ModuleInterface
|
|
95 |
* @since 4.15.1
|
96 |
*/
|
97 |
'wpra/lorem/help_page/html' => function (ContainerInterface $c) {
|
98 |
-
return '<div data-lorem-embed-id="rss-help-and-support"></div>';
|
99 |
},
|
100 |
];
|
101 |
}
|
25 |
add_action('wprss_admin_exclusive_scripts_styles', $c->get('wpra/lorem/script/enqueue_fn'));
|
26 |
|
27 |
// Adds the Lorem embed on the "Help & Support" page, after the page title.
|
28 |
+
add_action('wpra/help_page/bottom', function () use ($c) {
|
29 |
echo $c->get('wpra/lorem/help_page/html');
|
30 |
});
|
31 |
}
|
95 |
* @since 4.15.1
|
96 |
*/
|
97 |
'wpra/lorem/help_page/html' => function (ContainerInterface $c) {
|
98 |
+
return '<div style="margin-top: 10px;" data-lorem-embed-id="rss-help-and-support-with-prefabs"></div>';
|
99 |
},
|
100 |
];
|
101 |
}
|
@@ -2,7 +2,7 @@
|
|
2 |
<div class="wpra-update wpra-text-center">
|
3 |
<div class="wpra-update__logo">
|
4 |
<img src="https://www.wprssaggregator.com/wp-content/themes/wp_rss_theme/assets/images/wp_rss_logo.png"
|
5 |
-
|
6 |
</div>
|
7 |
<div class="wpra-update-head__copy">
|
8 |
<div class="wpra-update-head__title">{{ title }}</div>
|
@@ -15,116 +15,45 @@
|
|
15 |
<hr class="wp-header-end">
|
16 |
|
17 |
<div id="wpra-update-app">
|
18 |
-
<div class="
|
19 |
-
<h3>{% trans "Important!" %}</h3>
|
20 |
-
<p>
|
21 |
-
{% trans %}
|
22 |
-
Version <code>4.14</code> had an unfortunate bug that caused it to import images into your WordPress
|
23 |
-
media gallery. We're very sorry about that!
|
24 |
-
{% endtrans %}
|
25 |
-
</p>
|
26 |
-
<p>
|
27 |
-
{% trans %}
|
28 |
-
With this update the plugin will no longer import images, but unfortunately the images will remain
|
29 |
-
in your media gallery. If there are too many to delete manually, you can delete and re-import your
|
30 |
-
feed items to have WordPress automatically delete their attached images. Note that if you do so,
|
31 |
-
items that are no longer given by the RSS feed won't be re-imported.
|
32 |
-
{% endtrans %}
|
33 |
-
</p>
|
34 |
-
<p>
|
35 |
-
{% trans %}
|
36 |
-
If you have the <b>Feed to Post</b> add-on, you should not have been affected by this bug.
|
37 |
-
{% endtrans %}
|
38 |
-
</p>
|
39 |
-
<p>
|
40 |
-
{% trans %}
|
41 |
-
We apologize for this inconvience and thank you for using WP RSS Aggregator.
|
42 |
-
<br/>
|
43 |
-
<i>-The WP RSS Aggregator Team</i>
|
44 |
-
{% endtrans %}
|
45 |
-
</p>
|
46 |
-
</div>
|
47 |
-
|
48 |
-
<div class="postbox">
|
49 |
<div class="inside wpra-update-feature">
|
50 |
<div class="wpra-update-feature__text">
|
51 |
-
<
|
|
|
|
|
|
|
|
|
52 |
<p>
|
53 |
{% trans %}
|
54 |
-
|
55 |
-
|
56 |
-
|
|
|
57 |
{% endtrans %}
|
58 |
</p>
|
59 |
<p>
|
60 |
{% trans %}
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
player directly on your site!
|
65 |
{% endtrans %}
|
66 |
</p>
|
67 |
<p>
|
68 |
{% trans %}
|
69 |
-
|
70 |
-
|
71 |
{% endtrans %}
|
72 |
</p>
|
73 |
-
<
|
74 |
-
<a
|
75 |
-
href="https://kb.wprssaggregator.com/article/211-importing-from-youtube-feeds">
|
76 |
{% trans "Learn more" %}
|
77 |
-
<span class="dashicons dashicons-arrow-right-alt2"></span>
|
78 |
</a>
|
79 |
-
</div>
|
80 |
-
</div>
|
81 |
-
<div class="wpra-update-feature__image">
|
82 |
-
<img src="https://www.wprssaggregator.com/wp-content/uploads/2019/07/wpra-core-4.14-youtube_source.png"
|
83 |
-
alt="Import and Display Youtube Feeds">
|
84 |
-
</div>
|
85 |
-
</div>
|
86 |
-
</div>
|
87 |
-
|
88 |
-
<div class="postbox">
|
89 |
-
<div class="inside wpra-update-feature">
|
90 |
-
<div class="wpra-update-feature__text">
|
91 |
-
<h3>{% trans "Feed Sources Page Improvements" %}</h3>
|
92 |
-
<p>
|
93 |
-
{% trans %}
|
94 |
-
The <b>Feed Sources</b> page has received a major update. We've tweaked the design of the
|
95 |
-
feed list to make it more informative at a glance, helping you better manage your feed
|
96 |
-
sources.
|
97 |
-
{% endtrans %}
|
98 |
-
</p>
|
99 |
-
<p>
|
100 |
-
{% trans %}
|
101 |
-
We've also added a few new things, such as a new toggle switch for activating and pausing
|
102 |
-
feeds and an icon to help distinguish between RSS feeds and Youtube feeds. We will be adding
|
103 |
-
more icons in the future as we start adding support for more kinds of feeds.
|
104 |
-
{% endtrans %}
|
105 |
-
</p>
|
106 |
-
<p>
|
107 |
-
{% trans %}
|
108 |
-
What's more, the page is now fully asynchronous! This means that your actions on the page -
|
109 |
-
activating or pausing a feed, fetching items, deleting items - no longer cause the
|
110 |
-
page to reload. Updates and errors are now reliably added to the page, making it feel more like
|
111 |
-
a live dashboard.
|
112 |
-
{% endtrans %}
|
113 |
</p>
|
114 |
-
<div class="wpra-inline-form">
|
115 |
-
<a class="button button-large button-icon" href="https://kb.wprssaggregator.com/article/472-feed-sources-list" target="wpra-kb-block">
|
116 |
-
Learn more
|
117 |
-
<span class="dashicons dashicons-arrow-right-alt2"></span>
|
118 |
-
</a>
|
119 |
-
</div>
|
120 |
-
</div>
|
121 |
-
<div class="wpra-update-feature__image">
|
122 |
-
<img src="https://www.wprssaggregator.com/wp-content/uploads/2019/07/wpra-core-4.14-feed_sources_list.png" alt="Feed Sources Page Improvements">
|
123 |
</div>
|
124 |
</div>
|
125 |
</div>
|
126 |
|
127 |
-
<div class="postbox">
|
128 |
<div class="inside">
|
129 |
<h2>{% trans "Full Changelog" %}</h2>
|
130 |
<div class="wpra-updates">
|
@@ -169,3 +98,14 @@
|
|
169 |
});
|
170 |
})(jQuery);
|
171 |
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
<div class="wpra-update wpra-text-center">
|
3 |
<div class="wpra-update__logo">
|
4 |
<img src="https://www.wprssaggregator.com/wp-content/themes/wp_rss_theme/assets/images/wp_rss_logo.png"
|
5 |
+
alt="WP RSS Aggregator Logo">
|
6 |
</div>
|
7 |
<div class="wpra-update-head__copy">
|
8 |
<div class="wpra-update-head__title">{{ title }}</div>
|
15 |
<hr class="wp-header-end">
|
16 |
|
17 |
<div id="wpra-update-app">
|
18 |
+
<div class="postbox centered">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
<div class="inside wpra-update-feature">
|
20 |
<div class="wpra-update-feature__text">
|
21 |
+
<center>
|
22 |
+
<img src="https://www.wprssaggregator.com/wp-content/uploads/2019/09/wp-rss-aggregator-lorem-announcement.jpg"
|
23 |
+
alt="Lorem announcement">
|
24 |
+
</center>
|
25 |
+
<h3>{% trans "Introducing Lorem: A New WP RSS Aggregator Partner" %}</h3>
|
26 |
<p>
|
27 |
{% trans %}
|
28 |
+
Over the years we have partnered up with a few trusted companies to offer customisations that go beyond
|
29 |
+
our premium support services. Being a small team, we don’t always have the time to offer the level
|
30 |
+
of customisation that some of you may need or want. That’s why partnering up with others who excel
|
31 |
+
in this area was the logical next step.
|
32 |
{% endtrans %}
|
33 |
</p>
|
34 |
<p>
|
35 |
{% trans %}
|
36 |
+
Lorem is a platform through which you can hire expert designers, developers, marketers and more at
|
37 |
+
affordable rates. They have a dedicated team that guides you from the moment you start a
|
38 |
+
conversation to the moment that a project is delivered.
|
|
|
39 |
{% endtrans %}
|
40 |
</p>
|
41 |
<p>
|
42 |
{% trans %}
|
43 |
+
We chose to work with Lorem in order to provide customisation works as well as support in terms of
|
44 |
+
setting up WP RSS Aggregator to meet your exact needs.
|
45 |
{% endtrans %}
|
46 |
</p>
|
47 |
+
<p>
|
48 |
+
<a href="" target="_blank">
|
|
|
49 |
{% trans "Learn more" %}
|
|
|
50 |
</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
</div>
|
53 |
</div>
|
54 |
</div>
|
55 |
|
56 |
+
<div class="postbox centered">
|
57 |
<div class="inside">
|
58 |
<h2>{% trans "Full Changelog" %}</h2>
|
59 |
<div class="wpra-updates">
|
98 |
});
|
99 |
})(jQuery);
|
100 |
</script>
|
101 |
+
|
102 |
+
<style type="text/css">
|
103 |
+
.postbox.centered {
|
104 |
+
max-width: 720px;
|
105 |
+
margin-left: auto;
|
106 |
+
margin-right: auto;
|
107 |
+
}
|
108 |
+
.postbox.centered center > img {
|
109 |
+
max-width: 100%;
|
110 |
+
}
|
111 |
+
</style>
|
@@ -18,8 +18,14 @@
|
|
18 |
{% endif %}
|
19 |
</author>
|
20 |
{% endif %}
|
21 |
-
|
22 |
-
<
|
23 |
-
|
24 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
</entry>
|
18 |
{% endif %}
|
19 |
</author>
|
20 |
{% endif %}
|
21 |
+
{% if item.source_url|length > 0 or item.source_name|length > 0 %}
|
22 |
+
<source>
|
23 |
+
{% if item.source_url|length > 0 %}
|
24 |
+
<id>{{ item.source_url }}</id>
|
25 |
+
{% endif %}
|
26 |
+
{% if item.source_name|length > 0 %}
|
27 |
+
<title>{{ item.source_name }}</title>
|
28 |
+
{% endif %}
|
29 |
+
</source>
|
30 |
+
{% endif %}
|
31 |
</entry>
|
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInit0a9906e044288a89ce7d4c5685e9efc0::getLoader();
|
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit454b25077a61c37d434b6b16c544309d
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
27 |
if ($useStaticLoader) {
|
28 |
require_once __DIR__ . '/autoload_static.php';
|
29 |
|
30 |
-
call_user_func(\Composer\Autoload\
|
31 |
} else {
|
32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
foreach ($map as $namespace => $path) {
|
@@ -48,19 +48,19 @@ class ComposerAutoloaderInit454b25077a61c37d434b6b16c544309d
|
|
48 |
$loader->register(true);
|
49 |
|
50 |
if ($useStaticLoader) {
|
51 |
-
$includeFiles = Composer\Autoload\
|
52 |
} else {
|
53 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
54 |
}
|
55 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
56 |
-
|
57 |
}
|
58 |
|
59 |
return $loader;
|
60 |
}
|
61 |
}
|
62 |
|
63 |
-
function
|
64 |
{
|
65 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
66 |
require $file;
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInit0a9906e044288a89ce7d4c5685e9efc0
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit0a9906e044288a89ce7d4c5685e9efc0', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit0a9906e044288a89ce7d4c5685e9efc0', 'loadClassLoader'));
|
25 |
|
26 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
27 |
if ($useStaticLoader) {
|
28 |
require_once __DIR__ . '/autoload_static.php';
|
29 |
|
30 |
+
call_user_func(\Composer\Autoload\ComposerStaticInit0a9906e044288a89ce7d4c5685e9efc0::getInitializer($loader));
|
31 |
} else {
|
32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
foreach ($map as $namespace => $path) {
|
48 |
$loader->register(true);
|
49 |
|
50 |
if ($useStaticLoader) {
|
51 |
+
$includeFiles = Composer\Autoload\ComposerStaticInit0a9906e044288a89ce7d4c5685e9efc0::$files;
|
52 |
} else {
|
53 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
54 |
}
|
55 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
56 |
+
composerRequire0a9906e044288a89ce7d4c5685e9efc0($fileIdentifier, $file);
|
57 |
}
|
58 |
|
59 |
return $loader;
|
60 |
}
|
61 |
}
|
62 |
|
63 |
+
function composerRequire0a9906e044288a89ce7d4c5685e9efc0($fileIdentifier, $file)
|
64 |
{
|
65 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
66 |
require $file;
|
@@ -4,7 +4,7 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
|
@@ -1032,10 +1032,10 @@ class ComposerStaticInit454b25077a61c37d434b6b16c544309d
|
|
1032 |
public static function getInitializer(ClassLoader $loader)
|
1033 |
{
|
1034 |
return \Closure::bind(function () use ($loader) {
|
1035 |
-
$loader->prefixLengthsPsr4 =
|
1036 |
-
$loader->prefixDirsPsr4 =
|
1037 |
-
$loader->prefixesPsr0 =
|
1038 |
-
$loader->classMap =
|
1039 |
|
1040 |
}, null, ClassLoader::class);
|
1041 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInit0a9906e044288a89ce7d4c5685e9efc0
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
|
1032 |
public static function getInitializer(ClassLoader $loader)
|
1033 |
{
|
1034 |
return \Closure::bind(function () use ($loader) {
|
1035 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit0a9906e044288a89ce7d4c5685e9efc0::$prefixLengthsPsr4;
|
1036 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit0a9906e044288a89ce7d4c5685e9efc0::$prefixDirsPsr4;
|
1037 |
+
$loader->prefixesPsr0 = ComposerStaticInit0a9906e044288a89ce7d4c5685e9efc0::$prefixesPsr0;
|
1038 |
+
$loader->classMap = ComposerStaticInit0a9906e044288a89ce7d4c5685e9efc0::$classMap;
|
1039 |
|
1040 |
}, null, ClassLoader::class);
|
1041 |
}
|
@@ -4,7 +4,7 @@
|
|
4 |
* Plugin Name: WP RSS Aggregator
|
5 |
* Plugin URI: https://www.wprssaggregator.com/#utm_source=wpadmin&utm_medium=plugin&utm_campaign=wpraplugin
|
6 |
* Description: Imports and aggregates multiple RSS Feeds.
|
7 |
-
* Version: 4.15.
|
8 |
* Author: RebelCode
|
9 |
* Author URI: https://www.wprssaggregator.com
|
10 |
* Text Domain: wprss
|
@@ -69,7 +69,7 @@ use RebelCode\Wpra\Core\Plugin;
|
|
69 |
|
70 |
// Set the version number of the plugin.
|
71 |
if( !defined( 'WPRSS_VERSION' ) )
|
72 |
-
define( 'WPRSS_VERSION', '4.15.
|
73 |
|
74 |
if( !defined( 'WPRSS_WP_MIN_VERSION' ) )
|
75 |
define( 'WPRSS_WP_MIN_VERSION', '4.8' );
|
@@ -398,7 +398,7 @@ function wpra_modules()
|
|
398 |
'settings' => new SettingsModule(),
|
399 |
'licensing' => new LicensingModule(),
|
400 |
'upsell' => new UpsellModule(),
|
401 |
-
|
402 |
'logging' => new LoggerModule(),
|
403 |
'i18n' => new I18nModule(),
|
404 |
'twig' => new TwigModule(),
|
4 |
* Plugin Name: WP RSS Aggregator
|
5 |
* Plugin URI: https://www.wprssaggregator.com/#utm_source=wpadmin&utm_medium=plugin&utm_campaign=wpraplugin
|
6 |
* Description: Imports and aggregates multiple RSS Feeds.
|
7 |
+
* Version: 4.15.2
|
8 |
* Author: RebelCode
|
9 |
* Author URI: https://www.wprssaggregator.com
|
10 |
* Text Domain: wprss
|
69 |
|
70 |
// Set the version number of the plugin.
|
71 |
if( !defined( 'WPRSS_VERSION' ) )
|
72 |
+
define( 'WPRSS_VERSION', '4.15.2' );
|
73 |
|
74 |
if( !defined( 'WPRSS_WP_MIN_VERSION' ) )
|
75 |
define( 'WPRSS_WP_MIN_VERSION', '4.8' );
|
398 |
'settings' => new SettingsModule(),
|
399 |
'licensing' => new LicensingModule(),
|
400 |
'upsell' => new UpsellModule(),
|
401 |
+
'lorem' => new LoremModule(),
|
402 |
'logging' => new LoggerModule(),
|
403 |
'i18n' => new I18nModule(),
|
404 |
'twig' => new TwigModule(),
|