Add a feed_before_insert hook

See https://github.com/FreshRSS/FreshRSS/issues/252
This commit is contained in:
Marien Fressinaud
2014-12-08 13:05:56 +01:00
parent a79107fb04
commit 188b517daa
3 changed files with 27 additions and 10 deletions

View File

@@ -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(),

View File

@@ -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());

View File

@@ -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();