From 278181572e56283827aac10a66bb554f4b57b0a1 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Thu, 21 Nov 2024 08:22:13 +0100 Subject: Add extension hook simplepie_after_init (#7007) * Add extension hook simplepie_after_init fix https://github.com/FreshRSS/FreshRSS/issues/7006 * Add documentation note * fix doc get_headers * Syntax void * Forgotten code --- app/Models/Feed.php | 1 + docs/en/developers/03_Backend/05_Extensions.md | 5 ++++- docs/fr/developers/03_Backend/05_Extensions.md | 6 ++++-- lib/Minz/ExtensionManager.php | 10 +++++++--- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/app/Models/Feed.php b/app/Models/Feed.php index 03c7cdd74..2aa0baa9d 100644 --- a/app/Models/Feed.php +++ b/app/Models/Feed.php @@ -372,6 +372,7 @@ class FreshRSS_Feed extends Minz_Model { } Minz_ExtensionManager::callHook('simplepie_before_init', $simplePie, $this); $simplePieResult = $simplePie->init(); + Minz_ExtensionManager::callHook('simplepie_after_init', $simplePie, $this, $simplePieResult); if ($simplePieResult === false || $simplePie->get_hash() === '' || !empty($simplePie->error())) { $errorMessage = $simplePie->error(); diff --git a/docs/en/developers/03_Backend/05_Extensions.md b/docs/en/developers/03_Backend/05_Extensions.md index f83d8eef7..2a4c4dcf0 100644 --- a/docs/en/developers/03_Backend/05_Extensions.md +++ b/docs/en/developers/03_Backend/05_Extensions.md @@ -178,7 +178,10 @@ The following events are available: * `nav_menu` (`function() -> string`): will be executed if the navigation was built. * `nav_reading_modes` (`function($reading_modes) -> array | null`): **TODO** add documentation. * `post_update` (`function(none) -> none`): **TODO** add documentation. -* `simplepie_before_init` (`function($simplePie, $feed) -> none`): **TODO** add documentation. +* `simplepie_after_init` (`function(\SimplePie\SimplePie $simplePie, FreshRSS_Feed $feed, bool $result): void`): Triggered after fetching an RSS/Atom feed with SimplePie. Useful for instance to get the HTTP response headers (e.g. `$simplePie->data['headers']`). +* `simplepie_before_init` (`function(\SimplePie\SimplePie $simplePie, FreshRSS_Feed $feed): void`): Triggered before fetching an RSS/Atom feed with SimplePie. + +> ℹ️ Note: the `simplepie_*` hooks are only fired for feeds using SimplePie via pull, i.e. normal RSS/Atom feeds. This excludes WebSub (push), and the various HTML or JSON Web scraping methods. ### Injecting CDN content diff --git a/docs/fr/developers/03_Backend/05_Extensions.md b/docs/fr/developers/03_Backend/05_Extensions.md index 8d2866f26..af6c7911a 100644 --- a/docs/fr/developers/03_Backend/05_Extensions.md +++ b/docs/fr/developers/03_Backend/05_Extensions.md @@ -257,8 +257,10 @@ The following events are available: * `nav_reading_modes` (`function($reading_modes) -> array | null`): **TODO** add documentation * `post_update` (`function(none) -> none`): **TODO** add documentation -* `simplepie_before_init` (`function($simplePie, $feed) -> none`): **TODO** - add documentation +* `simplepie_after_init` (`function(\SimplePie\SimplePie $simplePie, FreshRSS_Feed $feed, bool $result): void`): Triggered after fetching an RSS/Atom feed with SimplePie. Useful for instance to get the HTTP response headers (e.g. `$simplePie->data['headers']`). +* `simplepie_before_init` (`function(\SimplePie\SimplePie $simplePie, FreshRSS_Feed $feed): void`): Triggered before fetching an RSS/Atom feed with SimplePie. + +> ℹ️ Note: the `simplepie_*` hooks are only fired for feeds using SimplePie via pull, i.e. normal RSS/Atom feeds. This excludes WebSub (push), and the various HTML or JSON Web scraping methods. ### Writing your own configure.phtml diff --git a/lib/Minz/ExtensionManager.php b/lib/Minz/ExtensionManager.php index b3756372e..976dddb82 100644 --- a/lib/Minz/ExtensionManager.php +++ b/lib/Minz/ExtensionManager.php @@ -90,10 +90,14 @@ final class Minz_ExtensionManager { 'list' => array(), 'signature' => 'NoneToNone', ), - 'simplepie_before_init' => array( // function($simplePie, $feed) -> none - 'list' => array(), + 'simplepie_after_init' => [ // function(\SimplePie\SimplePie $simplePie, FreshRSS_Feed $feed, bool $result): void + 'list' => [], 'signature' => 'PassArguments', - ), + ], + 'simplepie_before_init' => [ // function(\SimplePie\SimplePie $simplePie, FreshRSS_Feed $feed): void + 'list' => [], + 'signature' => 'PassArguments', + ], ]; /** Remove extensions and hooks from a previous initialisation */ -- cgit v1.2.3