summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2018-06-13 09:27:02 +0200
committerGravatar GitHub <noreply@github.com> 2018-06-13 09:27:02 +0200
commit031acde003b85ae34a4996d0c02fdc41ffae5515 (patch)
treeec6817aaff32613856330a50058b1fa642cfc778
parentc0f2df3ef0de33e9b07269f6db887c373e45192e (diff)
Fix extension hook for updated articles (#1932)
* Fix extension hook for updated articles https://github.com/FreshRSS/FreshRSS/issues/1926 * Enable extensions during PubSubHubbub * A little array protection * Changelog 1926 https://github.com/FreshRSS/FreshRSS/issues/1926 https://github.com/FreshRSS/FreshRSS/pull/1932 * Add null check
-rw-r--r--CHANGELOG.md1
-rwxr-xr-xapp/Controllers/feedController.php9
-rw-r--r--lib/Minz/ExtensionManager.php3
-rw-r--r--p/api/pshb.php6
4 files changed, 18 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 30779d42f..0ffd9c373 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@
* Built-in extension to fix Tumblr feeds from European Union due to GDPR [#1894](https://github.com/FreshRSS/FreshRSS/issues/1894)
* Bug fixing
* Fix bug in case of bad i18n in extensions [#1797](https://github.com/FreshRSS/FreshRSS/issues/1797)
+ * Fix extension callback for updated articles and PubSubHubbub [#1926](https://github.com/FreshRSS/FreshRSS/issues/1926)
* Fix regression in fetching full articles content [#1917](https://github.com/FreshRSS/FreshRSS/issues/1917)
* Fix several bugs in the new Fever API [#1930](https://github.com/FreshRSS/FreshRSS/issues/1930)
* Updated sharing to Mastodon [#1904](https://github.com/FreshRSS/FreshRSS/issues/1904)
diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php
index ca85e7cb8..ec88156f9 100755
--- a/app/Controllers/feedController.php
+++ b/app/Controllers/feedController.php
@@ -351,13 +351,20 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
//This entry already exists and is unchanged. TODO: Remove the test with the zero'ed hash in FreshRSS v1.3
$oldGuids[] = $entry->guid();
} else { //This entry already exists but has been updated
- //Minz_Log::debug('Entry with GUID `' . $entry->guid() . '` updated in feed ' . $feed->id() .
+ //Minz_Log::debug('Entry with GUID `' . $entry->guid() . '` updated in feed ' . $feed->url() .
//', old hash ' . $existingHash . ', new hash ' . $entry->hash());
$mark_updated_article_unread = $feed->attributes('mark_updated_article_unread') !== null ? (
$feed->attributes('mark_updated_article_unread')
) : FreshRSS_Context::$user_conf->mark_updated_article_unread;
$needFeedCacheRefresh = $mark_updated_article_unread;
$entry->_isRead(FreshRSS_Context::$user_conf->mark_updated_article_unread ? false : null); //Change is_read according to policy.
+
+ $entry = Minz_ExtensionManager::callHook('entry_before_insert', $entry);
+ if ($entry === null) {
+ // An extension has returned a null value, there is nothing to insert.
+ continue;
+ }
+
if (!$entryDAO->inTransaction()) {
$entryDAO->beginTransaction();
}
diff --git a/lib/Minz/ExtensionManager.php b/lib/Minz/ExtensionManager.php
index 3914217ac..b086c4001 100644
--- a/lib/Minz/ExtensionManager.php
+++ b/lib/Minz/ExtensionManager.php
@@ -194,6 +194,9 @@ class Minz_ExtensionManager {
* @param string[] $ext_list the names of extensions we want to load.
*/
public static function enableByList($ext_list) {
+ if (!is_array($ext_list)) {
+ return;
+ }
foreach ($ext_list as $ext_name => $ext_status) {
if (is_int($ext_name)) { //Legacy format int=>name
self::enable($ext_status);
diff --git a/p/api/pshb.php b/p/api/pshb.php
index 57a7bb0dd..ac78bfd74 100644
--- a/p/api/pshb.php
+++ b/p/api/pshb.php
@@ -116,6 +116,8 @@ if ($self !== base64url_decode($canonical64)) {
$self = base64url_decode($canonical64);
}
+Minz_ExtensionManager::init();
+
$nb = 0;
foreach ($users as $userFilename) {
$username = basename($userFilename, '.txt');
@@ -132,6 +134,10 @@ foreach ($users as $userFilename) {
join_path(FRESHRSS_PATH, 'config-user.default.php'));
new Minz_ModelPdo($username); //TODO: FIXME: Quick-fix while waiting for a better FreshRSS() constructor/init
FreshRSS_Context::init();
+ if (FreshRSS_Context::$user_conf != null) {
+ Minz_ExtensionManager::enableByList(FreshRSS_Context::$user_conf->extensions_enabled);
+ }
+
list($updated_feeds, $feed, $nb_new_articles) = FreshRSS_feed_Controller::actualizeFeed(0, $self, false, $simplePie);
if ($updated_feeds > 0 || $feed != false) {
$nb++;