<feed xmlns='http://www.w3.org/2005/Atom'>
<title>FreshRSS (Customized)/docs/fr/developers/03_Backend, branch 1.27.1</title>
<subtitle>Customized version of FreshRSS, a self-hosted RSS feed aggregator</subtitle>
<id>https://git.rdnlsmith.com/fresh-rss-custom/atom?h=1.27.1</id>
<link rel='self' href='https://git.rdnlsmith.com/fresh-rss-custom/atom?h=1.27.1'/>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/'/>
<updated>2025-09-18T21:44:17+00:00</updated>
<entry>
<title>Add `entry_before_update` and `entry_before_add` hooks (#7977)</title>
<updated>2025-09-18T21:44:17+00:00</updated>
<author>
<name>KleinMann</name>
<email>47398070+rnkln@users.noreply.github.com</email>
</author>
<published>2025-09-18T21:44:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=d670bf1e72d92c3bbeeca874f6a042f4e3a74007'/>
<id>urn:sha1:d670bf1e72d92c3bbeeca874f6a042f4e3a74007</id>
<content type='text'>
Discussion: https://github.com/FreshRSS/FreshRSS/discussions/7973

Changes proposed in this pull request:

- Add new extension hook "entry_before_add"
- Add new extension hook "entry_before_update"

How to test the feature manually:

1. Create extension that uses the hooks and confirm they are invoked correctly.

Extension to use for testing
https://github.com/rnkln/freshrss-xExtension-Discord/pull/2
</content>
</entry>
<entry>
<title>Exposed the reading modes for extensions through Minz (#7668)</title>
<updated>2025-06-21T22:36:32+00:00</updated>
<author>
<name>Stefan</name>
<email>11146296+tryallthethings@users.noreply.github.com</email>
</author>
<published>2025-06-21T22:36:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=51298cd6bc100b1cc6508abb602a59c01a9e2c04'/>
<id>urn:sha1:51298cd6bc100b1cc6508abb602a59c01a9e2c04</id>
<content type='text'>
* + Exposed the reading modes for extensions through Minz. Now extensions can add a custom view mode. Graceful fallback to normal view in case the extension was disabled without resetting the view_mode through the uninstall method. In that case the user will be informed via Minz_Request::setBadNotification that the view has been reset to normal.
+ Added translation strings for de, en and en-us for the notification

* + Added missing, generated translations

* Simplify indexAction, performance

* Minor settings htmlspecialchars

* i18n: fr

* Minor wording

* Doc

* Fix i18n

---------

Co-authored-by: Alexandre Alapetite &lt;alexandre@alapetite.fr&gt;</content>
</entry>
<entry>
<title>Add API endpoint for extensions (#7576)</title>
<updated>2025-06-02T22:16:17+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-06-02T22:16:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=cc35094bb261cb3185def89d745317fa756560ee'/>
<id>urn:sha1:cc35094bb261cb3185def89d745317fa756560ee</id>
<content type='text'>
* Add API endpoint for extensions
Useful for https://github.com/FreshRSS/FreshRSS/issues/7572

* Support PATH_INFO
Now also support being invoked like `/api/misc.php/Extension%20Name/`

* More  documentation</content>
</entry>
<entry>
<title>Secure serving of user files from extensions (#7495)</title>
<updated>2025-04-07T06:47:42+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2025-04-07T06:47:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=0c33d2713957eaf6cc0222150df7ebbcb53beaed'/>
<id>urn:sha1:0c33d2713957eaf6cc0222150df7ebbcb53beaed</id>
<content type='text'>
* Secure serving of user files from extensions
fix https://github.com/FreshRSS/FreshRSS/issues/4930

* More fixes

* Typo</content>
</entry>
<entry>
<title>Add extension hook simplepie_after_init (#7007)</title>
<updated>2024-11-21T07:22:13+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2024-11-21T07:22:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=278181572e56283827aac10a66bb554f4b57b0a1'/>
<id>urn:sha1:278181572e56283827aac10a66bb554f4b57b0a1</id>
<content type='text'>
* 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</content>
</entry>
<entry>
<title>Add hook entries_favorite (#6880)</title>
<updated>2024-10-14T07:35:41+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2024-10-14T07:35:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=df763eb8b34b9823511d93ec078d4644d3e6ff64'/>
<id>urn:sha1:df763eb8b34b9823511d93ec078d4644d3e6ff64</id>
<content type='text'>
Called when entries are starred or unstarred</content>
</entry>
<entry>
<title>Add core extensions: UserCSS, UserJS (#6267)</title>
<updated>2024-06-05T18:58:19+00:00</updated>
<author>
<name>hkcomori</name>
<email>hkcomori@gmail.com</email>
</author>
<published>2024-06-05T18:58:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=99b1d551e61adb5cbd014677f151f443b0c6c35f'/>
<id>urn:sha1:99b1d551e61adb5cbd014677f151f443b0c6c35f</id>
<content type='text'>
* Copy CustomCSS and CustomJS

Original: FreshRSS/Extensions@9f21984

* Rename CustomCSS -&gt; UserCSS

* Rename CustomJS -&gt; UserJS

* Change metadata

The name is used for the directory where the configuration
is stored and should not contain spaces.
Since the name was changed, I reset the version number and
changed to semantic versioning.

* Change data directory

Changed the location of the configuration file to
the user data directory, because it is not `static`.
That way, the user's configurations are gathered
in the user directory, which makes it easier to backup them.

* Edit documentations

Remove procedures to install the extension
because it is no longer necessary.

* Fix wrong variables in the configuration page

Remove permission error indication because the storage location
is now in the user data directory managed by the application.

* Remove the `xExtension-` prefix for core extensions

* Set version to 1.0.0 for UserCSS, UserJS

* Refactoring

* Remove unused variables

* Remove version 0.0.1 in Changelog

Version 0.0.1 will not be merged, so only version 1.0.0 will remain.

* public getFileUrl

* Revert more protected

* Use entrypoint for extension user path instead of name

* Add space to extension name

* Add `#[\Override]`

* Add explains of User CSS and User JS to docs

* Remove README of User CSS and User JS

* Add migration code for extension user path

---------

Co-authored-by: Alexandre Alapetite &lt;alexandre@alapetite.fr&gt;</content>
</entry>
<entry>
<title>Correct casing for GitHub (#6460)</title>
<updated>2024-05-15T06:58:10+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2024-05-15T06:58:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=2ed91026fcfef83ce5ef466a15e078229a106a6f'/>
<id>urn:sha1:2ed91026fcfef83ce5ef466a15e078229a106a6f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>PHP 8.3 #[\Override] (#6273)</title>
<updated>2024-04-10T13:33:43+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2024-04-10T13:33:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=350edf398c55b472e19a3017de9b4d2d3420b9e4'/>
<id>urn:sha1:350edf398c55b472e19a3017de9b4d2d3420b9e4</id>
<content type='text'>
* PHP 8.3 #[\Override]
https://php.watch/versions/8.3/override-attr

With PHPStan `checkMissingOverrideMethodAttribute` https://phpstan.org/config-reference#checkmissingoverridemethodattribute

And modified the call to phpstan-next on the model of https://github.com/FreshRSS/Extensions/pull/228 (more robust than the find method, which gave some strange errors)

* Update extension example accordingly</content>
</entry>
<entry>
<title>New extension hook entry_auto_read (#5505)</title>
<updated>2023-07-05T09:00:26+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2023-07-05T09:00:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=1db606bc1b6cf25d9b9c4bef362acdb964ce1e8a'/>
<id>urn:sha1:1db606bc1b6cf25d9b9c4bef362acdb964ce1e8a</id>
<content type='text'>
* New extension hook entry_auto_read
For extensions to be notified of articles being automatically marked as read for various reasons

* Documentation + entry_auto_unread</content>
</entry>
</feed>
