aboutsummaryrefslogtreecommitdiff
path: root/app/Models
AgeCommit message (Collapse)Author
2020-04-01Implement negation for searching by date intervals (#2869)Gravatar Alexandre Alapetite
* Implement negation for searching by date intervals #fix https://github.com/FreshRSS/FreshRSS/issues/2866 Allow searching for e.g. `!date:P1W` to exlude all articles newer than one week. More generally, allows exclusion on some date intervals. * Fix OR
2020-04-01API return proper newestItemTimestampUsec (#2854)Gravatar Alexandre Alapetite
* API return proper newestItemTimestampUsec #fix https://github.com/FreshRSS/FreshRSS/issues/2853 * Minor naming * Add newestItemTimestampUsec for labels * Do not use t.name after all
2020-03-31Fix action filter when filtering on author (#2863)Gravatar Alexandre Alapetite
#fix https://github.com/FreshRSS/FreshRSS/issues/2806 Bug: array instead of string
2020-03-31Allow feed to be actualized after being truncated (#2862)Gravatar Alexandre Alapetite
Before, on had to wait for the cache to expire before being able to refresh a feed that had been truncated via the Web interface. Now, one can "delete all articles" and hit "actualize" imediately after without problem. Useful for testing filters, debugging e.g. https://github.com/FreshRSS/FreshRSS/issues/2806
2020-03-08Fix share warning with Wallabag (#2817)Gravatar Alexandre Alapetite
#fix https://github.com/FreshRSS/FreshRSS/issues/2812 Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>
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-29Fallback to GUID when entry title is empty (#2813)Gravatar Alexandre Alapetite
When entries have an empty title, our UI was a bit broken. In this (rare) case, we revert to GUID, which is always non-empty.
2020-02-29Fix wrong foreach in applyFilterActions (#2809)Gravatar shn7798
2020-02-29No pre for enclosure-description (#2808)Gravatar Alexandre Alapetite
* No pre for enclosure-description #fix https://github.com/FreshRSS/FreshRSS/issues/2807 In browsers, the styling `white-space:pre-line` will be applied by CSS, but no styling will be done for clients via API. * Corresponding CSS change
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-20Fix null array index bug for PHP 7.4 (#2780)Gravatar Alexandre Alapetite
Fix https://github.com/FreshRSS/FreshRSS/issues/2775 Especially for PHP 7.4+ "Array-style access of non-arrays" https://php.net/migration74.incompatible
2020-01-20Fix SQLite CONCAT used for search (#2777)Gravatar Alexandre Alapetite
Used e.g. for searches `inurl:xxx` Co-authored-by: Marien Fressinaud <dev@marienfressinaud.fr>
2020-01-20Fix 'dateAdded()' getter (#2774)Gravatar Julien-Pierre Avérous
Be homogeneous in field used, to prevent weird behavior in the future.
2020-01-18[API, extension] Use 'dateAdded()' to forge 'crawlTimeMsec' & ↵Gravatar Julien-Pierre Avérous
'timestampUsec' field in greader API. (#2773) - Add the ability to customize 'dateAdded()', so an extension can change it if needed.
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-16fix: Make sure to have user conf in hasAccess (#2769)Gravatar Marien Fressinaud
The `FreshRSS_Auth::hasAccess` method is called during auth initialization (`app/FreshRSS.php:78`), only for `user#create` action. However, at this step, the `user` configuration namespace hasn't be initialized yet, and so users weren't able to register because of the exception... quite critical!
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
2020-01-04Fix wrong getHeader refactoring (#2749)Gravatar Alexandre Alapetite
* Fix wrong getHeader refactoring Fix regression introduced by https://github.com/FreshRSS/FreshRSS/pull/2373 The refactoring required a call to init() even for static functions, which is most of the time not done. Removed premature abstraction of `$_SERVER`, which was the root cause of the bug. https://github.com/FreshRSS/FreshRSS/issues/2748#issuecomment-569898931 * Refactoring: Move serverIsPublic to Minz_Request * Add mitigations for wrong configurations Due to the regression, we have some existing configurations with a bad base_url * Forgot one instance
2020-01-03Fix logging environment constants (#2745)Gravatar Alexandre Alapetite
* Fix logging environment constants * COPY_LOG_TO_SYSLOG was only working when Syslog was used * FRESHRSS_ENV was not properly used to set logging level * Simplify code Always call `openlog()` even when it is not used * Always specify syslog properties https://github.com/FreshRSS/FreshRSS/pull/2745#discussion_r362207445 * $username is also needed further down * No new line in syslog
2019-12-23tec: Fix test suite (#2721)Gravatar Marien Fressinaud
* Rework the travis file to enable PHPUnit I realized that unit tests weren't executed on Travis. While working on this file to enable these tests, I started to think we could simplify it. I separated jobs so: - PHP linter and tests are only performed on PHP 7.3 - Translations are tested separatly so they can fail (it was already the case but it was hard to understand the way it was done) - PHP 5.6 only checks syntax issues - the last job checks css, js, etc. (it didn't change) PHPUnit is not executed on 5.6 because only the version 5 is available while the latest version is the 8 (https://phpunit.de/supported-versions.html). I think it's easier to read (each job is more explicit) but I'm not a Travis expert so maybe there's some room for improvements. * Fix failing tests The category `_name` regression was introduced in commit b323ed084. I wasn't able to understand when and why Search tests was wrong. The rest is about upgrade of PHPUnit.
2019-12-09tec: Add ~ID~ placeholder in share system (#2707)Gravatar Marien Fressinaud
I'm currently playing with a small extension to improve the email sharing system. It allows to create a message and send an email directly through FreshRSS. For that, I need to retrieve the shared article. I could use the link or the title but it would be less robust and less efficient. Reference: https://github.com/FreshRSS/FreshRSS/issues/300
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-21Fix updateTagAttribute (#2682)Gravatar Alexandre Alapetite
2019-11-18Fix adding categories in MySQL 5.5 (#2672)Gravatar Alexandre Alapetite
Fix https://github.com/FreshRSS/FreshRSS/issues/2670 (from https://github.com/FreshRSS/FreshRSS/pull/2335 ) Tested with MySQL 5.5.40, the oldest version on Docker Hub Debian 8.0 Jessie ships MySQL 5.5.43
2019-11-11Sanitize UTF-8 before commiting entries (#2649)Gravatar Alexandre Alapetite
Fix https://github.com/FreshRSS/FreshRSS/issues/2645
2019-11-11Fix DB optimize for MySQL (#2647)Gravatar Alexandre Alapetite
`pdo->exec()` is not appropriate for MySQL `OPTIMIZE` because `OPTIMIZE` returns some data and not only a code and then fails.
2019-11-06More reset default category name (#2639)Gravatar Alexandre Alapetite
Improve https://github.com/FreshRSS/FreshRSS/pull/2638
2019-11-06Fix name of default category (#2638)Gravatar Alexandre Alapetite
Fix https://github.com/FreshRSS/FreshRSS/issues/2637
2019-11-06Fix database autocreate at install (#2635)Gravatar Alexandre Alapetite
* Fix database autocreate at install Several bugs prevented the auto-creation of the database in Web and CLI installs. Fix https://github.com/YunoHost-Apps/freshrss_ynh/issues/84#issuecomment-549818408 * initDb https://github.com/FreshRSS/FreshRSS/pull/2635#discussion_r343107795
2019-11-04Fix PostgreSQL size bug for uppercase (#2631)Gravatar Alexandre Alapetite
Crash for users with uppercase letters
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-10-31Fix categories sorting (#2616)Gravatar Marien Fressinaud
I had a bug when some articles in a category were unread. Sometimes, filtering the category displayed all the articles, even with the "Adjust showing" option. A reasonably good guess was to look the last commits that impacted the categories and, indeed, it was introduced by the new category sorting system. The sort function (`usort`) doesn't keep the index association, which is important here. I must admit I don't understand exactly why (I didn't search), but the keys are probably used somewhere. Another fix would be to not rely on these keys anymore. The bug was introduced in 042fcd5e93884690efdd2f957ca02751958c0724 - Ref PR: https://github.com/FreshRSS/FreshRSS/pull/2592 - Ref usort: https://www.php.net/manual/en/function.usort.php - Ref uasort: https://www.php.net/manual/en/function.uasort.php
2019-10-27keep_max disabled by default for existing installations (#2607)Gravatar Alexandre Alapetite
Fix https://github.com/FreshRSS/FreshRSS/issues/2600 Second attempt https://github.com/FreshRSS/FreshRSS/pull/2602
2019-10-26keep_max disabled by default for existing installations (#2602)Gravatar Alexandre Alapetite
https://github.com/FreshRSS/FreshRSS/issues/2600
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-23Workaround for MySQL limitation 1093 (#2586)Gravatar Alexandre Alapetite
* Workaround for MySQL limitation 1093 https://github.com/FreshRSS/FreshRSS/pull/2335#issuecomment-545194606 including minor Travis fixes
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
2019-10-06Fix PostgreSQL and SQLite DB size estimation (#2562)Gravatar Alexandre Alapetite
2019-10-06SQL allow recreating existing user (#2555)Gravatar Alexandre Alapetite
* SQL allow recreating existing user Taking advantage of https://github.com/FreshRSS/FreshRSS/pull/2554 In a case when FreshRSS data is lost, but database data still intact (in particular MySQL or PostgreSQL), this patch allows recreating previous users without error * Better error retrieval Especially when error occur during the prepare statement
2019-10-05MySQL entry content MEDIUMBLOB (#2551)Gravatar Alexandre Alapetite
Fix https://github.com/FreshRSS/FreshRSS/issues/2448
2019-09-29Quick fix: forgotten PDO values (#2546)Gravatar Alexandre Alapetite
From https://github.com/FreshRSS/FreshRSS/pull/2522
2019-09-29PDO refactoring for code simplification (#2522)Gravatar Alexandre Alapetite
* PDO refactor * Automatic prefix when using the syntax `_tableName` * Uniformity: MySQL is now PDO::ATTR_EMULATE_PREPARES = false just like SQLite and PostgreSQL, with consequences such as only one statement per query * Use PDO methods exec(), query(), prepare() + execute() in a more efficient way * Remove auto-update SQL code for versions older than FreshRSS 1.5 (3 years old) * The name of the default category is set in PHP instead of in the DB (simplies SQL and allows changing the name according to the FreshRSS language) * Rename `->bd` to `->pdo` (less of a frenshism, and more informative) * Fix some requests, which were not compatible with MySQL prepared statements * Whitespace * Fix syntax for PostgreSQL sequences + MySQL install * Minor formatting * Fix lastInsertId for PostgreSQL * Use PHP 5.6+ const Take advantage of https://github.com/FreshRSS/FreshRSS/pull/2527 https://www.php.net/manual/en/migration56.new-features.php * A bit of forgotten PHP 5.6 simplification for cURL * Forgotten $s * Mini fix custom user config https://github.com/FreshRSS/FreshRSS/pull/2490/files#r326290346 * More work on install.php but not finished * install.php working * More cleaning of PDO in install * Even more simplification Take advantage of PDO->exec() to run multiple statements * Disallow changing the name of the default category https://github.com/FreshRSS/FreshRSS/pull/2522#discussion_r326967724
2019-09-15CLI to export/import any database to/from SQLite (#2496)Gravatar Alexandre Alapetite
* CLI to export/import any database to/from SQLite Require PHP 5.5+ https://github.com/FreshRSS/FreshRSS/pull/2495 * Travis * Execution rights * Fix wrong static fields * Fix MySQL bad default buffering https://stackoverflow.com/questions/6895098/pdo-mysql-memory-consumption-with-large-result-set/6935271#6935271 https://php.net/manual/ref.pdo-mysql * Fix count on progression * Avoid static DB information To ease working with two DBs at the same time * Less static, simplify Needs some testing * Small corrections * Special case for SQLite to SQLite * Modify special case for SQLite * Remove special case for SQLite More uniform logic for the 3 databases. Fix wrong DROP TABLE for SQLite. * Drop indexes * Revert "Drop indexes" This reverts commit f28d2bae0935745c1c74ea38f2ee083f3fd4bf9d. * Fix deletion * Fix classic export * Update cli/README.md Co-Authored-By: Marien Fressinaud <dev@marienfressinaud.fr> * Addressing part of review * Remove goto :cry: * Travis * Comment for SQLite case * Fix missing fields when inserting
2019-09-11add: Allow admins to configure default feeds (#2515)Gravatar Marien Fressinaud
* Homogenize SQL_INSERT_FEEDS across database types * Extract default feeds into system configuration * Adapt default feeds init during installation
2019-08-29Provide email address verification feature (#2481)Gravatar Marien Fressinaud
* Add an email field to the profile page I reuse the `mail_login` from the configuration. I'm not sure if it's useful today (I would say it was used when Persona login was available). A good improvement would be to rename `mail_login` into `email` so it would be more intuitive to use. * Add boolean to the conf to force email validation This commit only adds a configuration item. * Add email during registration if email must be validated * Set email token to validate when email changes * Block access to FreshRSS if email is not validated * Send email when address is changed * Allow to resend the validation email * Allow the user to change its email while blocked * Document the email validation feature * fixup! Allow the user to change its email while blocked * tec: Autoload PHPMailer lib * Validate email address format * Add feedback on validation email resend action * Allow to logout when user is blocked * fix: Change default email "from" * Reorganize i18n keys * Complete all the locales with default english * Hide sidebar (profile page) if email is not validated * Check email requirements on registration * Allow admin to specify email when creating users * Don't check email format if value is empty * Remove trailing comma in userController Co-Authored-By: Alexandre Alapetite <alexandre@alapetite.fr> * Set PHPMailer validator to html5 before sending email * fixup! Remove trailing comma in userController
2019-08-20Require PHP 5.5+ (#2495)Gravatar Alexandre Alapetite
* Require PHP 5.5+ https://github.com/FreshRSS/FreshRSS/issues/2469#issuecomment-522255093 I think it would be reasonable to require PHP 5.5+ for the core of FreshRSS after all. As Frenzie said, WordPress currently requires PHP 5.6.20+, and it is the most popular PHP application. We would loose about 20% of the PHP servers according to https://w3techs.com/technologies/details/pl-php/5/all but I expect this number to drop fast after the release of CentOS 8 (CentOS accounts for 17% of Linux servers https://w3techs.com/technologies/details/os-linux/all/all ). Distributions: * no impact on Ubuntu, Fedora, Alpine, OpenWRT, FreeBSD, OpenSuze, Mageia, as all active versions have PHP > 7 * no impact on OpenSuze, Synology, as all active versions have PHP > 5.5 * we drop Debian 8 Jessie (-2020) - we keep supporting Debian 9 Stretch (2017-06) - current is Debian 10 Buster * we drop Red Hat 7 (-2024) - we keep supporting RHEL 8 (2019-05) * we drop CentOS 7 (-2024) - we will support CentOS 8 (to be released soonish) When dropping older versions, I can better like when it is for a good reason, and there is actually one with PHP 5.5, namely generators (yield) https://php.net/language.generators.overview which I consider using. * Version note for JSON.php * hex2bin * Update .travis.yml Co-Authored-By: Frans de Jonge <fransdejonge@gmail.com>
2019-08-14Added option to display authors under article titles (#2487)Gravatar Joris Kinable
This feature is particularly useful to display authors underneath scientific articles.
2019-06-21Change category configuration (#2410)Gravatar Alexis Degrugillier
* Change category configuration Before, we had a drop-down list to interract on categories. It was not working the same way as feeds. Now, categories and feeds behave in a similar manner. At the moment, there is no change in features but it will allow to expand them. See #2369 * Minor whitespace
2019-04-07Cherry pick from 2335 (#2356)Gravatar Alexandre Alapetite
Cherry pick bug fix from https://github.com/FreshRSS/FreshRSS/pull/2335 This code is currently not used.
2019-03-23Filter actions (#2275)Gravatar Alexandre Alapetite
* Draft of filter actions * Travis * Implement UI + finish logic * Travis