aboutsummaryrefslogtreecommitdiff
path: root/app/Controllers
AgeCommit message (Collapse)Author
2020-12-28Fix tag management translation (#3292)Gravatar Alexis Degrugillier
Before, feedback messages were not translated. Now, they are.
2020-12-26bump default logout from 30 days to 3 months (#3170)Gravatar Martin
* bump default logout from 30 to 365 days * * Change cookie duration to constant * Change cookie duration to three months * use class * use 90 days (otherwise login form says 91.3 days) * change class * also this works now Co-authored-by: Martin Rys <martin@rys.pw> Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>
2020-12-26Better OPML import of feeds in multiple categories (#3286)Gravatar Alexandre Alapetite
#fix https://github.com/FreshRSS/FreshRSS/issues/3284 Helps https://github.com/FreshRSS/FreshRSS/issues/1989 In OPMLs files in which feeds are listed several times, favour the version in a category instead of in no category.
2020-12-26Fix user queries with labels (#3285)Gravatar Alexis Degrugillier
Before user queries with labels were not translated. Actually, it was not even processed. Now those user queries are translated properly. See #3215
2020-10-06Minz allow parallel sessions (#3096)Gravatar Alexandre Alapetite
* Minz allow parallel sessions #fix https://github.com/FreshRSS/FreshRSS/issues/3093 * Array optimisation * Array optimisation missing * Reduce direct access to $_SESSION except in install process * Fix session start headers warning * Use cookie only the first time the session is started: `PHP Warning: session_start(): Cannot start session when headers already sent in /var/www/FreshRSS/lib/Minz/Session.php on line 39` * New concept of volatile session for API calls Optimisation: do not use cookies or local storage at all for API calls without a Web session Fix warning: ``` PHP Warning: session_destroy(): Trying to destroy uninitialized session in Unknown on line 0 ``` * Only call Minz_Session::init once in our index It was called twice (once indirectly via FreshRSS->init()) * Whitespace * Mutex for notifications Implement mutex for notifications https://github.com/FreshRSS/FreshRSS/pull/3208#discussion_r499509809 * Typo * Install script is not ready for using Minz_Session
2020-10-06Use of existing tag name via input field (#3213)Gravatar knasdk
* Use of existing tag name via input field Use existing tag name, when tag name is typed into tag list's text field * Indentation mistake Just an indentation correction * Final correction Missed line 35.
2020-10-05Minz: Attach a notification to a request (#3208)Gravatar Alexandre Alapetite
* Minz: Attach a notification to a request Notifications should be attached to a request, not to a global session. Fix https://github.com/FreshRSS/FreshRSS/pull/3096#issuecomment-654891906 Prepare https://github.com/FreshRSS/FreshRSS/pull/3096 * Rename array * Avoid string constants Implement https://github.com/FreshRSS/FreshRSS/pull/3208#issuecomment-703243863 * Improved logic * Simplify storage https://github.com/FreshRSS/FreshRSS/pull/3208#discussion_r499511213 * Fix notification bug in configuration/system
2020-09-17Fix CLI api_password (#3179)Gravatar Alexandre Alapetite
* Fix CLI api_password #fix https://github.com/FreshRSS/FreshRSS/issues/3177 Fix regression from https://github.com/FreshRSS/FreshRSS/pull/2675 * Update cli/_update-or-create-user.php Co-authored-by: oupala <oupala@users.noreply.github.com> Co-authored-by: oupala <oupala@users.noreply.github.com>
2020-08-29Trim whitespace for feed passwords (#3158)Gravatar Alexandre Alapetite
We output a space by default in the user interface for setting feed passwords, in order to prevent aggressive password autocompletion https://github.com/FreshRSS/FreshRSS/pull/881 However, user might not always override this white space when entering the password. So here we trim. (I believe legitimate leading / trailing spaces in passwords are sufficiently rare not to be a problem)
2020-07-23Add tag management page (#3121)Gravatar Alexis Degrugillier
The new page allows to create, delete and rename tags. See #3058
2020-07-14Add a way to disable shortcuts (#3114)Gravatar Alexis Degrugillier
When the user do not want to use a shortcut, he can let the shortcut value empty. This will save an empty configuration thus disabling the shortcut. The load default action allows to use default shortcut only for disabled shortcuts. See #3110
2020-06-21FeedMe table manage feeds + fix warning addFeed (#3075)Gravatar Alexandre Alapetite
FeedMe is able to add/remove subscriptions. Fix minor bug introduced by https://github.com/FreshRSS/FreshRSS/pull/1731 If the category ID is provided, we must first search for the existing category before trying to add a category with the provided name. Fix: ``` SQL error addCategory: ["23000",19,"UNIQUE constraint failed: category.name"] ```
2020-06-20Fetch feed name / website / description if empty (#3071)Gravatar Alexandre Alapetite
#fix https://github.com/FreshRSS/FreshRSS/issues/3067
2020-06-14Add a way to disable/enable users (#3056)Gravatar Alexis Degrugillier
If you want to block users without deleting their account, you can now disable them from the interface.
2020-06-13tec: Refactor the export feature (#3045)Gravatar Marien Fressinaud
Even if the issue #3035 seemed pretty simple at a first glance, it was more complicated than I expected. Because we send CSP headers AFTER running the controller actions, it means we can't "echo" any content from the controller. It's in fact a good practice, but it was easier at the time we developed the feature. To fix that, the only thing I had to do was to move the `print()` and `readfile()` function into the view. The problem was that we needed to output the content from the CLI too. Then, things became more complicated. I decided to extract the export-related methods in a `FreshRSS_Export_Service` class, in order to use it from both the controller and the CLI. It was an opportunity to refactor the whole feature in order to make it a bit more linear and easy to read. Reference: https://github.com/FreshRSS/FreshRSS/issues/3035
2020-06-06Fix user queries when they contain " (#3037)Gravatar Alexis Degrugillier
Before, the user queries were working filter-wise but they failed at being displayed properly in the configuration page. Thus they were stored without the search param. Now, the search is URL encoded to avoid that kind of behavior and keep the search param through out the user query's life.
2020-06-05Add missing translations (#3034)Gravatar Alexis Degrugillier
* Add missing translations * Add a simple way to check if an i18n key exists There is a rule in the makefile to access it directly
2020-06-05Add language detection when the user is not logged in (#3022)Gravatar Alexis Degrugillier
Before, when the user was not logged in, pages where translated with the '_' user language. Now, they are translated with the user preferred language if there is one supported by FreshRSS or with the system default language.
2020-06-05Change add feed action (#3027)Gravatar Alexis Degrugillier
* Docker Alpine 3.12 (#3025) https://alpinelinux.org/posts/Alpine-3.12.0-released.html With PHP 7.3.18 (from 7.3.17) (and Apache 2.4.43 unchanged). No other significant change spotted * Ensure feed attributes are used before load Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2020-05-21Fix fetch preview (#2993)Gravatar Alexandre Alapetite
* Fix fetch preview #fix https://github.com/FreshRSS/FreshRSS/issues/2923 In MariaDB / MySQL, we cannot start a new query if we have not consumed the previous buffered query fully. * Fix for reload * Typo in comment
2020-05-18Fix nav_menu mark-as-read (#2909)Gravatar Alexandre Alapetite
* Fix nav_menu mark-as-read #Fix https://github.com/FreshRSS/FreshRSS/issues/2905 Fix regression from https://github.com/FreshRSS/FreshRSS/pull/2588 We need info about the first item (id_max) before being able to output nav_menu. Before https://github.com/FreshRSS/FreshRSS/pull/2588 we used to output everything in memory before starting to produce an output. Now that we stream the output, we need a temporary buffer until we have received the first item/article. * Repair loading page * Simplify CSS Make it work in Chrome as well * Lint * Partial revert * Base max_id solely on current time
2020-05-17Stream instead of memory copy of SimplePie entries (#2972)Gravatar Alexandre Alapetite
* Stream instead of memory copy of SimplePie entries https://github.com/FreshRSS/FreshRSS/issues/2952 * Undo lines delete * Typo * Remove unaccessible code https://github.com/FreshRSS/FreshRSS/pull/2972/files#r425624163 * Back-compatibility for Feed->entries https://github.com/FreshRSS/FreshRSS/pull/2972/files#r425631913
2020-05-10Attempt to reduce max memory usage during actualize (#2955)Gravatar Alexandre Alapetite
* Attempt to reduce max memory usage during actualize #Fix https://github.com/FreshRSS/FreshRSS/issues/2952 * Use memory_get_peak_usage
2020-05-092914 show last login date (#2936)Gravatar equinoxmatt
* Add new last_login param to default user config * Add English translation strings for last login feature * Update last_login when user successfully logs in. * Add last_login column to manage users screen * Add last_login to user details screen * Remove accidental docker-compose.yml * Fix whitespace * Use last modified time for config file * Remove last_login field from default user config * Touch user configuration file upon succesful login * Add translations with todos * Fix whitespace * Use last_user_activity * Semi-colomn Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2020-04-30Fix filenames for files exported with CLI (#2932)Gravatar Marien Fressinaud
Filenames were created with the username of the current user. However, when we export the files with the CLI, the current user is "_". This commit makes the username always required in the `exportFile` method so we make sure to always manipulate a real value. Consequently, the filenames can be formatted correctly. Obviously, this has absolutely no impacts since the CLI doesn't consider the HTTP headers. It just makes things a bit more clear. It's a first step to remove the concept of "default user".
2020-04-24WebSub move fixes (#2922)Gravatar Alexandre Alapetite
Small fixes related to when WebSub changes address: * When unsubscribing, one must use the current/old address, not the newly found selfUrl; * This change https://github.com/FreshRSS/FreshRSS/pull/2659#discussion_r347263068 was wrong, so reverted to the first version. We must obey the rules also for feeds for which the initial WebSub enabling is not finished, otherwise we never have a chance to redirect the feed to the proper selfUrl.
2020-04-17A wrong login must return HTTP 403 (#2903)Gravatar Alexandre Alapetite
* A wrong login must produce HTTP 403 #fix https://github.com/FreshRSS/FreshRSS/issues/2901 https://github.com/FreshRSS/FreshRSS/pull/2794/files#r389319248 * Just for consistency
2020-04-16Option to control which categories to unfold (#2888)Gravatar Alexandre Alapetite
#fix https://github.com/FreshRSS/FreshRSS/issues/2324
2020-04-14Reduce DB locks (#2899)Gravatar Alexandre Alapetite
Do not lock the DB to update it when there is nothing to commit. This should reduce the risk of seeing some `database is locked` errors.
2020-04-01Fix fetch content for complex HEAD (#2867)Gravatar Alexandre Alapetite
* Fix contentSelectorPreviewAction Was not compatible with https://github.com/FreshRSS/FreshRSS/pull/2588 * Fix lib_phpQuery for <head ...> #fix https://github.com/FreshRSS/FreshRSS/issues/2864 * Replace split() by explode() for PHP7 compatibility https://php.net/str-split * Fix for document with a `<head>` tag more complicated, like `<head profile="http://www.w3.org/1999/xhtml/vocab">`
2020-03-22More inactive cutoffs (#2831)Gravatar Anton Smirnov
* Fill additional cutoffs * Update phpdoc * Add translation strings * Update app/i18n/fr/gen.php Co-Authored-By: Alexandre Alapetite <alexandre@alapetite.fr> * Add Dutch translation Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr> Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>
2020-03-08Improve login and registration pages (#2794)Gravatar Marien Fressinaud
* Keep the user on login page on failure * Show an error if username already exists * Check the password format in the backend * Return a better message if username is invalid * Add a title to the login page * wip: Improve look of login and register pages * Set a capital M in username help message On the registration page, username tip started with a minuscule, while the password tip started with a capital. * Change message if username is taken
2020-02-29Better performance with yield (#2588)Gravatar Alexandre Alapetite
* Better performance with yield Largely decrease the time to first byte, and reduced memory consumtion. Before, we used to make several copies in memory of the whole list of articles before sending them to the client. Now streamed as they are processed. * Travis
2020-02-13Enhance content path feature (#2778)Gravatar Julien-Pierre Avérous
- Add a maintenance section to be able to clear cache and force reload a feed. - Add an icon next to path field to show a pop-up with the result of the content path. Co-authored-by: Frans de Jonge <fransdejonge@gmail.com> Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr> Co-authored-by: Marien Fressinaud <dev@marienfressinaud.fr>
2020-01-16Show Favorites as Unread (#2766)Gravatar Offerel
Co-authored-by: Frans de Jonge <fransdejonge@gmail.com> Co-authored-by: Marien Fressinaud <dev@marienfressinaud.fr>
2020-01-06Add an admin flag on users (#2709)Gravatar Alexis Degrugillier
Now FRSS supports more than one admin. Admins have the same rights as the default user. Admins can promote or demote other users. The default user is considered as an admin even if it does not have the admin flag enabled. See #2096
2019-12-22tec: Allow to change CSP header from controllersGravatar Marien Fressinaud
For an extension, I needed to call a script from an external domain. Unfortunately, the CSP headers didn't allow this domain and I had to patch manually the FreshRSS FrontController for my extension. It's obviously not a long-term solution since it has nothing to do in the core of FRSS, and I don't want to apply this patch manually at each update. With this patch, I allow changing the CSP header from inside the controller actions. It allows extensions to modify headers. It's also an opportunity to remove a bit of code from the FrontController. I wasn't happy with the previous implementation anyhow. Reference: https://github.com/flusio/xExtension-Flus/commit/ed12d56#diff-ff12e33ed31b23bda327499fa6e84eccR143
2019-12-07Extend hooks (#2704)Gravatar Clemens Neubauer
It adds two new hooks to have more options for influencing with extensions.
2019-12-07Add user language displayGravatar Alexis Degrugillier
When managing users, I've added the language they selected to be able to communicate with them with the selected language (if I know it). It could be useful when managing a community or a paid service.
2019-12-03Separate the update API password endpoint (#2675)Gravatar Marien Fressinaud
* Extract hashPassword method from userController * Extract and refactor fever key-related methods * Move update of API password to dedicated action * Simplify the controller by refactoring feverUtil * Add locales
2019-12-03Upgrade user management page (#2417)Gravatar Alexis Degrugillier
Before, the use of the user management page was a little bit tedious when there was many users. One must select a user to view some metrics, to update it, or to delete it. Now, the view is clearer because it shows all users at once with their metrics. I introduced a detail page that repeats the metrics but also allow to purge the user's feeds, to update or delete the user. This is the first step to make that page more useful and user-friendly. I have in mind to add a pager for when there is a lot of users, a metric to know when was the last time the user was using the application, and a flag to know if the user has admin rights. See #2096 and #2504 for ideas and inspiration
2019-11-26FIX email token check if not in user-config (#2686)Gravatar Purexo
* FIX email token check if not in user-config * fix missing semicolon
2019-11-21Do not obbey rel=self if WebSub is disabled (#2659)Gravatar Alexandre Alapetite
* Do not obbey rel=self if WebSub is disabled https://github.com/FreshRSS/FreshRSS/issues/2654 * Correct variable https://github.com/FreshRSS/FreshRSS/pull/2659#discussion_r347552063 * Update app/Controllers/feedController.php
2019-11-18Add log in fever api saving process (#2664)Gravatar Alexis Degrugillier
Before, there was no user log when the fever api credential saving process was failing. There was one though for the admin user but it did not appear in the interface. Now, there is a user log showing what the problem is. The admin log is still there but catch only unknown errors. See #2663
2019-11-08Rename sharing action (#2643)Gravatar Alexis Degrugillier
Before, some ad-blocker rules were preventing to display the sharing page because of its name. I've renamed that page to integration but kept every thing else identical. So it's still called sharing through out the application. If needed, this can be addressed as well. See #2509 and #2419
2019-11-04Better git fetch (#2626)Gravatar Alexandre Alapetite
Related to https://github.com/FreshRSS/FreshRSS/pull/2625 If for some reasons branches have diverged:, e.g.: ``` $ git status -sb --porcelain remote ## dev...origin/dev [ahead 4, behind 1] ```
2019-11-04Default or custom OPML (#2627)Gravatar Alexandre Alapetite
* Default or custom OPML Fix https://github.com/FreshRSS/FreshRSS/issues/2075 Replaces https://github.com/FreshRSS/FreshRSS/pull/2515 https://github.com/FreshRSS/FreshRSS/issues/2514 Uses the local ./data/opml.xml if it exists, otherwise ./opml.default.xml * Better message * Move to controller
2019-11-02Git fetch+reset instead of clean+fetch+merge (#2625)Gravatar Alexandre Alapetite
Fix https://github.com/FreshRSS/FreshRSS/issues/2619 Avoid potentially dangerous git clean, and use more robust fetch + reset strategy instead
2019-10-26Add category order (#2592)Gravatar Alexis Degrugillier
* Add category order Each category has a new 'priority' attribute. It is used to sort categories in views. Categories with the same priority are sorted alphabetically. Categories with no priority are displayed after those with one. For example, if we have the following categories: - A (priority: 2) - B (no priority) - C (priority: 1) - D (priority: 2) - E (no priority) - F (priority: 1) They will be displayed in the following order: - C - F - A - D - B - E See #190 * Shorten help text It took too much room and will not be so necessary once we have drag & drop
2019-10-23Feature/new archiving (#2335)Gravatar Alexis Degrugillier
* Change archiving config page layout I've changed some wording and moved actions into a maintenance section. * Update purge action Now we have more control on the purge action. The configuration allows us to choose what to keep and what to discard in a more precise way. At the moment, the configuration applies for all feeds. * Add purge configuration on feed level Now the extend purge configuration is available on feed level. It is stored as attributes and will be used in the purge action. * Update purge action Now the purge action uses the feed configuration if it exists and defaults on user configuration if not. * Add empty option in period list * Fix configuration warnings * Add archiving configuration on categories See #2369 * Add user info back * Add explanations in UI * Fixes for SQLite + error + misc. * Fix invalid feed reference * Short array syntax Only for new code, so far * Fix prefix error * Query performance, default values Work in progress * Fix default values and confirm before leaving Form cancel and confirm changes before leaving were broken. And start taking advantage of the short echo syntax `<?= ?>` as we have moved to PHP 5.4+ * More work * Tuning SQL * Fix MariaDB + performance issue * SQL performance * Fix SQLite bug * Fix some attributes JSON encoding bugs Especially for SQLite export/import * More uniform, fix bugs More uniform between global, category, feed settings * Drop special cases for old articles during refresh Instead will use lastSeen date with the new archiving logic. This was generating problems anyway https://github.com/FreshRSS/FreshRSS/issues/2154 * Draft drop index keep_history Not needed anymore * MySQL typo Now properly tested with MySQL, PostgreSQL, SQLite * More work for legacy values Important to avoid overriding user's preference and risking deleting data erroneously * Fix PHP 7.3 / 7.4 warnings @aledeg "Trying to use values of type null, bool, int, float or resource as an array (such as $null["key"]) will now generate a notice. " https://php.net/migration74.incompatible * Reintroduce min articles and take care of legacy parameters * A few changes forgotten * Draft of migration + DROP of feed.keep_history * Fix several errors And give up using const for SQL to allow multiple database types (and we cannot redefine a const) * Add keep_min to categories + factorise archiving logic * Legacy fix * Fix bug yield from * Minor: Use JSON_UNESCAPED_SLASHE for attributes And make more uniform * Fix sign and missing variable * Fine tune the logic