aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2014-12-08 13:05:56 +0100
committerGravatar Marien Fressinaud <dev@marienfressinaud.fr> 2014-12-08 13:05:56 +0100
commit188b517daa174ce494f31dec02ae2cff122488ff (patch)
tree1d80739a4b51a8236cfb8b7fecbd8769550c7087
parenta79107fb04bab2fa9537bd6a0101213c1bc5d4cf (diff)
Add a feed_before_insert hook
See https://github.com/FreshRSS/FreshRSS/issues/252
-rwxr-xr-xapp/Controllers/feedController.php6
-rw-r--r--app/Controllers/importExportController.php30
-rw-r--r--lib/Minz/ExtensionManager.php1
3 files changed, 27 insertions, 10 deletions
diff --git a/app/Controllers/feedController.php b/app/Controllers/feedController.php
index 0a7edbee3..7dda3840e 100755
--- a/app/Controllers/feedController.php
+++ b/app/Controllers/feedController.php
@@ -138,6 +138,12 @@ class FreshRSS_feed_Controller extends Minz_ActionController {
$feed->_category($cat);
$feed->_httpAuth($http_auth);
+ // Call the extension hook
+ $feed = Minz_ExtensionManager::callHook('feed_before_insert', $feed);
+ if (is_null($feed)) {
+ Minz_Request::bad(_t('feed_not_added', $feed->name()), $url_redirect);
+ }
+
$values = array(
'url' => $feed->url(),
'category' => $feed->category(),
diff --git a/app/Controllers/importExportController.php b/app/Controllers/importExportController.php
index c67b30431..52df5bf8b 100644
--- a/app/Controllers/importExportController.php
+++ b/app/Controllers/importExportController.php
@@ -259,10 +259,16 @@ class FreshRSS_importExport_Controller extends Minz_ActionController {
$feed->_website($website);
$feed->_description($description);
- // addFeedObject checks if feed is already in DB so nothing else to
- // check here
- $id = $this->feedDAO->addFeedObject($feed);
- $error = ($id === false);
+ // Call the extension hook
+ $feed = Minz_ExtensionManager::callHook('feed_before_insert', $feed);
+ if (!is_null($feed)) {
+ // addFeedObject checks if feed is already in DB so nothing else to
+ // check here
+ $id = $this->feedDAO->addFeedObject($feed);
+ $error = ($id === false);
+ } else {
+ $error = true;
+ }
} catch (FreshRSS_Feed_Exception $e) {
Minz_Log::warning($e->getMessage());
$error = true;
@@ -427,13 +433,17 @@ class FreshRSS_importExport_Controller extends Minz_ActionController {
$feed->_name($name);
$feed->_website($website);
- // addFeedObject checks if feed is already in DB so nothing else to
- // check here.
- $id = $this->feedDAO->addFeedObject($feed);
+ // Call the extension hook
+ $feed = Minz_ExtensionManager::callHook('feed_before_insert', $feed);
+ if (!is_null($feed)) {
+ // addFeedObject checks if feed is already in DB so nothing else to
+ // check here.
+ $id = $this->feedDAO->addFeedObject($feed);
- if ($id !== false) {
- $feed->_id($id);
- $return = $feed;
+ if ($id !== false) {
+ $feed->_id($id);
+ $return = $feed;
+ }
}
} catch (FreshRSS_Feed_Exception $e) {
Minz_Log::warning($e->getMessage());
diff --git a/lib/Minz/ExtensionManager.php b/lib/Minz/ExtensionManager.php
index 5491c7cf6..9e6a3155a 100644
--- a/lib/Minz/ExtensionManager.php
+++ b/lib/Minz/ExtensionManager.php
@@ -17,6 +17,7 @@ class Minz_ExtensionManager {
private static $hook_list = array(
'entry_before_display' => array(), // function($entry) -> Entry | null
'entry_before_insert' => array(), // function($entry) -> Entry | null
+ 'feed_before_insert' => array(), // function($feed) -> Feed | null
);
private static $ext_to_hooks = array();