aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Clemens Neubauer <cn-tools@gmx.at> 2019-12-07 12:59:53 +0100
committerGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2019-12-07 12:59:53 +0100
commit08c6a1bdc16d7cc9717788172251c6e5eae3e443 (patch)
tree1b934bc4453a76cc1654d9c0336170dd59fde9bc
parent06ededbecc1cca9c8f5f3d1a2749be2271083736 (diff)
Extend hooks (#2704)
It adds two new hooks to have more options for influencing with extensions.
-rwxr-xr-xapp/Controllers/feedController.php12
-rw-r--r--lib/Minz/ExtensionManager.php8
2 files changed, 20 insertions, 0 deletions
diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php
index 3eb2316b8..d395f76d0 100755
--- a/app/Controllers/feedController.php
+++ b/app/Controllers/feedController.php
@@ -47,6 +47,12 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
$url = trim($url);
+ /** @var $url */
+ $url = Minz_ExtensionManager::callHook('check_url_before_add', $url);
+ if (null === $url) {
+ throw new FreshRSS_FeedNotAdded_Exception($url, $title);
+ }
+
$cat = null;
if ($new_cat_name != '') {
$new_cat_id = $catDAO->addCategory(array('name' => $new_cat_name));
@@ -274,6 +280,12 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
$updated_feeds = 0;
$nb_new_articles = 0;
foreach ($feeds as $feed) {
+ /** @var FreshRSS_Feed $feed */
+ $feed = Minz_ExtensionManager::callHook('feed_before_actualize', $feed);
+ if (null === $feed) {
+ continue;
+ }
+
$url = $feed->url(); //For detection of HTTP 301
$pubSubHubbubEnabled = $pubsubhubbubEnabledGeneral && $feed->pubSubHubbubEnabled();
diff --git a/lib/Minz/ExtensionManager.php b/lib/Minz/ExtensionManager.php
index 2240b7642..e6b8dafb0 100644
--- a/lib/Minz/ExtensionManager.php
+++ b/lib/Minz/ExtensionManager.php
@@ -15,6 +15,10 @@ class Minz_ExtensionManager {
// List of available hooks. Please keep this list sorted.
private static $hook_list = array(
+ 'check_url_before_add' => array( // function($url) -> Url | null
+ 'list' => array(),
+ 'signature' => 'OneToOne',
+ ),
'entry_before_display' => array( // function($entry) -> Entry | null
'list' => array(),
'signature' => 'OneToOne',
@@ -23,6 +27,10 @@ class Minz_ExtensionManager {
'list' => array(),
'signature' => 'OneToOne',
),
+ 'feed_before_actualize' => array( // function($feed) -> Feed | null
+ 'list' => array(),
+ 'signature' => 'OneToOne',
+ ),
'feed_before_insert' => array( // function($feed) -> Feed | null
'list' => array(),
'signature' => 'OneToOne',