From e225d3ebbea439ba877593715957fad36a1f002a Mon Sep 17 00:00:00 2001 From: Knah Tsaeb Date: Tue, 10 Dec 2024 16:31:21 +0100 Subject: [PATCH] Merge V0.14.0 --- AUTHORS | 32 +- CHANGELOG.md | 407 +- CONTRIBUTING.md | 4 +- README.md | 4 +- application/Utils.php | 22 +- application/api/controllers/Info.php | 1 + application/bookmark/Bookmark.php | 8 +- application/config/ConfigManager.php | 1 - .../controller/admin/ServerController.php | 2 +- .../controller/visitor/FeedController.php | 2 +- application/helper/ApplicationUtils.php | 53 +- application/http/HttpUtils.php | 6 +- application/http/MetadataRetriever.php | 6 + application/legacy/LegacyLinkDB.php | 597 -- application/render/PageBuilder.php | 3 +- application/updater/Updater.php | 9 + assets/default/scss/shaarli.scss | 43 +- composer.lock | 857 ++- doc/md/dev/images/poedit-1.jpg | Bin 0 -> 72956 bytes doc/md/images/07-installation.jpg | Bin 0 -> 42832 bytes doc/md/images/doc-logo.png | Bin 0 -> 19520 bytes doc/md/images/doc-logo.svg | 522 ++ doc/md/images/edit_icon.png | Bin 0 -> 1548 bytes doc/md/images/icon.png | Bin 0 -> 1266 bytes doc/md/images/logo.png | Bin 0 -> 5456 bytes doc/md/images/rss-filter-1.png | Bin 0 -> 18534 bytes doc/md/images/rss-filter-2.png | Bin 0 -> 15440 bytes index.php | 2 +- package.json | 43 +- plugins/qrcode/qrcode.html | 4 +- plugins/qrcode/shaarli-qrcode.js | 21 +- shaarli_version.php | 2 +- tpl/default/page.header.html | 71 +- tpl/default/tools.html | 2 +- webpack.config.js | 62 +- yarn.lock | 4903 +++++++++-------- 36 files changed, 3946 insertions(+), 3743 deletions(-) create mode 100644 doc/md/dev/images/poedit-1.jpg create mode 100644 doc/md/images/07-installation.jpg create mode 100644 doc/md/images/doc-logo.png create mode 100644 doc/md/images/doc-logo.svg create mode 100644 doc/md/images/edit_icon.png create mode 100644 doc/md/images/icon.png create mode 100644 doc/md/images/logo.png create mode 100644 doc/md/images/rss-filter-1.png create mode 100644 doc/md/images/rss-filter-2.png diff --git a/AUTHORS b/AUTHORS index 74d42f84..78ff6db8 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,9 +1,9 @@ - 1216 ArthurHoaro - 456 nodiscc + 1221 ArthurHoaro + 518 nodiscc 405 VirtualTam 56 Sébastien Sauvage - 27 dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> - 19 Keith Carangelo + 31 Keith Carangelo + 28 dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 16 Luce Carević 15 Florian Eula 14 Emilien Klein @@ -11,21 +11,18 @@ 9 Lucas Cimon 9 Willi Eggeling 8 Christophe HENRY - 6 Immánuel Fodor - 6 YFdyh000 - 6 kalvn + 7 kalvn 6 B. van Berkum 6 Immánuel Fodor 6 YFdyh000 - 6 kalvn 6 llune 5 Mark Schmitz 5 Sébastien NOBILI 4 Alexandre Alapetite - 4 yude 4 David Sferruzza 4 yude 3 Agurato + 3 Andreas Waschinski <25221082+waschinski@users.noreply.github.com> 3 Christoph Stoettner 3 Olivier 3 Teromene @@ -43,24 +40,18 @@ 2 Miloš Jovanović 2 Neros 2 Qwerty + 2 Robert Riebisch <15858666+bttrx@users.noreply.github.com> 2 Sebastien Wains 2 Stephen Muth 2 Timo Van Neerden 2 flow.gunso 2 julienCXX - 2 Knah Tsaeb 2 philipp-r 2 pips 2 prog-it 2 trailjeep - 1 leyrer - 1 locness3 <37651007+locness3@users.noreply.github.com> - 1 owen bell <66233223+xfnw@users.noreply.github.com> - 1 philipp - 1 rfolo9li <50079896+rfolo9li@users.noreply.github.com> - 1 sprak3000 - 1 yudejp - 1 Rajat Hans + 1 7Ds7 <7Ds7@users.noreply.github.com> + 1 Adrien Oliva 1 Adrien le Maire 1 Ajabep 1 Alexis J @@ -85,6 +76,7 @@ 1 Franck Kerbiriou 1 Gary Marigliano 1 Hazhar Galeh <78073762+hazhargaleh@users.noreply.github.com> + 1 Henschi 1 Hg 1 Jens Kubieziel 1 Jonathan Amiez @@ -97,11 +89,14 @@ 1 Loïc Carr 1 Mark Gerarts 1 Marsup + 1 Martin Puppe + 1 Mickaël Schoentgen 1 Nicolas Friedli 1 Nicolas Le Gaillart 1 Paul van den Burg 1 Rajat Hans 1 Sbgodin + 1 Thibaud CANALE 1 ToM 1 TsT 1 agentcobra @@ -119,5 +114,6 @@ 1 owen bell <66233223+xfnw@users.noreply.github.com> 1 philipp 1 rfolo9li <50079896+rfolo9li@users.noreply.github.com> + 1 sokai 1 sprak3000 1 yudejp diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a4a675e..d1fbab17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,13 +4,66 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). -## [v0.13.0](https://github.com/shaarli/Shaarli/releases/tag/v0.12.3) - 2023-11-22 +------------------------ + +## [v0.14.0](https://github.com/shaarli/Shaarli/releases/tag/v0.14.0) - UNRELEASED + +### Added + +* doc: add third party plugins clickcounter and targetblank by @waschinski in https://github.com/shaarli/Shaarli/pull/2063 +* doc: add shaarli-offen plugin to Community & related software by @waschinski in https://github.com/shaarli/Shaarli/pull/2064 +* doc: add Shaanti browser extension to Community & related software by @7Ds7 in https://github.com/shaarli/Shaarli/pull/2078 +* doc: add image-upload plugin to Community & related software by @bttrx in https://github.com/shaarli/Shaarli/pull/2097 +* doc: add shaarli2bluesky plugin to Community & related software by @bttrx in https://github.com/shaarli/Shaarli/pull/2097 +* doc: server configuration: allow accessing and caching SVG assets by @nodiscc in https://github.com/shaarli/Shaarli/pull/2074 +* doc: usage: document "Sticky" mode by @kalvn in https://github.com/shaarli/Shaarli/pull/2111 +* doc: troubleshooting: add solution for `Allowed memory size of xxx bytes exhausted` by @nodiscc in https://github.com/shaarli/Shaarli/pull/2083 +* doc: usage: add opensearch/browser search engine integration instructions by @nodiscc in https://github.com/shaarli/Shaarli/pull/2096 +* doc: troubleshooting: list more cases in which title retrieval fails by @nodiscc in https://github.com/shaarli/Shaarli/pull/2060 + +### Changed + +* frontend: improve QR code CSP compliance by @thican in https://github.com/shaarli/Shaarli/pull/2103 +* docker: update base alpine linux docker image to v3.19.4 by @nodiscc in https://github.com/shaarli/Shaarli/pull/2051, https://github.com/shaarli/Shaarli/pull/2054, https://github.com/shaarli/Shaarli/pull/2067, https://github.com/shaarli/Shaarli/pull/2088 +* github actions: don't attempt to push docker image from forks by @nodiscc in https://github.com/shaarli/Shaarli/pull/2043 +* doc: changelog: minor style tweaks/standardization/spacing by @nodiscc in https://github.com/shaarli/Shaarli/pull/2106 +* github actions: run daily trivy security scans on release docker image, composer/yarn dependencies by @nodiscc in https://github.com/shaarli/Shaarli/pull/2047 + +### Fixed + +* PHP 8.x intl incompatibility: failback C locale with en_US by @ArthurHoaro in https://github.com/shaarli/Shaarli/pull/2044 +* fix description retrieval when page charset is not UTF-8 by @sokai in https://github.com/shaarli/Shaarli/pull/1992 +* fix metadata fetching for YouTube URLs by @puppe in https://github.com/shaarli/Shaarli/pull/2069 +* fix wrong date format when language is not english (Alpine icu package split) by @henschi in https://github.com/shaarli/Shaarli/pull/2102 +* doc: fix typos in special data example by @bttrx in https://github.com/shaarli/Shaarli/pull/2098 +* doc: fix broken link to 3rd party plugins by @BoboTiG in https://github.com/shaarli/Shaarli/pull/2059 +* ensure tags are unique when renaming by @kcaran in https://github.com/shaarli/Shaarli/pull/2086 +* doc: fix link to v0.13.0 release by @nodiscc in https://github.com/shaarli/Shaarli/pull/2107 +* tools: update trivy security scanner to v0.56.2 by @nodiscc in https://github.com/shaarli/Shaarli/pull/2070, https://github.com/shaarli/Shaarli/pull/2072, https://github.com/shaarli/Shaarli/pull/2089, https://github.com/shaarli/Shaarli/pull/2100 + +### Removed + +* remove `updates.check_updates_branch` setting by @ArthurHoaro in https://github.com/shaarli/Shaarli/pull/1971 +* doc: Remove remaining references to `stable` branch by @ArthurHoaro in https://github.com/shaarli/Shaarli/pull/2042 +* doc: contributing: IRC no longer available @nodiscc in https://github.com/shaarli/Shaarli/pull/2082 +* doc: community and related software: remove urlextern plugin (archived project) by @nodiscc in https://github.com/shaarli/Shaarli/pull/2077 + +### Security + +* frontend: update vulnerable npm dependencies (`npm audit fix`) by @kcaran in https://github.com/shaarli/Shaarli/pull/2087, @nodiscc in https://github.com/shaarli/Shaarli/pull/2056, https://github.com/shaarli/Shaarli/pull/2101 + +**Full Changelog**: https://github.com/shaarli/Shaarli/compare/v0.13.0...v0.14.0 + +------------------------ + +## [v0.13.0](https://github.com/shaarli/Shaarli/releases/tag/v0.13.0) - 2023-11-22 > Major changes: > - Security: Fix XSS vulnerability in tag search > - Drop support for PHP 7.1, 7.2 and 7.3 ### Added + * Docker build: add ARM64 platform and bump Github action version by @ArthurHoaro in https://github.com/shaarli/Shaarli/pull/1965 * github actions: build OCI images that contain both amd64 and armv7 by @nodiscc in https://github.com/shaarli/Shaarli/pull/1962 * Expose tags_separator config through /info API by @amadeous in https://github.com/shaarli/Shaarli/pull/1997 @@ -21,6 +74,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). * doc: troubleshooting: automatic title retrieval fails when it is set by javascript by @nodiscc in https://github.com/shaarli/Shaarli/pull/2037 ### Changed + * doc: update release procedure (merge the latest release to the release branch) + use the release branch for latest release version detection by @nodiscc in https://github.com/shaarli/Shaarli/pull/1960 * Update german translation by @bschwede in https://github.com/shaarli/Shaarli/pull/1969 * Update Server-configuration.md by @reinboldg in https://github.com/shaarli/Shaarli/pull/1973 @@ -32,6 +86,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). * replace mkdocs with sphinx/myst-parser for HTML documentation generation, documentation improvements by @nodiscc in https://github.com/shaarli/Shaarli/pull/2025 ### Fixed + * Makefile: Use GNU tar if available by @ArthurHoaro in https://github.com/shaarli/Shaarli/pull/1957 * Support: ignore disk_free_space if the function is unavailable by @ArthurHoaro in https://github.com/shaarli/Shaarli/pull/1970 * Documentation: fix broken link to 3rd party plugins by @ArthurHoaro in https://github.com/shaarli/Shaarli/pull/1975 @@ -39,13 +94,14 @@ and this project adheres to [Semantic Versioning](http://semver.org/). * doc: fix mkdocs build warnings/relative links by @nodiscc in https://github.com/shaarli/Shaarli/pull/2015 * correct usage of hyphens in all occurences of 'super fast, database-free' by @nodiscc in https://github.com/shaarli/Shaarli/pull/2003 - ### Removed + * Drop support for PHP 7.1, 7.2 and 7.3 by @ArthurHoaro in https://github.com/shaarli/Shaarli/pull/1958 * doc: themes: remove unmaintained themes by @nodiscc in https://github.com/shaarli/Shaarli/pull/2030 * doc: remove bountysource badge by @nodiscc in https://github.com/shaarli/Shaarli/pull/2035 ### Security + * Fix XSS vulnerability in tag search by @ArthurHoaro in https://github.com/shaarli/Shaarli/pull/2039 * tools: run trivy vulnerability scanner on the 'latest' docker image by @nodiscc in https://github.com/shaarli/Shaarli/pull/1980 * github actions: fix value of TRIVY_TARGET_DOCKER_IMAGE by @nodiscc in https://github.com/shaarli/Shaarli/pull/1989 @@ -55,6 +111,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/). **Full Changelog**: https://github.com/shaarli/Shaarli/compare/v0.12.2...v0.12.3 +------------------------ + ## [v0.12.2](https://github.com/shaarli/Shaarli/releases/tag/v0.12.2) - 2023-03-18 > Docker: use `ghcr.io/shaarli/shaarli` as Docker image instead of `shaarli/shaarli`. @@ -153,6 +211,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - remove the markdown plugin from the plugins list - remove duplicate "general" key in example config.php.json +------------------------ + ## [v0.12.1](https://github.com/shaarli/Shaarli/releases/tag/v0.12.1) - 2020-11-12 > nginx ([#1628](https://github.com/shaarli/Shaarli/pull/1628)) and Apache ([#1630](https://github.com/shaarli/Shaarli/pull/1630)) configurations have been reviewed. It is recommended that you @@ -160,6 +220,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). > Users using official Docker image will receive updated configuration automatically. ### Added + - Bulk creation of bookmarks - Server administration tool page (and install page requirements) - Support any tag separator, not just whitespaces @@ -175,6 +236,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Add strict types for bookmarks management ### Changed + - Improve regex and performances to extract HTML metadata (title, description, etc.) - Support using Shaarli without URL rewriting (prefix URL with `/index.php/`) - Improve the "Manage tags" tools page @@ -189,6 +251,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Apply PSR-12 on code base, and add CI check using PHPCS ### Fixed + - Compatiliby issue on login with PHP 7.1 - Japanese translations update - Redirect to referrer after bookmark deletion @@ -199,13 +262,17 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Docker-compose: fix SSL certificate + add parameter for Docker tag ### Removed + - `config.json.php` new lines in prefix/suffix to prevent issues with Windows PHP +------------------------ + ## [v0.12.0](https://github.com/shaarli/Shaarli/releases/tag/v0.12.0) - 2020-10-13 **Save you `data/` folder before updating!** ### Added + - Thumbnailer: add soundcloud.com to list of common media domains - Markdown rendering is now integrated into Shaarli core - Add autofocus on tag cloud filter input @@ -227,6 +294,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - REST API: compatibility with ionos Apache's headers ### Changed + - Introduce Bookmark object and Service layer - Save bookmark as objects in the datastore - Handle bookmark as objects across the whole codebase (except templates and plugins) @@ -240,6 +308,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Default theme: Make tag cloud/list views buttons more obvious ### Fixed + - Undefined index: thumbnail in daily page - Undefined index: thumbnail on OpenGraph headers - Undefined index: updated on linklist @@ -265,24 +334,31 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - docker-compose.yml: pin traefik image to 1.7-alpine ### Removed + - Markdown plugin - Docs: - emojione & twemoji removed - Makefile: remove static_analysis_summary from all: target - doc/Makefile: remove references to composer update +------------------------ + ## [v0.11.1](https://github.com/shaarli/Shaarli/releases/tag/v0.11.1) - 2019-08-03 Release to fix broken Docker build on the latest version. ### Fixed + - Fixed Docker build - Fixed a few documentation broken links - Fixed broken label in configuration page ### Added + - More accessibility improvements +------------------------ + ## [v0.11.0](https://github.com/shaarli/Shaarli/releases/tag/v0.11.0) - 2019-07-27 **Shaarli no longer officially support PHP 5.6 and PHP 7.0 as they've reached end of life.** @@ -290,6 +366,7 @@ Release to fix broken Docker build on the latest version. **Shaarli classes now use namespace, third party plugins need to update.** ### Added + - Add optional PHP extension to composer suggestions. - composer: enforce PHP security advisories - phpDocumentor configuration and make target @@ -302,6 +379,7 @@ Release to fix broken Docker build on the latest version. - Plugin to override default template colors ### Changed + - Shaarli now uses namespaces for its classes. - Rewrite IP ban management - Default template: slightly lighten visited link color @@ -310,6 +388,7 @@ Release to fix broken Docker build on the latest version. - Daily - display the current day instead of the previous one ### Fixed + - Do not check the IP address with session protection disabled - API: update test regexes to comply with PCRE2 - Optimize and cleanup imports @@ -325,17 +404,26 @@ Release to fix broken Docker build on the latest version. - Persist sticky status on bookmark update ### Removed + - Doxygen configuration - redirector setting - QRCode link to an external service +------------------------ + ## [v0.10.4](https://github.com/shaarli/Shaarli/releases/tag/v0.10.4) - 2019-04-16 + ### Fixed + - Fix thumbnails disabling if PHP GD is not installed - Fix a warning if links sticky status isn't set +------------------------ + ## [v0.10.3](https://github.com/shaarli/Shaarli/releases/tag/v0.10.3) - 2019-02-23 + ### Added + - Add OpenGraph metadata tags on permalink page - Add CORS headers to REST API reponses - Add a button to toggle checkboxes of displayed links @@ -345,6 +433,7 @@ Release to fix broken Docker build on the latest version. - Add a button to set links as sticky ### Changed + - Update French translation - Refactor the documentation homepage - Bump netscape-bookmark-parser @@ -353,6 +442,7 @@ Release to fix broken Docker build on the latest version. - Cleanup and refactor lint tooling ### Fixed + - Fix input size for dropdown search form - Fix history for bulk link deletion - Fix thumbnail requests @@ -361,14 +451,19 @@ Release to fix broken Docker build on the latest version. - Fix lint errors and improve PSR-1 and PSR-2 compliance ### Removed + - Remove Firefox Share documentation +------------------------ + ## [v0.10.2](https://github.com/shaarli/Shaarli/releases/tag/v0.10.2) - 2018-08-11 ### Fixed - Docker build +------------------------ + ## [v0.10.1](https://github.com/shaarli/Shaarli/releases/tag/v0.10.1) - 2018-08-11 ### Changed @@ -389,10 +484,14 @@ Release to fix broken Docker build on the latest version. - Firefox Social API shaare has been removed +------------------------ + ## [v0.10.0](https://github.com/shaarli/Shaarli/releases/tag/v0.10.0) - 2018-07-28 + **PHP 5.5 compatibility has been dropped.** Shaarli now requires at least PHP 5.6. ### Added + - Add a filter to display public links only - Add PHP 7.2 support - Add German translation @@ -408,6 +507,7 @@ Release to fix broken Docker build on the latest version. - Provide a Docker Compose example ### Changed + - Use web-thumbnailer to retrieve thumbnails (see #687) - Use a specific page title in all pages - Daily: run hooks before creating the columns @@ -427,11 +527,13 @@ Release to fix broken Docker build on the latest version. - Docker: expose a volume for the thumbnail cache ### Removed + - Drop support for PHP 5.5 - Remove vendored front-end libraries - Remove environment specific .gitignore entries ### Fixed + - Ignore the case while checking DOCTYPE during the file import - Fix removal of on=... attributes from html generated from Markdown - httpd: always forward the 'Authorization' header @@ -443,33 +545,48 @@ Release to fix broken Docker build on the latest version. - fix and simplify Dockerfile for armhf ### Security + - Update `.htaccess` to prevent accessing Git metadata when using a Git-based installation +------------------------ ## [v0.9.7](https://github.com/shaarli/Shaarli/releases/tag/v0.9.7) - 2018-06-20 + ### Changed + - Build the Docker images from the local Git sources +------------------------ ## [v0.9.6](https://github.com/shaarli/Shaarli/releases/tag/v0.9.6) - 2018-03-25 + ### Changed + - htaccess: prevent accessing resources not managed by SCM - htaccess: always forward the 'Authorization' HTTP header +------------------------ ## [v0.9.5](https://github.com/shaarli/Shaarli/releases/tag/v0.9.5) - 2018-02-02 + ### Fixed + - Fix a warning happening when `php-intl` is not installed on the system - Fix warnings happening when updating from legacy SebSauvage version +------------------------ + ## [v0.9.4](https://github.com/shaarli/Shaarli/releases/tag/v0.9.4) - 2018-01-30 + ### Added + - Enable translations: Shaarli is now also available in French. Other language translations are welcome! - Add EditorConfig configuration - Add favicons for mobile devices - Add Alpine Linux arm32v7 Dockerfiles (master, latest) ### Changed + - Do not write bookmark edition history during file imports (performance) - Migrate Docker images (master, latest) to Alpine Linux - Improve unitary tests and code coverage @@ -481,41 +598,51 @@ Release to fix broken Docker build on the latest version. - Improve page title retrieval performances ### Removed + - Remove redirector setting from Configure page ### Fixed + - Fix broken links in the documentation - Enable access to `data/user.css` (Apache 2.2 & 2.4) - Don't URL encode description links if parameter `redirector.encode_url` is set to false - Fix an issue preventing the Save button to appear for plugin parameters +------------------------ ## [v0.9.3](https://github.com/shaarli/Shaarli/releases/tag/v0.9.3) - 2018-01-04 + **XSS vulnerability fixed. Please update.** ## Security + - Fix an XSS (cross-site-scripting) vulnerability in `index.php` - [CVE-2018-5249](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5249) +------------------------ ## [v0.9.2](https://github.com/shaarli/Shaarli/releases/tag/v0.9.2) - 2017-10-07 **Major security issue fixed. Please update.** ### Added + - Tag search now supports wildcards `*` - New setting `privacy.force_login` which can be used with `privacy.hide_public_links` to redirect anonymous users to the login page. - New setting `general.default_note_title` used to override default `Note:` title prefix for notes. - Add a version hash for asset loading to prevent browser's cache issue ### Changed + - The "Remember me" checkbox is unchecked by default - The default value of the "Remember me" checkbox can be configured under `data/config.json.php` ### Removed + - Remove obsolete PHP magic quote support ### Fixed + - Generates a permalink URL if the URL is set to blank - Replace links to the old GitHub wiki with ReadTheDocs URIs - Use single quotes in the note bookmarklet @@ -536,6 +663,7 @@ Release to fix broken Docker build on the latest version. - Fixed reflected XSS vulnerability introduced in v0.9.1, discovered by @chb9 ([CVE-2017-15215](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-15215)). +------------------------ ## [v0.9.1](https://github.com/shaarli/Shaarli/releases/tag/v0.9.1) - 2017-08-23 @@ -544,6 +672,7 @@ The documentation has been migrated to ReadTheDocs: - edits are submitted as pull requests ### Added + - Allow bulk link deletion - Display subtags in the tag cloud - Add an endpoint to refresh the token @@ -553,6 +682,7 @@ The documentation has been migrated to ReadTheDocs: - Add creation date when editing a link ### Changed + - Documentation: - Generate static HTML documentation with [mkdocs](http://www.mkdocs.org/) - Host documentation on [ReadTheDocs](http://www.mkdocs.org/) @@ -571,6 +701,7 @@ The documentation has been migrated to ReadTheDocs: - Set Travis environment to `precise` until the new `trusty` environment is ready ### Removed + - Remove dead Pubsubhubbub code - Disable the GitHub wiki (see changed/documentation) - Remove Docker `dev` image and resources @@ -578,6 +709,7 @@ The documentation has been migrated to ReadTheDocs: - Remove the bottom "Sort by" menu in `tag.list.html` ### Fixed + - Fix file existence check for `user.css` - Limit selection to 2k characters when using the bookmarklet - Fix JS error `uncaught type error` @@ -586,8 +718,10 @@ The documentation has been migrated to ReadTheDocs: - Make sure that the tag exists before altering/removing it ### Security + - Add a whitelist for protocols for URLs +------------------------ ## [v0.9.0](https://github.com/shaarli/Shaarli/releases/tag/v0.9.0) - 2017-05-07 @@ -599,6 +733,7 @@ configuration to enable URL rewriting, see: **WARNING**: Shaarli now requires PHP 5.5+. ### Added + - REST API v1 - [Slim](https://www.slimframework.com/) framework - [JSON Web Token](https://jwt.io/introduction/) (JWT) authentication @@ -620,6 +755,7 @@ configuration to enable URL rewriting, see: - History mechanism which logs link addition/modification/deletion ### Changed + - Docker: enable nginx URL rewriting for the REST API - Theming: - Move `user.css` to the `data` folder @@ -644,10 +780,12 @@ configuration to enable URL rewriting, see: ### Removed + - PHP < 5.5 compatibility - ReadItYourself plugin ### Fixed + - Ignore generated release tarballs - Hide default port when behind a reverse proxy - Fix a typo in the Markdown plugin description @@ -663,47 +801,72 @@ configuration to enable URL rewriting, see: - Keep tags after login redirection ### Security + - Markdown plugin: escape HTML entities by default +------------------------ ## [v0.8.7](https://github.com/shaarli/Shaarli/releases/tag/v0.8.7) - 2018-06-20 + ### Changed + - Build the Docker image from the local Git sources ### Removed + - Disable PHP 5.3 Travis build (unsupported) +------------------------ ## [v0.8.6](https://github.com/shaarli/Shaarli/releases/tag/v0.8.6) - 2018-02-19 + ### Changed + - Run version check tests against the 'stable' branch +------------------------ ## [v0.8.5](https://github.com/shaarli/Shaarli/releases/tag/v0.8.5) - 2018-01-04 + **XSS vulnerability fixed. Please update.** ## Security + - Fix an XSS (cross-site-scripting) vulnerability in `index.php` - [CVE-2018-5249](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5249) +------------------------ + ## [v0.8.4](https://github.com/shaarli/Shaarli/releases/tag/v0.8.4) - 2017-03-04 + ### Security + - Markdown plugin: escape HTML entities by default +------------------------ + ## [v0.8.3](https://github.com/shaarli/Shaarli/releases/tag/v0.8.3) - 2017-01-20 + ### Fixed + - PHP 7.1 compatibility: add ConfigManager parameter to anti-bruteforce function call in login template. +------------------------ + ## [v0.8.2](https://github.com/shaarli/Shaarli/releases/tag/v0.8.2) - 2016-12-15 + ### Fixed - Editing a link created before the new ID system would change its permalink. +------------------------ + ## [v0.8.1](https://github.com/shaarli/Shaarli/releases/tag/v0.8.1) - 2016-12-12 > Note: this version will create an automatic backup of your database if anything goes wrong. ### Added + - Add CHANGELOG.md to track the whole project's history - Enable Composer cache for Travis builds - Save the last edition date for shaares and use it in Atom/RSS feeds @@ -715,6 +878,7 @@ configuration to enable URL rewriting, see: - Meta tag to *not* send the referrer to external resources. ### Changed + - Link ID complete refactoring: - Links now have a numeric ID instead of dates - Short URLs are now created once and can't change over time (previous URL are kept) @@ -732,6 +896,7 @@ configuration to enable URL rewriting, see: - Docker: explicitly set the maximum file upload size to 10 MiB ### Fixed + - Fix the server `` value in Atom/RSS feeds - Plugins: - Tools: only display parameter description when it exists @@ -745,21 +910,26 @@ configuration to enable URL rewriting, see: - ATOM feed: remove new line between content tag and data ### Security + - Allow whitelisting trusted IPs, else continue banning clients upon login failure +------------------------ ## [v0.8.0](https://github.com/shaarli/Shaarli/releases/tag/v0.8.0) - 2016-10-12 + Shaarli now uses [Composer](https://getcomposer.org/) to handle its dependencies. Please use our release archives, or follow the [installation documentation](https://github.com/shaarli/Shaarli/wiki/Download-and-Installation). ### Added + - Composer is required to resolve Shaarli's PHP dependencies - Shaarli now supports `#hashtags` - Firefox social share now uses selected text as a description - Plugin parameters can have a description in each plugin's `.meta` file ### Changed + - Configuration is now stored as a JSON file - Previous configuration format will be automatically updated (PHP -> JSON) - Shaarli now defaults to cURL to fetch shaare titles @@ -769,27 +939,38 @@ Please use our release archives, or follow the - Rewrite bookmark import using a generic Netscape parser ### Removed + - Shaarli no longer references Delicious in its description ### Deprecated + - Shaarli configuration is not held as PHP globals anymore ### Fixed + - Ignore case for tags in autocompletion and cloud tag - Avoid generating empty tags - Fix a Dockerfile syntax error ### Security + - Fixed a bug preventing to change password - XSRF token now generated each time a page is rendered +------------------------ ## [v0.7.1](https://github.com/shaarli/Shaarli/releases/tag/v0.7.1) - 2017-03-08 + ### Security + - Markdown plugin: escape HTML entities by default +------------------------ + ## [v0.7.0](https://github.com/shaarli/Shaarli/releases/tag/v0.7.0) - 2016-05-14 + ### Added + - Adds an option to encode redirector URL parameter - Atom/RSS feeds now support Markdown formatting, and plugins in general - Markdown: use the tag `.nomarkdown` to avoid markdown processing @@ -797,6 +978,7 @@ Please use our release archives, or follow the - Show a private links counter ### Changed + - Allow to use the bookmarklet in Firefox reader view (URL clean up) - Improve tagcloud font size - Improve title retrieving @@ -805,9 +987,11 @@ Please use our release archives, or follow the - Refactor Atom/RSS feed generation ### Removed + - Remove delicious from Shaarli description ### Fixed + - Fix bad login redirections causing a 404 in a few cases - Fix tagcloud font-size with French locale - Don't display empty tags in tag search @@ -816,21 +1000,28 @@ Please use our release archives, or follow the - Fix a bug preventing to import notes in browsers from bookmarks export - Don't redirect to ?post if ?addlink is reached while logged out +------------------------ ## [v0.6.5](https://github.com/shaarli/Shaarli/releases/tag/v0.6.5) - 2016-03-02 + ### Fixed + - Fixes a regression generating an unnecessary warning (language in HTTP request) - Fixes a bug where going through multiple reverse proxy could generate malformed URL - Markdown: Fixes a bug where empty description blocks were displayed +------------------------ ## [v0.6.4](https://github.com/shaarli/Shaarli/releases/tag/v0.6.4) - 2016-02-28 + ### Added + - Add an updater class to automate user data upgrades - Plugin admin page: adds a label for checkboxes and improve name display - Plugin Wallabag: API version can be specified in plugin admin page ### Changed + - Better tag cloud sorting, including special chars (`a > E > é > z`) - Autolocale now sets all locale categories, not just time - Use PHP's DateTime object instead of custom functions @@ -847,17 +1038,22 @@ Please use our release archives, or follow the - tags starting with a dot `.` will be hidden unless the user is logged in ### Fixed + - Fix Markdown plugin escape issues (code/quote blocks, etc.) - Link description aren't trimmed anymore to allow markdown format at the beginning of a shaare - Fixes plugin admin redirection page on error ### Security + - Fix a bug where non initialized variables were causing a warning - Fix a bug where saving a link after edit could cause a 404 error +------------------------ ## [v0.6.3](https://github.com/shaarli/Shaarli/releases/tag/v0.6.3) - 2016-01-31 + ### Added + - Plugins administration page - Markdown plugin added for shaares description - Docker: Dockerfile is now in the main git repository and improved @@ -865,6 +1061,7 @@ Please use our release archives, or follow the - Travis: include file permission checks ### Changed + - Auto retrieve of title know works with websites (HTTPS, follow redirections, etc.) - 404 page is now handled in a template - Date in log files updated to work with fail2ban @@ -873,47 +1070,62 @@ Please use our release archives, or follow the - Logging function refactoring ### Fixed + - Fix a bug where renaming a tag was causing a 404 - Fix a bug allowing to search blank terms - Fix a bug preventing to remove a tag with special chars when searching +------------------------ ## [v0.6.2](https://github.com/shaarli/Shaarli/releases/tag/v0.6.2) - 2015-12-23 + ### Changed + - Plugins: new footer hook - Plugins: improve QR code - Cleanup templates ### Fixed + - Plugins: use the actual link URL to generate QR codes - Templates: missing/erroneous page titles - Templates: missing variables resulting in PHP errors ### Security + - Fix invalid file permissions (remove executable bit) +------------------------ ## [v0.6.1](https://github.com/shaarli/Shaarli/releases/tag/v0.6.1) - 2015-12-01 + ### Added + - Add OpenSearch support - Add a Doxygen makefile target - Tools: add fine-grained file/directory permission checks (installation) ### Changed + - Tools: check the 'stable' branch for new versions (updates) - Cleanup: introduce an `ApplicationUtils` class ### Removed + - Cleanup: remove `json_encode()` function (built-in since PHP 5.2) ### Fixed + - Auto-complete more than one tag - Bookmarklet: support titles containing quotes - URL encode links when setting a redirector +------------------------ ## [v0.6.0](https://github.com/shaarli/Shaarli/releases/tag/v0.6.0) - 2015-11-18 + ### Added + - Introduce a plugin system - Add a demo_plugin - Add plugins: @@ -925,18 +1137,24 @@ Please use our release archives, or follow the - wallabag ### Changed + - Coding style ### Fixed + - Adding a new link now returns the correct anchor in the URL - Set default file permissions +------------------------ ## [v0.5.4](https://github.com/shaarli/Shaarli/releases/tag/v0.5.4) - 2015-09-15 + ### Added + - HTTPS: support being served behing an SSL-enabled proxy ### Changed + - HTTP/Server utilities: refactor & add test coverage - Project & documentation: - improve/rewrite `README.md` @@ -944,57 +1162,79 @@ Please use our release archives, or follow the - update `index.php` header ### Fixed + - PHP session IDs: handle hash algorithms and bits per char representations +------------------------ ## [v0.5.3](https://github.com/shaarli/Shaarli/releases/tag/v0.5.3) - 2015-09-02 + ### Fixed + - Fix a bug that could prevent user to login +------------------------ ## [0.5.3](https://github.com/shaarli/Shaarli/releases/tag/0.5.3) - 2015-09-02 + This release has been YANKED as it points to a tag that does not follow our naming convention. Please use `v0.5.3` instead ### Fixed + - Allow uppercase letters in PHP sessionid format +------------------------ ## [v0.5.2](https://github.com/shaarli/Shaarli/releases/tag/v0.5.2) - 2015-08-31 + ### Added + - Add PHP 7 to Travis platforms ### Changed + - Also extract HTTPS page metadata (title) ### Fixed + - Fix regression preventing to load LinkDB info when adding an existing link ### Security + - Fix Full Path Disclosure upon cookie forgery +------------------------ ## [v0.5.1](https://github.com/shaarli/Shaarli/releases/tag/v0.5.1) - 2015-08-17 + ### Added + - Add a link to the shaarli/shaarli DockerHub repository ### Changed + - Update local documentation - Improve timezone detection at installation - Improve feed cache handling - Improve URL cleanup for new links ### Fixed + - Fix 404 after editing a link while being logged out +------------------------ ## [v0.5.0](https://github.com/shaarli/Shaarli/releases/tag/v0.5.0) - 2015-07-31 + ### Added + - Add Firefox Social API - Start code refactoring: - add unit test coverage - add Travis integration ### Changed + - Search/Filter by tag fieds can now be accessed quickly with the `Tab` key - Update documentation - Remove duplicate tags in links @@ -1004,6 +1244,7 @@ This release has been YANKED as it points to a tag that does not follow our nami - refactor Config, LinkDB, TimeZone, Utils ### Fixed + - Fix locale handling - Fix note URLs - Fix page redirections @@ -1012,17 +1253,24 @@ This release has been YANKED as it points to a tag that does not follow our nami - Restore compatibility with PHP 5.3 ### Security + - Fix links not being hidden when `HIDE_PUBLIC_LINKS` is set +------------------------ ## [v0.0.45beta](https://github.com/shaarli/Shaarli/releases/tag/v0.0.45beta) - 2015-03-16 + ### Fixed + - Fix improperly displayed Unicode character - Fix incorrect font size for "Add link" input field +------------------------ ## [v0.0.44beta](https://github.com/shaarli/Shaarli/releases/tag/v0.0.44beta) - 2015-03-15 + ### Added + - Add a Makefile to run static code checkers - Add local documentation (help link in page footer) - Use awesomplete library for autocompletion @@ -1030,6 +1278,7 @@ This release has been YANKED as it points to a tag that does not follow our nami - New 'Add Note' bookmarklet to immediatly open a note (text post) compose window ### Changed + - Theme improvements and cleanup (menu, search fields, icons, linklist...) - Allow 'javascript:' links sharing (bookmarklets) - Make update check optional @@ -1038,20 +1287,26 @@ This release has been YANKED as it points to a tag that does not follow our nami - Code cleanup ### Removed + - Remove jQuery ### Security + - Don't disclose version to visitors (shaarli-version.txt) +------------------------ ## [v0.0.43beta](https://github.com/shaarli/Shaarli/releases/tag/v0.0.43beta) - 2015-02-20 + ### Added + - Title button link URL is now configurable - RainTPL's TMP and TPL directories path are now configurable - Displayed URLs for each link are now clickable links - Show links timestamps in Daily view ### Changed + - Automatically prepend "Note:" to title of self-posts (posts not pointing to an URL) - Make ATOM toolbar button optional (`SHOW_ATOM` configuration variable) - Optional archive.org links for each Shaarli link (`ARCHIVE_ORG` option) @@ -1062,6 +1317,7 @@ This release has been YANKED as it points to a tag that does not follow our nami - Updates to README and footer ### Fixed + - Fix problems when running Shaarli behind a reverse proxy (invalid RSS feed URL) - Update check now checks against the community fork version - Include `cache/`, `data/`, `pagecache/` and `tmp/` directories in the repository @@ -1075,12 +1331,16 @@ This release has been YANKED as it points to a tag that does not follow our nami - Search now works with Unicode characters ### Security + - Do not leak server's PHP version and Shaarli's full path on errors - Prevent Shaarli from sending a lot of duplicate cookies +------------------------ ## [v0.0.42beta](https://github.com/shaarli/Shaarli/releases/tag/v0.0.42beta) - 2014-07-27 + ### Added + - Add QRCode Javascript library - Allow importing bookmarks with the same timestamp (hack) - Allow putting a description in the bookmarklet URL @@ -1088,6 +1348,7 @@ This release has been YANKED as it points to a tag that does not follow our nami - Highlight search results ### Changed + - Improve 'Stay signed in' behaviour - Improve `smallHash()` - Refactor QRCode generation @@ -1095,20 +1356,26 @@ This release has been YANKED as it points to a tag that does not follow our nami - Update CSS ### Removed + - Remove jQuery from almost all pages ### Fixed + - Fix overlapping tags - Fix field foxus in the bookmarklet - Fix error message when `data/` is not writable - Fix HTML generation ### Security + - Fix XSS flaw +------------------------ ## [v0.0.41beta](https://github.com/shaarli/Shaarli/releases/tag/v0.0.41beta) - 2013-03-08 + ### Added + - Add HTTPS to the allowed protocols - Add support for magnet links in link descriptions - Allow creating new links as private by default @@ -1117,10 +1384,12 @@ This release has been YANKED as it points to a tag that does not follow our nami - Check session support before installation ### Changed + - Improve token security - RSS feed: allow inverting links/permalinks ### Fixed + - Fix display issues during installation - Fix popup redirection after login failure - Fix RSS formatting for Thunderbird @@ -1128,41 +1397,54 @@ This release has been YANKED as it points to a tag that does not follow our nami - Fix cache purge ### Security + - Fix login issue with WebKit browsers +------------------------ ## [v0.0.40beta](https://github.com/shaarli/Shaarli/releases/tag/v0.0.40beta) - 2013-02-26 + Initial release on GitHub. +------------------------ ## [v0.0.40beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) - 2012-08-24 + ### Added + - Flickr thumbnail now also support albums, galleries and users - Add a configuration option to disable session cookie protection Check this if your get disconnected often or your IP address changes often ### Removed + - Removed the xml comment in cached RSS/ATOM feed (although W3C-compliant, this may cause problems in some feed readers) ### Fixed + - A bug in the RSS cache would present old items as new in some cases - A small bug (non-initialized variable) in page cache cleaning - Proper "Nothing found" message when search returns no results - No more 404 error when searching with empty input - Flickr thumbnails are back (Flickr has made some changes to their domains) +------------------------ + ## [v0.0.39beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) - 2012-08-10 + ### Added - A cache for RSS feed, ATOM feed and Daily RSS feed, because these URLs are massively hammered. Cache is automatically purged whenever the database is changed. This will reduce server load. I may add cache to other pages later. ### Changed + - No more global `$LINKSDB` (Yuk) - Background color was removed when hovering a link ### Fixed + - Small bug corrected in config screen on timezones - Calling a non-existing permalink now returns a crude 404 error instead of 200 (OK) This is done on purpose @@ -1174,21 +1456,29 @@ Initial release on GitHub. (Yes, now it works on free.fr hosting) - Added `dialog=1` in bookmarklet code for some browsers +------------------------ ## [v0.0.38beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) - 2012-02-06 + ### Added + - Automatic creation of the `tmp` directory with proper rights (for RainTPL) - When you click the key to see only private links, it turns yellow ### Changed + - The "Daily" page now automatically skips empty days. ### Fixed + - Corrected the tag encoding (there was a bug when selecting a second tag which contains accented characters) +------------------------ ## [v0.0.37beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) - 2012-02-01 + ### Added + - Basic CSS for mobiles, which makes Shaarli //much// more usable on mobile devices - Picture wall no more instantly kills your browser. Now it uses [lazy image loading](http://www.appelsiini.net/projects/lazyload); @@ -1201,26 +1491,37 @@ Initial release on GitHub. RSS feed provides the last 7 days (only non-empty days are returned). - In link list, added an icon to see only private links. Click to toggle (only private / all) +------------------------ ## [v0.0.36beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) - 2012-01-25 + ### Added + - Shaarli licence in COPYING ### Changed + - Display adjustments in "Daily" page ### Fixed + - Improper text color in install form - Error in QRCode url (missing '?') +------------------------ ## [v0.0.35beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) - 2012-01-25 + ### Fixed + - Corrected a bug introduced in 0.0.34 which would improperly preprend data to URLs +------------------------ ## [v0.0.34beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) - 2012-01-25 + ### Added + - There is now a QR-Code of each permalink to easily open a link on your smartphone - Protocols `file:` and `apt:` are now also converted to clickable links (patch by Francis Chavanon) - Thumbnail support for http://xkcd.com/ (patch by Emilien Klein) @@ -1233,18 +1534,23 @@ Initial release on GitHub. RSS feed, CSS for mobile and printing...) ### Changed + - Upgraded bundled versions of jQuery (1.7.1) and jQuery UI (1.8.17) - Upgraded bundled version of RainTPL (2.7) - Changed HTTPS detection code ### Fixed + - In link edition, you can now click the word "Private" to check the box - Clicking a tag would not work properly if the tag contained special characters (like +) - Added proper jQuery licence (shame on me) +------------------------ ## [v0.0.33beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) - 2012-01-17 + ### Added + - Shaarli packaged to ease Linux distributions integration As a simple user, you do not need to cope with these versions Future releases of Shaarli will also be customized and published in these directories @@ -1261,18 +1567,24 @@ Initial release on GitHub. otherwise the .tar.gz will be corrupted ### Fixed + - ATOM feed validates again ### Security + - XSS vulnerability patched (thanks to Stanislas D.!) +------------------------ ## [v0.0.32beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) - 2011-12-16 + ### Added + - Better check on URL parameters (patch by gege2061) - Add `max-height` and `overflow:auto` attributes so that content can be scrolled if too large ### Changed + - HTML generation moved to RainTPL templates (in the `tpl/` directory) - Better detection of HTTPS (patch by gege2061) - In RSS/ATOM feeds, the GUID is now the permalink instead of the final URL (patch by gege2061) @@ -1281,18 +1593,23 @@ Initial release on GitHub. Thus you can use Shaarli as a personal pastebin (for posting source code, for example). ### Removed + - Page time generation was removed ### Fixed + - Tab order changed in login screen - Permalinks now work even if additional parameters have been added (e.g. `/?E8Yj2Q&utm_source=blablabla...`) - user.css is included only if the file is present (This prevents a useless CSS include which makes a harmless but useless 404 error.) +------------------------ ## [v0.0.31beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) - 2011-11-29 + ### Added + - Support for TED Talks (ted.com/talks) thumbnails (patch by Emilien K.) - partial [patch](http://www.idleman.fr/blog/?p=508) by Idleman: Better design consistency, icon on private links. In-page popup was not included because it causes problem on some websites - Support for bookmark files without ADD_DATE attributes @@ -1303,32 +1620,44 @@ Initial release on GitHub. Please note that Shaarli CSS are not stable and may completely change on each version ### Changed + - Edit and Delete buttons in link list were replaced with icons. (patch by Jerrywham) ### Fixed + - Better error handling in thumbnail generation (patch by Emilien K.) - The top menu is no longer displayed in bookmarklet popup - Bookmark which have the exact same date/time are now correctly imported. Most remaining import problems should be solved now - Comment in Shaarli export moved to beginning of file to prevent clash with last link description +------------------------ ## [v0.0.30beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) - 2011-11-18 + ### Added + - Add a small `delete` button in link list (after the `edit` button) ### Fixed + - Moved the call to PubSubHub +------------------------ ## [v0.0.29beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) - 2011-11-18 + ### Fixed + - Corrected a bug introduced in v0.0.28beta (there was an error if you use the bookmarklet and you're not logged in) +------------------------ ## [v0.0.28beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) - 2011-11-17 + ### Added + - Thumbnail support for youtu.be URLs (YouTube short url service) - PubSubHub protocol support (from http://aldarone.fr/les-flux-rss-shaarli-et-pubsubhubbub/). Warning: This was not tested. You need to set your hub url in @@ -1338,6 +1667,7 @@ Initial release on GitHub. respective specifications) ### Changed + - New Shaarli theme and logo by Idle (http://www.idleman.fr/blog/?p=469) - In picture wall, pictures point to Shaarli permalink instead of final URL. This way, users can read the description. @@ -1347,30 +1677,39 @@ Initial release on GitHub. name collision with some PHP extensions ### Fixed + - Thumbnails removed for imgur.com/a/ URLs (Thumbnails are not available for albums on imgur) - Shaarli now correctly only tries to get thumbnails for vimeo video URLs - Fix a bug in imgur.com URLs handling that would cause some thumbnails not to appear - The search engine would not return a result if the word to search was the first in description - Extracted title is now correct if the page has two `title` html tags +------------------------ ## [v0.0.27beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) - 2011-10-18 + ### Added - Add a picture wall, which can be filtered too: it will use the same filters (tags,text search) as current page when clicked. +------------------------ ## [v0.0.26beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) - 2011-10-17 + ### Changed - Made permalink more visible (smallHash) ### Fixed + - Removed extras space in description when URLs are converted to clickable links - Thumbnail for subreddit imgur urls (/r/...) were corrected (thanks to Accent Grave) +------------------------ ## [v0.0.25beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) - 2011-10-13 + ### Added + - Better CSS for printing (thanks to jerrywham suggestion) - Allow using a redirector or anonymizing proxy for links (such as `http://anonym.to/?` to mask you `HTTP_REFERER`). @@ -1384,6 +1723,7 @@ Initial release on GitHub. Other services will still have a thumbnail (youtube,imgur.com,dailymotion,imageshack.us) ### Changed + - Now thumbnails generated by Shaarli are croped to a height of 120 pixels - YouTube thumbnails now use `default.jpg` instead of `2.jpg` (This is usually more pertinent) - Configuration options (such as `HIDE_TIMESTAMPS`, `ENABLE_THUMBNAILS`, etc.) @@ -1395,12 +1735,16 @@ Initial release on GitHub. - A few CSS tweaks (thanks to maethor for suggestion) ### Fixed + - Shaarli now supports newlines in titles (thanks to dixy) - The link to the RSS feed in page header was not correct +------------------------ ## [v0.0.24beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) + ### Added + - Allow posting an entry without a link. (You can use Shaarli as a kind of "personal twitter") - Each Shaarli entry now has a short link (just click on the date of a link). Now you can send a link that points to a single entry in your Shaarli @@ -1409,23 +1753,30 @@ Initial release on GitHub. (as long as the images are less than 4 Mb and take less than 30 seconds to download) ### Fixed + - Now thumbnails also work for imgur gallery links (/gallery/...) (Thanks to Accent Grave for the correction) - Removed useless debugging information in log - The filter in RSS/ATOM feed now works again properly (it was broken in 0.0.17beta) +------------------------ ## [v0.0.23beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) + ### Added + - Added thumbnail support for imageshack.us ### Changed + - Now you can clic the sentence "Stay signed in" to tick the checkbox (patch by Emilien) - In tag editing, comma (,) are now automatically converted to spaces - In tag editing, autocomplete no longuer suggests a tag you have already entered in the same line +------------------------ ## [v0.0.22beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) + ### Added - Support for thumbnails for flickr.com - Allow staying signed in: @@ -1433,6 +1784,7 @@ Initial release on GitHub. This is available through a checkbox in the login screen. ### Changed + - Some hosts (flickr, vimeo) are slow as hell for the thumbnails, or require an extra HTTP request. For these hosts the thumbnail generation has been deported outside the generation @@ -1440,37 +1792,49 @@ Initial release on GitHub. For these slow services, the thumbnails are also cached. ### Fixed + - Title was not properly passed if you had to login when using the bookmarklet (patch by shenshei) +------------------------ ## [v0.0.21beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) + ### Added + - Thumbnails for some services Currently supports: YouTube.com, dailymotion.com, vimeo.com (slow!) and imgur.com. Thumbnails are enabled by default, but you can turn them off (set `define('ENABLE_THUMBNAILS',true);` to `false`). ### Changed + - Removed the focus on the searchbox (this is cumbersome when you want to browse pages and scroll with the keyboard) +------------------------ ## [v0.0.20beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) + ### Fixed + - RSS feed is now served as `application/rss+xml` instead of `application/xhtml+xml` (which was causing problem in //RSS Lounge//) - ATOM feed is now served as `application/atom+xml` instead of `application/xhtml+xml` +------------------------ ## [v0.0.19beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) + ### Added - ATOM feed ### Fixed - Patch by Emilien to remove the update notification after the update +------------------------ ## [v0.0.18beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) + ### Added - You can now configure the title of your page - New screen to configure title and timezone @@ -1481,9 +1845,12 @@ Initial release on GitHub. ### Fixed - New lines now appear correctly in the RSS feed descriptions. +------------------------ ## [v0.0.17beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) + ### Added + - Change password screen added (based on a patch by killruana) - Autocomplete in the tag search form - You can rename or delete a tag in all links @@ -1492,12 +1859,16 @@ Initial release on GitHub. as the page you were viewing ### Changed + - CSS adjustments by jerrywham - Minor corrections +------------------------ ## [v0.0.16beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) + ### Added + - Upgrade notification: If a new version of Shaarli is available, you will be notified by a discreet message in top-right corner. @@ -1506,52 +1877,69 @@ Initial release on GitHub. - Preliminary tag cloud (ugly for the moment, I need to find something better) ### Changed + - Replaced `preg_match()` with `version_compare()` to check PHP version - Includes a patch by Emilien K. to mask dates if user is not logged in. The option can be activated by changing `define('HIDE_TIMESTAMPS',false);` to `true` +------------------------ ## [v0.0.15beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) + ### Added + - New in import: Option to overwrite existing links when importing - On free.fr, automatic creation of the `/sessions` directory ### Changed + - CSS Stylesheet is now an external file (shaarli.css). This reduces page size and eases customization. ### Removed + - Removed some parameters in URL added by some feed proxies (`#xtor=RSS-...`) ### Fixed + - Bug corrected: Prevented loop on login screen upon successful login after a failed login - Bug corrected in import: HTML entities were not properly decoded. If you imported your Delicious/Diigo bookmarks, your should import them again and use the 'overwrite' option of the import feature. +------------------------ ## [v0.0.14beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) + ### Added + - You no longer need to disable `magic_quotes` on your host. Shaarli will cope with this option beeing activated. +------------------------ ## [v0.0.13beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) + ### Added + - Import: New option to import html bookmark file as private links - Import: Importing a bookmark file will not overwrite existing links anymore - Export: New options to export only public or private links ### Changed + - In tag autocomplete, tags are presented in use order (most used tags first, instead of alphabetical order) - RSS Feed can now be filtered by tags or fulltext search. Just add to the feed url: - `&searchtags=minecraft+video` for tag filtering - `&searchterm=portal` for fulltext search to the feed url +------------------------ ## [v0.0.12beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) + ### Added + - Add a check that the config file was properly created (in case Shaarli does not have the write rights in its folder) - Open Shaarli: there is an option to open your Shaarli to anyone. @@ -1560,34 +1948,49 @@ Initial release on GitHub. Note: No anti-spam for the moment. You are warned! - Autocomplete for tags +------------------------ ## [v0.0.11beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) + ### Added + - Add a check and a warning for some hosts which still have `magic_quotes` activated +------------------------ ## [v0.0.10beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) + ### Added + - Get rid of `"` in titles +------------------------ ## [v0.0.9beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) + ### Added + - Now works on hosts `free.fr` and `1and1` - Now works with PHP 5.1 - PHP version is now checked and an error message is displayed if version is not correct ### Fixed + - No more error messages if the browser does not send `HTTP_REFERER` - No more error messages if the host has disabled http protocol in PHP config (eg. 1and1) +------------------------ ## [v0.0.8beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) + ### Changed + - In RSS feed, GUID content replaced with the URL of the link, because some stupid RSS reader (like Google Reader) use `` as a link instead of using `` +------------------------ ## [v0.0.7beta](http://sebsauvage.net/wiki/doku.php?id=php:shaarli:history) - 2011-09-16 + First public release by Sebsauvage, see original article: [Adieu Delicious, Diigo et StumbleUpon. Salut Shaarli !](http://sebsauvage.net/rhaa/index.php?2011/09/16/09/29/58-adieu-delicious-diigo-et-stumbleupon-salut-shaarli-) (FR) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 03564fd2..8acf1bbe 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,8 +13,8 @@ Check the [milestones](https://github.com/shaarli/Shaarli/milestones) to see wha * The issues list should preferably contain **only tasks that can be actioned immediately**. Anyone should be able to open the issues list, pick one and start working on it immediately. * If you have a clear idea of a **feature you expect, or have a specific bug/defect to report**, [search the issues list, both open and closed](https://github.com/shaarli/Shaarli/issues?q=is%3Aissue) to check if it has been discussed, and comment on the appropriate issue. If you can't find one, please open a [new issue](https://github.com/shaarli/Shaarli/issues/new) - * **General discussions** fit in #44 so that we don't follow a slope where users and contributors have to track 90 "maybe" items in the bug tracker. Separate issues about clear, separate steps can be opened after discussion. - * You can also join instant discussion at https://gitter.im/shaarli/Shaarli, or via IRC as described [here](https://github.com/shaarli/Shaarli/issues/44#issuecomment-77745105) + * The **[general discussion](https://github.com/shaarli/Shaarli/issues/308)** issue can be used for general announcements or project-related discussion. + * You can also join instant discussion at https://gitter.im/shaarli/Shaarli. ### Documentation diff --git a/README.md b/README.md index 618172c4..8dc5fc51 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,10 @@ _Do you want to share the links you discover?_ _Shaarli is a minimalist link sharing service that you can install on your own server._ _It is designed to be personal (single-user), fast and handy._ -[![](https://img.shields.io/badge/stable-v0.12.2-blue.svg)](https://github.com/shaarli/Shaarli/releases/tag/v0.11.1) -[![](https://img.shields.io/badge/latest-v0.13.0-blue.svg)](https://github.com/shaarli/Shaarli/releases/tag/v0.12.2) +[![](https://img.shields.io/badge/release-v0.13.0-blue.svg)](https://github.com/shaarli/Shaarli/releases/tag/v0.13.0) [![](https://img.shields.io/badge/master-v0.13.x-blue.svg)](https://github.com/shaarli/Shaarli) [![](https://github.com/shaarli/Shaarli/actions/workflows/ci.yml/badge.svg)](https://github.com/shaarli/Shaarli/actions) +[![](https://github.com/shaarli/Shaarli/actions/workflows/trivy-release.yml/badge.svg)](https://github.com/shaarli/Shaarli/actions) [![Join the chat at https://gitter.im/shaarli/Shaarli](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/shaarli/Shaarli) [![Docker repository](https://img.shields.io/docker/pulls/shaarli/shaarli.svg)](https://github.com/shaarli/Shaarli/pkgs/container/shaarli) diff --git a/application/Utils.php b/application/Utils.php index 48d47415..4d284ccb 100644 --- a/application/Utils.php +++ b/application/Utils.php @@ -322,7 +322,7 @@ function format_date($date, $time = true, $intl = true) return $date->format($format); } $formatter = new IntlDateFormatter( - setlocale(LC_TIME, 0), + get_locale(LC_TIME), IntlDateFormatter::LONG, $time ? IntlDateFormatter::LONG : IntlDateFormatter::NONE ); @@ -503,3 +503,23 @@ function exception2text(Throwable $e): string { return $e->getMessage() . PHP_EOL . $e->getFile() . $e->getLine() . PHP_EOL . $e->getTraceAsString(); } + +/** + * Get the current locale, overrides 'C' locale which is no longer compatible with PHP-intl + * + * @param int $category Category of the locale (LC_CTYPE, LC_NUMERIC, LC_TIME, LC_COLLATE, LC_MONETARY, LC_ALL) + * + * @return string|false The locale, or false if not found. + * + * @see https://github.com/php/php-src/issues/12561 + */ +function get_locale(int $category = LC_CTYPE) +{ + $locale = setlocale($category, 0); + + if ($locale === 'C' || startsWith($locale, 'C.')) { + $locale = 'en_US.utf8'; // failback + } + + return $locale; +} diff --git a/application/api/controllers/Info.php b/application/api/controllers/Info.php index ae7db93e..1cacfb42 100644 --- a/application/api/controllers/Info.php +++ b/application/api/controllers/Info.php @@ -35,6 +35,7 @@ class Info extends ApiController 'timezone' => $this->conf->get('general.timezone', 'UTC'), 'enabled_plugins' => $this->conf->get('general.enabled_plugins', []), 'default_private_links' => $this->conf->get('privacy.default_private_links', false), + 'tags_separator' => $this->conf->get('general.tags_separator', ' '), ], ]; diff --git a/application/bookmark/Bookmark.php b/application/bookmark/Bookmark.php index 56751e15..6a83bef0 100644 --- a/application/bookmark/Bookmark.php +++ b/application/bookmark/Bookmark.php @@ -505,7 +505,7 @@ class Bookmark } /** - * Rename a tag in tags list. + * Rename a tag in tags list. If the new tag already exists, merge them * * @param string $fromTag * @param string $toTag @@ -513,7 +513,11 @@ class Bookmark public function renameTag(string $fromTag, string $toTag): void { if (($pos = array_search($fromTag, $this->tags ?? [])) !== false) { - $this->tags[$pos] = trim($toTag); + if (in_array($toTag, $this->tags ?? []) !== false) { + $this->deleteTag($fromTag); + } else { + $this->tags[$pos] = trim($toTag); + } } } diff --git a/application/config/ConfigManager.php b/application/config/ConfigManager.php index 717a038f..b98a746f 100644 --- a/application/config/ConfigManager.php +++ b/application/config/ConfigManager.php @@ -372,7 +372,6 @@ class ConfigManager $this->setEmpty('general.tags_separator', ' '); $this->setEmpty('updates.check_updates', true); - $this->setEmpty('updates.check_updates_branch', 'latest'); $this->setEmpty('updates.check_updates_interval', 86400); $this->setEmpty('feed.rss_permalinks', true); diff --git a/application/front/controller/admin/ServerController.php b/application/front/controller/admin/ServerController.php index 9be5ea77..8978b976 100644 --- a/application/front/controller/admin/ServerController.php +++ b/application/front/controller/admin/ServerController.php @@ -36,7 +36,7 @@ class ServerController extends ShaarliAdminController } $currentVersion = ApplicationUtils::getVersion('./shaarli_version.php'); - $currentVersion = $currentVersion === 'dev' ? $currentVersion : 'v' . $currentVersion; + $currentVersion = ApplicationUtils::isDevVersion($currentVersion) ? $currentVersion : 'v' . $currentVersion; $phpEol = new \DateTimeImmutable(ApplicationUtils::getPhpEol(PHP_VERSION)); $permissions = array_merge( diff --git a/application/front/controller/visitor/FeedController.php b/application/front/controller/visitor/FeedController.php index edc7ef43..5f9ea1c0 100644 --- a/application/front/controller/visitor/FeedController.php +++ b/application/front/controller/visitor/FeedController.php @@ -38,7 +38,7 @@ class FeedController extends ShaarliVisitorController } // Generate data. - $this->container->feedBuilder->setLocale(strtolower(setlocale(LC_COLLATE, 0))); + $this->container->feedBuilder->setLocale(strtolower(get_locale(LC_COLLATE))); $this->container->feedBuilder->setHideDates($this->container->conf->get('privacy.hide_timestamps', false)); $this->container->feedBuilder->setUsePermalinks( null !== $request->getParam('permalinks') || !$this->container->conf->get('feed.rss_permalinks') diff --git a/application/helper/ApplicationUtils.php b/application/helper/ApplicationUtils.php index d875f2b8..6d13fa19 100644 --- a/application/helper/ApplicationUtils.php +++ b/application/helper/ApplicationUtils.php @@ -19,7 +19,7 @@ class ApplicationUtils public static $GITHUB_URL = 'https://github.com/shaarli/Shaarli'; public static $GIT_RAW_URL = 'https://raw.githubusercontent.com/shaarli/Shaarli'; - public static $GIT_BRANCHES = ['latest', 'stable']; + public static $RELEASE_BRANCH = 'release'; private static $VERSION_START_TAG = ''; @@ -89,7 +89,6 @@ class ApplicationUtils * @param int $checkInterval the minimum interval between update checks (in seconds * @param bool $enableCheck whether to check for new versions * @param bool $isLoggedIn whether the user is logged in - * @param string $branch check update for the given branch * * @throws Exception an invalid branch has been set for update checks * @@ -100,13 +99,12 @@ class ApplicationUtils $updateFile, $checkInterval, $enableCheck, - $isLoggedIn, - $branch = 'stable' + $isLoggedIn ) { // Do not check versions for visitors // Do not check if the user doesn't want to // Do not check with dev version - if (!$isLoggedIn || empty($enableCheck) || $currentVersion === 'dev') { + if (!$isLoggedIn || empty($enableCheck) || self::isDevVersion($currentVersion)) { return false; } @@ -120,16 +118,10 @@ class ApplicationUtils return false; } - if (!in_array($branch, self::$GIT_BRANCHES)) { - throw new Exception( - 'Invalid branch selected for updates: "' . $branch . '"' - ); - } - // Late Static Binding allows overriding within tests // See http://php.net/manual/en/language.oop5.late-static-bindings.php $latestVersion = static::getVersion( - self::$GIT_RAW_URL . '/' . $branch . '/' . self::$VERSION_FILE + self::$GIT_RAW_URL . '/' . self::$RELEASE_BRANCH . '/' . self::$VERSION_FILE ); if (!$latestVersion) { @@ -189,11 +181,11 @@ class ApplicationUtils // Check script and template directories are readable foreach ( [ - 'application', - 'inc', - 'plugins', - $rainTplDir, - $rainTplDir . '/' . $conf->get('resource.theme'), + 'application', + 'inc', + 'plugins', + $rainTplDir, + $rainTplDir . '/' . $conf->get('resource.theme'), ] as $path ) { if (!is_readable(realpath($path))) { @@ -208,10 +200,10 @@ class ApplicationUtils ]; } else { $folders = [ - $conf->get('resource.thumbnails_cache'), - $conf->get('resource.data_dir'), - $conf->get('resource.page_cache'), - $conf->get('resource.raintpl_tmp'), + $conf->get('resource.thumbnails_cache'), + $conf->get('resource.data_dir'), + $conf->get('resource.page_cache'), + $conf->get('resource.raintpl_tmp'), ]; } @@ -231,12 +223,12 @@ class ApplicationUtils // Check configuration files are readable and writable foreach ( [ - $conf->getConfigFileExt(), - $conf->get('resource.datastore'), - $conf->get('resource.ban_file'), - $conf->get('resource.log'), - $conf->get('resource.update_check'), - ] as $path + $conf->getConfigFileExt(), + $conf->get('resource.datastore'), + $conf->get('resource.ban_file'), + $conf->get('resource.log'), + $conf->get('resource.update_check'), + ] as $path ) { if (!is_string($path) || !is_file(realpath($path))) { # the file may not exist yet @@ -334,4 +326,11 @@ class ApplicationUtils '8.2' => '2025-12-08', ][$matches[1]] ?? (new \DateTime('+2 year'))->format('Y-m-d'); } + + public static function isDevVersion(string $version): bool + { + return strpos($version, 'dev') !== false + || preg_match('/[a-f0-9]{7}/', $version) === 1 + ; + } } diff --git a/application/http/HttpUtils.php b/application/http/HttpUtils.php index 4bde1d5b..c6904f49 100644 --- a/application/http/HttpUtils.php +++ b/application/http/HttpUtils.php @@ -52,10 +52,10 @@ function get_http_response( } $userAgent = - 'Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:45.0)' - . ' Gecko/20100101 Firefox/45.0'; + 'Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:115.0)' + . ' Gecko/20100101 Firefox/115.0'; $acceptLanguage = - substr(setlocale(LC_COLLATE, 0), 0, 2) . ',en-US;q=0.7,en;q=0.3'; + substr(get_locale(LC_COLLATE), 0, 2) . ',en-US;q=0.7,en;q=0.3'; $maxRedirs = 3; if (!function_exists('curl_init')) { diff --git a/application/http/MetadataRetriever.php b/application/http/MetadataRetriever.php index cfc72583..86441660 100644 --- a/application/http/MetadataRetriever.php +++ b/application/http/MetadataRetriever.php @@ -59,6 +59,12 @@ class MetadataRetriever if (!empty($title) && strtolower($charset) !== 'utf-8') { $title = mb_convert_encoding($title, 'utf-8', $charset); } + if (!empty($description) && strtolower($charset) !== 'utf-8') { + $description = mb_convert_encoding($description, 'utf-8', $charset); + } + if (!empty($tags) && strtolower($charset) !== 'utf-8') { + $tags = mb_convert_encoding($tags, 'utf-8', $charset); + } return array_map([$this, 'cleanMetadata'], [ 'title' => $title, diff --git a/application/legacy/LegacyLinkDB.php b/application/legacy/LegacyLinkDB.php index 1ab4b9d7..af1e6cba 100644 --- a/application/legacy/LegacyLinkDB.php +++ b/application/legacy/LegacyLinkDB.php @@ -1,591 +1,3 @@ -<<<<<<< HEAD -link offset) - private $urls; - - /** - * @var array List of all bookmarks IDS mapped with their array offset. - * Map: id->offset. - */ - protected $ids; - - // List of offset keys (for the Iterator interface implementation) - private $keys; - - // Position in the $this->keys array (for the Iterator interface) - private $position; - - // Is the user logged in? (used to filter private bookmarks) - private $loggedIn; - - // Hide public bookmarks - private $hidePublicLinks; - - /** - * Creates a new LinkDB - * - * Checks if the datastore exists; else, attempts to create a dummy one. - * - * @param string $datastore datastore file path. - * @param boolean $isLoggedIn is the user logged in? - * @param boolean $hidePublicLinks if true all bookmarks are private. - */ - public function __construct( - $datastore, - $isLoggedIn, - $hidePublicLinks - ) { - - $this->datastore = $datastore; - $this->loggedIn = $isLoggedIn; - $this->hidePublicLinks = $hidePublicLinks; - $this->check(); - $this->read(); - } - - /** - * Countable - Counts elements of an object - */ - public function count(): int - { - return count($this->links); - } - - /** - * ArrayAccess - Assigns a value to the specified offset - */ - public function offsetSet($offset, $value): void - { - // TODO: use exceptions instead of "die" - if (!$this->loggedIn) { - die(t('You are not authorized to add a link.')); - } - if (!isset($value['id']) || empty($value['url'])) { - die(t('Internal Error: A link should always have an id and URL.')); - } - if (($offset !== null && !is_int($offset)) || !is_int($value['id'])) { - die(t('You must specify an integer as a key.')); - } - if ($offset !== null && $offset !== $value['id']) { - die(t('Array offset and link ID must be equal.')); - } - - // If the link exists, we reuse the real offset, otherwise new entry - $existing = $this->getLinkOffset($offset); - if ($existing !== null) { - $offset = $existing; - } else { - $offset = count($this->links); - } - $this->links[$offset] = $value; - $this->urls[$value['url']] = $offset; - $this->ids[$value['id']] = $offset; - } - - /** - * ArrayAccess - Whether or not an offset exists - */ - public function offsetExists($offset): bool - { - return array_key_exists($this->getLinkOffset($offset), $this->links); - } - - /** - * ArrayAccess - Unsets an offset - */ - public function offsetUnset($offset): void - { - if (!$this->loggedIn) { - // TODO: raise an exception - die('You are not authorized to delete a link.'); - } - $realOffset = $this->getLinkOffset($offset); - $url = $this->links[$realOffset]['url']; - unset($this->urls[$url]); - unset($this->ids[$realOffset]); - unset($this->links[$realOffset]); - } - - /** - * ArrayAccess - Returns the value at specified offset - */ - public function offsetGet($offset): ?array - { - $realOffset = $this->getLinkOffset($offset); - return isset($this->links[$realOffset]) ? $this->links[$realOffset] : null; - } - - /** - * Iterator - Returns the current element - */ - public function current(): array - { - return $this[$this->keys[$this->position]]; - } - - /** - * Iterator - Returns the key of the current element - * - * @return int|string - */ - #[\ReturnTypeWillChange] - public function key() - { - return $this->keys[$this->position]; - } - - /** - * Iterator - Moves forward to next element - */ - public function next(): void - { - ++$this->position; - } - - /** - * Iterator - Rewinds the Iterator to the first element - * - * Entries are sorted by date (latest first) - */ - public function rewind(): void - { - $this->keys = array_keys($this->ids); - $this->position = 0; - } - - /** - * Iterator - Checks if current position is valid - */ - public function valid(): bool - { - return isset($this->keys[$this->position]); - } - - /** - * Checks if the DB directory and file exist - * - * If no DB file is found, creates a dummy DB. - */ - private function check() - { - if (file_exists($this->datastore)) { - return; - } - - // Create a dummy database for example - $this->links = []; - $link = [ - 'id' => 1, - 'title' => t('The personal, minimalist, super-fast, database free, bookmarking service'), - 'url' => 'https://shaarli.readthedocs.io', - 'description' => t( - 'Welcome to Shaarli! This is your first public bookmark. ' - . 'To edit or delete me, you must first login. - -To learn how to use Shaarli, consult the link "Documentation" at the bottom of this page. - -You use the community supported version of the original Shaarli project, by Sebastien Sauvage.' - ), - 'private' => 0, - 'created' => new DateTime(), - 'tags' => 'opensource software', - 'sticky' => false, - ]; - $link['shorturl'] = link_small_hash($link['created'], $link['id']); - $this->links[1] = $link; - - $link = [ - 'id' => 0, - 'title' => t('My secret stuff... - Pastebin.com'), - 'url' => 'http://sebsauvage.net/paste/?8434b27936c09649#bR7XsXhoTiLcqCpQbmOpBi3rq2zzQUC5hBI7ZT1O3x8=', - 'description' => t('Shhhh! I\'m a private link only YOU can see. You can delete me too.'), - 'private' => 1, - 'created' => new DateTime('1 minute ago'), - 'tags' => 'secretstuff', - 'sticky' => false, - ]; - $link['shorturl'] = link_small_hash($link['created'], $link['id']); - $this->links[0] = $link; - - // Write database to disk - $this->write(); - } - - /** - * Reads database from disk to memory - */ - private function read() - { - // Public bookmarks are hidden and user not logged in => nothing to show - if ($this->hidePublicLinks && !$this->loggedIn) { - $this->links = []; - return; - } - - $this->urls = []; - $this->ids = []; - $this->links = FileUtils::readFlatDB($this->datastore, []); - - $toremove = []; - foreach ($this->links as $key => &$link) { - if (!$this->loggedIn && $link['private'] != 0) { - // Transition for not upgraded databases. - unset($this->links[$key]); - continue; - } - - // Sanitize data fields. - sanitizeLink($link); - - // Remove private tags if the user is not logged in. - if (!$this->loggedIn) { - $link['tags'] = preg_replace('/(^|\s+)\.[^($|\s)]+\s*/', ' ', $link['tags']); - } - - $link['real_url'] = $link['url']; - - $link['sticky'] = isset($link['sticky']) ? $link['sticky'] : false; - - // To be able to load bookmarks before running the update, and prepare the update - if (!isset($link['created'])) { - $link['id'] = $link['linkdate']; - $link['created'] = DateTime::createFromFormat(self::LINK_DATE_FORMAT, $link['linkdate']); - if (!empty($link['updated'])) { - $link['updated'] = DateTime::createFromFormat(self::LINK_DATE_FORMAT, $link['updated']); - } - $link['shorturl'] = smallHash($link['linkdate']); - } - - $this->urls[$link['url']] = $key; - $this->ids[$link['id']] = $key; - } - } - - /** - * Saves the database from memory to disk - * - * @throws IOException the datastore is not writable - */ - private function write() - { - $this->reorder(); - FileUtils::writeFlatDB($this->datastore, $this->links); - } - - /** - * Saves the database from memory to disk - * - * @param string $pageCacheDir page cache directory - */ - public function save($pageCacheDir) - { - if (!$this->loggedIn) { - // TODO: raise an Exception instead - die('You are not authorized to change the database.'); - } - - $this->write(); - - $pageCacheManager = new PageCacheManager($pageCacheDir, $this->loggedIn); - $pageCacheManager->invalidateCaches(); - } - - /** - * Returns the link for a given URL, or False if it does not exist. - * - * @param string $url URL to search for - * - * @return mixed the existing link if it exists, else 'false' - */ - public function getLinkFromUrl($url) - { - if (isset($this->urls[$url])) { - return $this->links[$this->urls[$url]]; - } - return false; - } - - /** - * Returns the shaare corresponding to a smallHash. - * - * @param string $request QUERY_STRING server parameter. - * - * @return array $filtered array containing permalink data. - * - * @throws BookmarkNotFoundException if the smallhash is malformed or doesn't match any link. - */ - public function filterHash($request) - { - $request = substr($request, 0, 6); - $linkFilter = new LegacyLinkFilter($this->links); - return $linkFilter->filter(LegacyLinkFilter::$FILTER_HASH, $request); - } - - /** - * Returns the list of articles for a given day. - * - * @param string $request day to filter. Format: YYYYMMDD. - * - * @return array list of shaare found. - */ - public function filterDay($request) - { - $linkFilter = new LegacyLinkFilter($this->links); - return $linkFilter->filter(LegacyLinkFilter::$FILTER_DAY, $request); - } - - /** - * Filter bookmarks according to search parameters. - * - * @param array $filterRequest Search request content. Supported keys: - * - searchtags: list of tags - * - searchterm: term search - * @param bool $casesensitive Optional: Perform case sensitive filter - * @param string $visibility return only all/private/public bookmarks - * @param bool $untaggedonly return only untagged bookmarks - * - * @return array filtered bookmarks, all bookmarks if no suitable filter was provided. - */ - public function filterSearch( - $filterRequest = [], - $casesensitive = false, - $visibility = 'all', - $untaggedonly = false - ) { - - // Filter link database according to parameters. - $searchtags = isset($filterRequest['searchtags']) ? escape($filterRequest['searchtags']) : ''; - $searchterm = isset($filterRequest['searchterm']) ? escape($filterRequest['searchterm']) : ''; - - // Search tags + fullsearch - blank string parameter will return all bookmarks. - $type = LegacyLinkFilter::$FILTER_TAG | LegacyLinkFilter::$FILTER_TEXT; // == "vuotext" - $request = [$searchtags, $searchterm]; - - $linkFilter = new LegacyLinkFilter($this); - return $linkFilter->filter($type, $request, $casesensitive, $visibility, $untaggedonly); - } - - /** - * Returns the list tags appearing in the bookmarks with the given tags - * - * @param array $filteringTags tags selecting the bookmarks to consider - * @param string $visibility process only all/private/public bookmarks - * - * @return array tag => linksCount - */ - public function linksCountPerTag($filteringTags = [], $visibility = 'all') - { - $links = $this->filterSearch(['searchtags' => $filteringTags], false, $visibility); - $tags = []; - $caseMapping = []; - foreach ($links as $link) { - foreach (preg_split('/\s+/', $link['tags'], 0, PREG_SPLIT_NO_EMPTY) as $tag) { - if (empty($tag)) { - continue; - } - // The first case found will be displayed. - if (!isset($caseMapping[strtolower($tag)])) { - $caseMapping[strtolower($tag)] = $tag; - $tags[$caseMapping[strtolower($tag)]] = 0; - } - $tags[$caseMapping[strtolower($tag)]]++; - } - } - - /* - * Formerly used arsort(), which doesn't define the sort behaviour for equal values. - * Also, this function doesn't produce the same result between PHP 5.6 and 7. - * - * So we now use array_multisort() to sort tags by DESC occurrences, - * then ASC alphabetically for equal values. - * - * @see https://github.com/shaarli/Shaarli/issues/1142 - */ - $keys = array_keys($tags); - $tmpTags = array_combine($keys, $keys); - array_multisort($tags, SORT_DESC, $tmpTags, SORT_ASC, $tags); - return $tags; - } - - /** - * Rename or delete a tag across all bookmarks. - * - * @param string $from Tag to rename - * @param string $to New tag. If none is provided, the from tag will be deleted - * - * @return array|bool List of altered bookmarks or false on error - */ - public function renameTag($from, $to) - { - if (empty($from)) { - return false; - } - $delete = empty($to); - // True for case-sensitive tag search. - $linksToAlter = $this->filterSearch(['searchtags' => $from], true); - foreach ($linksToAlter as $key => &$value) { - $tags = preg_split('/\s+/', trim($value['tags'])); - if (($pos = array_search($from, $tags)) !== false) { - if ($delete) { - unset($tags[$pos]); // Remove tag. - } else { - $tags[$pos] = trim($to); - } - $value['tags'] = trim(implode(' ', array_unique($tags))); - $this[$value['id']] = $value; - } - } - - return $linksToAlter; - } - - /** - * Returns the list of days containing articles (oldest first) - * Output: An array containing days (in format YYYYMMDD). - */ - public function days() - { - $linkDays = []; - foreach ($this->links as $link) { - $linkDays[$link['created']->format('Ymd')] = 0; - } - $linkDays = array_keys($linkDays); - sort($linkDays); - - return $linkDays; - } - - /** - * Reorder bookmarks by creation date (newest first). - * - * Also update the urls and ids mapping arrays. - * - * @param string $order ASC|DESC - */ - public function reorder($order = 'DESC') - { - $order = $order === 'ASC' ? -1 : 1; - // Reorder array by dates. - usort($this->links, function ($a, $b) use ($order) { - if (isset($a['sticky']) && isset($b['sticky']) && $a['sticky'] !== $b['sticky']) { - return $a['sticky'] ? -1 : 1; - } - if ($a['created'] == $b['created']) { - return $a['id'] < $b['id'] ? 1 * $order : -1 * $order; - } - return $a['created'] < $b['created'] ? 1 * $order : -1 * $order; - }); - - $this->urls = []; - $this->ids = []; - foreach ($this->links as $key => $link) { - $this->urls[$link['url']] = $key; - $this->ids[$link['id']] = $key; - } - } - - /** - * Return the next key for link creation. - * E.g. If the last ID is 597, the next will be 598. - * - * @return int next ID. - */ - public function getNextId() - { - if (!empty($this->ids)) { - return max(array_keys($this->ids)) + 1; - } - return 0; - } - - /** - * Returns a link offset in bookmarks array from its unique ID. - * - * @param int $id Persistent ID of a link. - * - * @return int Real offset in local array, or null if doesn't exist. - */ - protected function getLinkOffset($id) - { - if (isset($this->ids[$id])) { - return $this->ids[$id]; - } - return null; - } -} -||||||| d7dead56 -======= >>>>>>> github/v0.13:application/legacy/LegacyLinkDB.php if (!isset($link['created'])) { $link['id'] = $link['linkdate']; $link['created'] = DateTime::createFromFormat(self::LINK_DATE_FORMAT, $link['linkdate']); @@ -1179,4 +583,3 @@ You use the community supported version of the original Shaarli project, by Seba return null; } } ->>>>>>> github/v0.13 diff --git a/application/render/PageBuilder.php b/application/render/PageBuilder.php index bf0ae326..3f9e550c 100644 --- a/application/render/PageBuilder.php +++ b/application/render/PageBuilder.php @@ -103,8 +103,7 @@ class PageBuilder $this->conf->get('resource.update_check'), $this->conf->get('updates.check_updates_interval'), $this->conf->get('updates.check_updates'), - $this->isLoggedIn, - $this->conf->get('updates.check_updates_branch') + $this->isLoggedIn ); $this->tpl->assign('newVersion', escape($version)); $this->tpl->assign('versionError', ''); diff --git a/application/updater/Updater.php b/application/updater/Updater.php index 11b6c051..a9ea6562 100644 --- a/application/updater/Updater.php +++ b/application/updater/Updater.php @@ -172,6 +172,15 @@ class Updater return true; } + public function updateMethodRemoveSettingRemoteBranch(): bool + { + if ($this->conf->exists('updates.check_updates_branch')) { + $this->conf->remove('updates.check_updates_branch', true, true); + } + + return true; + } + public function setBasePath(string $basePath): self { $this->basePath = $basePath; diff --git a/assets/default/scss/shaarli.scss b/assets/default/scss/shaarli.scss index 51ddff23..76e767de 100644 --- a/assets/default/scss/shaarli.scss +++ b/assets/default/scss/shaarli.scss @@ -19,8 +19,8 @@ $orange: #f89406; $blue: #0b5ea6; $background-color: #d0d0d0; $background-linklist-info: #ddd; -$light-shadow: rgba(255, 255, 255, .078); -$dark-shadow: rgba(0, 0, 0, .298); +$light-shadow: rgba(255, 255, 255, 7.8%); +$dark-shadow: rgba(0, 0, 0, 29.8%); $warning-text: #97600d; $form-input-border: #d8d8d8; $form-input-background: #eee; @@ -66,7 +66,7 @@ pre { } @font-face { - font-family: 'Roboto'; + font-family: Roboto; font-weight: 400; font-style: normal; src: @@ -76,7 +76,7 @@ pre { } @font-face { - font-family: 'Roboto'; + font-family: Roboto; font-weight: 700; font-style: normal; src: @@ -187,6 +187,7 @@ body, z-index: 999; background: var(--main-color); width: 100%; + // Hack to transition with auto height: http://stackoverflow.com/a/8331169/1484919 max-height: 45px; overflow: hidden; @@ -320,7 +321,7 @@ body, input { &[type='text'] { - border: medium none currentColor; + border: medium none currentcolor; border-radius: 2px; box-shadow: 0 1px 0 $light-shadow, 0 1px 1px $dark-shadow inset; background: $almost-white; @@ -329,7 +330,7 @@ body, height: 30px; color: $dark-grey; - &::-webkit-input-placeholder { + &::placeholder { color: $light-grey; } } @@ -392,7 +393,7 @@ body, } %subheader-form-input { - border: medium none currentColor; + border: medium none currentcolor; border-radius: 2px; box-shadow: 0 1px 0 $light-shadow, 0 1px 4px $dark-shadow inset; background: $almost-white; @@ -416,7 +417,7 @@ body, &[type='password'] { @extend %subheader-form-input; - &::-webkit-input-placeholder { + &::placeholder { color: $dark-grey; } } @@ -472,7 +473,7 @@ body, width: 200px; // because chrome - &::-webkit-input-placeholder { + &::placeholder { color: $light-grey; } } @@ -518,7 +519,7 @@ body, input { &[type='text'] { - border: medium none currentColor; + border: medium none currentcolor; border-radius: 2px; box-shadow: 0 1px 0 $light-shadow, 0 1px 1px $dark-shadow inset; background: $almost-white; @@ -527,13 +528,13 @@ body, height: 30px; color: $dark-grey; - &::-webkit-input-placeholder { + &::placeholder { color: $light-grey; } } &[type='submit'] { - border: medium none currentColor; + border: medium none currentcolor; border-radius: 2px; background: $almost-white; padding: 0 10px; @@ -637,7 +638,7 @@ body, @extend %linksperpage-button; margin: 0; - border: medium none currentColor; + border: medium none currentcolor; background: $almost-white; padding: 4px 5px 3px 8px; height: 20px; @@ -995,7 +996,7 @@ body, &[type='text'] { @extend %page-form-input; - &::-webkit-input-placeholder { + &::placeholder { color: $light-grey; } } @@ -1003,7 +1004,7 @@ body, &[type='password'] { @extend %page-form-input; - &::-webkit-input-placeholder { + &::placeholder { color: $light-grey; } } @@ -1530,9 +1531,6 @@ form { .b-lazy { transition: opacity 500ms ease-in-out; opacity: 0; - -webkit-transition: opacity 500ms ease-in-out; - -moz-transition: opacity 500ms ease-in-out; - -o-transition: opacity 500ms ease-in-out; min-width: 1px; min-height: 1px; @@ -1624,11 +1622,6 @@ form { } } -// Fix empty bookmarklet name in Firefox -.pure-button { - -moz-user-select: auto; -} - .tag-sort { margin-top: 30px; text-align: center; @@ -1790,7 +1783,7 @@ input[name='save_edit_batch'] { &::after { content: ""; flex-grow: 1; - background: rgba(0, 0, 0, 0.35); + background: rgba(0, 0, 0, 35%); height: 1px; font-size: 0; line-height: 0; @@ -1811,7 +1804,7 @@ input[name='save_edit_batch'] { height: 100%; width: 100%; z-index: 998; - background-color: rgba(0, 0, 0, .75); + background-color: rgba(0, 0, 0, 75%); color: #fff; .screen-center { diff --git a/composer.lock b/composer.lock index cc3235a3..1aaa4d77 100644 --- a/composer.lock +++ b/composer.lock @@ -157,16 +157,16 @@ }, { "name": "gettext/gettext", - "version": "v4.8.12", + "version": "v4.8.8", "source": { "type": "git", "url": "https://github.com/php-gettext/Gettext.git", - "reference": "11af89ee6c087db3cf09ce2111a150bca5c46e12" + "reference": "302a00aa9d6762c92c884d879c15d3ed05d6a37d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-gettext/Gettext/zipball/11af89ee6c087db3cf09ce2111a150bca5c46e12", - "reference": "11af89ee6c087db3cf09ce2111a150bca5c46e12", + "url": "https://api.github.com/repos/php-gettext/Gettext/zipball/302a00aa9d6762c92c884d879c15d3ed05d6a37d", + "reference": "302a00aa9d6762c92c884d879c15d3ed05d6a37d", "shasum": "" }, "require": { @@ -218,7 +218,7 @@ "support": { "email": "oom@oscarotero.com", "issues": "https://github.com/oscarotero/Gettext/issues", - "source": "https://github.com/php-gettext/Gettext/tree/v4.8.12" + "source": "https://github.com/php-gettext/Gettext/tree/v4.8.8" }, "funding": [ { @@ -234,7 +234,7 @@ "type": "patreon" } ], - "time": "2024-05-18T10:25:07+00:00" + "time": "2022-12-08T11:59:50+00:00" }, { "name": "gettext/languages", @@ -665,25 +665,25 @@ }, { "name": "psr/http-message", - "version": "1.1", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -712,9 +712,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/1.1" + "source": "https://github.com/php-fig/http-message/tree/master" }, - "time": "2023-04-04T09:50:52+00:00" + "time": "2016-08-06T14:39:51+00:00" }, { "name": "psr/log", @@ -886,16 +886,16 @@ }, { "name": "slim/slim", - "version": "3.12.5", + "version": "3.12.4", "source": { "type": "git", "url": "https://github.com/slimphp/Slim.git", - "reference": "565632b2d9b64ecedf89546edbbf4f3648089f0c" + "reference": "ce3cb65a06325fc9fe3d0223f2ae23113a767304" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slimphp/Slim/zipball/565632b2d9b64ecedf89546edbbf4f3648089f0c", - "reference": "565632b2d9b64ecedf89546edbbf4f3648089f0c", + "url": "https://api.github.com/repos/slimphp/Slim/zipball/ce3cb65a06325fc9fe3d0223f2ae23113a767304", + "reference": "ce3cb65a06325fc9fe3d0223f2ae23113a767304", "shasum": "" }, "require": { @@ -957,7 +957,7 @@ ], "support": { "issues": "https://github.com/slimphp/Slim/issues", - "source": "https://github.com/slimphp/Slim/tree/3.12.5" + "source": "https://github.com/slimphp/Slim/tree/3.12.4" }, "funding": [ { @@ -969,7 +969,7 @@ "type": "tidelift" } ], - "time": "2023-07-23T04:32:51+00:00" + "time": "2021-10-02T19:38:22+00:00" } ], "packages-dev": [ @@ -1045,16 +1045,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.12.0", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -1062,12 +1062,11 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3 <3.2.2" + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", - "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", @@ -1093,7 +1092,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -1101,31 +1100,29 @@ "type": "tidelift" } ], - "time": "2024-06-12T14:39:25+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "nikic/php-parser", - "version": "v5.0.2", + "version": "v4.15.4", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" + "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", - "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", "shasum": "" }, "require": { - "ext-ctype": "*", - "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.4" + "php": ">=7.0" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -1133,7 +1130,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "4.9-dev" } }, "autoload": { @@ -1157,27 +1154,26 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" }, - "time": "2024-03-05T20:51:40+00:00" + "time": "2023-03-05T19:49:14+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.4", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "54750ef60c58e43759730615a392c31c80e23176" + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", - "reference": "54750ef60c58e43759730615a392c31c80e23176", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, "require": { "ext-dom": "*", - "ext-libxml": "*", "ext-phar": "*", "ext-xmlwriter": "*", "phar-io/version": "^3.0.1", @@ -1218,15 +1214,9 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.4" + "source": "https://github.com/phar-io/manifest/tree/2.0.3" }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2024-03-03T12:33:53+00:00" + "time": "2021-07-20T11:28:43+00:00" }, { "name": "phar-io/version", @@ -1281,23 +1271,23 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.31", + "version": "9.2.26", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" + "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965", - "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", + "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.18 || ^5.0", + "nikic/php-parser": "^4.15", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -1346,8 +1336,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.26" }, "funding": [ { @@ -1355,7 +1344,7 @@ "type": "github" } ], - "time": "2024-03-02T06:37:42+00:00" + "time": "2023-03-06T12:58:08+00:00" }, { "name": "phpunit/php-file-iterator", @@ -1541,16 +1530,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.19", + "version": "9.6.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8" + "reference": "86e761949019ae83f49240b2f2123fb5ab3b2fc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1a54a473501ef4cdeaae4e06891674114d79db8", - "reference": "a1a54a473501ef4cdeaae4e06891674114d79db8", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/86e761949019ae83f49240b2f2123fb5ab3b2fc5", + "reference": "86e761949019ae83f49240b2f2123fb5ab3b2fc5", "shasum": "" }, "require": { @@ -1565,7 +1554,7 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.28", + "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", @@ -1623,8 +1612,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.19" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.5" }, "funding": [ { @@ -1640,7 +1628,7 @@ "type": "tidelift" } ], - "time": "2024-04-05T04:35:58+00:00" + "time": "2023-03-09T06:34:10+00:00" }, { "name": "roave/security-advisories", @@ -1648,74 +1636,53 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "5b38ec8e0b7fdca1e7b95173a15d3cac3a482d1f" + "reference": "ad434708152844968e15adf8eb3f4a2d7066242e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/5b38ec8e0b7fdca1e7b95173a15d3cac3a482d1f", - "reference": "5b38ec8e0b7fdca1e7b95173a15d3cac3a482d1f", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/ad434708152844968e15adf8eb3f4a2d7066242e", + "reference": "ad434708152844968e15adf8eb3f4a2d7066242e", "shasum": "" }, "conflict": { "3f/pygmentize": "<1.2", - "admidio/admidio": "<4.2.13", + "admidio/admidio": "<4.1.9", "adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3", - "aheinze/cockpit": "<2.2", - "aimeos/ai-client-html": ">=2020.04.1,<2020.10.27|>=2021.04.1,<2021.10.21|>=2022.04.1,<2022.10.12|>=2023.04.1,<2023.10.14|>=2024.04.1,<2024.04.4", - "aimeos/aimeos-core": "<2024.04.7", - "aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5", - "airesvsg/acf-to-rest-api": "<=3.1", + "aheinze/cockpit": "<=2.2.1", "akaunting/akaunting": "<2.1.13", "akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53", "alextselegidis/easyappointments": "<1.5", "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", "amazing/media2click": ">=1,<1.3.3", "amphp/artax": "<1.0.6|>=2,<2.0.6", - "amphp/http": "<=1.7.2|>=2,<=2.1", + "amphp/http": "<1.0.1", "amphp/http-client": ">=4,<4.4", "anchorcms/anchor-cms": "<=0.12.7", "andreapollastri/cipi": "<=3.1.15", - "andrewhaine/silverstripe-form-capture": ">=0.2,<=0.2.3|>=1,<1.0.2|>=2,<2.2.5", - "apache-solr-for-typo3/solr": "<2.8.3", "apereo/phpcas": "<1.6", "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6|>=2.6,<2.7.10|>=3,<3.0.12|>=3.1,<3.1.3", - "appwrite/server-ce": "<=1.2.1", + "appwrite/server-ce": "<0.11.1|>=0.12,<0.12.2", "arc/web": "<3", "area17/twill": "<1.2.5|>=2,<2.5.3", - "artesaos/seotools": "<0.17.2", - "asymmetricrypt/asymmetricrypt": "<9.9.99", - "athlon1600/php-proxy": "<=5.1", - "athlon1600/php-proxy-app": "<=3", - "austintoddj/canvas": "<=3.4.2", - "automad/automad": "<=1.10.9", - "automattic/jetpack": "<9.8", + "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99", + "automad/automad": "<1.8", "awesome-support/awesome-support": "<=6.0.7", - "aws/aws-sdk-php": "<3.288.1", - "azuracast/azuracast": "<0.18.3", - "backdrop/backdrop": "<1.24.2", - "backpack/crud": "<3.4.9", - "bacula-web/bacula-web": "<8.0.0.0-RC2-dev", + "aws/aws-sdk-php": ">=3,<3.2.1", + "backdrop/backdrop": "<=1.23", "badaso/core": "<2.7", - "bagisto/bagisto": "<2.1", + "bagisto/bagisto": "<0.1.5", "barrelstrength/sprout-base-email": "<1.2.7", "barrelstrength/sprout-forms": "<3.9", "barryvdh/laravel-translation-manager": "<0.6.2", "barzahlen/barzahlen-php": "<2.0.1", - "baserproject/basercms": "<5.0.9", + "baserproject/basercms": "<4.7.2", "bassjobsen/bootstrap-3-typeahead": ">4.0.2", - "bbpress/bbpress": "<2.6.5", - "bcosca/fatfree": "<3.7.2", - "bedita/bedita": "<4", - "bigfork/silverstripe-form-capture": ">=3,<3.1.1", - "billz/raspap-webgui": "<2.9.5", + "billz/raspap-webgui": "<=2.6.6", "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3", - "blueimp/jquery-file-upload": "==6.4.4", "bmarshall511/wordpress_zero_spam": "<5.2.13", "bolt/bolt": "<3.7.2", "bolt/core": "<=4.2", - "born05/craft-twofactorauthentication": "<3.3.4", "bottelet/flarepoint": "<2.2.1", - "bref/bref": "<2.1.17", "brightlocal/phpwhois": "<=4.2.5", "brotkrueml/codehighlight": "<2.7", "brotkrueml/schema": "<1.13.1|>=2,<2.5.1", @@ -1724,510 +1691,368 @@ "bugsnag/bugsnag-laravel": ">=2,<2.0.2", "bytefury/crater": "<6.0.2", "cachethq/cachet": "<2.5.1", - "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", + "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10|= 1.3.7|>=4.1,<4.1.4", "cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", "cardgate/magento2": "<2.0.33", - "cardgate/woocommerce": "<=3.1.15", "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", - "cart2quote/module-quotation-encoded": ">=4.1.6,<=4.4.5|>=5,<5.4.4", "cartalyst/sentry": "<=2.1.6", "catfan/medoo": "<1.7.5", - "causal/oidc": "<2.1", - "cecil/cecil": "<7.47.1", - "centreon/centreon": "<22.10.15", + "centreon/centreon": "<22.10-beta.1", "cesnet/simplesamlphp-module-proxystatistics": "<3.1", - "chriskacerguis/codeigniter-restserver": "<=2.7.1", - "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", - "ckeditor/ckeditor": "<4.24", - "cockpit-hq/cockpit": "<2.7|==2.7", + "cockpit-hq/cockpit": "<2.4.1", "codeception/codeception": "<3.1.3|>=4,<4.1.22", - "codeigniter/framework": "<3.1.9", - "codeigniter4/framework": "<4.4.7", - "codeigniter4/shield": "<1.0.0.0-beta8", + "codeigniter/framework": "<=3.0.6", + "codeigniter4/framework": "<4.2.11", + "codeigniter4/shield": "<1-beta.4|= 1.0.0-beta", "codiad/codiad": "<=2.8.4", - "composer/composer": "<1.10.27|>=2,<2.2.24|>=2.3,<2.7.7", - "concrete5/concrete5": "<9.2.8", + "composer/composer": "<1.10.26|>=2-alpha.1,<2.2.12|>=2.3,<2.3.5", + "concrete5/concrete5": "<=9.1.3|>= 9.0.0RC1, < 9.1.3", "concrete5/core": "<8.5.8|>=9,<9.1", "contao-components/mediaelement": ">=2.14.2,<2.21.1", - "contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4", - "contao/contao": ">=3,<3.5.37|>=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4", - "contao/core": "<3.5.39", - "contao/core-bundle": "<4.13.40|>=5,<5.3.4", - "contao/listing-bundle": ">=3,<=3.5.30|>=4,<4.4.8", + "contao/contao": ">=4,<4.4.56|>=4.5,<4.9.18|>=4.10,<4.11.7|>=4.13,<4.13.3", + "contao/core": ">=2,<3.5.39", + "contao/core-bundle": "<4.9.18|>=4.10,<4.11.7|>=4.13,<4.13.3|= 4.10.0", + "contao/listing-bundle": ">=4,<4.4.8", "contao/managed-edition": "<=1.5", - "corveda/phpsandbox": "<1.3.5", - "cosenary/instagram": "<=2.3", - "craftcms/cms": "<4.6.2", - "croogo/croogo": "<4", + "craftcms/cms": "<3.7.64|>= 4.0.0-RC1, < 4.3.7|>= 4.0.0-RC1, < 4.2.1", + "croogo/croogo": "<3.0.7", "cuyz/valinor": "<0.12", "czproject/git-php": "<4.0.3", - "dapphp/securimage": "<3.6.6", "darylldoyle/safe-svg": "<1.9.10", "datadog/dd-trace": ">=0.30,<0.30.2", - "datatables/datatables": "<1.10.10", "david-garcia/phpwhois": "<=4.3.1", "dbrisinajumi/d2files": "<1", - "dcat/laravel-admin": "<=2.1.3.0-beta", "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3", - "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4", - "desperado/xml-bundle": "<=0.1.7", - "devgroup/dotplant": "<2020.09.14-dev", - "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", - "doctrine/annotations": "<1.2.7", + "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1", + "directmailteam/direct-mail": "<5.2.4", + "doctrine/annotations": ">=1,<1.2.7", "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", - "doctrine/common": "<2.4.3|>=2.5,<2.5.1", + "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4", "doctrine/doctrine-bundle": "<1.5.2", - "doctrine/doctrine-module": "<0.7.2", - "doctrine/mongodb-odm": "<1.0.2", - "doctrine/mongodb-odm-bundle": "<3.0.1", - "doctrine/orm": ">=1,<1.2.4|>=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", - "dolibarr/dolibarr": "<19.0.2", - "dompdf/dompdf": "<2.0.4", - "doublethreedigital/guest-entries": "<3.1.2", - "drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<10.1.8|>=10.2,<10.2.2", - "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", - "duncanmcclean/guest-entries": "<3.1.2", + "doctrine/doctrine-module": "<=0.7.1", + "doctrine/mongodb-odm": ">=1,<1.0.2", + "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", + "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", + "dolibarr/dolibarr": "<16|>=16.0.1,<16.0.3|= 12.0.5|>= 3.3.beta1, < 13.0.2", + "dompdf/dompdf": "<2.0.2|= 2.0.2", + "drupal/core": ">=7,<7.91|>=8,<9.3.19|>=9.4,<9.4.3", + "drupal/drupal": ">=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", "dweeves/magmi": "<=0.7.24", - "ec-cube/ec-cube": "<2.4.4|>=2.11,<=2.17.1|>=3,<=3.0.18.0-patch4|>=4,<=4.1.2", "ecodev/newsletter": "<=4", "ectouch/ectouch": "<=2.7.2", - "egroupware/egroupware": "<16.1.20170922", - "elefant/cms": "<2.0.7", + "elefant/cms": "<1.3.13", "elgg/elgg": "<3.3.24|>=4,<4.0.5", - "elijaa/phpmemcacheadmin": "<=1.3", "encore/laravel-admin": "<=1.8.19", "endroid/qr-code-bundle": "<3.4.2", - "enhavo/enhavo-app": "<=0.13.1", "enshrined/svg-sanitize": "<0.15", "erusev/parsedown": "<1.7.2", "ether/logs": "<3.0.4", - "evolutioncms/evolution": "<=3.2.3", "exceedone/exment": "<4.4.3|>=5,<5.0.3", - "exceedone/laravel-admin": "<2.2.3|==3", - "ezsystems/demobundle": ">=5.4,<5.4.6.1-dev", + "exceedone/laravel-admin": "= 3.0.0|<2.2.3", + "ezsystems/demobundle": ">=5.4,<5.4.6.1", "ezsystems/ez-support-tools": ">=2.2,<2.2.3", - "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1-dev", - "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1-dev|>=5.4,<5.4.11.1-dev|>=2017.12,<2017.12.0.1-dev", + "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1", + "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1|>=5.4,<5.4.11.1|>=2017.12,<2017.12.0.1", "ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24", "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26", "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1", - "ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12", - "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.35", + "ezsystems/ezplatform-graphql": ">=1-rc.1,<1.0.13|>=2-beta.1,<2.3.12", + "ezsystems/ezplatform-kernel": "<1.2.5.1|>=1.3,<1.3.26", "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8", - "ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1-dev", - "ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15", + "ezsystems/ezplatform-richtext": ">=2.3,<=2.3.7", "ezsystems/ezplatform-user": ">=1,<1.0.1", - "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31", - "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1", + "ezsystems/ezpublish-kernel": "<6.13.8.2|>=7,<7.5.30", + "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.3.5.1", "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", - "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", + "ezsystems/repository-forms": ">=2.3,<2.3.2.1|>=2.5,<2.5.15", "ezyang/htmlpurifier": "<4.1.1", "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2", - "facturascripts/facturascripts": "<=2022.08", - "fastly/magento2": "<1.2.26", + "facturascripts/facturascripts": "<=2022.8", "feehi/cms": "<=2.1.1", "feehi/feehicms": "<=2.1.1", "fenom/fenom": "<=2.12.1", "filegator/filegator": "<7.8", - "filp/whoops": "<2.1.13", - "fineuploader/php-traditional-server": "<=1.2.2", "firebase/php-jwt": "<6", "fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2", "fixpunkt/fp-newsletter": "<1.1.1|>=2,<2.1.2|>=2.2,<3.2.6", - "flarum/core": "<1.8.5", - "flarum/flarum": "<0.1.0.0-beta8", - "flarum/framework": "<1.8.5", + "flarum/core": "<1.7", "flarum/mentions": "<1.6.3", - "flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15", - "flarum/tags": "<=0.1.0.0-beta13", - "floriangaerber/magnesium": "<0.3.1", + "flarum/sticky": ">=0.1-beta.14,<=0.1-beta.15", + "flarum/tags": "<=0.1-beta.13", "fluidtypo3/vhs": "<5.1.1", - "fof/byobu": ">=0.3.0.0-beta2,<1.1.7", + "fof/byobu": ">=0.3-beta.2,<1.1.7", "fof/upload": "<1.2.3", - "foodcoopshop/foodcoopshop": ">=3.2,<3.6.1", "fooman/tcpdf": "<6.2.22", "forkcms/forkcms": "<5.11.1", "fossar/tcpdf-parser": "<6.2.22", - "francoisjacquet/rosariosis": "<=11.5.1", + "francoisjacquet/rosariosis": "<10.8.2", "frappant/frp-form-answers": "<3.1.2|>=4,<4.0.2", "friendsofsymfony/oauth2-php": "<1.3", "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", - "friendsofsymfony/user-bundle": ">=1,<1.3.5", - "friendsofsymfony1/swiftmailer": ">=4,<5.4.13|>=6,<6.2.5", - "friendsofsymfony1/symfony1": ">=1.1,<1.15.19", + "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", "friendsoftypo3/mediace": ">=7.6.2,<7.6.5", - "friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6", - "froala/wysiwyg-editor": "<3.2.7|>=4.0.1,<=4.1.3", - "froxlor/froxlor": "<2.1.9", - "frozennode/administrator": "<=5.0.12", + "froala/wysiwyg-editor": "<3.2.7", + "froxlor/froxlor": "<2.0.13", "fuel/core": "<1.8.1", - "funadmin/funadmin": "<=3.2|>=3.3.2,<=3.3.3", + "funadmin/funadmin": "<=3.2", "gaoming13/wechat-php-sdk": "<=1.10.2", "genix/cms": "<=1.1.11", - "getformwork/formwork": "<1.13.1|==2.0.0.0-beta1", - "getgrav/grav": "<1.7.46", - "getkirby/cms": "<4.1.1", - "getkirby/kirby": "<=2.5.12", + "getgrav/grav": "<1.7.34", + "getkirby/cms": "= 3.8.0|<3.5.8.2|>=3.6,<3.6.6.2|>=3.7,<3.7.5.1", "getkirby/panel": "<2.5.14", "getkirby/starterkit": "<=3.7.0.2", - "gilacms/gila": "<=1.15.4", - "gleez/cms": "<=1.3|==2", + "gilacms/gila": "<=1.11.4", "globalpayments/php-sdk": "<2", - "gogentooss/samlbase": "<1.2.7", "google/protobuf": "<3.15", "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", "gree/jose": "<2.2.1", "gregwar/rst": "<1.0.3", - "grumpydictator/firefly-iii": "<6.1.17", - "gugoan/economizzer": "<=0.9.0.0-beta1", + "grumpydictator/firefly-iii": "<5.8", "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5", - "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5", - "haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2", + "guzzlehttp/psr7": "<1.8.4|>=2,<2.1.1", "harvesthq/chosen": "<1.8.7", - "helloxz/imgurl": "<=2.31", - "hhxsv5/laravel-s": "<3.7.36", + "helloxz/imgurl": "= 2.31|<=2.31", "hillelcoren/invoice-ninja": "<5.3.35", "himiklab/yii2-jqgrid-widget": "<1.0.8", "hjue/justwriting": "<=1", "hov/jobfair": "<1.0.13|>=2,<2.0.2", - "httpsoft/http-message": "<1.0.12", "hyn/multi-tenant": ">=5.6,<5.7.2", "ibexa/admin-ui": ">=4.2,<4.2.3", - "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.6|>=4.6,<4.6.2", + "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3", "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3", "ibexa/post-install": "<=1.0.4", - "ibexa/solr": ">=4.5,<4.5.4", - "ibexa/user": ">=4,<4.4.3", "icecoder/icecoder": "<=8.1", "idno/known": "<=1.3.1", - "ilicmiljan/secure-props": ">=1.2,<1.2.2", - "illuminate/auth": "<5.5.10", - "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<6.18.31|>=7,<7.22.4", + "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10", + "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4", "illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40", "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75", - "imdbphp/imdbphp": "<=5.1.1", - "impresscms/impresscms": "<=1.4.5", - "impresspages/impresspages": "<=1.0.12", - "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.3", - "in2code/ipandlanguageredirect": "<5.1.2", + "impresscms/impresscms": "<=1.4.3", + "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.1", "in2code/lux": "<17.6.1|>=18,<24.0.2", "innologi/typo3-appointments": "<2.0.6", - "intelliants/subrion": "<4.2.2", - "inter-mediator/inter-mediator": "==5.5", + "intelliants/subrion": "<=4.2.1", "islandora/islandora": ">=2,<2.4.1", "ivankristianto/phpwhois": "<=4.3", "jackalope/jackalope-doctrine-dbal": "<1.7.4", "james-heinrich/getid3": "<1.9.21", - "james-heinrich/phpthumb": "<1.7.12", "jasig/phpcas": "<1.3.3", - "jcbrand/converse.js": "<3.3.3", - "johnbillion/wp-crontrol": "<1.16.2", - "joomla/application": "<1.0.13", "joomla/archive": "<1.1.12|>=2,<2.0.1", "joomla/filesystem": "<1.6.2|>=2,<2.0.1", "joomla/filter": "<1.4.4|>=2,<2.0.1", - "joomla/framework": "<1.5.7|>=2.5.4,<=3.8.12", "joomla/input": ">=2,<2.0.2", - "joomla/joomla-cms": ">=2.5,<3.9.12", "joomla/session": "<1.3.1", "joyqi/hyper-down": "<=2.4.27", "jsdecena/laracom": "<2.0.9", "jsmitty12/phpwhois": "<5.1", - "juzaweb/cms": "<=3.4", "kazist/phpwhois": "<=4.2.6", "kelvinmo/simplexrd": "<3.1.1", "kevinpapst/kimai2": "<1.16.7", - "khodakhah/nodcms": "<=3", - "kimai/kimai": "<2.16", - "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4", + "kimai/kimai": "<1.1", + "kitodo/presentation": "<3.1.2", "klaviyo/magento2-extension": ">=1,<3", - "knplabs/knp-snappy": "<=1.4.2", - "kohana/core": "<3.3.3", + "knplabs/knp-snappy": "<=1.4.1", "krayin/laravel-crm": "<1.2.2", "kreait/firebase-php": ">=3.2,<3.8.1", - "kumbiaphp/kumbiapp": "<=1.1.1", "la-haute-societe/tcpdf": "<6.2.22", - "laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2", + "laminas/laminas-diactoros": "<2.11.1", "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1", "laminas/laminas-http": "<2.14.2", "laravel/fortify": "<1.11.1", - "laravel/framework": "<6.20.44|>=7,<7.30.6|>=8,<8.75", - "laravel/laravel": ">=5.4,<5.4.22", - "laravel/socialite": ">=1,<2.0.10", + "laravel/framework": "<6.20.42|>=7,<7.30.6|>=8,<8.75", + "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", "latte/latte": "<2.10.8", - "lavalite/cms": "<=9|==10.1", + "lavalite/cms": "<=5.8", "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5", "league/commonmark": "<0.18.3", "league/flysystem": "<1.1.4|>=2,<2.1.1", - "league/oauth2-server": ">=8.3.2,<8.4.2|>=8.5,<8.5.3", "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3", - "libreform/libreform": ">=2,<=2.0.8", - "librenms/librenms": "<2017.08.18", + "librenms/librenms": "<22.10", "liftkit/database": "<2.13.2", - "lightsaml/lightsaml": "<1.3.5", "limesurvey/limesurvey": "<3.27.19", "livehelperchat/livehelperchat": "<=3.91", - "livewire/livewire": ">2.2.4,<2.2.6|>=3.3.5,<3.4.9", + "livewire/livewire": ">2.2.4,<2.2.6", "lms/routes": "<2.1.1", "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", "luyadev/yii-helpers": "<1.2.1", - "magento/community-edition": "<2.4.5|==2.4.5|>=2.4.5.0-patch1,<2.4.5.0-patch8|==2.4.6|>=2.4.6.0-patch1,<2.4.6.0-patch6|==2.4.7", - "magento/core": "<=1.9.4.5", - "magento/magento1ce": "<1.9.4.3-dev", - "magento/magento1ee": ">=1,<1.14.4.3-dev", - "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2.0-patch2", - "magneto/core": "<1.9.4.4-dev", + "magento/community-edition": ">=2,<2.2.10|>=2.3,<2.3.3", + "magento/magento1ce": "<1.9.4.3", + "magento/magento1ee": ">=1,<1.14.4.3", + "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2-p.2", "maikuolan/phpmussel": ">=1,<1.6", - "mainwp/mainwp": "<=4.4.3.3", - "mantisbt/mantisbt": "<2.26.2", + "mantisbt/mantisbt": "<=2.25.5", "marcwillmann/turn": "<0.3.3", "matyhtf/framework": "<3.0.6", - "mautic/core": "<4.4.12|>=5.0.0.0-alpha,<5.0.4", - "mdanter/ecc": "<2", - "mediawiki/core": "<1.36.2", + "mautic/core": "<4.3|= 2.13.1", + "mediawiki/core": ">=1.27,<1.27.6|>=1.29,<1.29.3|>=1.30,<1.30.2|>=1.31,<1.31.9|>=1.32,<1.32.6|>=1.32.99,<1.33.3|>=1.33.99,<1.34.3|>=1.34.99,<1.35", "mediawiki/matomo": "<2.4.3", - "mediawiki/semantic-media-wiki": "<4.0.2", "melisplatform/melis-asset-manager": "<5.0.1", "melisplatform/melis-cms": "<5.0.1", "melisplatform/melis-front": "<5.0.1", "mezzio/mezzio-swoole": "<3.7|>=4,<4.3", "mgallegos/laravel-jqgrid": "<=1.3", - "microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2,<2.0.1", - "microsoft/microsoft-graph-beta": "<2.0.1", - "microsoft/microsoft-graph-core": "<2.0.2", - "microweber/microweber": "<=2.0.4", - "mikehaertl/php-shellcommand": "<1.6.1", + "microweber/microweber": "<=1.3.2", "miniorange/miniorange-saml": "<1.4.3", "mittwald/typo3_forum": "<1.2.1", "mobiledetect/mobiledetectlib": "<2.8.32", - "modx/revolution": "<=2.8.3.0-patch", + "modx/revolution": "<= 2.8.3-pl|<2.8", "mojo42/jirafeau": "<4.4", - "mongodb/mongodb": ">=1,<1.9.2", "monolog/monolog": ">=1.8,<1.12", - "moodle/moodle": "<4.3.5|>=4.4.0.0-beta,<4.4.1", - "mos/cimage": "<0.7.19", - "movim/moxl": ">=0.8,<=0.10", - "movingbytes/social-network": "<=1.2.1", - "mpdf/mpdf": "<=7.1.7", - "munkireport/comment": "<4.1", - "munkireport/managedinstalls": "<2.6", - "munkireport/munki_facts": "<1.5", - "munkireport/munkireport": ">=2.5.3,<5.6.3", - "munkireport/reportdata": "<3.5", - "munkireport/softwareupdate": "<1.6", + "moodle/moodle": "<4.0.6|= 3.11|>=4.1-beta,<4.1.1", "mustache/mustache": ">=2,<2.14.1", "namshi/jose": "<2.2", "neoan3-apps/template": "<1.1.1", - "neorazorx/facturascripts": "<2022.04", + "neorazorx/facturascripts": "<2022.4", "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", "neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3", - "neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9", - "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2", - "neos/swiftmailer": "<5.4.5", + "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.9.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2", + "neos/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15", "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6", "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13", - "nilsteampassnet/teampass": "<3.0.10", - "nonfiction/nterchange": "<4.1.1", + "nilsteampassnet/teampass": "<3.0.0.23", "notrinos/notrinos-erp": "<=0.7", "noumo/easyii": "<=0.9", - "novaksolutions/infusionsoft-php-sdk": "<1", - "nukeviet/nukeviet": "<4.5.02", - "nyholm/psr7": "<1.6.1", + "nukeviet/nukeviet": "<4.5.2", "nystudio107/craft-seomatic": "<3.4.12", - "nzedb/nzedb": "<0.8", "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1", "october/backend": "<1.1.2", - "october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1", - "october/october": "<=3.4.4", + "october/cms": "= 1.1.1|= 1.0.471|= 1.0.469|>=1.0.319,<1.0.469", + "october/october": ">=1.0.319,<1.0.466|>=2.1,<2.1.12", "october/rain": "<1.0.472|>=1.1,<1.1.2", - "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.5.2", - "omeka/omeka-s": "<4.0.3", + "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.0.66", "onelogin/php-saml": "<2.10.4", - "oneup/uploader-bundle": ">=1,<1.9.3|>=2,<2.1.5", + "oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5", "open-web-analytics/open-web-analytics": "<1.7.4", - "opencart/opencart": "<=3.0.3.7|>=4,<4.0.2.3-dev", + "opencart/opencart": "<=3.0.3.7", "openid/php-openid": "<2.3", - "openmage/magento-lts": "<20.5", - "opensolutions/vimbadmin": "<=3.0.15", - "opensource-workshop/connect-cms": "<1.7.2|>=2,<2.3.2", - "orchid/platform": ">=9,<9.4.4|>=14.0.0.0-alpha4,<14.5", - "oro/calendar-bundle": ">=4.2,<=4.2.6|>=5,<=5.0.6|>=5.1,<5.1.1", - "oro/commerce": ">=4.1,<5.0.11|>=5.1,<5.1.1", + "openmage/magento-lts": "<19.4.22|>=20,<20.0.19", + "orchid/platform": ">=9,<9.4.4", + "oro/commerce": ">=4.1,<5.0.6", "oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7", - "oro/crm-call-bundle": ">=4.2,<=4.2.5|>=5,<5.0.4|>=5.1,<5.1.1", - "oro/customer-portal": ">=4.1,<=4.1.13|>=4.2,<=4.2.10|>=5,<=5.0.11|>=5.1,<=5.1.3", - "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<=5.0.12|>=5.1,<=5.1.3", - "oxid-esales/oxideshop-ce": "<4.5", - "oxid-esales/paymorrow-module": ">=1,<1.0.2|>=2,<2.0.1", + "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<4.2.8", "packbackbooks/lti-1-3-php-library": "<5", "padraic/humbug_get_contents": "<1.1.2", - "pagarme/pagarme-php": "<3", + "pagarme/pagarme-php": ">=0,<3", "pagekit/pagekit": "<=1.0.18", - "paragonie/ecc": "<2.0.1", "paragonie/random_compat": "<2", - "passbolt/passbolt_api": "<4.6.2", - "paypal/adaptivepayments-sdk-php": "<=3.9.2", - "paypal/invoice-sdk-php": "<=3.9", + "passbolt/passbolt_api": "<2.11", "paypal/merchant-sdk-php": "<3.12", - "paypal/permissions-sdk-php": "<=3.9.1", "pear/archive_tar": "<1.4.14", - "pear/auth": "<1.2.4", "pear/crypt_gpg": "<1.6.7", - "pear/pear": "<=1.10.1", "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", "personnummer/personnummer": "<3.0.2", "phanan/koel": "<5.1.4", - "phenx/php-svg-lib": "<0.5.2", - "php-censor/php-censor": "<2.0.13|>=2.1,<2.1.5", "php-mod/curl": "<2.3.2", - "phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1", - "phpems/phpems": ">=6,<=6.1.3", "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7", "phpmailer/phpmailer": "<6.5", "phpmussel/phpmussel": ">=1,<1.6", "phpmyadmin/phpmyadmin": "<5.2.1", - "phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5", - "phpoffice/common": "<0.2.9", + "phpmyfaq/phpmyfaq": "<=3.1.7", "phpoffice/phpexcel": "<1.8", "phpoffice/phpspreadsheet": "<1.16", - "phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36", - "phpservermon/phpservermon": "<3.6", - "phpsysinfo/phpsysinfo": "<3.4.3", - "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", + "phpseclib/phpseclib": "<2.0.31|>=3,<3.0.19", + "phpservermon/phpservermon": "<=3.5.2", + "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5,<5.6.3", "phpwhois/phpwhois": "<=4.2.5", "phpxmlrpc/extras": "<0.6.1", "phpxmlrpc/phpxmlrpc": "<4.9.2", - "pi/pi": "<=2.5", - "pimcore/admin-ui-classic-bundle": "<=1.4.2", - "pimcore/customer-management-framework-bundle": "<4.0.6", "pimcore/data-hub": "<1.2.4", - "pimcore/demo": "<10.3", - "pimcore/ecommerce-framework-bundle": "<1.0.10", - "pimcore/perspective-editor": "<1.5.1", - "pimcore/pimcore": "<11.2.4", - "pixelfed/pixelfed": "<0.11.11", - "plotly/plotly.js": "<2.25.2", + "pimcore/pimcore": "<11", + "pixelfed/pixelfed": "<=0.11.4", "pocketmine/bedrock-protocol": "<8.0.2", - "pocketmine/pocketmine-mp": "<5.11.2", - "pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1", + "pocketmine/pocketmine-mp": "<4.12.5|>= 4.0.0-BETA5, < 4.4.2", "pressbooks/pressbooks": "<5.18", "prestashop/autoupgrade": ">=4,<4.10.1", - "prestashop/blockreassurance": "<=5.1.3", "prestashop/blockwishlist": ">=2,<2.1.1", "prestashop/contactform": ">=1.0.1,<4.3", "prestashop/gamification": "<2.3.2", - "prestashop/prestashop": "<8.1.6", + "prestashop/prestashop": "<8.0.1", "prestashop/productcomments": "<5.0.2", "prestashop/ps_emailsubscription": "<2.6.1", "prestashop/ps_facetedsearch": "<3.4.1", "prestashop/ps_linklist": "<3.1", "privatebin/privatebin": "<1.4", - "processwire/processwire": "<=3.0.210", - "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", + "processwire/processwire": "<=3.0.200", + "propel/propel": ">=2-alpha.1,<=2-alpha.7", "propel/propel1": ">=1,<=1.7.1", - "pterodactyl/panel": "<1.11.6", - "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2", + "pterodactyl/panel": "<1.7", "ptrofimov/beanstalk_console": "<1.7.14", - "pubnub/pubnub": "<6.1", "pusher/pusher-php-server": "<2.2.1", - "pwweb/laravel-core": "<=0.3.6.0-beta", + "pwweb/laravel-core": "<=0.3.6-beta", "pyrocms/pyrocms": "<=3.9.1", - "qcubed/qcubed": "<=3.1.1", - "quickapps/cms": "<=2.0.0.0-beta2", - "rainlab/blog-plugin": "<1.4.1", "rainlab/debugbar-plugin": "<3.1", - "rainlab/user-plugin": "<=1.4.5", "rankmath/seo-by-rank-math": "<=1.0.95", - "rap2hpoutre/laravel-log-viewer": "<0.13", - "react/http": ">=0.7,<1.9", - "really-simple-plugins/complianz-gdpr": "<6.4.2", - "redaxo/source": "<=5.15.1", - "remdex/livehelperchat": "<4.29", - "reportico-web/reportico": "<=8.1", - "rhukster/dom-sanitizer": "<1.0.7", + "react/http": ">=0.7,<1.7", + "remdex/livehelperchat": "<3.99", "rmccue/requests": ">=1.6,<1.8", - "robrichards/xmlseclibs": ">=1,<3.0.4", + "robrichards/xmlseclibs": "<3.0.4", "roots/soil": "<4.1", "rudloff/alltube": "<3.0.3", "s-cart/core": "<6.9", "s-cart/s-cart": "<6.9", "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1", - "sabre/dav": ">=1.6,<1.7.11|>=1.8,<1.8.9", - "scheb/two-factor-bundle": "<3.26|>=4,<4.11", + "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", + "scheb/two-factor-bundle": ">=0,<3.26|>=4,<4.11", "sensiolabs/connect": "<4.2.3", "serluck/phpwhois": "<=4.2.6", - "sfroemken/url_redirect": "<=1.2.1", - "sheng/yiicms": "<=1.2", - "shopware/core": "<6.5.8.8-dev|>=6.6.0.0-RC1-dev,<6.6.1", - "shopware/platform": "<6.5.8.8-dev|>=6.6.0.0-RC1-dev,<6.6.1", + "shopware/core": "<=6.4.18", + "shopware/platform": "<=6.4.18", "shopware/production": "<=6.3.5.2", - "shopware/shopware": "<6.2.3", - "shopware/storefront": "<=6.4.8.1|>=6.5.8,<6.5.8.7-dev", + "shopware/shopware": "<=5.7.14", + "shopware/storefront": "<=6.4.8.1", "shopxo/shopxo": "<2.2.6", "showdoc/showdoc": "<2.10.4", - "silverstripe-australia/advancedreports": ">=1,<=2", - "silverstripe/admin": "<1.13.19|>=2,<2.1.8", + "silverstripe/admin": ">=1,<1.11.3", "silverstripe/assets": ">=1,<1.11.1", "silverstripe/cms": "<4.11.3", - "silverstripe/comments": ">=1.3,<3.1.1", + "silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1", "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", - "silverstripe/framework": "<4.13.39|>=5,<5.1.11", - "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3", + "silverstripe/framework": "<4.11.14", + "silverstripe/graphql": "<3.5.2|>=4-alpha.1,<4-alpha.2|>=4.1.1,<4.1.2|>=4.2.2,<4.2.3|= 4.0.0-alpha1", "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1", - "silverstripe/recipe-cms": ">=4.5,<4.5.3", "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", - "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4|>=2.1,<2.1.2", + "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4", "silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1", "silverstripe/subsites": ">=2,<2.6.1", "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1", - "silverstripe/userforms": "<3|>=5,<5.4.2", + "silverstripe/userforms": "<3", "silverstripe/versioned-admin": ">=1,<1.11.1", "simple-updates/phpwhois": "<=1", - "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4|==5.0.0.0-alpha12", + "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4", "simplesamlphp/simplesamlphp": "<1.18.6", "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", "simplesamlphp/simplesamlphp-module-openid": "<1", "simplesamlphp/simplesamlphp-module-openidprovider": "<0.9", - "simplesamlphp/xml-security": "==1.6.11", "simplito/elliptic-php": "<1.0.6", - "sitegeist/fluid-components": "<3.5", - "sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3", - "slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1", "slim/slim": "<2.6", - "slub/slub-events": "<3.0.3", - "smarty/smarty": "<4.5.3|>=5,<5.1.1", - "snipe/snipe-it": "<6.4.2", + "smarty/smarty": "<3.1.47|>=4,<4.2.1", + "snipe/snipe-it": "<=6.0.14|>= 6.0.0-RC-1, <= 6.0.0-RC-5", "socalnick/scn-social-auth": "<1.15.2", "socialiteproviders/steam": "<1.1", "spatie/browsershot": "<3.57.4", - "spatie/image-optimizer": "<1.7.3", - "spipu/html2pdf": "<5.2.8", - "spoon/library": "<1.4.1", + "spipu/html2pdf": "<5.2.4", "spoonity/tcpdf": "<6.2.22", "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", - "ssddanbrown/bookstack": "<22.02.3", - "statamic/cms": "<4.46|>=5.3,<5.6.2", - "stormpath/sdk": "<9.9.99", - "studio-42/elfinder": "<2.1.62", - "subhh/libconnect": "<7.0.8|>=8,<8.1", + "ssddanbrown/bookstack": "<22.2.3", + "statamic/cms": "<3.2.39|>=3.3,<3.3.2", + "stormpath/sdk": ">=0,<9.9.99", + "studio-42/elfinder": "<2.1.59", + "subrion/cms": "<=4.2.1", "sukohi/surpass": "<1", - "sulu/form-bundle": ">=2,<2.5.3", - "sulu/sulu": "<1.6.44|>=2,<2.4.17|>=2.5,<2.5.13", + "sulu/sulu": "= 2.4.0-RC1|<1.6.44|>=2,<2.2.18|>=2.3,<2.3.8", "sumocoders/framework-user-bundle": "<1.4", - "superbig/craft-audit": "<3.0.2", "swag/paypal": "<5.4.4", - "swiftmailer/swiftmailer": "<6.2.5", - "swiftyedit/swiftyedit": "<1.2", + "swiftmailer/swiftmailer": ">=4,<5.4.5", "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", "sylius/grid-bundle": "<1.10.1", "sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1", - "sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4", - "sylius/sylius": "<1.9.10|>=1.10,<1.10.11|>=1.11,<1.11.2|>=1.12.0.0-alpha1,<1.12.16|>=1.13.0.0-alpha1,<1.13.1", - "symbiote/silverstripe-multivaluefield": ">=3,<3.1", + "sylius/resource-bundle": "<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4", + "sylius/sylius": "<1.9.10|>=1.10,<1.10.11|>=1.11,<1.11.2", + "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99", "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4", "symbiote/silverstripe-seed": "<6.0.3", "symbiote/silverstripe-versionedfiles": "<=2.0.3", @@ -2236,7 +2061,7 @@ "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4", "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", - "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<5.3.15|>=5.4.3,<5.4.4|>=6.0.3,<6.0.4", + "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<=5.3.14|>=5.4.3,<=5.4.3|>=6.0.3,<=6.0.3|= 6.0.3|= 5.4.3|= 5.3.14", "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7", "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", @@ -2252,113 +2077,78 @@ "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9", "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8", - "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2|>=5.4,<5.4.31|>=6,<6.3.8", + "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2", "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12", - "symfony/symfony": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", + "symfony/symfony": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", "symfony/translation": ">=2,<2.0.17", - "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", - "symfony/ux-autocomplete": "<2.11.2", "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8", "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", - "symfony/webhook": ">=6.3,<6.3.8", - "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7|>=2.2.0.0-beta1,<2.2.0.0-beta2", - "symphonycms/symphony-2": "<2.6.4", - "t3/dce": "<0.11.5|>=2.2,<2.6.2", + "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", + "t3/dce": ">=2.2,<2.6.2", "t3g/svg-sanitizer": "<1.0.3", - "t3s/content-consent": "<1.0.3|>=2,<2.0.2", "tastyigniter/tastyigniter": "<3.3", - "tcg/voyager": "<=1.4", - "tecnickcom/tcpdf": "<=6.7.4", + "tecnickcom/tcpdf": "<6.2.22", "terminal42/contao-tablelookupwizard": "<3.3.5", "thelia/backoffice-default-template": ">=2.1,<2.1.2", - "thelia/thelia": ">=2.1,<2.1.3", + "thelia/thelia": ">=2.1-beta.1,<2.1.3", "theonedemon/phpwhois": "<=4.2.5", - "thinkcmf/thinkcmf": "<6.0.8", - "thorsten/phpmyfaq": "<3.2.2", - "tikiwiki/tiki-manager": "<=17.1", - "timber/timber": ">=0.16.6,<1.23.1|>=1.24,<1.24.1|>=2,<2.1", - "tinymce/tinymce": "<7.2", + "thinkcmf/thinkcmf": "<=5.1.7", + "thorsten/phpmyfaq": "<3.1.11", + "tinymce/tinymce": "<5.10.7|>=6,<6.3.1", "tinymighty/wiki-seo": "<1.2.2", - "titon/framework": "<9.9.99", - "tobiasbg/tablepress": "<=2.0.0.0-RC1", - "topthink/framework": "<6.0.17|>=6.1,<6.1.5|>=8,<8.0.4", + "titon/framework": ">=0,<9.9.99", + "tobiasbg/tablepress": "<= 2.0-RC1", + "topthink/framework": "<6.0.14", "topthink/think": "<=6.1.1", "topthink/thinkphp": "<=3.2.3", - "torrentpier/torrentpier": "<=2.4.1", - "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2", - "tribalsystems/zenario": "<9.5.60602", + "tribalsystems/zenario": "<=9.3.57595", "truckersmp/phpwhois": "<=4.3.1", "ttskch/pagination-service-provider": "<1", "twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3", - "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", - "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", - "typo3/cms-core": "<=8.7.56|>=9,<=9.5.47|>=10,<=10.4.44|>=11,<=11.5.36|>=12,<=12.4.14|>=13,<=13.1", - "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", - "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1", + "typo3/cms": "<2.0.5|>=3,<3.0.3|>=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.38|>=9,<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", + "typo3/cms-backend": ">=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", + "typo3/cms-core": "<8.7.51|>=9,<9.5.40|>=10,<10.4.36|>=11,<11.5.23|>=12,<12.2", "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", - "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5", - "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8", - "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", - "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3", + "typo3/html-sanitizer": ">=1,<1.5|>=2,<2.1.1", "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1", "typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10", "ua-parser/uap-php": "<3.8", - "uasoft-indonesia/badaso": "<=2.9.7", - "unisharp/laravel-filemanager": "<2.6.4", + "unisharp/laravel-filemanager": "<=2.5.1", "userfrosting/userfrosting": ">=0.3.1,<4.6.3", "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", - "uvdesk/community-skeleton": "<=1.1.1", - "uvdesk/core-framework": "<=1.1.1", + "uvdesk/community-skeleton": "<1.1", "vanilla/safecurl": "<0.9.2", - "verbb/comments": "<1.5.5", - "verbb/formie": "<2.1.6", - "verbb/image-resizer": "<2.0.9", - "verbb/knock-knock": "<1.2.8", - "verot/class.upload.php": "<=2.1.6", - "villagedefrance/opencart-overclocked": "<=1.11.1", + "verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4", "vova07/yii2-fileapi-widget": "<0.1.9", "vrana/adminer": "<4.8.1", - "vufind/vufind": ">=2,<9.1.1", - "waldhacker/hcaptcha": "<2.1.2", "wallabag/tcpdf": "<6.2.22", - "wallabag/wallabag": "<2.6.7", + "wallabag/wallabag": "<2.5.4", "wanglelecc/laracms": "<=1.0.3", "web-auth/webauthn-framework": ">=3.3,<3.3.4", - "web-feet/coastercms": "==5.5", "webbuilders-group/silverstripe-kapost-bridge": "<0.4", "webcoast/deferred-image-processing": "<1.0.2", - "webklex/laravel-imap": "<5.3", - "webklex/php-imap": "<5.3", "webpa/webpa": "<3.1.2", - "wikibase/wikibase": "<=1.39.3", "wikimedia/parsoid": "<0.12.2", "willdurand/js-translation-bundle": "<2.1.1", - "winter/wn-backend-module": "<1.2.4", - "winter/wn-dusk-plugin": "<2.1", - "winter/wn-system-module": "<1.2.4", - "wintercms/winter": "<=1.2.3", - "woocommerce/woocommerce": "<6.6|>=8.8,<8.8.5|>=8.9,<8.9.3", - "wp-cli/wp-cli": ">=0.12,<2.5", - "wp-graphql/wp-graphql": "<=1.14.5", - "wp-premium/gravityforms": "<2.4.21", + "wintercms/winter": "<1.0.475|>=1.1,<1.1.10|>=1.2,<1.2.1", + "woocommerce/woocommerce": "<6.6", + "wp-cli/wp-cli": "<2.5", + "wp-graphql/wp-graphql": "<0.3.5", "wpanel/wpanel4-cms": "<=4.3.1", "wpcloud/wp-stateless": "<3.2", - "wpglobus/wpglobus": "<=1.9.6", - "wwbn/avideo": "<14.3", + "wwbn/avideo": "<12.4", "xataface/xataface": "<3", "xpressengine/xpressengine": "<3.0.15", - "yab/quarx": "<2.4.5", "yeswiki/yeswiki": "<4.1", "yetiforce/yetiforce-crm": "<=6.4", "yidashi/yii2cmf": "<=2", "yii2mod/yii2-cms": "<1.9.2", - "yiisoft/yii": "<1.1.29", - "yiisoft/yii2": "<2.0.50", - "yiisoft/yii2-authclient": "<2.2.15", + "yiisoft/yii": "<1.1.27", + "yiisoft/yii2": "<2.0.38", "yiisoft/yii2-bootstrap": "<2.0.4", "yiisoft/yii2-dev": "<2.0.43", "yiisoft/yii2-elasticsearch": "<2.0.5", @@ -2368,13 +2158,11 @@ "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6", "yoast-seo-for-typo3/yoast_seo": "<7.2.3", "yourls/yourls": "<=1.8.2", - "yuan1994/tpadmin": "<=1.3.12", - "zencart/zencart": "<=1.5.7.0-beta", "zendesk/zendesk_api_client_php": "<2.2.11", "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-db": "<2.2.10|>=2.3,<2.3.5", + "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3", "zendframework/zend-diactoros": "<1.8.4", "zendframework/zend-feed": "<2.10.3", @@ -2382,30 +2170,21 @@ "zendframework/zend-http": "<2.8.1", "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", - "zendframework/zend-mail": "<2.4.11|>=2.5,<2.7.2", + "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-session": ">=2,<2.2.9|>=2.3,<2.3.4", + "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", "zendframework/zend-validator": ">=2.3,<2.3.6", "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", "zendframework/zendframework": "<=3", "zendframework/zendframework1": "<1.12.20", - "zendframework/zendopenid": "<2.0.2", - "zendframework/zendrest": "<2.0.2", - "zendframework/zendservice-amazon": "<2.0.3", - "zendframework/zendservice-api": "<1", - "zendframework/zendservice-audioscrobbler": "<2.0.2", - "zendframework/zendservice-nirvanix": "<2.0.2", - "zendframework/zendservice-slideshare": "<2.0.2", - "zendframework/zendservice-technorati": "<2.0.2", - "zendframework/zendservice-windowsazure": "<2.0.2", + "zendframework/zendopenid": ">=2,<2.0.2", "zendframework/zendxml": ">=1,<1.0.1", - "zenstruck/collection": "<0.2.1", "zetacomponents/mail": "<1.8.2", "zf-commons/zfc-user": "<1.2.2", "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", "zfr/zfr-oauth2-server-module": "<0.1.2", - "zoujingli/thinkadmin": "<=6.1.53" + "zoujingli/thinkadmin": "<6.0.22" }, "type": "metapackage", "notification-url": "https://packagist.org/downloads/", @@ -2442,20 +2221,20 @@ "type": "tidelift" } ], - "time": "2024-06-19T16:05:03+00:00" + "time": "2023-03-17T19:03:58+00:00" }, { "name": "sebastian/cli-parser", - "version": "1.0.2", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", - "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", "shasum": "" }, "require": { @@ -2490,7 +2269,7 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" }, "funding": [ { @@ -2498,7 +2277,7 @@ "type": "github" } ], - "time": "2024-03-02T06:27:43+00:00" + "time": "2020-09-28T06:08:49+00:00" }, { "name": "sebastian/code-unit", @@ -2687,20 +2466,20 @@ }, { "name": "sebastian/complexity", - "version": "2.0.3", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", "shasum": "" }, "require": { - "nikic/php-parser": "^4.18 || ^5.0", + "nikic/php-parser": "^4.7", "php": ">=7.3" }, "require-dev": { @@ -2732,7 +2511,7 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" }, "funding": [ { @@ -2740,20 +2519,20 @@ "type": "github" } ], - "time": "2023-12-22T06:19:30+00:00" + "time": "2020-10-26T15:52:27+00:00" }, { "name": "sebastian/diff", - "version": "4.0.6", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", - "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", "shasum": "" }, "require": { @@ -2798,7 +2577,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" }, "funding": [ { @@ -2806,7 +2585,7 @@ "type": "github" } ], - "time": "2024-03-02T06:30:58+00:00" + "time": "2020-10-26T13:10:38+00:00" }, { "name": "sebastian/environment", @@ -2873,16 +2652,16 @@ }, { "name": "sebastian/exporter", - "version": "4.0.6", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, "require": { @@ -2938,7 +2717,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" }, "funding": [ { @@ -2946,20 +2725,20 @@ "type": "github" } ], - "time": "2024-03-02T06:33:00+00:00" + "time": "2022-09-14T06:03:37+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.7", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { @@ -3002,7 +2781,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { @@ -3010,24 +2789,24 @@ "type": "github" } ], - "time": "2024-03-02T06:35:11+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.4", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", "shasum": "" }, "require": { - "nikic/php-parser": "^4.18 || ^5.0", + "nikic/php-parser": "^4.6", "php": ">=7.3" }, "require-dev": { @@ -3059,7 +2838,7 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" }, "funding": [ { @@ -3067,7 +2846,7 @@ "type": "github" } ], - "time": "2023-12-22T06:20:34+00:00" + "time": "2020-11-28T06:42:11+00:00" }, { "name": "sebastian/object-enumerator", @@ -3246,16 +3025,16 @@ }, { "name": "sebastian/resource-operations", - "version": "3.0.4", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "shasum": "" }, "require": { @@ -3267,7 +3046,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -3288,7 +3067,8 @@ "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" }, "funding": [ { @@ -3296,7 +3076,7 @@ "type": "github" } ], - "time": "2024-03-14T16:00:52+00:00" + "time": "2020-09-28T06:45:17+00:00" }, { "name": "sebastian/type", @@ -3409,16 +3189,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.10.1", + "version": "3.7.2", "source": { "type": "git", - "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "8f90f7a53ce271935282967f53d0894f8f1ff877" + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/8f90f7a53ce271935282967f53d0894f8f1ff877", - "reference": "8f90f7a53ce271935282967f53d0894f8f1ff877", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", "shasum": "" }, "require": { @@ -3428,11 +3208,11 @@ "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, "bin": [ - "bin/phpcbf", - "bin/phpcs" + "bin/phpcs", + "bin/phpcbf" ], "type": "library", "extra": { @@ -3447,58 +3227,35 @@ "authors": [ { "name": "Greg Sherwood", - "role": "Former lead" - }, - { - "name": "Juliette Reinders Folmer", - "role": "Current lead" - }, - { - "name": "Contributors", - "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" + "role": "lead" } ], "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ "phpcs", "standards", "static analysis" ], "support": { - "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", - "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", - "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", - "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" + "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", + "source": "https://github.com/squizlabs/PHP_CodeSniffer", + "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "funding": [ - { - "url": "https://github.com/PHPCSStandards", - "type": "github" - }, - { - "url": "https://github.com/jrfnl", - "type": "github" - }, - { - "url": "https://opencollective.com/php_codesniffer", - "type": "open_collective" - } - ], - "time": "2024-05-22T21:24:41+00:00" + "time": "2023-02-22T23:07:41+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.3", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "" }, "require": { @@ -3527,7 +3284,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" }, "funding": [ { @@ -3535,7 +3292,7 @@ "type": "github" } ], - "time": "2024-03-03T12:36:25+00:00" + "time": "2021-07-28T10:34:58+00:00" } ], "aliases": [], @@ -3555,5 +3312,5 @@ "platform-overrides": { "php": "7.4.33" }, - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.3.0" } diff --git a/doc/md/dev/images/poedit-1.jpg b/doc/md/dev/images/poedit-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..673ae6d6797d2bd431fa401acc7d0f8a23fb41c1 GIT binary patch literal 72956 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

ILXCQptN9gTgmfG+aUhu6@lJN}OsKV+O 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 jgtJMAh1#dLJ>lh=8A$63`hw`RRaY0 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 N002ovPDHLkV1lK%7xe%D literal 0 HcmV?d00001 diff --git a/doc/md/images/doc-logo.svg b/doc/md/images/doc-logo.svg new file mode 100644 index 00000000..37fc6658 --- /dev/null +++ b/doc/md/images/doc-logo.svg @@ -0,0 +1,522 @@ + + + Shaarli Logo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Shaarli Logo + + + http://blog.idleman.fr/ + + + 2012-08-29 22:36:01+02:00 + + + http://sebsauvage.net/ + + + + + Shaarli + Logo + + + + + http://thatguynamedandy.com/, +http://mro.name/me + + + + http://sebsauvage.net/files/shaarli_logo.zip + http://sebsauvage.net/wiki/doku.php?id=php:shaarli:discussion#comment_09a1e91bc0abc7db6d186a6abf429877 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/md/images/edit_icon.png b/doc/md/images/edit_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..16c440c86787658b3df8c005b0d27df9c8a6a6fe GIT binary patch literal 1548 zcmaJ>drT8|9PeZpQ$Q4ip=dl$bcoX4_2}zHarbDY8LhO`*i7BHw%7KA_Uhf$wq%nr zV-y2qKH{dBIUmyvv-tp@HP)#Srx=lpjp1C>EYm4NoUahf+!X=&WAT!^-|O@Fe4oFo zEj2Glkxr3HB$5TMNeOb;0st8k5}MF#QpqGvc$B>!&E>H%OE*7h>6EH%rco?&+z$1(7a%! zUpfE3`n)X?pygJYXM>zmtfG77C{wRD6bBB)fSM?-f)=Z2pelKK@W5n3N!A(k(SE^5 z>Oc`Hb1^Pd4dGgY9??LEMh(My7$fxx0w)j%!f>TZp&I5I{k%Z=o%Ar5dBs(~mWvV` zO$jV#W7*2#W+?Tt0?T{Z06>%>z+%SlVnckqPNG+FKWUCxNxKXj>jMT;hBBk92ZN$% zjDQUay#_%P1sG|7VGP4Hgc8w0q(+G=aReM9x<-XONF=l*QlM3-3NVBqNf^c<4Tj@5 zVKBgI1*}woa?uTWygx?u%kY-igz@P}_lt{>`$PN1baUeEs5@BSCy|WN8cEC+?ylQp z@}^rRw7!T&YTwErp5;7DNN+znDd~+hpO6n%+qjL6%}>jBg-iR|r|!WmEgh@B!pCQl zn~PU>+BdB8Ha2zI=UTBtwU*R+OE-S~d`|R=I~qNmDgEo@{_)9er_`~?xl@xbxSMy{ z@^&tj5td0857#Z%{;}xR?y6`kaxIot|MS%ZUn1~4Aq#{)n^ih9yNF+Uy|)~Ke*4{D zCOLbrCiP^7u4{&|W7Xo>=@VL8ueEm^KCq{0Usf!n%(Et@)TiB>x_*^5Z>4+R@!kKH z?^SLsIlKG_Xk9W8UiNhd_Ou}L40Ptwle!u6jGB*cyV}#MTM`<#hi-8v&|kKdOkDfx zc0~`S{OD%j^95UGb^X2a@r`e)FFwlI=KjLgT{*UYx_we&iFwtzfeiyhL;bip(gA8t z-SebB`wO`fJBkaVkJcA;F<@JHFt=H(hD4eE7qa z`x}n6^fW*2O$}#H>;KMHZE4IP?b0z%RsCP8>l-c{>RWbW=f!tUrX>YpnIAk^Bdf{1 zot6I#SadWOGOtD2+Ya_jsW9yiJh8I)md^3g`JHFKeGu&8BK<8Jw}Pjxho-G)?OjuJ zdTQP2y`G7er8zBqjV;;D`iA$Nm(!Of@AtU>>8%igj-RTrpgDm?g=* Wnd+?EHCq?|KO6OC@_W4e)BgbIheD$O literal 0 HcmV?d00001 diff --git a/doc/md/images/icon.png b/doc/md/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..530d746948db180be50933e27ef24f629452e3b8 GIT binary patch literal 1266 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>l9uE^-aZI%D7ctmf|d-2LBc=RKdJ*AjAPRdFTX{qsLhEB@&|TbC}I zAQAPejNwsUj=g*rx5VrJC2qWDMKbD&c~7u2?2ud}&-5XoO6ox2S)DBXH*>;{8!uZm z{lO7Q&C|SfHGlN%?ds-FdCE39wWqVlZRX5#H@9Sp3MiShJPp!kPg;9z$yD}8Yxza@ zSDn~d@^tNreb&GJYpDp{Sa!#Y!~fW-S<4kP7(VU`PO3Pxb&EmL*ZaEP-`?k8sCaf& zUm$CGn8#CjHio<$i!;5v&a1dq{!!ki5ti~c_fB;Jx7BvL>RiLM`L^eRLc5Rt&g(5? z3=v;_Lh0i_vyTg>&(*f{zUKIF$(n7Q-#M+z=ghTbdNkRkWKxgi(azt!bFC9ikNiIR zTQ@POXkpcSEr$iCPp3am*z~5_?~XZ_f#83J2XefLnH-6lA&w1`N~bQZnQ_A=J#?%4 zp7(vill}IxFZG-&y(#$3osPnH{@{#^C(>ZBL7?LJqhdqkQ}*sQrc zPf`7(689m6jgjXvH<@)A^k`ZX>fd_yY<=v!@YKK)r^2@-+HHNXx%~Ry8Ry?x*c5)- za&_Y)#%@$NO*yN9$~t=FWNt9WxwYIn5a+?cs-CADy*b`h zL9t}@5lgL4`~j{Dgr3Lsah{m9-l9-iwPn$_UvWChyI%3lyjb;HSNvewln#cePOit& z?rxb9#TIrxUoztE*9Xh)22A`MpxME3Buyv&LaAU4Yx4SkLPsxboYNo|+Ipm-&naVf z!IK-o0kNzO`)Xb;jAi)d*#iu2X@~PyW)}Cd#O&hZ2+inOE0w%FOit>sPzMjwmIzl4 zhK`@94)T*%WjTc?cYV`Cwe%!y^bkl;+FGu`B@by=GNP#T1<0d=dQKp^WiR0 zNUmGj6}GY1=UNZL1>x^@^=Ct(?#ES2wVZu*m`^~{`up>%%fFgGP5z}n|KQzm0Xkxq!^403@vpH40R36LJW+o49u-eEVT^`tqcsR`^(OvXvob^$xN%n Vt%2*(xk8`@22WQ%mvv4FO#tZaBFq2) literal 0 HcmV?d00001 diff --git a/doc/md/images/logo.png b/doc/md/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f8b0c94f24c0924d453592686c2a8d7170acc99b GIT binary patch literal 5456 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 literal 0 HcmV?d00001 diff --git a/doc/md/images/rss-filter-1.png b/doc/md/images/rss-filter-1.png new file mode 100644 index 0000000000000000000000000000000000000000..0cf1591c2d605510fb9a9253e11380b5c7683178 GIT binary patch literal 18534 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 literal 0 HcmV?d00001 diff --git a/doc/md/images/rss-filter-2.png b/doc/md/images/rss-filter-2.png new file mode 100644 index 0000000000000000000000000000000000000000..5a40755a27bf4762d14ba5c06137711ffdc82b65 GIT binary patch literal 15440 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 literal 0 HcmV?d00001 diff --git a/index.php b/index.php index 2a0246b7..cd517045 100644 --- a/index.php +++ b/index.php @@ -81,7 +81,7 @@ if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { autoLocale($_SERVER['HTTP_ACCEPT_LANGUAGE']); } -new Languages(setlocale(LC_MESSAGES, 0), $conf); +new Languages(get_locale(LC_MESSAGES), $conf); $conf->setEmpty('general.timezone', date_default_timezone_get()); $conf->setEmpty('general.title', t('Shared bookmarks on ') . escape(index_url($_SERVER))); diff --git a/package.json b/package.json index e4576b43..ac9d055e 100644 --- a/package.json +++ b/package.json @@ -4,32 +4,37 @@ "author": "The Shaarli Community", "license": "SEE LICENSE IN COPYING", "dependencies": { - "awesomplete": "^1.1.2", + "awesomplete": "^1.1.5", "blazy": "^1.8.2", - "fork-awesome": "^1.1.7", + "fork-awesome": "^1.2.0", "he": "^1.2.0", "pure-extras": "^1.0.0", - "purecss": "^1.0.0" + "purecss": "^3.0.0" }, "devDependencies": { - "@babel/core": "^7.11.6", - "@babel/preset-env": "^7.11.5", - "babel-loader": "^8.1.0", - "css-loader": "^7.1.2", - "eslint": "^7.9.0", - "eslint-config-airbnb-base": "^14.2.0", - "eslint-plugin-import": "^2.22.0", - "file-loader": "^1.1.6", - "mini-css-extract-plugin": "^0.11.2", - "sass": "^1.26.11", - "sass-loader": "^10.0.2", - "stylelint": "^16.6.1", - "stylelint-config-standard": "^20.0.0", - "stylelint-scss": "^6.3.2", - "terser-webpack-plugin": "^4.2.2", - "webpack": "^5.92.1", + "@babel/core": "^7.24.5", + "@babel/preset-env": "^7.24.5", + "babel-loader": "^9.1.3", + "css-loader": "^7.1.1", + "eslint": "^8.57.0", + "eslint-config-airbnb-base": "^15.0.0", + "eslint-plugin-import": "^2.29.1", + "file-loader": "^6.2.0", + "glob": "^10.3.15", + "micromatch": "^4.0.8", + "mini-css-extract-plugin": "^2.9.0", + "sass": "^1.77.2", + "sass-loader": "^14.2.1", + "stylelint": "^16.5.0", + "stylelint-config-standard": "^36.0.0", + "stylelint-config-standard-scss": "^13.1.0", + "terser-webpack-plugin": "^5.3.10", + "webpack": "^5.94.0", "webpack-cli": "^5.1.4" }, + "resolutions": { + "string-width": "4.2.3" + }, "scripts": { "build": "webpack", "watch": "webpack --watch" diff --git a/plugins/qrcode/qrcode.html b/plugins/qrcode/qrcode.html index a21f7932..77839717 100644 --- a/plugins/qrcode/qrcode.html +++ b/plugins/qrcode/qrcode.html @@ -1,5 +1,3 @@

- - QRCode - + QRCode
diff --git a/plugins/qrcode/shaarli-qrcode.js b/plugins/qrcode/shaarli-qrcode.js index 3316d6f6..0976564c 100644 --- a/plugins/qrcode/shaarli-qrcode.js +++ b/plugins/qrcode/shaarli-qrcode.js @@ -51,7 +51,11 @@ function showQrCode(caller,loading) element.id = 'permalinkQrcode'; // Make QR-Code div commit sepuku when clicked: - if ( element.attachEvent ){ + if (element.addEventListener) { + element.addEventListener('click', function() { + this.parentNode.removeChild(this); + }); + } else if (element.attachEvent) { element.attachEvent('onclick', 'this.parentNode.removeChild(this);' ); } else { @@ -89,3 +93,18 @@ function removeQrcode() } return false; } + +// Create "click" event listeners for QR-Code display action +function setQrCodeClickEvent() +{ + const qrcode_collec = document.getElementsByClassName("qrcode"); + + Array.from(qrcode_collec).forEach(function(element) { + element.addEventListener('click', function() { + showQrCode(this); + return false; + }); + }); +} + +setQrCodeClickEvent(); diff --git a/shaarli_version.php b/shaarli_version.php index 06d1f041..99fe2e55 100644 --- a/shaarli_version.php +++ b/shaarli_version.php @@ -1 +1 @@ - + diff --git a/tpl/default/page.header.html b/tpl/default/page.header.html index 85114b70..c8ecbc52 100644 --- a/tpl/default/page.header.html +++ b/tpl/default/page.header.html @@ -117,24 +117,63 @@ -
-
- + + {$addDelete=['add', 'delete']} + {loop="$addDelete"} + + {/loop} + {/if} + {if="!$is_logged_in"}