Commit Graph

2453 Commits

Author SHA1 Message Date
wn_ f0f7a5f958 Ensure custom favicon color detection happens. 2023-02-03 00:45:04 +00:00
Andrew Dolgov c30b24d09f
deal with type errors in batch feed editor properly, un-deprecate PDO wrapper functions and document them for posterity 2022-12-30 19:51:34 +03:00
Andrew Dolgov 5c0a5da88c
batch feed editor: silence some more php8.1 undefined field warnings 2022-12-30 19:10:41 +03:00
Andrew Dolgov a16acd65fc
batch feed editor:
- fix some field changes not applying because of DB type errors
 - rework to use bound vars instead of sql query concatenation
deprecate: checkbox_to_sql_bool(), bool_to_sql_bool()
2022-12-30 19:07:15 +03:00
Andrew Dolgov 9c0ead3640
show full commit timestamp with version information in prefs footer 2022-12-30 09:46:01 +03:00
wn_ 371af1a39c Fix getting active feeds with errors.
fb4bc2615e incorrectly excluded feeds using the default update interval.  This change ignores the unlikely scenario where someone has the default update interval set to 'disabled'.
2022-12-24 21:22:16 +00:00
wn_ 46e2635869 Only count updating (i.e. enabled) feeds when determining active feeds with errors.
This excludes feeds that had errors and currently have updating disabled (e.g. disabled due to the site being down for a while, getting compromised, etc.).

Disabled / non-updating feeds' error states are still visible when viewed in the feed tree.
2022-12-21 21:05:59 +00:00
wn_ 8b129626cd Only touch on send for expirable cache files.
With d373b7b452 feed icon modification times get used for cache-busting, but 'Cache_Local' updates that
value on each send.  This change makes it so the modification time only gets updated on files in expirable caches, keeping the value
consistent between sends for files in non-expiring caches.

Also, marking 'Cache_Local::send_local_file()' private since it's unique to that adapter.
2022-12-20 02:16:47 +00:00
Andrew Dolgov c6d21b3196
make phpstan happy 2022-12-19 21:42:34 +03:00
Andrew Dolgov d373b7b452
* bring back cache-busting for feed icons based on timestamp
* DiskCache: use singleton pattern to create less cache object instances
 * DiskCache: implement ETag
2022-12-19 21:36:50 +03:00
Andrew Dolgov fa9c614ff1
Merge branch 'master' of git.tt-rss.org:tt-rss/tt-rss 2022-12-02 07:35:11 +03:00
Andrew Dolgov 824addbc9d
fix cleanup_feed_icons unlinking nonexistant files, limit it to actual feed icons 2022-12-02 07:34:51 +03:00
wn_ a355221e7f Consistently get the self URL.
This ensures all uses of the self URL get the same normalized/sanitized value.
2022-11-28 17:40:42 +00:00
Andrew Dolgov 94c49399cc
get_self_url: strip all trailing slashes 2022-11-28 19:24:12 +03:00
Andrew Dolgov 52180c9f8f
DiskCache: enforce basename() on filenames passed to cache adapter 2022-11-26 14:15:45 +03:00
Andrew Dolgov 3212c51ce8
migrate favicons directly to new cache 2022-11-24 23:43:46 +03:00
Andrew Dolgov a30b9bb649
rework favicon storage to use DiskCache 2022-11-24 23:31:33 +03:00
Andrew Dolgov be6bc72a74
DiskCache: tweak how expiration is invoked 2022-11-24 18:49:36 +03:00
Andrew Dolgov 3180b35807
deprecate DiskCache->touch() 2022-11-24 08:16:56 +03:00
Andrew Dolgov 9732d8fc9f
update_rss_feed: use DiskCache to store feed data 2022-11-23 22:09:04 +03:00
Andrew Dolgov 10a1dd35e3
* split local cache implementation into a separate class
* allow custom implementations provided by plugins
2022-11-23 21:18:40 +03:00
wn_ d376cd6142 Address upcoming string interpolation deprecation.
https://wiki.php.net/rfc/deprecate_dollar_brace_string_interpolation
2022-11-12 16:20:59 +00:00
Andrew Dolgov f56a049641
fix some PHP8 warnings generated while dragging feed tree items around 2022-10-15 13:44:02 +03:00
jmechnich 560caf8377 Fix PHP8 strtime warning if argument is null (addendum) 2022-10-01 11:05:12 +02:00
Andrew Dolgov 42bc1620b8
make phpstan happy 2022-09-29 20:02:59 +03:00
Shemi f0a20a62c7 Merge branch 'master' into master 2022-09-29 11:18:41 +03:00
Shemi e2f9a3b9a4 Added support for api plugins virtual feeds 2022-09-29 08:37:56 +03:00
jmechnich 359f0af2e7 Fix PHP8 strtime warning if argument is null 2022-09-28 12:29:57 +02:00
powerivq 96595ca4c5 Set user related sessions for single user mode 2022-08-31 14:52:42 -07:00
fox 5fea1a7ea9 Merge pull request 'Fix PHP8 empty param warning' (#79) from powerivq/tt-rss:php8compat into master
Reviewed-on: https://dev.tt-rss.org/fox/tt-rss/pulls/79
2022-08-31 18:50:39 +03:00
powerivq f0f44c6ea5 Add last_login to single user mode 2022-08-31 00:41:57 -07:00
powerivq f490bdd17a Fix PHP8 empty param problem 2022-08-31 00:36:49 -07:00
fox 60658be5bc Merge pull request 'Use PHP 7.4 features' (#77) from wn/tt-rss:feature/php-7.4-stuff into master
Reviewed-on: https://dev.tt-rss.org/fox/tt-rss/pulls/77
2022-08-17 19:38:15 +03:00
Andrew Dolgov ec764f97e7
generate_syndicated_feed: add source section to JSON-formatted output 2022-08-16 20:02:28 +03:00
wn_ 0dbed700ef Merge remote-tracking branch 'origin/master' into feature/php-7.4-stuff 2022-08-15 10:43:14 +00:00
Andrew Dolgov 7d77edd1fb
amend logic flow to fix phpstan warning in previous 2022-08-15 07:59:24 +03:00
wn_ 830a20debf Handle 'file_get_contents()' failure in 'UrlHelper::fetch()'. 2022-08-14 16:52:44 +00:00
wn_ 57e31fe5a7 Handle valid HTTP responses with no response body. 2022-08-14 16:39:03 +00:00
wn_ c301053965 Use the null coalescing assignment operator in various places. 2022-08-12 18:21:38 +00:00
wn_ 3487c922b3 Replace use of 'array_merge' with the spread operator and 'array_push' in various places.
This isn't supported for arrays with string keys until PHP 8.1.

https://wiki.php.net/rfc/spread_operator_for_array
2022-08-12 17:58:38 +00:00
wn_ a63c949a55 Use arrow functions in some places. 2022-08-12 14:41:21 +00:00
wn_ 7567676ed8 Remove a PHP < 7.1 branch in UrlHelper. 2022-08-12 14:16:40 +00:00
wn_ 93fd85df6f Switch to direct type declarations of class properties. 2022-08-12 14:13:26 +00:00
Andrew Dolgov 26c67dba77
update phpstan to 1.8.2 2022-07-31 13:55:09 +03:00
Andrew Dolgov 4aefbd628e
properly check for baseline required PHP version (7.4) 2022-07-29 06:34:20 +03:00
Andrew Dolgov 7c45b3f789
* add HOOK_LOGINFORM_ADDITIONAL_BUTTONS
* allow plugins to inject JS code into login form
2022-07-24 16:33:28 +03:00
Andrew Dolgov c0385c2098
public: allow system plugins to expose public methods 2022-07-24 15:51:56 +03:00
Andrew Dolgov 74d7f88fae
make_self_url: properly strip out GET params 2022-07-24 14:50:03 +03:00
Andrew Dolgov 5006c754c4
readability: add missing dependencies 2022-07-24 14:03:04 +03:00
Chih-Hsuan Yen f3aceb4648
Fix an error when disabling all user plugins
If I enabled some user plugins via Preferences -> Plugins and then
disabled all of them, an error occurred:

Jul 16 22:34:20 php[100]: PHP Fatal error:  Uncaught TypeError: array_filter(): Argument #1 ($array) must be of type array, null given in /usr/share/webapps/tt-rss/classes/pref/prefs.php:1027
Jul 16 22:34:20 php[100]: Stack trace:
Jul 16 22:34:20 php[100]: #0 /usr/share/webapps/tt-rss/classes/pref/prefs.php(1027): array_filter()
Jul 16 22:34:20 php[100]: #1 /usr/share/webapps/tt-rss/backend.php(136): Pref_Prefs->setplugins()
Jul 16 22:34:20 php[100]: #2 {main}
Jul 16 22:34:20 php[100]:   thrown in /usr/share/webapps/tt-rss/classes/pref/prefs.php on line 1027

Apparently the issue was elevated from a warning to an error in PHP 8.0
[1].

[1] https://php.watch/versions/8.0/internal-function-exceptions
2022-07-16 22:50:16 +08:00
Andrew Dolgov 5c70d26b7e
some very minor php8.1 warnings fixed 2022-07-13 07:08:31 +03:00
DJ_TBX 9d69fd2a56 Fix MySQL search Queries
Add the missing space between "AND" and "MATCH" in MySQL search queries
2022-07-04 00:17:01 +03:00
Andrew Dolgov 50f014e52d
implement native fulltext search on mysql 2022-06-19 22:21:54 +03:00
Andrew Dolgov 6d98cc6c80
schema: add fulltext indexes for mysql to support af_psql_trgm and possibly future fulltext search 2022-06-19 21:53:57 +03:00
Andrew Dolgov c2f7044485
userhelper: fix optional parameter being declared before a required one 2022-06-13 08:37:39 +03:00
Andrew Dolgov d4be821825
UserHelper, CLI: add a method to check user password 2022-06-10 22:16:48 +03:00
Andrew Dolgov cf1eaeedf3
* add UserHelper methods to manipulate user database (add, modify, delete)
* expose said methods via CLI (update.php)
 * fix several invocations of deprecated functions
 * set stricter type hints on several method arguments
2022-06-10 13:39:00 +03:00
Andrew Dolgov 2975c7297b
throttle updates if received HTTP 429 (Too Many Requests) 2022-06-09 09:06:52 +03:00
Andrew Dolgov 7cd26272fa
Revert "minor: Support html content in mailer.php"
This reverts commit b91ffae292.
2022-06-06 21:05:24 +03:00
Andrew Dolgov 8151295829
Revert "trivia: coding style"
This reverts commit 9e557501fa.
2022-06-06 21:05:15 +03:00
Andrew Dolgov 8ef816d8f8
feeds-tree: move external onClick dojo/method to PrefFeedTree class 2022-06-06 09:31:37 +03:00
Andrew Dolgov 6436dd16f9
filter-tree: move external dojo/method to PrefFilterTree class 2022-06-06 09:29:16 +03:00
Andrew Dolgov dd983e5de1 prefs: move external filter tree onload method (which checks for inactive feeds, etc.) to FilterTree class 2022-06-05 11:47:21 +03:00
Andrew Dolgov fc84712135 pref-filters: add a button to hide or show rules in the filter list 2022-06-05 11:41:28 +03:00
Andrew Dolgov 9457bb090a fix PHP8 undefined array key warning when resetting prefs to defaults 2022-06-05 11:14:42 +03:00
Andrew Dolgov 5adedcd3d0 fix custom-set site URLs never used while updating feeds 2022-05-29 08:02:12 +03:00
Andrew Dolgov b0059d3f88 when determining feed-specific favicon, instead of using first match or generic fallback, go through entire list of determined favicon URLs 2022-05-28 22:27:59 +03:00
Hardway Hou 9e557501fa trivia: coding style 2022-05-24 20:49:01 +08:00
Hardway Hou b91ffae292 minor: Support html content in mailer.php 2022-05-24 10:09:46 +08:00
Andrew Dolgov 1b3e655f89 use CURLAUTH_BASIC by default for password-protected feeds, keeping
CURLAUTH_ANY as a fallback in case we got a 403.
2022-05-23 08:43:04 +03:00
Siemenskun 3406a16025 Fix typo 2022-05-22 02:02:56 +03:00
Siemenskun d33d026b12 Fix xml parsing error
Move re-requesting logic before parsing response body, otherwise it puts HTTP headers into XML body
2022-05-22 01:46:46 +03:00
Andrew Dolgov 2654b3c6be disable some pointless startup sanity checks when running under docker 2022-04-03 19:39:34 +03:00
Andrew Dolgov 4250386ba5 set last_login_update session variable immediately when logging in 2022-03-29 13:52:22 +03:00
Andrew Dolgov 385da287d8 rewrite_relative: deal with undefined path warning 2022-03-22 19:43:32 +03:00
Andrew Dolgov 0345e9d3f6 rewrite_relative: use isset() to check for relative path 2022-03-22 16:18:22 +03:00
Andrew Dolgov e35a4a1306 tests: add stub autoloader, add a few more rewrite_relative tests 2022-03-22 14:32:32 +03:00
Andrew Dolgov 1c4f7ab3b8 * add phpunit as a dev dependency
* add some basic tests for UrlHelper::rewrite_relative()
 * fix UrlHelper::rewrite_relative() to work better on non-absolute
   relative URL paths
2022-03-22 12:24:31 +03:00
David Edler de1e218a83
various fixes vor php 8.1 compatibility
Cherry-picked from https://git-gitea.tt-rss.org/fox/tt-rss/pulls/56,
while excluding changes in vendor/ (causes compatiblity issues with
PHP<8 [1]) and strftime-related ones (already re-applied in
https://git-gitea.tt-rss.org/fox/tt-rss/pulls/66).

[1] https://community.tt-rss.org/t/support-for-php-8-1/5089/9
2022-03-09 00:46:15 +08:00
Andrew Dolgov 39c0bd378a getAllCounters: set default value if frontend doesn't pass label or feed id count 2022-02-25 12:41:53 +03:00
Andrew Dolgov f7e2f62022 fix Feeds::_get_counters() used improperly as a replacement for
getFeedUnread()
2022-02-20 12:48:38 +03:00
Andrew Dolgov 77f39d65b5 * Feeds::_get_counters - fix retrieving unread for tags
* mark several symbols as @deprecated properly
 * replace uses of (deprecated) getFeedUnread() with Feeds::_get_counters()
2022-02-20 11:04:40 +03:00
Andrew Dolgov 168dc6fe57 rewrite_relative: prevent php warning when checking for unset content type in EXTRA_SCHEMES_BY_CONTENT_TYPE 2022-02-18 16:44:03 +03:00
Andrew Dolgov 74a247fc5c rewrite_relative: whitelist specific schemes for URLs with 'known' content-types i.e. specified for enclosures 2022-02-17 22:38:38 +03:00
Andrew Dolgov 89ef98e57e allow running as root in a container environment 2022-02-17 17:32:02 +03:00
Felix Eckhofer cc30198b3d
Replace deprecated `strftime` 2022-02-03 16:13:01 +01:00
Schrottfresse 931e33c381 Add workaround for boolean values being intergers with MySQL/PHP 8.1 2022-01-28 08:37:29 +01:00
Andrew Dolgov c57ebf2c10 fix filter last_triggered not updating 2022-01-25 22:33:13 +03:00
Richard Tollerton aaccf89501 update_rss_feed: juxtapose pdo and ORM commit on timestamp update
If for whatever reason $pdo holds a DDL lock on ttrss_entries, it could
block ORM's save, leading to a deadlock. To work around this, call
$pdo->commit() before ORM::for_table()->save().
2022-01-13 23:39:49 -06:00
Andrew Dolgov c3482fbe6b generate a warning if plugin-generated content of HOOK_ARTICLE_BUTTON or _LEFT_BUTTON can't be parsed as valid XML 2022-01-06 10:37:03 +03:00
Andrew Dolgov 1818fc11a5 fetch: return HTTP code when no curl_error() is available 2021-12-23 17:32:44 +03:00
Andrew Dolgov 6971ca08b2 remove deprecated LOG_ constants 2021-12-23 17:32:27 +03:00
Andrew Dolgov 7aeaa1b039 rssutils: rewrite several invocations of (deprecated) rewrite_relative_url() to UrlHelper::rewrite_relative() 2021-12-20 08:03:30 +03:00
Andrew Dolgov 40b2356be2 filters:
* add filter action to ignore feed-provided tags
 * simplify handling of various filter-provided tags
 * bump schema to 146
2021-12-20 07:56:16 +03:00
Andrew Dolgov 720b318796 * fox.form.Select: add several properties allowing it to better
imitate other controls like DropDownButton, etc.
 * rework several main toolbar items to use fox.form.Select instead of
other controls
 * replace HOOK_HEADLINE_TOOLBAR_SELECT_MENU_ITEM with
HOOK_HEADLINE_TOOLBAR_SELECT_MENU_ITEM2 because of markup change (option
instead of menuitem)
 * PluginHost: add some explicit typecasts to make intellephense shut up
2021-12-14 21:53:45 +03:00
wn_ 0726a9d820 Handle another potential 'SUM()' null situation in Feeds. 2021-12-14 12:50:53 +00:00
wn_ ddc81b2c89 Add a note on why ed74c43f18 was needed. 2021-12-14 12:47:25 +00:00
wn_ ed74c43f18 Handle the admin user not having any entries in 'Feeds::_get_global_unread'. 2021-12-14 12:06:32 +00:00
Andrew Dolgov 53061d1508 * add HOOK_POST_LOGOUT
* auth_remote: add config option AUTH_REMOTE_POST_LOGOUT_URL
2021-12-06 13:20:18 +03:00
fox 6a70f5e92c Merge pull request 'Prevent "Undefined index: version" events for git version with open_basedir after 9dabfbfa11' (#57) from ltGuillaume/tt-rss:master into master
Reviewed-on: https://git.tt-rss.org/fox/tt-rss/pulls/57
2021-12-03 07:25:06 +03:00
jbaldus 987870074b Fixes declaration of Pref_Prefs::csrf_ignore to match IHandler::csrf_ignore 2021-12-02 20:57:19 +03:00
ltGuillaume 0269c7ce32 Prevent "Undefined index: version" events for git version with open_basedir after 9dabfbfa11 2021-12-02 18:55:08 +01:00
Andrew Dolgov 5df8dacf9f api, getHeadlines: properly accept feed_id 0 2021-12-01 19:04:42 +03:00
Andrew Dolgov a201e10ee0 Revert "various fixes vor php 8.1 compatibility"
This reverts commit 14027ae04e.
2021-12-01 13:37:35 +03:00
Andrew Dolgov aaebe55456 Revert "replace strftime with date"
This reverts commit 72e21f89ce.
2021-12-01 13:37:25 +03:00
David Edler 72e21f89ce replace strftime with date 2021-11-30 22:07:11 +01:00
David Edler 14027ae04e various fixes vor php 8.1 compatibility 2021-11-30 21:50:09 +01:00
Andrew Dolgov 409c63dcf8 remove mixed type hints from function arguments because we still support PHP7 2021-11-29 12:30:33 +03:00
Andrew Dolgov 28fb571dca * fix showing headlines for tag-based virtual feeds
* API: allow retrieving headlines for tag-based feeds (bump api level to 18)
2021-11-29 10:20:13 +03:00
Andrew Dolgov 204f92b926 urlhelper: add debugging output for download attempts 2021-11-24 08:19:04 +03:00
Andrew Dolgov a6cad5cbca api: don't try to pass null login/password when subscribing to feed 2021-11-23 16:55:21 +03:00
Andrew Dolgov 9dabfbfa11 _get_version:
- don't bother with git if open_basedir is enabled
 - check for SCRIPT_ROOT instead of TTRSS_.. anything because that would be set regardless of install method
2021-11-23 14:46:24 +03:00
Andrew Dolgov 3323ae78ce * sql_bool_to_bool: make parameter nullable
* errorhandler: don't try to truncate null strings
 * UrlHelper::rewrite_relative: fix undefined offset warnings for URLs
that lack schema/host (data: etc)
2021-11-20 16:11:44 +03:00
Andrew Dolgov e7111e4f14 sanitize: make force_remove_images nullable 2021-11-20 14:02:37 +03:00
Andrew Dolgov 2b4ba59a79 feeds/add: force cast category id to integer 2021-11-19 17:02:25 +03:00
fox 0a3a464def Merge pull request 'Consistently handle param string to bool conversions in handlers.' (#53) from wn/tt-rss:feature/consistent-param-to-bool into master
Reviewed-on: https://git.tt-rss.org/fox/tt-rss/pulls/53
2021-11-19 07:36:15 +03:00
fox 3070933f64 Merge pull request 'Fix Undefined array key "order_by"' (#54) from klempin/tt-rss:master into master
Reviewed-on: https://git.tt-rss.org/fox/tt-rss/pulls/54
2021-11-19 07:35:20 +03:00
fox e5ec69f45a Merge pull request 'Don't type DiskCache's $mimeMap.' (#55) from wn/tt-rss:bugfix/diskcache-mimemap-type into master
Reviewed-on: https://git.tt-rss.org/fox/tt-rss/pulls/55
2021-11-19 07:34:26 +03:00
wn_ 59a09790eb Don't type DiskCache's $mimeMap.
PHP typing of class properties is only supported on PHP 7.4+.
2021-11-18 23:51:36 +00:00
Philip Klempin 739c3fe760 Fix Undefined array key "order_by" 2021-11-18 22:33:03 +00:00
wn_ 4a891b20f0 Fix 'view_mode' default in API#getHeadlines() 2021-11-18 21:31:52 +00:00
wn_ d532eb773b Switch from null to false as the default for missing bool params. 2021-11-18 18:25:04 +00:00
wn_ cd71292610 Actually, always clean in Handler._param_to_bool() 2021-11-18 18:18:49 +00:00
wn_ 16a7208893 Clean string params in Handler._param_to_bool() 2021-11-18 18:16:50 +00:00
wn_ 2422aae577 Consistently handle param string to bool conversions in handlers. 2021-11-18 18:09:47 +00:00
Andrew Dolgov 57d9a5e925 config: use phpdoc comments for global options, etc 2021-11-18 20:51:11 +03:00
Andrew Dolgov d6f604c06c API/catchupFeed: properly pass is_cat as bool 2021-11-18 20:02:24 +03:00
Andrew Dolgov 1ea177491f * base plugin class: correct description of hook_house_keeping()
* cache_starred_images: keep status files in a separate cache directory
2021-11-18 19:54:42 +03:00
Andrew Dolgov b2ffc8c2e3 _format_headlines_list: fix phpstan warning properly 2021-11-18 11:03:26 +03:00
Andrew Dolgov 9ac67c7973 API: fix unexpected null being passed to _order_to_override_query 2021-11-18 11:01:46 +03:00
Andrew Dolgov b77f6c9a6b API: force methods to return bool to make wrap() mistakes easier to track 2021-11-18 10:46:06 +03:00
Andrew Dolgov 9e469b1642 api: a few more returns in login 2021-11-18 09:04:08 +03:00
Andrew Dolgov 10a1d4d879 api: don't return errors on login success 2021-11-18 09:01:44 +03:00
wn_ 2d830c6281 Minor correction to RSSUtils::cache_enclosures() $enclosures param type.
All FeedEnclosure values are currently strings, even though the numeric things get converted to int before getting inserted in 'ttrss_enclosures'.
2021-11-17 20:45:41 +00:00
wn_ fb1e85baaf Switch FeedParser back to described behavior for setting 'error'.
Also some formatting.
2021-11-17 19:29:54 +00:00
Andrew Dolgov aeb4137cbd document a few more plugin hooks 2021-11-17 18:30:32 +03:00
Andrew Dolgov 3e273ea527 add descriptions for some plugin hooks 2021-11-17 15:56:58 +03:00
Andrew Dolgov bd66eff7cc better check for docker 2021-11-17 10:52:37 +03:00
Andrew Dolgov 938f7db482 correctly show non-docker git installs as unsupported 2021-11-17 10:36:04 +03:00
Andrew Dolgov 5980b3d2cb pluginhost: set stricter @params 2021-11-16 18:35:13 +03:00
Andrew Dolgov 10d1a8c05a adjust phpdoc tags for hook definitions/constants (make them reference each other) 2021-11-16 16:31:40 +03:00
Andrew Dolgov ad30d39e2a not dead: Article.assigntolabel etc are exported methods called by frontend (Headlines.js) 2021-11-16 15:45:35 +03:00
Andrew Dolgov 4166628c36 Merge branch 'wip-phpstan-level6' of git.tt-rss.org:fox/tt-rss into wip-phpstan-level6 2021-11-16 09:19:19 +03:00
Andrew Dolgov 6a8030fd76 mailer: don't crash if php mail() fails with no reported errors 2021-11-16 09:19:12 +03:00
wn_ d78ba7b3a9 Minor fix in 'classes/articles.php'.
It looks like these functions are dead code, though.  Adding comments for future review.
2021-11-16 02:14:31 +00:00
Andrew Dolgov b2952843f5 * DiskCache: add download() helper
* Af_Comics_Gocomics_FarSide: cache linked images because it seems to
be required anyway
2021-11-15 23:22:21 +03:00
wn_ 109b702ed0 Minor fix to DOMNodeList#item() potential type (null vs false) 2021-11-15 12:24:38 +00:00
Andrew Dolgov aa924d9ee7 deal with several DOMElement-related errors 2021-11-15 08:26:02 +03:00
Andrew Dolgov 2493c9cddd set better matching type hint on virtual feed object 2021-11-15 08:19:44 +03:00
Andrew Dolgov 676c5787e7 require virtual feed plugins to implement IVirtualFeed 2021-11-15 07:11:29 +03:00