Procházet zdrojové kódy

Add a feed_before_insert hook

See https://github.com/FreshRSS/FreshRSS/issues/252
Marien Fressinaud před 11 roky
rodič
revize
188b517daa

+ 6 - 0
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(),

+ 20 - 10
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());

+ 1 - 0
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();