diff --git a/.editorconfig b/.editorconfig index da1477309..8d06361b3 100644 --- a/.editorconfig +++ b/.editorconfig @@ -7,10 +7,10 @@ root = true [*] charset = utf-8 end_of_line = lf -trim_trailing_whitespace = true insert_final_newline = true indent_style = space indent_size = 4 +trim_trailing_whitespace = true # 2 space indentation [*.{yaml,yml}] diff --git a/CHANGELOG.md b/CHANGELOG.md index 0677df5dc..15c6e6c9b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,43 @@ +# v1.7.6 +## 02/17/2021 + +1. [](#new) + * Added `Medium::attribute()` to pass arbitrary attributes [#3065](https://github.com/getgrav/grav/pull/3065) + * Added `Plugins::getPlugins()` and `Plugins::getPlugin($name)` to make it easier to access plugin instances [#2277](https://github.com/getgrav/grav/pull/2277) + * Added `regex_match` and `regex_split` twig functions [#2788](https://github.com/getgrav/grav/pull/2788) + * Updated all languages from [Crowdin](https://crowdin.com/project/grav-core) - Please update any translations here +1. [](#improved) + * Added abstract `FlexObject`, `FlexCollection` and `FlexIndex` classes to `\Grav\Common\Flex` namespace (extend those instead of Framework or Generic classes) + * Updated bundled `composer.phar` binary to latest version `2.0.9` + * Improved session fixation handling in PHP 7.4+ (cannot fix it in PHP 7.3 due to PHP bug) + * Added optional password/database attributes for redis in `system.yaml` + * Added ability to filter enabled or disabled with bin/gpm index [#3187](https://github.com/getgrav/grav/pull/3187) + * Added `$grav->getVersion()` or `grav.version` in twig to get the current Grav version [#3142](https://github.com/getgrav/grav/issues/3142) + * Added second parameter to `$blueprint->flattenData()` to include every field, including those which have no data + * Added support for setting session domain [#2040](https://github.com/getgrav/grav/pull/2040) + * Better support inheriting languages when using child themes [#3226](https://github.com/getgrav/grav/pull/3226) + * Added option for `FlexForm` constructor to reset the form +1. [](#bugfix) + * Fixed issue with `content-security-policy` not being properly supported with `http-equiv` + support single quotes + * Fixed CLI progressbar in `backup` and `security` commands to use styled output [#3198](https://github.com/getgrav/grav/issues/3198) + * Fixed page save failing because of uploaded images [#3191](https://github.com/getgrav/grav/issues/3191) + * Fixed `Flex Pages` using only default language in frontend [#106](https://github.com/trilbymedia/grav-plugin-flex-objects/issues/106) + * Fixed empty `route()` and `raw_route()` when getting translated pages [#3184](https://github.com/getgrav/grav/pull/3184) + * Fixed error on `bin/gpm plugin uninstall` [#3207](https://github.com/getgrav/grav/issues/3207) + * Fixed broken min/max validation for field `type: int` + * Fixed lowering uppercase characters in usernames when saving from frontend [#2565](https://github.com/getgrav/grav/pull/2565) + * Fixed save error when editing accounts that have been created with capital letters in their username [#3211](https://github.com/getgrav/grav/issues/3211) + * Fixed renaming flex objects key when using file storage + * Fixed wrong values in Admin pages list [#3214](https://github.com/getgrav/grav/issues/3214) + * Fixed pipelined asset using different hash when extra asset is added to before/after position [#2781](https://github.com/getgrav/grav/issues/2781) + * Fixed trailing slash redirect to only apply to GET/HEAD requests and use 301 status code [#3127](https://github.com/getgrav/grav/issues/3127) + * Fixed root page to always contain trailing slash [#3127](https://github.com/getgrav/grav/issues/3127) + * Fixed `` to use name instead property [#3010](https://github.com/getgrav/grav/pull/3010) + * Fixed behavior of opposite filters in `Pages::getCollection()` to match Grav 1.6 [#3216](https://github.com/getgrav/grav/pull/3216) + * Fixed modular content with missing template file ending up using non-modular template [#3218](https://github.com/getgrav/grav/issues/3218) + * Fixed broken attachment image in Flex Objects Admin when `destination: self@` used [#3225](https://github.com/getgrav/grav/issues/3225) + * Fixed bug in page content with both markdown and twig enabled [#3223](https://github.com/getgrav/grav/issues/3223) + # v1.7.5 ## 02/01/2021 diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 42ef22d36..99ab478bc 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,46 +1,133 @@ + # Contributor Covenant Code of Conduct ## Our Pledge -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. ## Our Standards -Examples of behavior that contributes to creating a positive environment include: +Examples of behavior that contributes to a positive environment for our +community include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community -Examples of unacceptable behavior by participants include: +Examples of unacceptable behavior include: -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks * Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting -## Our Responsibilities +## Enforcement Responsibilities -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. ## Scope -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. ## Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at contact@getgrav.org. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +[INSERT CONTACT METHOD]. +All complaints will be reviewed and investigated promptly and fairly. -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. ## Attribution -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0]. -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available +at [https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/README.md b/README.md index 962cb36d1..562349f91 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![PHPStan](https://img.shields.io/badge/PHPStan-enabled-brightgreen.svg?style=flat)](https://github.com/phpstan/phpstan) [![SensioLabsInsight](https://insight.sensiolabs.com/projects/cfd20465-d0f8-4a0a-8444-467f5b5f16ad/mini.png)](https://insight.sensiolabs.com/projects/cfd20465-d0f8-4a0a-8444-467f5b5f16ad) [![Discord](https://img.shields.io/discord/501836936584101899.svg?logo=discord&colorB=728ADA&label=Discord%20Chat)](https://chat.getgrav.org) - [![Build Status](https://travis-ci.org/getgrav/grav.svg?branch=develop)](https://travis-ci.org/getgrav/grav) [![OpenCollective](https://opencollective.com/grav/backers/badge.svg)](#backers) [![OpenCollective](https://opencollective.com/grav/sponsors/badge.svg)](#sponsors) + [![PHP Tests](https://github.com/getgrav/grav/workflows/PHP%20Tests/badge.svg?branch=develop)](https://github.com/getgrav/grav/actions?query=workflow%3A%22PHP+Tests%22) [![OpenCollective](https://opencollective.com/grav/backers/badge.svg)](#backers) [![OpenCollective](https://opencollective.com/grav/sponsors/badge.svg)](#sponsors) Grav is a **Fast**, **Simple**, and **Flexible**, file-based Web-platform. There is **Zero** installation required. Just extract the ZIP archive, and you are already up and running. It follows similar principles to other flat-file CMS platforms, but has a different design philosophy than most. Grav comes with a powerful **Package Management System** to allow for simple installation and upgrading of plugins and themes, as well as simple updating of Grav itself. diff --git a/assets/.gitkeep b/assets/.gitkeep index e69de29bb..33a9aed71 100644 --- a/assets/.gitkeep +++ b/assets/.gitkeep @@ -0,0 +1 @@ +/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ diff --git a/backup/.gitkeep b/backup/.gitkeep index e69de29bb..33a9aed71 100644 --- a/backup/.gitkeep +++ b/backup/.gitkeep @@ -0,0 +1 @@ +/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ diff --git a/bin/composer.phar b/bin/composer.phar index c8fa35f71..3791ce36e 100755 Binary files a/bin/composer.phar and b/bin/composer.phar differ diff --git a/bin/gpm b/bin/gpm index f65190998..a2eebc68c 100755 --- a/bin/gpm +++ b/bin/gpm @@ -1,6 +1,11 @@ #!/usr/bin/env php =5.6" + "php": "~7.2|~8.0" }, "require-dev": { - "phpunit/phpunit": "~5.7|~6|~7", - "symfony/phpunit-bridge": "~2.7|~3|~4", - "symfony/yaml": "~2.3|~3|~4" + "cucumber/cucumber": "dev-gherkin-16.0.0", + "phpunit/phpunit": "~8|~9", + "symfony/phpunit-bridge": "~3|~4|~5", + "symfony/yaml": "~3|~4|~5" }, "suggest": { "symfony/yaml": "If you want to parse features, represented in YAML files" @@ -3400,9 +3401,9 @@ ], "support": { "issues": "https://github.com/Behat/Gherkin/issues", - "source": "https://github.com/Behat/Gherkin/tree/v4.7.1" + "source": "https://github.com/Behat/Gherkin/tree/v4.8.0" }, - "time": "2021-01-26T16:24:32+00:00" + "time": "2021-02-04T12:44:21+00:00" }, { "name": "codeception/codeception", @@ -4491,16 +4492,16 @@ }, { "name": "phpstan/phpstan", - "version": "0.12.70", + "version": "0.12.77", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "07f0ef37f5f876e8cee44cc8ea0ec3fe80d499ee" + "reference": "1f10b8c8d118d01e7b492f9707999d456be5812c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/07f0ef37f5f876e8cee44cc8ea0ec3fe80d499ee", - "reference": "07f0ef37f5f876e8cee44cc8ea0ec3fe80d499ee", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1f10b8c8d118d01e7b492f9707999d456be5812c", + "reference": "1f10b8c8d118d01e7b492f9707999d456be5812c", "shasum": "" }, "require": { @@ -4531,7 +4532,7 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.70" + "source": "https://github.com/phpstan/phpstan/tree/0.12.77" }, "funding": [ { @@ -4547,7 +4548,7 @@ "type": "tidelift" } ], - "time": "2021-01-27T17:06:47+00:00" + "time": "2021-02-17T16:22:19+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -4920,16 +4921,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.1", + "version": "9.5.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "e7bdf4085de85a825f4424eae52c99a1cec2f360" + "reference": "f661659747f2f87f9e72095bb207bceb0f151cb4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e7bdf4085de85a825f4424eae52c99a1cec2f360", - "reference": "e7bdf4085de85a825f4424eae52c99a1cec2f360", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f661659747f2f87f9e72095bb207bceb0f151cb4", + "reference": "f661659747f2f87f9e72095bb207bceb0f151cb4", "shasum": "" }, "require": { @@ -5007,7 +5008,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.1" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.2" }, "funding": [ { @@ -5019,7 +5020,7 @@ "type": "github" } ], - "time": "2021-01-17T07:42:25+00:00" + "time": "2021-02-02T14:45:58+00:00" }, { "name": "psr/http-client", @@ -6039,7 +6040,7 @@ }, { "name": "symfony/browser-kit", - "version": "v5.2.2", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", @@ -6090,7 +6091,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v5.2.2" + "source": "https://github.com/symfony/browser-kit/tree/v5.2.3" }, "funding": [ { @@ -6110,7 +6111,7 @@ }, { "name": "symfony/css-selector", - "version": "v5.2.2", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", @@ -6155,7 +6156,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.2.2" + "source": "https://github.com/symfony/css-selector/tree/v5.2.3" }, "funding": [ { @@ -6175,7 +6176,7 @@ }, { "name": "symfony/dom-crawler", - "version": "v5.2.2", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", @@ -6229,7 +6230,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v5.2.2" + "source": "https://github.com/symfony/dom-crawler/tree/v5.2.3" }, "funding": [ { @@ -6249,16 +6250,16 @@ }, { "name": "symfony/finder", - "version": "v5.2.2", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "196f45723b5e618bf0e23b97e96d11652696ea9e" + "reference": "4adc8d172d602008c204c2e16956f99257248e03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/196f45723b5e618bf0e23b97e96d11652696ea9e", - "reference": "196f45723b5e618bf0e23b97e96d11652696ea9e", + "url": "https://api.github.com/repos/symfony/finder/zipball/4adc8d172d602008c204c2e16956f99257248e03", + "reference": "4adc8d172d602008c204c2e16956f99257248e03", "shasum": "" }, "require": { @@ -6290,7 +6291,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.2.2" + "source": "https://github.com/symfony/finder/tree/v5.2.3" }, "funding": [ { @@ -6306,7 +6307,7 @@ "type": "tidelift" } ], - "time": "2021-01-27T10:01:46+00:00" + "time": "2021-01-28T22:06:19+00:00" }, { "name": "theseer/tokenizer", diff --git a/images/.gitkeep b/images/.gitkeep index e69de29bb..33a9aed71 100644 --- a/images/.gitkeep +++ b/images/.gitkeep @@ -0,0 +1 @@ +/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ diff --git a/index.php b/index.php index 1737a24e8..9842952d5 100644 --- a/index.php +++ b/index.php @@ -3,7 +3,7 @@ /** * @package Grav.Core * - * @copyright Copyright (C) 2015 - 2018 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/logs/.gitkeep b/logs/.gitkeep index e69de29bb..33a9aed71 100644 --- a/logs/.gitkeep +++ b/logs/.gitkeep @@ -0,0 +1 @@ +/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ diff --git a/system/blueprints/config/system.yaml b/system/blueprints/config/system.yaml index 9fa9f0194..538fd08f5 100644 --- a/system/blueprints/config/system.yaml +++ b/system/blueprints/config/system.yaml @@ -741,6 +741,16 @@ form: size: small label: PLUGIN_ADMIN.REDIS_PASSWORD + cache.redis.database: + type: text + size: medium + label: PLUGIN_ADMIN.REDIS_DATABASE + help: PLUGIN_ADMIN.REDIS_DATABASE_HELP + placeholder: "0" + validate: + type: number + min: 0 + flex_caching: type: section title: PLUGIN_ADMIN.FLEX_CACHING @@ -1338,6 +1348,12 @@ form: validate: type: bool + session.domain: + type: text + size: small + label: PLUGIN_ADMIN.SESSION_DOMAIN + help: PLUGIN_ADMIN.SESSION_DOMAIN_HELP + session.path: type: text size: small diff --git a/system/config/system.yaml b/system/config/system.yaml index 46398e1a0..5c29a7869 100644 --- a/system/config/system.yaml +++ b/system/config/system.yaml @@ -103,6 +103,8 @@ cache: allow_webserver_gzip: false # If true, `content-encoding: identity` but connection isn't closed before `onShutDown()` event redis: socket: false # Path to redis unix socket (e.g. /var/run/redis/redis.sock), false = use server and port to connect + password: # Optional password + database: # Optional database ID twig: cache: true # Set to true to enable Twig caching @@ -170,7 +172,8 @@ session: httponly: true # Set session HTTP only. If true, indicates that cookies should be used only over HTTP, and JavaScript modification is not allowed. samesite: Lax # Set session SameSite. Possible values are Lax, Strict and None. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite split: true # Sessions should be independent between site and plugins (such as admin) - path: + domain: # Domain used by sessions. + path: # Path used by sessions. gpm: releases: stable # Set to either 'stable' or 'testing' diff --git a/system/defines.php b/system/defines.php index a2e7a77a7..be759dbea 100644 --- a/system/defines.php +++ b/system/defines.php @@ -2,13 +2,13 @@ /** * @package Grav\Core * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ // Some standard defines define('GRAV', true); -define('GRAV_VERSION', '1.7.5'); +define('GRAV_VERSION', '1.7.6'); define('GRAV_SCHEMA', '1.7.0_2020-11-20_1'); define('GRAV_TESTING', false); diff --git a/system/install.php b/system/install.php index fd8aefbba..e8cd5827d 100644 --- a/system/install.php +++ b/system/install.php @@ -2,7 +2,7 @@ /** * @package Grav\Core * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/languages/ar.yaml b/system/languages/ar.yaml index 04e63f976..960540588 100644 --- a/system/languages/ar.yaml +++ b/system/languages/ar.yaml @@ -1,6 +1,17 @@ --- GRAV: FRONTMATTER_ERROR_PAGE: "---\nالعنوان: %1$s\n---\n# خطأ: مادة أمامية غير صحيحة\n\nمسار: '%2$s'\n\n**%3$s**\n\n, , ,\n\n%4$s\n, , ," + INFLECTOR_UNCOUNTABLE: + - 'معدّات' + - 'معلومات' + - 'أرز' + - 'مال' + - 'نوع' + - 'سلسلة' + - 'سمك' + - 'خروف' + INFLECTOR_IRREGULAR: + 'person': 'أشخاص' NICETIME: NO_DATE_PROVIDED: لم يتم تقديم التاريخ BAD_DATE: تاريخ خاطئ @@ -37,8 +48,8 @@ GRAV: YR_PLURAL: سنوات DEC_PLURAL: عقود FORM: - VALIDATION_FAIL: فشل التحقق من صحة: - INVALID_INPUT: إدخال غير صحيح في + VALIDATION_FAIL: 'فشل التحقق من صحة:' + INVALID_INPUT: 'إدخال غير صحيح في' MISSING_REQUIRED_FIELD: 'حقل مطلوب مفقود:' MONTHS_OF_THE_YEAR: - 'كانون الثاني' @@ -61,3 +72,11 @@ GRAV: - 'الجمعة' - 'السبت' - 'الأحد' + CRON: + EVERY: كل + EVERY_HOUR: كل ساعة + EVERY_MINUTE: كل دقيقة + EVERY_DAY_OF_WEEK: كل يوم في الأسبوع + EVERY_DAY_OF_MONTH: كل يوم في الشهر + EVERY_MONTH: ' كل شهر' + TEXT_PERIOD: كل diff --git a/system/languages/bg.yaml b/system/languages/bg.yaml index 48daceb16..174b3a45d 100644 --- a/system/languages/bg.yaml +++ b/system/languages/bg.yaml @@ -36,8 +36,8 @@ GRAV: YR_PLURAL: г DEC_PLURAL: дстлт FORM: - VALIDATION_FAIL: Неуспешна проверка: - INVALID_INPUT: Невалидно въвеждане в + VALIDATION_FAIL: 'Неуспешна проверка:' + INVALID_INPUT: 'Невалидно въвеждане в' MISSING_REQUIRED_FIELD: 'Липсва задължително поле:' MONTHS_OF_THE_YEAR: - 'януари' diff --git a/system/languages/ca.yaml b/system/languages/ca.yaml index bd04474c0..7795aef8b 100644 --- a/system/languages/ca.yaml +++ b/system/languages/ca.yaml @@ -1,6 +1,15 @@ --- GRAV: FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# S'ha produït un error: Frontmatter invàlid\n\nRuta: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_UNCOUNTABLE: + - 'equipment' + - 'informació' + - 'rice' + - 'money' + - 'species' + - 'series' + - 'fish' + - 'sheep' NICETIME: NO_DATE_PROVIDED: No s'ha proporcionat data BAD_DATE: Data invàlida @@ -36,8 +45,8 @@ GRAV: YR_PLURAL: anys DEC_PLURAL: dèc. FORM: - VALIDATION_FAIL: Ha fallat la validació: - INVALID_INPUT: Entrada no vàlida a + VALIDATION_FAIL: 'Ha fallat la validació:' + INVALID_INPUT: 'Entrada no vàlida a' MISSING_REQUIRED_FIELD: 'Falta camp obligatori:' MONTHS_OF_THE_YEAR: - 'Gener' diff --git a/system/languages/cs.yaml b/system/languages/cs.yaml index 80844c997..bfad42364 100644 --- a/system/languages/cs.yaml +++ b/system/languages/cs.yaml @@ -101,9 +101,10 @@ GRAV: YR_PLURAL: r DEC_PLURAL: dek FORM: - VALIDATION_FAIL: Ověření se nezdařilo: - INVALID_INPUT: Neplatný vstup v + VALIDATION_FAIL: 'Ověření se nezdařilo:' + INVALID_INPUT: 'Neplatný vstup v' MISSING_REQUIRED_FIELD: 'Chybí požadované pole:' + XSS_ISSUES: "Byly zjištěny možné problémy XSS v poli '%s'" MONTHS_OF_THE_YEAR: - 'leden' - 'únor' @@ -125,6 +126,8 @@ GRAV: - 'pátek' - 'sobota' - 'neděle' + YES: "Ano" + NO: "Ne" CRON: EVERY: každý EVERY_HOUR: každou hodinu diff --git a/system/languages/da.yaml b/system/languages/da.yaml index 17ce683ba..f23477c53 100644 --- a/system/languages/da.yaml +++ b/system/languages/da.yaml @@ -1,11 +1,27 @@ --- GRAV: FRONTMATTER_ERROR_PAGE: "---\nTitel: %1$s\n---\n\n# Fejl: Ugyldigt frontmatter\n\nSti: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_UNCOUNTABLE: + - 'udstyr' + - 'information' + - 'ris' + - 'penge' + - 'arter' + - 'Serier' + - 'fisk' + - 'får' + INFLECTOR_IRREGULAR: + 'person': 'personer' + 'man': 'mænd' + 'child': 'børn' + 'sex': 'køn' + 'move': 'flyt' NICETIME: NO_DATE_PROVIDED: Ingen dato angivet BAD_DATE: Ugyldig dato AGO: siden FROM_NOW: fra nu + JUST_NOW: lige nu SECOND: sekund MINUTE: minut HOUR: time @@ -15,6 +31,7 @@ GRAV: YEAR: år DECADE: årti SEC: sek + MIN: min. HR: t WK: u MO: md @@ -36,8 +53,8 @@ GRAV: YR_PLURAL: år DEC_PLURAL: årtier FORM: - VALIDATION_FAIL: Validering mislykkedes: - INVALID_INPUT: Ugyldigt input i + VALIDATION_FAIL: 'Validering mislykkedes:' + INVALID_INPUT: 'Ugyldigt input i' MISSING_REQUIRED_FIELD: 'Mangler obligatorisk felt:' MONTHS_OF_THE_YEAR: - 'januar' @@ -60,3 +77,14 @@ GRAV: - 'fredag' - 'lørdag' - 'søndag' + CRON: + EVERY: hver + EVERY_HOUR: hver time + EVERY_MINUTE: hvert minut + EVERY_DAY_OF_WEEK: alle ugens dage + EVERY_DAY_OF_MONTH: alle dage i måneden + EVERY_MONTH: hver måned + TEXT_PERIOD: Hver + TEXT_MINS: ' ved minut(ter) over timen' + ERROR1: Tagget %s understøttes ikke! + ERROR2: Ugyldigt antal elementer diff --git a/system/languages/de.yaml b/system/languages/de.yaml index 533cf89c3..45c24e79c 100644 --- a/system/languages/de.yaml +++ b/system/languages/de.yaml @@ -101,9 +101,10 @@ GRAV: YR_PLURAL: Jahre DEC_PLURAL: Jahrzehnten FORM: - VALIDATION_FAIL: Überprüfung fehlgeschlagen: - INVALID_INPUT: Ungültige Eingabe in + VALIDATION_FAIL: 'Überprüfung fehlgeschlagen:' + INVALID_INPUT: 'Ungültige Eingabe in' MISSING_REQUIRED_FIELD: 'Erforderliches Feld fehlt:' + XSS_ISSUES: "Potenzielle XSS-Probleme im Feld '%s' erkannt" MONTHS_OF_THE_YEAR: - 'Januar' - 'Februar' @@ -125,8 +126,8 @@ GRAV: - 'Freitag' - 'Samstag' - 'Sonntag' - YES: 'Ja' - NO: 'Nein' + YES: "Ja" + NO: "Nein" CRON: EVERY: jede EVERY_HOUR: jede Stunde diff --git a/system/languages/el.yaml b/system/languages/el.yaml index 1faa8dd87..28619f809 100644 --- a/system/languages/el.yaml +++ b/system/languages/el.yaml @@ -1,11 +1,75 @@ --- GRAV: FRONTMATTER_ERROR_PAGE: "---\nΤίτλος: %1$s\n---\n\n# Σφάλμα: Μη έγκυρη διαδρομή Frontmatter\n\nΔιαδρομή: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_PLURALS: + '/(quiz)$/i': '\1zes' + '/^(ox)$/i': '\1en' + '/([m|l])ouse$/i': '\1ice' + '/(matr|vert|ind)ix|ex$/i': '\1ices' + '/(x|ch|ss|sh)$/i': '\1es' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([^aeiouy]|qu)y$/i': '\1ies' + '/(hive)$/i': '\1s' + '/(?:([^f])fe|([lr])f)$/i': '\1\2ves' + '/sis$/i': 'ses' + '/([ti])um$/i': '\1a' + '/(buffal|tomat)o$/i': '\1oes' + '/(bu)s$/i': '\1ses' + '/(alias|status)/i': '\1es' + '/(octop|vir)us$/i': '\1i' + '/(ax|test)is$/i': '\1es' + '/s$/i': 's' + '/$/': 's' + INFLECTOR_SINGULAR: + '/(quiz)zes$/i': '\1' + '/(matr)ices$/i': '\1ix' + '/(vert|ind)ices$/i': '\1ex' + '/^(ox)en/i': '\1' + '/(alias|status)es$/i': '\1' + '/([octop|vir])i$/i': '\1us' + '/(cris|ax|test)es$/i': '\1is' + '/(shoe)s$/i': '\1' + '/(o)es$/i': '\1' + '/(bus)es$/i': '\1' + '/([m|l])ice$/i': '\1ouse' + '/(x|ch|ss|sh)es$/i': '\1' + '/(m)ovies$/i': '\1ovie' + '/(s)eries$/i': '\1eries' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([lr])ves$/i': '\1f' + '/(tive)s$/i': '\1' + '/(hive)s$/i': '\1' + '/([^f])ves$/i': '\1fe' + '/(^analy)ses$/i': '\1sis' + '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis' + '/([ti])a$/i': '\1um' + '/(n)ews$/i': '\1ews' + INFLECTOR_UNCOUNTABLE: + - 'εξοπλισμός' + - 'πληροφοριες' + - 'rice' + - 'χρήματα' + - 'είδη' + - 'σειρές' + - 'ψάρι' + - 'πρόβατο' + INFLECTOR_IRREGULAR: + 'person': 'άνθρωποι' + 'man': 'άνδρες' + 'child': 'παιδιά' + 'sex': 'φύλο' + 'move': 'κινήσεις' + INFLECTOR_ORDINALS: + 'default': 'th' + 'first': 'st' + 'second': 'nd' + 'third': 'rd' NICETIME: NO_DATE_PROVIDED: Δεν δόθηκε καμία ημερομηνία BAD_DATE: Εσφαλμένη ημερομηνία AGO: πρίν FROM_NOW: από τώρα + JUST_NOW: μόλις τώρα SECOND: δευτερόλεπτο MINUTE: λεπτό HOUR: ώρα @@ -37,8 +101,8 @@ GRAV: YR_PLURAL: έτη DEC_PLURAL: δεκαετίες FORM: - VALIDATION_FAIL: Η επικύρωση απέτυχε: - INVALID_INPUT: Μη έγκυρα δεδομένα σε + VALIDATION_FAIL: 'Η επικύρωση απέτυχε:' + INVALID_INPUT: 'Μη έγκυρα δεδομένα σε' MISSING_REQUIRED_FIELD: 'Λείπει το απαιτούμενο πεδίο:' MONTHS_OF_THE_YEAR: - 'Ιανουάριος' @@ -61,3 +125,20 @@ GRAV: - 'Παρασκευή' - 'Σάββατο' - 'Κυριακή' + CRON: + EVERY: κάθε + EVERY_HOUR: κάθε ώρα + EVERY_MINUTE: κάθε λεπτό + EVERY_DAY_OF_WEEK: κάθε μέρα της εβδομάδος + EVERY_DAY_OF_MONTH: κάθε μέρα του μήνα + EVERY_MONTH: κάθε μήνα + TEXT_PERIOD: Κάθε + TEXT_MINS: ' κατά λεπτό(ά) μετά την ώρα' + TEXT_TIME: ' στο :' + TEXT_DOW: ' στις ' + TEXT_MONTH: ' από ' + TEXT_DOM: ' στις ' + ERROR1: Η ετικέτα %s δεν υποστηρίζεται! + ERROR2: Μη έγκυρος αριθμός στοιχείων + ERROR3: Το jquery_element θα έπρεπε να οριστεί στις ρυθμίσεις του jqCron + ERROR4: Μη αναγνωρισμένη έκφραση diff --git a/system/languages/es.yaml b/system/languages/es.yaml index 7bacfeb98..95827ee2b 100644 --- a/system/languages/es.yaml +++ b/system/languages/es.yaml @@ -1,19 +1,25 @@ --- GRAV: - FRONTMATTER_ERROR_PAGE: "---\ntítulo: %1$s\n---\n\n# Error: Frontmatter no válido\n\nRuta: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + FRONTMATTER_ERROR_PAGE: "---\ntítulo: %1$s\n---\n\n# Error: Prefacio no válido\n\nRuta: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_PLURALS: + '/(quiz)$/i': '\1ios' + '/s$/i': 's' + '/$/': 's' INFLECTOR_UNCOUNTABLE: - - 'equipo' + - 'equipamiento' - 'información' - - 'rice' + - 'arroz' - 'dinero' - - 'species' + - 'especies' - 'series' - 'pescado' - 'oveja' INFLECTOR_IRREGULAR: + 'person': 'personas' 'man': 'hombres' 'child': 'niños' 'sex': 'sexos' + 'move': 'movido' INFLECTOR_ORDINALS: 'first': 'ro' 'second': 'do' @@ -33,10 +39,12 @@ GRAV: YEAR: año DECADE: década SEC: seg + MIN: min HR: h WK: sem MO: mes YR: año + DEC: dic SECOND_PLURAL: segundos MINUTE_PLURAL: minutos HOUR_PLURAL: horas @@ -46,6 +54,7 @@ GRAV: YEAR_PLURAL: años DECADE_PLURAL: décadas SEC_PLURAL: segs + MIN_PLURAL: mins HR_PLURAL: hs WK_PLURAL: sem MO_PLURAL: mes @@ -55,6 +64,7 @@ GRAV: VALIDATION_FAIL: 'Falló la validación: ' INVALID_INPUT: 'Dato inválido en: ' MISSING_REQUIRED_FIELD: 'Falta el campo requerido: ' + XSS_ISSUES: "Se detectaron problemas XSS potenciales en el campo '%s'" MONTHS_OF_THE_YEAR: - 'Enero' - 'Febrero' @@ -76,6 +86,8 @@ GRAV: - 'Viernes' - 'Sábado' - 'Domingo' + YES: "Si" + NO: "No" CRON: EVERY: cada EVERY_HOUR: cada hora diff --git a/system/languages/et.yaml b/system/languages/et.yaml index 619aa1a73..e5659d333 100644 --- a/system/languages/et.yaml +++ b/system/languages/et.yaml @@ -1,11 +1,22 @@ --- GRAV: FRONTMATTER_ERROR_PAGE: "---\npealkiri: %1$s\n---\n\n# Viga: vigane Frontmatter'i\n\nasukoht: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_PLURALS: + '/(octop|vir)us$/i': '\1i' + INFLECTOR_SINGULAR: + '/^(ox)en/i': '\1' + '/(alias|status)es$/i': '\1' + '/(shoe)s$/i': '\1' + '/(o)es$/i': '\1' + '/(bus)es$/i': '\1' + '/(x|ch|ss|sh)es$/i': '\1' + '/(tive)s$/i': '\1' + '/(hive)s$/i': '\1' INFLECTOR_UNCOUNTABLE: - 'equipment' - 'informatsioon' - - 'rice' - - 'money' + - 'riis' + - 'raha' - 'species' - 'series' - 'kala' @@ -34,6 +45,7 @@ GRAV: YEAR: aasta DECADE: 10 aastat SEC: sek + MIN: min HR: t WK: näd MO: k. @@ -55,7 +67,7 @@ GRAV: YR_PLURAL: aastat DEC_PLURAL: dek. FORM: - VALIDATION_FAIL: Kinnitamine nurjus: + VALIDATION_FAIL: 'Kinnitamine nurjus:' INVALID_INPUT: 'Vigane sisend:' MISSING_REQUIRED_FIELD: 'Nõutud väli puudub:' MONTHS_OF_THE_YEAR: @@ -81,5 +93,12 @@ GRAV: - 'pühapäev' CRON: EVERY: iga + EVERY_HOUR: iga tund + EVERY_MINUTE: iga minut + EVERY_DAY_OF_WEEK: iga nädala päev EVERY_MONTH: iga kuu TEXT_PERIOD: Iga + ERROR1: Silt %s pole toetatud! + ERROR2: Vale elementide arv + ERROR3: jqCron seadetes peaks olema määratud jquery_element + ERROR4: Tundmatu väljend diff --git a/system/languages/eu.yaml b/system/languages/eu.yaml index 4a9a58e9e..91c3c8e2c 100644 --- a/system/languages/eu.yaml +++ b/system/languages/eu.yaml @@ -36,8 +36,8 @@ GRAV: YR_PLURAL: urt DEC_PLURAL: ham FORM: - VALIDATION_FAIL: Balidazioak huts egin du - INVALID_INPUT: Baliogabeko sarrera + VALIDATION_FAIL: 'Balidazioak huts egin du' + INVALID_INPUT: 'Baliogabeko sarrera' MISSING_REQUIRED_FIELD: 'Derrigorrezko eremua bete gabe:' MONTHS_OF_THE_YEAR: - 'Urtarrila' diff --git a/system/languages/fa.yaml b/system/languages/fa.yaml index 186f79d79..96b96dc04 100644 --- a/system/languages/fa.yaml +++ b/system/languages/fa.yaml @@ -36,8 +36,8 @@ GRAV: YR_PLURAL: سال DEC_PLURAL: دهه FORM: - VALIDATION_FAIL: سنجش اعتبار ناموفق بود - INVALID_INPUT: ورودی نامعتبر در + VALIDATION_FAIL: 'سنجش اعتبار ناموفق بود' + INVALID_INPUT: 'ورودی نامعتبر در' MISSING_REQUIRED_FIELD: 'قسمت ضروری جا افتاده:' MONTHS_OF_THE_YEAR: - 'ژانویه' diff --git a/system/languages/fi.yaml b/system/languages/fi.yaml index e84c19f66..4cb547c68 100644 --- a/system/languages/fi.yaml +++ b/system/languages/fi.yaml @@ -100,8 +100,8 @@ GRAV: YR_PLURAL: v DEC_PLURAL: vuosikymmentä FORM: - VALIDATION_FAIL: Vahvistus epäonnistui: - INVALID_INPUT: Syöte ei kelpaa + VALIDATION_FAIL: 'Vahvistus epäonnistui:' + INVALID_INPUT: 'Syöte ei kelpaa' MISSING_REQUIRED_FIELD: 'Puuttuva pakollinen kenttä:' MONTHS_OF_THE_YEAR: - 'Tammikuu' diff --git a/system/languages/fr.yaml b/system/languages/fr.yaml index 9284f7e6d..d9fa177ea 100644 --- a/system/languages/fr.yaml +++ b/system/languages/fr.yaml @@ -16,6 +16,7 @@ GRAV: '/(buffal|tomat)o$/i': '\1es' '/(bu)s$/i': 'Bus' '/(alias|status)/i': 'alias|status' + '/(octop|vir)us$/i': 'virus' '/(ax|test)is$/i': '\1s' '/s$/i': 's' '/$/': 's' @@ -80,30 +81,30 @@ GRAV: YR_PLURAL: a DEC_PLURAL: décs FORM: - VALIDATION_FAIL: La validation a échoué : - INVALID_INPUT: Saisie non valide + VALIDATION_FAIL: 'La validation a échoué :' + INVALID_INPUT: 'Saisie non valide' MISSING_REQUIRED_FIELD: 'Champ obligatoire manquant :' MONTHS_OF_THE_YEAR: - - 'Janvier' - - 'Février' - - 'Mars' - - 'Avril' - - 'Mai' - - 'Juin' - - 'Juillet' - - 'Août' - - 'Septembre' - - 'Octobre' - - 'Novembre' - - 'Décembre' + - 'janvier' + - 'février' + - 'mars' + - 'avril' + - 'mai' + - 'juin' + - 'juillet' + - 'août' + - 'septembre' + - 'octobre' + - 'novembre' + - 'décembre' DAYS_OF_THE_WEEK: - - 'Lundi' - - 'Mardi' - - 'Mercredi' - - 'Jeudi' - - 'Vendredi' - - 'Samedi' - - 'Dimanche' + - 'lundi' + - 'mardi' + - 'mercredi' + - 'jeudi' + - 'vendredi' + - 'samedi' + - 'dimanche' CRON: EVERY: chaque EVERY_HOUR: toutes les heures diff --git a/system/languages/gl.yaml b/system/languages/gl.yaml new file mode 100644 index 000000000..b016c59c3 --- /dev/null +++ b/system/languages/gl.yaml @@ -0,0 +1,144 @@ +--- +GRAV: + FRONTMATTER_ERROR_PAGE: "---\ntítulo: %1$s\n---\n\n# Erro: Limiar incorrecto\n\nRuta: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_PLURALS: + '/(quiz)$/i': '\1zes' + '/^(ox)$/i': '\1en' + '/([m|l])ouse$/i': '\1ice' + '/(matr|vert|ind)ix|ex$/i': '\1ices' + '/(x|ch|ss|sh)$/i': '\1es' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([^aeiouy]|qu)y$/i': '\1ies' + '/(hive)$/i': '\1s' + '/(?:([^f])fe|([lr])f)$/i': '\1\2ves' + '/sis$/i': 'ses' + '/([ti])um$/i': '\1a' + '/(buffal|tomat)o$/i': '\1oes' + '/(bu)s$/i': '\1ses' + '/(alias|status)/i': '\1' + '/(octop|vir)us$/i': '\1' + '/(ax|test)is$/i': '\1es' + '/s$/i': 's' + '/$/': 's' + INFLECTOR_SINGULAR: + '/(quiz)zes$/i': '\1ces' + '/(matr)ices$/i': '\1ix' + '/(vert|ind)ices$/i': '\1ex' + '/^(ox)en/i': '\1' + '/(alias|status)es$/i': '\1' + '/([octop|vir])i$/i': '\1' + '/(cris|ax|test)es$/i': '\1es' + '/(shoe)s$/i': '\1' + '/(o)es$/i': '\1' + '/(bus)es$/i': '\1' + '/([m|l])ice$/i': '\1ouse' + '/(x|ch|ss|sh)es$/i': '\1' + '/(m)ovies$/i': '\1ovie' + '/(s)eries$/i': '\1eries' + '/([^aeiouy]|qu)ies$/i': '\1' + '/([lr])ves$/i': '\1f' + '/(tive)s$/i': '\1' + '/(hive)s$/i': '\1' + '/([^f])ves$/i': '\1fe' + '/(^analy)ses$/i': '\1se' + '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2se' + '/([ti])a$/i': '\1um' + '/(n)ews$/i': '\1ews' + INFLECTOR_UNCOUNTABLE: + - 'equipo' + - 'información' + - 'arroz' + - 'diñeiro' + - 'especies' + - 'series' + - 'peixe' + - 'ovella' + INFLECTOR_IRREGULAR: + 'person': 'xente' + 'man': 'home' + 'child': 'neno' + 'sex': 'sexos' + 'move': 'move' + INFLECTOR_ORDINALS: + 'default': 'º' + 'first': 'º' + 'second': 'º' + 'third': 'º' + NICETIME: + NO_DATE_PROVIDED: Non fornece unha data + BAD_DATE: Data errada + AGO: hai + FROM_NOW: dende agora + JUST_NOW: xusto agora + SECOND: segundo + MINUTE: minuto + HOUR: hora + DAY: día + WEEK: semana + MONTH: mes + YEAR: ano + DECADE: década + SEC: seg + MIN: min + HR: hr + WK: Sem + MO: m + YR: a + DEC: dec + SECOND_PLURAL: segundos + MINUTE_PLURAL: minutos + HOUR_PLURAL: horas + DAY_PLURAL: días + WEEK_PLURAL: semanas + MONTH_PLURAL: meses + YEAR_PLURAL: anos + DECADE_PLURAL: décadas + SEC_PLURAL: segs + MIN_PLURAL: mins + HR_PLURAL: hrs + WK_PLURAL: sem + MO_PLURAL: mes + YR_PLURAL: a + DEC_PLURAL: deca + FORM: + VALIDATION_FAIL: 'Fallou a validación:' + INVALID_INPUT: 'Entrada incorrecta en' + MISSING_REQUIRED_FIELD: 'Falta un campo requirido:' + MONTHS_OF_THE_YEAR: + - 'xaneiro' + - 'febreiro' + - 'marzo' + - 'abril' + - 'maio' + - 'xuño' + - 'xullo' + - 'agosto' + - 'setembro' + - 'outubro' + - 'novembro' + - 'decembro' + DAYS_OF_THE_WEEK: + - 'luns' + - 'martes' + - 'mércores' + - 'xoves' + - 'venres' + - 'sábado' + - 'domingo' + CRON: + EVERY: cada + EVERY_HOUR: Cada hora + EVERY_MINUTE: Cada minuto + EVERY_DAY_OF_WEEK: cada día da semana + EVERY_DAY_OF_MONTH: cada día do mes + EVERY_MONTH: cada mes + TEXT_PERIOD: Cada + TEXT_MINS: ' dentro de minuto(s) despois da hora' + TEXT_TIME: ' dentro :' + TEXT_DOW: ' o ' + TEXT_MONTH: ' de ' + TEXT_DOM: ' o ' + ERROR1: A etiqueta %s non é compatíbel! + ERROR2: Mal número de elementos + ERROR3: O jquery_element debería estar determinado na configuración de jqCron + ERROR4: Expresión non recoñecida diff --git a/system/languages/he.yaml b/system/languages/he.yaml index afb63d7f8..d7f43186e 100644 --- a/system/languages/he.yaml +++ b/system/languages/he.yaml @@ -37,8 +37,8 @@ GRAV: YR_PLURAL: שני' DEC_PLURAL: עש' FORM: - VALIDATION_FAIL: האימות נכשל: - INVALID_INPUT: קלט לא חוקי + VALIDATION_FAIL: 'האימות נכשל:' + INVALID_INPUT: 'קלט לא חוקי' MISSING_REQUIRED_FIELD: 'שדות חובה חסרים:' MONTHS_OF_THE_YEAR: - 'ינואר' diff --git a/system/languages/hr.yaml b/system/languages/hr.yaml index 1b530b5c2..4827d3eec 100644 --- a/system/languages/hr.yaml +++ b/system/languages/hr.yaml @@ -50,8 +50,8 @@ GRAV: YR_PLURAL: g DEC_PLURAL: des FORM: - VALIDATION_FAIL: Validacija nije uspjela: - INVALID_INPUT: Pogrešan unos u + VALIDATION_FAIL: 'Validacija nije uspjela:' + INVALID_INPUT: 'Pogrešan unos u' MISSING_REQUIRED_FIELD: 'Nedostaje obavezno polje:' MONTHS_OF_THE_YEAR: - 'Siječanj' diff --git a/system/languages/hu.yaml b/system/languages/hu.yaml index a834c45c3..2624cf938 100644 --- a/system/languages/hu.yaml +++ b/system/languages/hu.yaml @@ -58,7 +58,7 @@ GRAV: YR_PLURAL: év DEC_PLURAL: évt FORM: - VALIDATION_FAIL: Érvényesítés nem sikerült: + VALIDATION_FAIL: 'Érvényesítés nem sikerült:' INVALID_INPUT: 'A megadott érték érvénytelen:' MISSING_REQUIRED_FIELD: 'Ez a kötelező mező nincs kitöltve:' MONTHS_OF_THE_YEAR: diff --git a/system/languages/id.yaml b/system/languages/id.yaml index 41431f13e..690959d85 100644 --- a/system/languages/id.yaml +++ b/system/languages/id.yaml @@ -1,6 +1,8 @@ --- GRAV: FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Error: Frontmatter tidak valid\n\nLokasi: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_PLURALS: + '/(quiz)$/i': '\1zes' INFLECTOR_UNCOUNTABLE: - 'peralatan' - 'informasi' @@ -53,8 +55,8 @@ GRAV: YR_PLURAL: thn DEC_PLURAL: dekade FORM: - VALIDATION_FAIL: Validasi gagal: - INVALID_INPUT: Input tidak valid di + VALIDATION_FAIL: 'Validasi gagal:' + INVALID_INPUT: 'Input tidak valid di' MISSING_REQUIRED_FIELD: 'Data yang diperlukan belum terisi:' MONTHS_OF_THE_YEAR: - 'Januari' diff --git a/system/languages/is.yaml b/system/languages/is.yaml index 6f9761ca1..00d42eefa 100644 --- a/system/languages/is.yaml +++ b/system/languages/is.yaml @@ -46,8 +46,8 @@ GRAV: YR_PLURAL: árum DEC_PLURAL: árat FORM: - VALIDATION_FAIL: Sannvottun mistókst: - INVALID_INPUT: Ógilt inntak í + VALIDATION_FAIL: 'Sannvottun mistókst:' + INVALID_INPUT: 'Ógilt inntak í' MISSING_REQUIRED_FIELD: 'Vantar nauðsynlegan reit:' MONTHS_OF_THE_YEAR: - 'janúar' diff --git a/system/languages/it.yaml b/system/languages/it.yaml index 741f72189..f366eb665 100644 --- a/system/languages/it.yaml +++ b/system/languages/it.yaml @@ -1,6 +1,49 @@ --- GRAV: FRONTMATTER_ERROR_PAGE: "---Titolo: %1$s---# Errore: Frontmatter non valido: '%2$s' * *%3$s * * ' '%4$s ' '" + INFLECTOR_PLURALS: + '/(quiz)$/i': '\1' + '/^(ox)$/i': '\1en' + '/([m|l])ouse$/i': '\1ice' + '/(matr|vert|ind)ix|ex$/i': '\1ices' + '/(x|ch|ss|sh)$/i': '\1es' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([^aeiouy]|qu)y$/i': '\1ies' + '/(hive)$/i': '\1s' + '/(?:([^f])fe|([lr])f)$/i': '\1\2ves' + '/sis$/i': 'ses' + '/([ti])um$/i': '\1a' + '/(buffal|tomat)o$/i': '\1oes' + '/(bu)s$/i': '\1ses' + '/(alias|status)/i': '\1es' + '/(octop|vir)us$/i': '\1i' + '/(ax|test)is$/i': '\1es' + '/s$/i': 's' + '/$/': 's' + INFLECTOR_SINGULAR: + '/(quiz)zes$/i': '\1' + '/(matr)ices$/i': '\1ix' + '/(vert|ind)ices$/i': '\1ex' + '/^(ox)en/i': '\1' + '/(alias|status)es$/i': '\1' + '/([octop|vir])i$/i': '\1us' + '/(cris|ax|test)es$/i': '\1is' + '/(shoe)s$/i': '\1' + '/(o)es$/i': '\1' + '/(bus)es$/i': '\1' + '/([m|l])ice$/i': '\1ouse' + '/(x|ch|ss|sh)es$/i': '\1' + '/(m)ovies$/i': '\1ovie' + '/(s)eries$/i': '\1eries' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([lr])ves$/i': '\1f' + '/(tive)s$/i': '\1' + '/(hive)s$/i': '\1' + '/([^f])ves$/i': '\1fe' + '/(^analy)ses$/i': '\1sis' + '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis' + '/([ti])a$/i': '\1um' + '/(n)ews$/i': '\1ews' INFLECTOR_UNCOUNTABLE: - 'dotazione' - 'informazione' @@ -58,9 +101,10 @@ GRAV: YR_PLURAL: anni DEC_PLURAL: decenni FORM: - VALIDATION_FAIL: Validazione fallita: - INVALID_INPUT: Input non valido in + VALIDATION_FAIL: 'Validazione fallita:' + INVALID_INPUT: 'Input non valido in' MISSING_REQUIRED_FIELD: 'Campo richiesto mancante:' + XSS_ISSUES: "Rilevati potenziali problemi di XSS nel campo '%s'" MONTHS_OF_THE_YEAR: - 'Gennaio' - 'Febbraio' @@ -82,6 +126,8 @@ GRAV: - 'Venerdì' - 'Sabato' - 'Domenica' + YES: "Sì" + NO: "No" CRON: EVERY: ogni EVERY_HOUR: ogni ora diff --git a/system/languages/ja.yaml b/system/languages/ja.yaml index 0e3fa16af..701d8e7ac 100644 --- a/system/languages/ja.yaml +++ b/system/languages/ja.yaml @@ -1,11 +1,22 @@ --- GRAV: + INFLECTOR_UNCOUNTABLE: + - 'equipment' + - '情報' + - 'rice' + - 'お金' + - 'species' + - 'series' + - '魚' + - 'ヒツジ' INFLECTOR_IRREGULAR: 'person': 'みんな' 'man': '人' 'child': '子供' 'sex': '性別' 'move': '移動' + INFLECTOR_ORDINALS: + 'first': '番目' NICETIME: NO_DATE_PROVIDED: 日付が設定されていません BAD_DATE: 不正な日付 @@ -40,8 +51,8 @@ GRAV: YR_PLURAL: 年 DEC_PLURAL: 10年 FORM: - VALIDATION_FAIL: バリデーション失敗 : - INVALID_INPUT: 不正な入力: + VALIDATION_FAIL: 'バリデーション失敗 :' + INVALID_INPUT: '不正な入力:' MISSING_REQUIRED_FIELD: '必須項目が入力されていません:' MONTHS_OF_THE_YEAR: - '1月' @@ -64,3 +75,7 @@ GRAV: - '金' - '土' - '日' + CRON: + EVERY: 毎 + EVERY_MONTH: 毎月 + ERROR1: 共有タイプ %s はサポートされていません diff --git a/system/languages/ko.yaml b/system/languages/ko.yaml index 6676a6d25..15aee8ea2 100644 --- a/system/languages/ko.yaml +++ b/system/languages/ko.yaml @@ -37,8 +37,8 @@ GRAV: YR_PLURAL: 년 DEC_PLURAL: 년간 FORM: - VALIDATION_FAIL: 유효성 검사 실패: - INVALID_INPUT: 잘못된 입력 + VALIDATION_FAIL: '유효성 검사 실패:' + INVALID_INPUT: '잘못된 입력' MISSING_REQUIRED_FIELD: '누락 된 필수 필드:' MONTHS_OF_THE_YEAR: - '일월' diff --git a/system/languages/lt.yaml b/system/languages/lt.yaml index aca0fc37f..d894b969e 100644 --- a/system/languages/lt.yaml +++ b/system/languages/lt.yaml @@ -52,8 +52,8 @@ GRAV: YR_PLURAL: m. DEC_PLURAL: dešimtmečiai FORM: - VALIDATION_FAIL: Patvirtinimas nepavyko: - INVALID_INPUT: Neteisingai įvesta į + VALIDATION_FAIL: 'Patvirtinimas nepavyko:' + INVALID_INPUT: 'Neteisingai įvesta į' MISSING_REQUIRED_FIELD: 'Būtina užpildyti laukelį:' MONTHS_OF_THE_YEAR: - 'Sausis' diff --git a/system/languages/nl.yaml b/system/languages/nl.yaml index 9706d03e5..bd0aed915 100644 --- a/system/languages/nl.yaml +++ b/system/languages/nl.yaml @@ -101,8 +101,8 @@ GRAV: YR_PLURAL: jaren DEC_PLURAL: decennia FORM: - VALIDATION_FAIL: Validatie mislukt: - INVALID_INPUT: Ongeldige invoer in + VALIDATION_FAIL: 'Validatie mislukt:' + INVALID_INPUT: 'Ongeldige invoer in' MISSING_REQUIRED_FIELD: 'Ontbrekend verplicht veld:' MONTHS_OF_THE_YEAR: - 'Januari' diff --git a/system/languages/no.yaml b/system/languages/no.yaml index 5b57938e3..2a93e6efa 100644 --- a/system/languages/no.yaml +++ b/system/languages/no.yaml @@ -21,6 +21,7 @@ GRAV: BAD_DATE: Ugyldig dato AGO: siden FROM_NOW: fra nå + JUST_NOW: akkurat nå SECOND: sekund MINUTE: minutt HOUR: time @@ -51,8 +52,8 @@ GRAV: YR_PLURAL: år DEC_PLURAL: årtier FORM: - VALIDATION_FAIL: Godkjenning mislyktes: - INVALID_INPUT: Ugyldig innhold i + VALIDATION_FAIL: 'Godkjenning mislyktes:' + INVALID_INPUT: 'Ugyldig innhold i' MISSING_REQUIRED_FIELD: 'Mangler påkrevd felt:' MONTHS_OF_THE_YEAR: - 'januar' @@ -75,3 +76,7 @@ GRAV: - 'fredag' - 'lørdag' - 'søndag' + CRON: + EVERY: hver + EVERY_HOUR: hver time + EVERY_MINUTE: hvert minutt diff --git a/system/languages/pl.yaml b/system/languages/pl.yaml index bf6fe3712..6da24e5a6 100644 --- a/system/languages/pl.yaml +++ b/system/languages/pl.yaml @@ -1,11 +1,32 @@ --- GRAV: FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Error: Nieprawidłowy Frontmatter\n\nPath: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_SINGULAR: + '/(alias|status)es$/i': '\1' + INFLECTOR_UNCOUNTABLE: + - 'wyposażenie' + - 'informacja' + - 'rice' + - 'pieniądze' + - 'species' + - 'series' + - 'ryba' + - 'owca' + INFLECTOR_IRREGULAR: + 'person': 'człowiek' + 'man': 'mężczyźni' + 'child': 'dzieci' + 'sex': 'płci' + INFLECTOR_ORDINALS: + 'first': 'pierwszy' + 'second': 'drugi' + 'third': 'trzeci' NICETIME: NO_DATE_PROVIDED: Nie podano daty BAD_DATE: Zła data AGO: temu FROM_NOW: od teraz + JUST_NOW: właśnie teraz SECOND: sekunda MINUTE: minuta HOUR: godzina @@ -15,6 +36,7 @@ GRAV: YEAR: rok DECADE: dekada SEC: sek + MIN: minuta HR: godz WK: tydz MO: m-c @@ -36,9 +58,10 @@ GRAV: YR_PLURAL: lat DEC_PLURAL: dekad FORM: - VALIDATION_FAIL: Weryfikacja nie powiodła się: - INVALID_INPUT: Nieprawidłowe dane wejściowe + VALIDATION_FAIL: 'Weryfikacja nie powiodła się:' + INVALID_INPUT: 'Nieprawidłowe dane wejściowe' MISSING_REQUIRED_FIELD: 'Opuszczono wymagane pole:' + XSS_ISSUES: "Potencjalne problemy XSS wykryte w polu '%s'" MONTHS_OF_THE_YEAR: - 'Styczeń' - 'Luty' @@ -60,3 +83,18 @@ GRAV: - 'Piątek' - 'Sobota' - 'Niedziela' + YES: "Tak" + NO: "Nie" + CRON: + EVERY: każdy + EVERY_HOUR: każdą godzinę + EVERY_MINUTE: każdą minutę + EVERY_DAY_OF_WEEK: każdego dnia tygodnia + EVERY_DAY_OF_MONTH: każdego dnia miesiące + EVERY_MONTH: każdego miesiąca + TEXT_PERIOD: Każdego + TEXT_MINS: 'o minut po godzinie' + TEXT_TIME: 'o :' + ERROR1: Znacznik %s nie jest wspierany! + ERROR2: Nieprawidłowa liczba elementów + ERROR4: Wyrażenie nierozpoznane diff --git a/system/languages/pt.yaml b/system/languages/pt.yaml index 590b5e581..2da6944d1 100644 --- a/system/languages/pt.yaml +++ b/system/languages/pt.yaml @@ -1,8 +1,75 @@ --- GRAV: + FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Erro: Frontmatter Inválido\n\nLocalização: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_PLURALS: + '/(quiz)$/i': '\1zes' + '/^(ox)$/i': '\1en' + '/([m|l])ouse$/i': '\1ice' + '/(matr|vert|ind)ix|ex$/i': '\1ices' + '/(x|ch|ss|sh)$/i': '\1es' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([^aeiouy]|qu)y$/i': '\1ies' + '/(hive)$/i': '\1s' + '/(?:([^f])fe|([lr])f)$/i': '\1\2ves' + '/sis$/i': 'ses' + '/([ti])um$/i': '\1a' + '/(buffal|tomat)o$/i': '\1oes' + '/(bu)s$/i': '\1ses' + '/(alias|status)/i': '\1es' + '/(octop|vir)us$/i': '\1i' + '/(ax|test)is$/i': '\1es' + '/s$/i': 's' + '/$/': 's' + INFLECTOR_SINGULAR: + '/(quiz)zes$/i': '\1' + '/(matr)ices$/i': '\1ix' + '/(vert|ind)ices$/i': '\1ex' + '/^(ox)en/i': '\1' + '/(alias|status)es$/i': '\1' + '/([octop|vir])i$/i': '\1us' + '/(cris|ax|test)es$/i': '\1is' + '/(shoe)s$/i': '\1' + '/(o)es$/i': '\1' + '/(bus)es$/i': '\1' + '/([m|l])ice$/i': '\1ouse' + '/(x|ch|ss|sh)es$/i': '\1' + '/(m)ovies$/i': '\1ovie' + '/(s)eries$/i': '\1eries' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([lr])ves$/i': '\1f' + '/(tive)s$/i': '\1' + '/(hive)s$/i': '\1' + '/([^f])ves$/i': '\1fe' + '/(^analy)ses$/i': '\1sis' + '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis' + '/([ti])a$/i': '\1um' + '/(n)ews$/i': '\1ews' + INFLECTOR_UNCOUNTABLE: + - 'equipamento' + - 'informação' + - 'arroz' + - 'dinheiro' + - 'espécie' + - 'série' + - 'peixe' + - 'ovelha' + INFLECTOR_IRREGULAR: + 'person': 'pessoas' + 'man': 'homens' + 'child': 'crianças' + 'sex': 'sexos' + 'move': 'movimentos' + INFLECTOR_ORDINALS: + 'default': 'º' + 'first': 'º' + 'second': 'º' + 'third': 'º' NICETIME: NO_DATE_PROVIDED: Nenhuma data fornecida + BAD_DATE: Data inválida AGO: atrás + FROM_NOW: a partir de agora + JUST_NOW: mesmo agora SECOND: segundo MINUTE: minuto HOUR: hora @@ -11,17 +78,32 @@ GRAV: MONTH: mês YEAR: ano DECADE: década - SEC: segundos - MIN: minutos + SEC: seg + MIN: min + HR: hora + WK: semana + MO: mês + YR: ano + DEC: década + SECOND_PLURAL: segundos MINUTE_PLURAL: minutos + HOUR_PLURAL: horas DAY_PLURAL: dias WEEK_PLURAL: semanas MONTH_PLURAL: meses YEAR_PLURAL: anos - DECADE_PLURAL: decadas + DECADE_PLURAL: décadas + SEC_PLURAL: segs + MIN_PLURAL: mins + HR_PLURAL: hrs + WK_PLURAL: sems + MO_PLURAL: meses + YR_PLURAL: anos + DEC_PLURAL: décadas FORM: - VALIDATION_FAIL: Falha na validação! - MISSING_REQUIRED_FIELD: 'Campo obrigatório requerido:' + VALIDATION_FAIL: 'Falha na validação:' + INVALID_INPUT: 'Dados inseridos são inválidos em' + MISSING_REQUIRED_FIELD: 'Campo obrigatório em falta:' MONTHS_OF_THE_YEAR: - 'Janeiro' - 'Fevereiro' @@ -35,12 +117,28 @@ GRAV: - 'Outubro' - 'Novembro' - 'Dezembro' - INFLECTOR_UNCOUNTABLE: - - 'equipment' - - 'information' - - 'arroz' - - 'money' - - 'species' - - 'series' - - 'fish' - - 'sheep' + DAYS_OF_THE_WEEK: + - 'Segunda-feira' + - 'Terça-feira' + - 'Quarta-feira' + - 'Quinta-feira' + - 'Sexta-feira' + - 'Sábado' + - 'Domingo' + CRON: + EVERY: cada + EVERY_HOUR: cada hora + EVERY_MINUTE: cada minuto + EVERY_DAY_OF_WEEK: todos os dias da semana + EVERY_DAY_OF_MONTH: todos os dias do mês + EVERY_MONTH: todos os meses + TEXT_PERIOD: Cada + TEXT_MINS: ' em minuto(s) após a hora' + TEXT_TIME: ' em :' + TEXT_DOW: ' em ' + TEXT_MONTH: ' de ' + TEXT_DOM: ' em ' + ERROR1: A tag %s não é suportada! + ERROR2: Número de elementos inválido + ERROR3: O jquery_element deve ser definido nas configurações do jqCron + ERROR4: Expressão não reconhecida diff --git a/system/languages/ro.yaml b/system/languages/ro.yaml index 5bee578c9..dc22b206f 100644 --- a/system/languages/ro.yaml +++ b/system/languages/ro.yaml @@ -53,8 +53,8 @@ GRAV: YR_PLURAL: ani DEC_PLURAL: decenii FORM: - VALIDATION_FAIL: Validare nereușită - INVALID_INPUT: Date incorecte în + VALIDATION_FAIL: 'Validare nereușită' + INVALID_INPUT: 'Date incorecte în' MISSING_REQUIRED_FIELD: 'Câmp obligatoriu lipsă:' MONTHS_OF_THE_YEAR: - 'Ianuarie' diff --git a/system/languages/ru.yaml b/system/languages/ru.yaml index 78c596340..2097ada48 100644 --- a/system/languages/ru.yaml +++ b/system/languages/ru.yaml @@ -13,7 +13,7 @@ GRAV: INFLECTOR_IRREGULAR: 'person': 'люди' 'man': 'человек' - 'child': 'ребенок' + 'child': 'дети' 'sex': 'пол' 'move': 'движется' INFLECTOR_ORDINALS: @@ -58,9 +58,10 @@ GRAV: YR_PLURAL: г DEC_PLURAL: дстлт FORM: - VALIDATION_FAIL: Проверка не удалась: - INVALID_INPUT: Неверный ввод в + VALIDATION_FAIL: 'Проверка не удалась:' + INVALID_INPUT: 'Неверный ввод в' MISSING_REQUIRED_FIELD: 'Отсутствует необходимое поле:' + XSS_ISSUES: "Обнаружены потенциальные XSS проблемы в поле '%s'" MONTHS_OF_THE_YEAR: - 'январь' - 'февраль' @@ -68,12 +69,12 @@ GRAV: - 'апрель' - 'май' - 'июнь' - - 'Июль' - - 'Август' - - 'Сентябрь' - - 'Октябрь' - - 'Ноябрь' - - 'Декабрь' + - 'июль' + - 'август' + - 'сентябрь' + - 'октябрь' + - 'ноябрь' + - 'декабрь' DAYS_OF_THE_WEEK: - 'понедельник' - 'вторник' @@ -82,6 +83,8 @@ GRAV: - 'пятница' - 'суббота' - 'воскресенье' + YES: "Да" + NO: "Нет" CRON: EVERY: раз в EVERY_HOUR: раз в час diff --git a/system/languages/sk.yaml b/system/languages/sk.yaml index 89a7f563e..9543239a6 100644 --- a/system/languages/sk.yaml +++ b/system/languages/sk.yaml @@ -101,8 +101,8 @@ GRAV: YR_PLURAL: rokov DEC_PLURAL: dekád FORM: - VALIDATION_FAIL: Overenie zlyhalo: - INVALID_INPUT: Neplatný vstup v + VALIDATION_FAIL: 'Overenie zlyhalo:' + INVALID_INPUT: 'Neplatný vstup v' MISSING_REQUIRED_FIELD: 'Chýba vyžadované pole:' MONTHS_OF_THE_YEAR: - 'Január' diff --git a/system/languages/sl.yaml b/system/languages/sl.yaml index ae6032cf7..879fe1bae 100644 --- a/system/languages/sl.yaml +++ b/system/languages/sl.yaml @@ -36,8 +36,8 @@ GRAV: YR_PLURAL: l DEC_PLURAL: des FORM: - VALIDATION_FAIL: Preverjanje veljavnosti ni uspelo: - INVALID_INPUT: Neveljaven vnos v + VALIDATION_FAIL: 'Preverjanje veljavnosti ni uspelo:' + INVALID_INPUT: 'Neveljaven vnos v' MISSING_REQUIRED_FIELD: 'Manjka obvezno polje:' MONTHS_OF_THE_YEAR: - 'Januar' diff --git a/system/languages/sr.yaml b/system/languages/sr.yaml new file mode 100644 index 000000000..3368bdfb6 --- /dev/null +++ b/system/languages/sr.yaml @@ -0,0 +1,144 @@ +--- +GRAV: + FRONTMATTER_ERROR_PAGE: "---\nнаслов: %1$s\n---\n\n# Грешка: неисправан Frontmatter\n\nПутања: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_PLURALS: + '/(quiz)$/i': '\1zes' + '/^(ox)$/i': '\1en' + '/([m|l])ouse$/i': '\1ice' + '/(matr|vert|ind)ix|ex$/i': '\1ices' + '/(x|ch|ss|sh)$/i': '\1es' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([^aeiouy]|qu)y$/i': '\1ies' + '/(hive)$/i': '\1s' + '/(?:([^f])fe|([lr])f)$/i': '\1\2ves' + '/sis$/i': 'ses' + '/([ti])um$/i': '\1a' + '/(buffal|tomat)o$/i': '\1oes' + '/(bu)s$/i': '\1ses' + '/(alias|status)/i': '\1es' + '/(octop|vir)us$/i': '\1i' + '/(ax|test)is$/i': '\1es' + '/s$/i': 's' + '/$/': 's' + INFLECTOR_SINGULAR: + '/(quiz)zes$/i': '\1' + '/(matr)ices$/i': '\1ix' + '/(vert|ind)ices$/i': '\1ex' + '/^(ox)en/i': '\1' + '/(alias|status)es$/i': '\1' + '/([octop|vir])i$/i': '\1us' + '/(cris|ax|test)es$/i': '\1is' + '/(shoe)s$/i': '\1' + '/(o)es$/i': '\1' + '/(bus)es$/i': '\1' + '/([m|l])ice$/i': '\1ouse' + '/(x|ch|ss|sh)es$/i': '\1' + '/(m)ovies$/i': '\1ovie' + '/(s)eries$/i': '\1eries' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([lr])ves$/i': '\1f' + '/(tive)s$/i': '\1' + '/(hive)s$/i': '\1' + '/([^f])ves$/i': '\1fe' + '/(^analy)ses$/i': '\1sis' + '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis' + '/([ti])a$/i': '\1um' + '/(n)ews$/i': '\1ews' + INFLECTOR_UNCOUNTABLE: + - 'опрема' + - 'информација' + - 'пиринач' + - 'новац' + - 'врсте' + - 'серије' + - 'риба' + - 'овца' + INFLECTOR_IRREGULAR: + 'person': 'особе' + 'man': 'људи' + 'child': 'деца' + 'sex': 'полови' + 'move': 'помери' + INFLECTOR_ORDINALS: + 'default': 'ти' + 'first': 'први' + 'second': 'други' + 'third': 'трећи' + NICETIME: + NO_DATE_PROVIDED: Нема датума + BAD_DATE: Погрешан датум + AGO: од пре + FROM_NOW: од сада + JUST_NOW: управо сада + SECOND: секунда + MINUTE: минута + HOUR: сат + DAY: дан + WEEK: недеља + MONTH: месец + YEAR: година + DECADE: декада + SEC: сек + MIN: мин + HR: сат + WK: нед + MO: мес + YR: год + DEC: дек + SECOND_PLURAL: секунди + MINUTE_PLURAL: минута + HOUR_PLURAL: сати + DAY_PLURAL: дана + WEEK_PLURAL: недеља + MONTH_PLURAL: месеци + YEAR_PLURAL: године(а) + DECADE_PLURAL: декаде(а) + SEC_PLURAL: сек + MIN_PLURAL: мин + HR_PLURAL: сати + WK_PLURAL: недеља + MO_PLURAL: месеци + YR_PLURAL: година + DEC_PLURAL: декада + FORM: + VALIDATION_FAIL: 'Провера неуспела:' + INVALID_INPUT: 'Неисправан унос у' + MISSING_REQUIRED_FIELD: 'Недостаје обавезн поље:' + MONTHS_OF_THE_YEAR: + - 'Јануар' + - 'Фебруар' + - 'Март' + - 'Април' + - 'Мај' + - 'Јуни' + - 'Јули' + - 'Август' + - 'Септембар' + - 'Октобар' + - 'Новембар' + - 'Децембар' + DAYS_OF_THE_WEEK: + - 'Понедељак' + - 'Уторак' + - 'Среда' + - 'Четвртак' + - 'Петак' + - 'Субота' + - 'Недеља' + CRON: + EVERY: сваки + EVERY_HOUR: сваки сат + EVERY_MINUTE: сваки минут + EVERY_DAY_OF_WEEK: сваки дан у недељи + EVERY_DAY_OF_MONTH: сваки дан у месецу + EVERY_MONTH: сваки месец + TEXT_PERIOD: Сваки + TEXT_MINS: ' у минути(а) прошлог сата' + TEXT_TIME: ' у :' + TEXT_DOW: ' на ' + TEXT_MONTH: ' од ' + TEXT_DOM: ' на ' + ERROR1: Таг %s није подржан! + ERROR2: Погрешан број елемената + ERROR3: јquery_element би требао да буде постављен у jqCron подешавању + ERROR4: Непрепознат израз diff --git a/system/languages/sv.yaml b/system/languages/sv.yaml index 16afa1650..bf76beff5 100644 --- a/system/languages/sv.yaml +++ b/system/languages/sv.yaml @@ -12,11 +12,21 @@ GRAV: - 'får' INFLECTOR_IRREGULAR: 'person': 'personer' + 'man': 'män' + 'child': 'barn' + 'sex': 'kön' + 'move': 'flytta' + INFLECTOR_ORDINALS: + 'default': ':e' + 'first': ':a' + 'second': ':a' + 'third': ':e' NICETIME: NO_DATE_PROVIDED: Inget datum har angivits BAD_DATE: Ogiltigt datum AGO: sedan FROM_NOW: fr.o.m nu + JUST_NOW: just nu SECOND: sekund MINUTE: minut HOUR: timme @@ -26,10 +36,12 @@ GRAV: YEAR: år DECADE: årtionde SEC: sek + MIN: min HR: t WK: v MO: m YR: år + DEC: dec SECOND_PLURAL: sekunder MINUTE_PLURAL: minuter HOUR_PLURAL: timmar @@ -46,8 +58,8 @@ GRAV: YR_PLURAL: år DEC_PLURAL: dec FORM: - VALIDATION_FAIL: Kontrollen misslyckades: - INVALID_INPUT: Ogiltig indata i + VALIDATION_FAIL: 'Kontrollen misslyckades:' + INVALID_INPUT: 'Ogiltig indata i' MISSING_REQUIRED_FIELD: 'Obligatoriskt fält måste fyllas i:' MONTHS_OF_THE_YEAR: - 'Januari' @@ -70,3 +82,19 @@ GRAV: - 'Fredag' - 'Lördag' - 'Söndag' + CRON: + EVERY: varje + EVERY_HOUR: varje timme + EVERY_MINUTE: varje minut + EVERY_DAY_OF_WEEK: varje veckodag + EVERY_DAY_OF_MONTH: alla månadens dagar + EVERY_MONTH: varje månad + TEXT_PERIOD: Varje + TEXT_MINS: ' timmens :e minut' + TEXT_TIME: ' kl :' + TEXT_DOW: ' ' + TEXT_MONTH: ' ' + TEXT_DOM: ' ' + ERROR1: Taggen %s stöds inte! + ERROR2: Ogiltigt antal element + ERROR4: Uttrycket känns inte igen diff --git a/system/languages/th.yaml b/system/languages/th.yaml index e6ccfaba5..f71b0371b 100644 --- a/system/languages/th.yaml +++ b/system/languages/th.yaml @@ -31,7 +31,7 @@ GRAV: YR_PLURAL: ปี FORM: VALIDATION_FAIL: 'ตรวจสอบล้มเหลว: ' - INVALID_INPUT: ป้อนข้อมูลไม่ถูกต้องใน + INVALID_INPUT: 'ป้อนข้อมูลไม่ถูกต้องใน' MISSING_REQUIRED_FIELD: 'ขาดข้อมูลที่จำเป็น:' MONTHS_OF_THE_YEAR: - 'มกราคม' diff --git a/system/languages/tr.yaml b/system/languages/tr.yaml index 2143f319c..783674d58 100644 --- a/system/languages/tr.yaml +++ b/system/languages/tr.yaml @@ -1,11 +1,32 @@ --- GRAV: FRONTMATTER_ERROR_PAGE: "---\nBaşlık: %1$s\n---\n\n# Hata: Geçersiz Önbölüm\n\nYol: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_UNCOUNTABLE: + - 'ekipman' + - 'bilgi' + - 'pirinç' + - 'para' + - 'türler' + - 'seriler' + - 'balık' + - 'koyun' + INFLECTOR_IRREGULAR: + 'person': 'kişi' + 'man': 'erkek' + 'child': 'çocuklar' + 'sex': 'cinsiyet' + 'move': 'taşınmış' + INFLECTOR_ORDINALS: + 'default': '#F' + 'first': ' 1.' + 'second': ' 2.' + 'third': ' 3.' NICETIME: NO_DATE_PROVIDED: Sağlanan tarih yok BAD_DATE: Yanlış tarih AGO: önce FROM_NOW: şu andan itibaren + JUST_NOW: şimdi SECOND: saniye MINUTE: dakika HOUR: saat @@ -37,8 +58,8 @@ GRAV: YR_PLURAL: yıl DEC_PLURAL: onyl FORM: - VALIDATION_FAIL: Doğrulama başarısız: - INVALID_INPUT: Geçersiz bilgi girişi + VALIDATION_FAIL: 'Doğrulama başarısız:' + INVALID_INPUT: 'Geçersiz bilgi girişi' MISSING_REQUIRED_FIELD: 'Gerekli alan eksik:' MONTHS_OF_THE_YEAR: - 'Ocak' @@ -61,3 +82,17 @@ GRAV: - 'Cuma' - 'Cumartesi' - 'Pazar' + CRON: + EVERY: her + EVERY_HOUR: saatte bir + EVERY_MINUTE: dakikada bir + EVERY_DAY_OF_WEEK: haftanın her günü + EVERY_DAY_OF_MONTH: ayın her günü + EVERY_MONTH: her ay + TEXT_PERIOD: Her + TEXT_MINS: ' saatin dakikasında' + TEXT_TIME: ' da' + ERROR1: Etiket %s desteklenmiyor! + ERROR2: Kötü eleman sayısı + ERROR3: jquery_element jqCron ayarları içinde tanımlanmalı + ERROR4: Tanınmayan ifade diff --git a/system/languages/uk.yaml b/system/languages/uk.yaml index d264fbada..8a138a483 100644 --- a/system/languages/uk.yaml +++ b/system/languages/uk.yaml @@ -37,8 +37,8 @@ GRAV: YR_PLURAL: рр. DEC_PLURAL: рр. FORM: - VALIDATION_FAIL: Перевірка не вдалася: - INVALID_INPUT: Невірне введення в + VALIDATION_FAIL: 'Перевірка не вдалася:' + INVALID_INPUT: 'Невірне введення в' MISSING_REQUIRED_FIELD: 'Відсутнє обов''язкове поле:' MONTHS_OF_THE_YEAR: - 'Січень' diff --git a/system/languages/vi.yaml b/system/languages/vi.yaml index 0dc7e929f..9e3a0f46b 100644 --- a/system/languages/vi.yaml +++ b/system/languages/vi.yaml @@ -37,8 +37,8 @@ GRAV: YR_PLURAL: năm DEC_PLURAL: thập kỷ FORM: - VALIDATION_FAIL: Xác nhận thất bại: - INVALID_INPUT: Dữ liệu nhập không hợp lệ cho + VALIDATION_FAIL: 'Xác nhận thất bại:' + INVALID_INPUT: 'Dữ liệu nhập không hợp lệ cho' MISSING_REQUIRED_FIELD: 'Thiếu trường bắt buộc:' MONTHS_OF_THE_YEAR: - 'Tháng 1' diff --git a/system/languages/zh-cn.yaml b/system/languages/zh-cn.yaml new file mode 100644 index 000000000..334b0b41c --- /dev/null +++ b/system/languages/zh-cn.yaml @@ -0,0 +1,144 @@ +--- +GRAV: + FRONTMATTER_ERROR_PAGE: "---\n标题: %1$s\n---\n\n# 错误:无效参数\n\n位置: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_PLURALS: + '/(quiz)$/i': '\1zes' + '/^(ox)$/i': '\1en' + '/([m|l])ouse$/i': '\1ice' + '/(matr|vert|ind)ix|ex$/i': '\1ices' + '/(x|ch|ss|sh)$/i': '\1es' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([^aeiouy]|qu)y$/i': '\1ies' + '/(hive)$/i': '\1s' + '/(?:([^f])fe|([lr])f)$/i': '\1\2ves' + '/sis$/i': 'ses' + '/([ti])um$/i': '\1a' + '/(buffal|tomat)o$/i': '\1oes' + '/(bu)s$/i': '\1ses' + '/(alias|status)/i': '\1es' + '/(octop|vir)us$/i': '\1i' + '/(ax|test)is$/i': '\1es' + '/s$/i': 's' + '/$/': 's' + INFLECTOR_SINGULAR: + '/(quiz)zes$/i': '\1' + '/(matr)ices$/i': '\1ix' + '/(vert|ind)ices$/i': '\1ex' + '/^(ox)en/i': '\1' + '/(alias|status)es$/i': '\1' + '/([octop|vir])i$/i': '\1us' + '/(cris|ax|test)es$/i': '\1is' + '/(shoe)s$/i': '\1' + '/(o)es$/i': '\1' + '/(bus)es$/i': '\1' + '/([m|l])ice$/i': '\1ouse' + '/(x|ch|ss|sh)es$/i': '\1' + '/(m)ovies$/i': '\1ovie' + '/(s)eries$/i': '\1eries' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([lr])ves$/i': '\1f' + '/(tive)s$/i': '\1' + '/(hive)s$/i': '\1' + '/([^f])ves$/i': '\1fe' + '/(^analy)ses$/i': '\1sis' + '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis' + '/([ti])a$/i': '\1um' + '/(n)ews$/i': '\1ews' + INFLECTOR_UNCOUNTABLE: + - '装备' + - '信息' + - '大米' + - '钱' + - '物种' + - '系列' + - '鱼' + - '羊' + INFLECTOR_IRREGULAR: + 'person': '人员' + 'man': '男人' + 'child': '儿童' + 'sex': '性别' + 'move': '移动' + INFLECTOR_ORDINALS: + 'default': 'th' + 'first': 'st' + 'second': 'md' + 'third': 'rd' + NICETIME: + NO_DATE_PROVIDED: 无日期信息 + BAD_DATE: 无效日期 + AGO: 前 + FROM_NOW: 距今 + JUST_NOW: 刚刚 + SECOND: 秒 + MINUTE: 分钟 + HOUR: 小时 + DAY: 天 + WEEK: 周 + MONTH: 月 + YEAR: 年 + DECADE: 十年 + SEC: 秒 + MIN: 分钟 + HR: 小时 + WK: 周 + MO: 月 + YR: 年 + DEC: 年代 + SECOND_PLURAL: 秒 + MINUTE_PLURAL: 分 + HOUR_PLURAL: 小时 + DAY_PLURAL: 天 + WEEK_PLURAL: 周 + MONTH_PLURAL: 月 + YEAR_PLURAL: 年 + DECADE_PLURAL: 十年 + SEC_PLURAL: 秒 + MIN_PLURAL: 分 + HR_PLURAL: 时 + WK_PLURAL: 周 + MO_PLURAL: 月 + YR_PLURAL: 年 + DEC_PLURAL: 年代 + FORM: + VALIDATION_FAIL: '验证失败:' + INVALID_INPUT: '无效输入' + MISSING_REQUIRED_FIELD: '必填字段缺失:' + MONTHS_OF_THE_YEAR: + - '1月' + - '2月' + - '3月' + - '4月' + - '5月' + - '6月' + - '7月' + - '8月' + - '9月' + - '10月' + - '11月' + - '12月' + DAYS_OF_THE_WEEK: + - '星期一' + - '星期二' + - '星期三' + - '星期四' + - '星期五' + - '星期六' + - '星期日' + CRON: + EVERY: 每隔 + EVERY_HOUR: 每小时 + EVERY_MINUTE: 每分钟 + EVERY_DAY_OF_WEEK: 一周中的每一天 + EVERY_DAY_OF_MONTH: 月份中的每一天 + EVERY_MONTH: 每月 + TEXT_PERIOD: 所有 + TEXT_MINS: ' 在 小时过后的分钟' + TEXT_TIME: ' 在 :' + TEXT_DOW: ' on ' + TEXT_MONTH: ' of ' + TEXT_DOM: ' on ' + ERROR1: 不支持分享类型 %s + ERROR2: 无效数字 + ERROR3: 请在 jqCron 设置中设定 jquery_element + ERROR4: 无法识别表达式 diff --git a/system/languages/zh.yaml b/system/languages/zh.yaml index 4912aa9ed..334b0b41c 100644 --- a/system/languages/zh.yaml +++ b/system/languages/zh.yaml @@ -101,9 +101,9 @@ GRAV: YR_PLURAL: 年 DEC_PLURAL: 年代 FORM: - VALIDATION_FAIL: 验证失败: - INVALID_INPUT: 无效输入 - MISSING_REQUIRED_FIELD: 必填字段缺失: + VALIDATION_FAIL: '验证失败:' + INVALID_INPUT: '无效输入' + MISSING_REQUIRED_FIELD: '必填字段缺失:' MONTHS_OF_THE_YEAR: - '1月' - '2月' diff --git a/system/router.php b/system/router.php index 02d332101..187d4d844 100644 --- a/system/router.php +++ b/system/router.php @@ -3,7 +3,7 @@ /** * @package Grav\Core * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Assets.php b/system/src/Grav/Common/Assets.php index 69dd70ad9..51a2531e4 100644 --- a/system/src/Grav/Common/Assets.php +++ b/system/src/Grav/Common/Assets.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -92,6 +92,8 @@ class Assets extends PropertyObject protected $collections; /** @var string */ protected $timestamp; + /** @var array Keeping track for order counts (for sorting) */ + protected $order = []; /** * Initialization called in the Grav lifecycle to initialize the Assets with appropriate configuration @@ -232,7 +234,15 @@ class Assets extends PropertyObject $options['timestamp'] = $this->timestamp; // Set order - $options['order'] = count($this->$collection); + $group = $options['group'] ?? 'head'; + $position = $options['position'] ?? 'pipeline'; + + $orderKey = "{$type}|{$group}|{$position}"; + if (!isset($this->order[$orderKey])) { + $this->order[$orderKey] = 0; + } + + $options['order'] = $this->order[$orderKey]++; // Create asset of correct type $asset_object = new $type(); diff --git a/system/src/Grav/Common/Assets/BaseAsset.php b/system/src/Grav/Common/Assets/BaseAsset.php index 3b0108602..579b1f943 100644 --- a/system/src/Grav/Common/Assets/BaseAsset.php +++ b/system/src/Grav/Common/Assets/BaseAsset.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Assets * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Assets/Css.php b/system/src/Grav/Common/Assets/Css.php index c167e1568..b1f0a488b 100644 --- a/system/src/Grav/Common/Assets/Css.php +++ b/system/src/Grav/Common/Assets/Css.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Assets * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Assets/InlineCss.php b/system/src/Grav/Common/Assets/InlineCss.php index b659f4b0d..f024a95a4 100644 --- a/system/src/Grav/Common/Assets/InlineCss.php +++ b/system/src/Grav/Common/Assets/InlineCss.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Assets * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Assets/InlineJs.php b/system/src/Grav/Common/Assets/InlineJs.php index 81c0ce57c..6787608d6 100644 --- a/system/src/Grav/Common/Assets/InlineJs.php +++ b/system/src/Grav/Common/Assets/InlineJs.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Assets * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Assets/Js.php b/system/src/Grav/Common/Assets/Js.php index fca1c6dda..9946bd8b4 100644 --- a/system/src/Grav/Common/Assets/Js.php +++ b/system/src/Grav/Common/Assets/Js.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Assets * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Assets/Pipeline.php b/system/src/Grav/Common/Assets/Pipeline.php index 750239158..9b44fd840 100644 --- a/system/src/Grav/Common/Assets/Pipeline.php +++ b/system/src/Grav/Common/Assets/Pipeline.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Assets * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php b/system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php index 34152a526..a2dad4faa 100644 --- a/system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php +++ b/system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Assets\Traits * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Assets/Traits/LegacyAssetsTrait.php b/system/src/Grav/Common/Assets/Traits/LegacyAssetsTrait.php index cfe5a0809..36b21522d 100644 --- a/system/src/Grav/Common/Assets/Traits/LegacyAssetsTrait.php +++ b/system/src/Grav/Common/Assets/Traits/LegacyAssetsTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Assets\Traits * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Assets/Traits/TestingAssetsTrait.php b/system/src/Grav/Common/Assets/Traits/TestingAssetsTrait.php index 829a2409b..cb8de18ae 100644 --- a/system/src/Grav/Common/Assets/Traits/TestingAssetsTrait.php +++ b/system/src/Grav/Common/Assets/Traits/TestingAssetsTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Assets\Traits * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -189,6 +189,7 @@ trait TestingAssetsTrait $this->resetJs(); $this->setCssPipeline(false); $this->setJsPipeline(false); + $this->order = []; return $this; } diff --git a/system/src/Grav/Common/Backup/Backups.php b/system/src/Grav/Common/Backup/Backups.php index 4ced4e5fd..9483b15f7 100644 --- a/system/src/Grav/Common/Backup/Backups.php +++ b/system/src/Grav/Common/Backup/Backups.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Backup * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Browser.php b/system/src/Grav/Common/Browser.php index 36faf3aee..e4a6513ea 100644 --- a/system/src/Grav/Common/Browser.php +++ b/system/src/Grav/Common/Browser.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Cache.php b/system/src/Grav/Common/Cache.php index 499c7fe80..24f1d4010 100644 --- a/system/src/Grav/Common/Cache.php +++ b/system/src/Grav/Common/Cache.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -296,6 +296,7 @@ class Cache extends Getters $redis = new \Redis(); $socket = $this->config->get('system.cache.redis.socket', false); $password = $this->config->get('system.cache.redis.password', false); + $databaseId = $this->config->get('system.cache.redis.database', 0); if ($socket) { $redis->connect($socket); @@ -310,6 +311,11 @@ class Cache extends Getters if ($password && !$redis->auth($password)) { throw new \RedisException('Redis authentication failed'); } + + // Select alternate ( !=0 ) database ID if set + if ($databaseId && !$redis->select($databaseId)) { + throw new \RedisException('Could not select alternate Redis database ID'); + } $driver = new DoctrineCache\RedisCache(); $driver->setRedis($redis); diff --git a/system/src/Grav/Common/Composer.php b/system/src/Grav/Common/Composer.php index 66a06c62e..f1f6e5d3e 100644 --- a/system/src/Grav/Common/Composer.php +++ b/system/src/Grav/Common/Composer.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Config/CompiledBase.php b/system/src/Grav/Common/Config/CompiledBase.php index 48990c101..0764189d2 100644 --- a/system/src/Grav/Common/Config/CompiledBase.php +++ b/system/src/Grav/Common/Config/CompiledBase.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Config * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Config/CompiledBlueprints.php b/system/src/Grav/Common/Config/CompiledBlueprints.php index 9c59b2bd3..774305425 100644 --- a/system/src/Grav/Common/Config/CompiledBlueprints.php +++ b/system/src/Grav/Common/Config/CompiledBlueprints.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Config * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Config/CompiledConfig.php b/system/src/Grav/Common/Config/CompiledConfig.php index d6f89ec6c..22225bce5 100644 --- a/system/src/Grav/Common/Config/CompiledConfig.php +++ b/system/src/Grav/Common/Config/CompiledConfig.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Config * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Config/CompiledLanguages.php b/system/src/Grav/Common/Config/CompiledLanguages.php index 9608b9e2e..6674389ac 100644 --- a/system/src/Grav/Common/Config/CompiledLanguages.php +++ b/system/src/Grav/Common/Config/CompiledLanguages.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Config * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Config/Config.php b/system/src/Grav/Common/Config/Config.php index e43e1d278..7adb523e8 100644 --- a/system/src/Grav/Common/Config/Config.php +++ b/system/src/Grav/Common/Config/Config.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Config * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Config/ConfigFileFinder.php b/system/src/Grav/Common/Config/ConfigFileFinder.php index c4ce51ad2..e6b1afeaf 100644 --- a/system/src/Grav/Common/Config/ConfigFileFinder.php +++ b/system/src/Grav/Common/Config/ConfigFileFinder.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Config * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Config/Languages.php b/system/src/Grav/Common/Config/Languages.php index 2b05136c0..4a863a1b6 100644 --- a/system/src/Grav/Common/Config/Languages.php +++ b/system/src/Grav/Common/Config/Languages.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Config * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Config/Setup.php b/system/src/Grav/Common/Config/Setup.php index 96c9683dd..ef2176a3e 100644 --- a/system/src/Grav/Common/Config/Setup.php +++ b/system/src/Grav/Common/Config/Setup.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Config * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Data/Blueprint.php b/system/src/Grav/Common/Data/Blueprint.php index e1ac0bedf..25c4266e9 100644 --- a/system/src/Grav/Common/Data/Blueprint.php +++ b/system/src/Grav/Common/Data/Blueprint.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Data * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -294,13 +294,14 @@ class Blueprint extends BlueprintForm * Flatten data by using blueprints. * * @param array $data + * @param bool $includeAll * @return array */ - public function flattenData(array $data) + public function flattenData(array $data, bool $includeAll = false) { $this->initInternals(); - return $this->blueprintSchema->flattenData($data); + return $this->blueprintSchema->flattenData($data, $includeAll); } diff --git a/system/src/Grav/Common/Data/BlueprintSchema.php b/system/src/Grav/Common/Data/BlueprintSchema.php index 4bc98920d..a50bf2310 100644 --- a/system/src/Grav/Common/Data/BlueprintSchema.php +++ b/system/src/Grav/Common/Data/BlueprintSchema.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Data * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -107,11 +107,22 @@ class BlueprintSchema extends BlueprintSchemaBase implements ExportInterface * Flatten data by using blueprints. * * @param array $data Data to be flattened. + * @param bool $includeAll * @return array */ - public function flattenData(array $data) + public function flattenData(array $data, bool $includeAll = false) { - return $this->flattenArray($data, $this->nested, ''); + $list = []; + if ($includeAll) { + foreach ($this->items as $key => $rules) { + $type = $rules['type'] ?? ''; + if (!str_starts_with($type, '_') && !str_contains($key, '*')) { + $list[$key] = null; + } + } + } + + return array_replace($list, $this->flattenArray($data, $this->nested, '')); } /** @@ -139,6 +150,7 @@ class BlueprintSchema extends BlueprintSchemaBase implements ExportInterface $array[$prefix.$key] = $field; } } + return $array; } diff --git a/system/src/Grav/Common/Data/Blueprints.php b/system/src/Grav/Common/Data/Blueprints.php index 41e126457..abe153f14 100644 --- a/system/src/Grav/Common/Data/Blueprints.php +++ b/system/src/Grav/Common/Data/Blueprints.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Data * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Data/Data.php b/system/src/Grav/Common/Data/Data.php index dabe40fa4..67fb0a831 100644 --- a/system/src/Grav/Common/Data/Data.php +++ b/system/src/Grav/Common/Data/Data.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Data * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Data/DataInterface.php b/system/src/Grav/Common/Data/DataInterface.php index 025a2f97d..b4452bb85 100644 --- a/system/src/Grav/Common/Data/DataInterface.php +++ b/system/src/Grav/Common/Data/DataInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Data * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Data/Validation.php b/system/src/Grav/Common/Data/Validation.php index f6ea88fff..3e0ba32f1 100644 --- a/system/src/Grav/Common/Data/Validation.php +++ b/system/src/Grav/Common/Data/Validation.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Data * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -1116,6 +1116,21 @@ class Validation return ctype_xdigit($value); } + /** + * Custom input: int + * + * @param mixed $value Value to be validated. + * @param array $params Validation parameters. + * @param array $field Blueprint for the field. + * @return bool True if validation succeeded. + */ + public static function typeInt($value, array $params, array $field) + { + $params['step'] = max(1, (int)($params['step'] ?? 0)); + + return self::typeNumber($value, $params, $field); + } + /** * @param mixed $value * @param mixed $params diff --git a/system/src/Grav/Common/Data/ValidationException.php b/system/src/Grav/Common/Data/ValidationException.php index be9846b3d..2d94ab816 100644 --- a/system/src/Grav/Common/Data/ValidationException.php +++ b/system/src/Grav/Common/Data/ValidationException.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Data * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Debugger.php b/system/src/Grav/Common/Debugger.php index 8e1db0a48..6a1e256b9 100644 --- a/system/src/Grav/Common/Debugger.php +++ b/system/src/Grav/Common/Debugger.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Errors/BareHandler.php b/system/src/Grav/Common/Errors/BareHandler.php index 5b1742bfb..206b57e85 100644 --- a/system/src/Grav/Common/Errors/BareHandler.php +++ b/system/src/Grav/Common/Errors/BareHandler.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Errors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Errors/Errors.php b/system/src/Grav/Common/Errors/Errors.php index 0b27667e0..3dc99c665 100644 --- a/system/src/Grav/Common/Errors/Errors.php +++ b/system/src/Grav/Common/Errors/Errors.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Errors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Errors/SimplePageHandler.php b/system/src/Grav/Common/Errors/SimplePageHandler.php index 6ade01620..0118929aa 100644 --- a/system/src/Grav/Common/Errors/SimplePageHandler.php +++ b/system/src/Grav/Common/Errors/SimplePageHandler.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Errors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Errors/SystemFacade.php b/system/src/Grav/Common/Errors/SystemFacade.php index f8d290ebe..8a7f1ceb2 100644 --- a/system/src/Grav/Common/Errors/SystemFacade.php +++ b/system/src/Grav/Common/Errors/SystemFacade.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Errors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/File/CompiledFile.php b/system/src/Grav/Common/File/CompiledFile.php index 023eadfff..66fa6201d 100644 --- a/system/src/Grav/Common/File/CompiledFile.php +++ b/system/src/Grav/Common/File/CompiledFile.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/File/CompiledJsonFile.php b/system/src/Grav/Common/File/CompiledJsonFile.php index 8086cb347..dae95baaa 100644 --- a/system/src/Grav/Common/File/CompiledJsonFile.php +++ b/system/src/Grav/Common/File/CompiledJsonFile.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/File/CompiledMarkdownFile.php b/system/src/Grav/Common/File/CompiledMarkdownFile.php index 3704a80ef..1107417db 100644 --- a/system/src/Grav/Common/File/CompiledMarkdownFile.php +++ b/system/src/Grav/Common/File/CompiledMarkdownFile.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/File/CompiledYamlFile.php b/system/src/Grav/Common/File/CompiledYamlFile.php index 1f8b091f1..0fedeb717 100644 --- a/system/src/Grav/Common/File/CompiledYamlFile.php +++ b/system/src/Grav/Common/File/CompiledYamlFile.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Filesystem/Archiver.php b/system/src/Grav/Common/Filesystem/Archiver.php index 474be8e37..96aaa0eed 100644 --- a/system/src/Grav/Common/Filesystem/Archiver.php +++ b/system/src/Grav/Common/Filesystem/Archiver.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Filesystem * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Filesystem/Folder.php b/system/src/Grav/Common/Filesystem/Folder.php index 91a2e63bd..ef09cee76 100644 --- a/system/src/Grav/Common/Filesystem/Folder.php +++ b/system/src/Grav/Common/Filesystem/Folder.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Filesystem * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Filesystem/RecursiveDirectoryFilterIterator.php b/system/src/Grav/Common/Filesystem/RecursiveDirectoryFilterIterator.php index 1e0da0e1f..0dac81c18 100644 --- a/system/src/Grav/Common/Filesystem/RecursiveDirectoryFilterIterator.php +++ b/system/src/Grav/Common/Filesystem/RecursiveDirectoryFilterIterator.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Filesystem * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Filesystem/RecursiveFolderFilterIterator.php b/system/src/Grav/Common/Filesystem/RecursiveFolderFilterIterator.php index 2731afeab..ded0259cc 100644 --- a/system/src/Grav/Common/Filesystem/RecursiveFolderFilterIterator.php +++ b/system/src/Grav/Common/Filesystem/RecursiveFolderFilterIterator.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Filesystem * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Filesystem/ZipArchiver.php b/system/src/Grav/Common/Filesystem/ZipArchiver.php index 2eb9f5a05..450a58126 100644 --- a/system/src/Grav/Common/Filesystem/ZipArchiver.php +++ b/system/src/Grav/Common/Filesystem/ZipArchiver.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Filesystem * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Flex/FlexCollection.php b/system/src/Grav/Common/Flex/FlexCollection.php new file mode 100644 index 000000000..a4d1bbecd --- /dev/null +++ b/system/src/Grav/Common/Flex/FlexCollection.php @@ -0,0 +1,29 @@ + + */ +abstract class FlexCollection extends \Grav\Framework\Flex\FlexCollection +{ + use FlexGravTrait; + use FlexCollectionTrait; +} diff --git a/system/src/Grav/Common/Flex/FlexIndex.php b/system/src/Grav/Common/Flex/FlexIndex.php new file mode 100644 index 000000000..d73f010ac --- /dev/null +++ b/system/src/Grav/Common/Flex/FlexIndex.php @@ -0,0 +1,30 @@ + + */ +abstract class FlexIndex extends \Grav\Framework\Flex\FlexIndex +{ + use FlexGravTrait; + use FlexIndexTrait; +} diff --git a/system/src/Grav/Common/Flex/FlexObject.php b/system/src/Grav/Common/Flex/FlexObject.php new file mode 100644 index 000000000..2a43eaa44 --- /dev/null +++ b/system/src/Grav/Common/Flex/FlexObject.php @@ -0,0 +1,73 @@ +getNestedProperty($name, null, $separator); + + // Handle media order field. + if (null === $value && $name === 'media_order') { + return implode(',', $this->getMediaOrder()); + } + + // Handle media fields. + $settings = $this->getFieldSettings($name); + if ($settings['media_field'] ?? false === true) { + return $this->parseFileProperty($value, $settings); + } + + return $value ?? $default; + } + + /** + * {@inheritdoc} + * @see FlexObjectInterface::prepareStorage() + */ + public function prepareStorage(): array + { + // Remove extra content from media fields. + $fields = $this->getMediaFields(); + foreach ($fields as $field) { + $data = $this->getNestedProperty($field); + if (is_array($data)) { + foreach ($data as $name => &$image) { + unset($image['image_url'], $image['thumb_url']); + } + unset($image); + $this->setNestedProperty($field, $data); + } + } + + return parent::prepareStorage(); + } +} diff --git a/system/src/Grav/Common/Flex/Traits/FlexCollectionTrait.php b/system/src/Grav/Common/Flex/Traits/FlexCollectionTrait.php index 25c8b40ad..29b640e75 100644 --- a/system/src/Grav/Common/Flex/Traits/FlexCollectionTrait.php +++ b/system/src/Grav/Common/Flex/Traits/FlexCollectionTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Flex/Traits/FlexCommonTrait.php b/system/src/Grav/Common/Flex/Traits/FlexCommonTrait.php index 5bd662acc..1077e0089 100644 --- a/system/src/Grav/Common/Flex/Traits/FlexCommonTrait.php +++ b/system/src/Grav/Common/Flex/Traits/FlexCommonTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Flex/Traits/FlexGravTrait.php b/system/src/Grav/Common/Flex/Traits/FlexGravTrait.php index 4da7aa16e..9d5c9e081 100644 --- a/system/src/Grav/Common/Flex/Traits/FlexGravTrait.php +++ b/system/src/Grav/Common/Flex/Traits/FlexGravTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Flex/Traits/FlexIndexTrait.php b/system/src/Grav/Common/Flex/Traits/FlexIndexTrait.php index e1d9ac4dc..1d0ee5cc6 100644 --- a/system/src/Grav/Common/Flex/Traits/FlexIndexTrait.php +++ b/system/src/Grav/Common/Flex/Traits/FlexIndexTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Flex/Traits/FlexObjectTrait.php b/system/src/Grav/Common/Flex/Traits/FlexObjectTrait.php index f52339007..1175a3b47 100644 --- a/system/src/Grav/Common/Flex/Traits/FlexObjectTrait.php +++ b/system/src/Grav/Common/Flex/Traits/FlexObjectTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Flex/Types/Generic/GenericCollection.php b/system/src/Grav/Common/Flex/Types/Generic/GenericCollection.php index e5451cbeb..2a6767bfe 100644 --- a/system/src/Grav/Common/Flex/Types/Generic/GenericCollection.php +++ b/system/src/Grav/Common/Flex/Types/Generic/GenericCollection.php @@ -5,24 +5,20 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ namespace Grav\Common\Flex\Types\Generic; -use Grav\Common\Flex\Traits\FlexCollectionTrait; -use Grav\Common\Flex\Traits\FlexGravTrait; -use Grav\Framework\Flex\FlexCollection; +use Grav\Common\Flex\FlexCollection; /** * Class GenericCollection * @package Grav\Common\Flex\Generic * - * @extends FLexCollection + * @extends FlexCollection */ class GenericCollection extends FlexCollection { - use FlexGravTrait; - use FlexCollectionTrait; } diff --git a/system/src/Grav/Common/Flex/Types/Generic/GenericIndex.php b/system/src/Grav/Common/Flex/Types/Generic/GenericIndex.php index 56c824461..4b0c400dd 100644 --- a/system/src/Grav/Common/Flex/Types/Generic/GenericIndex.php +++ b/system/src/Grav/Common/Flex/Types/Generic/GenericIndex.php @@ -5,25 +5,20 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ namespace Grav\Common\Flex\Types\Generic; -use Grav\Common\Flex\Traits\FlexGravTrait; -use Grav\Common\Flex\Traits\FlexIndexTrait; -use Grav\Framework\Flex\FlexIndex; +use Grav\Common\Flex\FlexIndex; /** * Class GenericIndex * @package Grav\Common\Flex\Generic * - * @extends FLexIndex - * @mixin GenericCollection + * @extends FlexIndex */ class GenericIndex extends FlexIndex { - use FlexGravTrait; - use FlexIndexTrait; } diff --git a/system/src/Grav/Common/Flex/Types/Generic/GenericObject.php b/system/src/Grav/Common/Flex/Types/Generic/GenericObject.php index e7dccf2ea..4a5675287 100644 --- a/system/src/Grav/Common/Flex/Types/Generic/GenericObject.php +++ b/system/src/Grav/Common/Flex/Types/Generic/GenericObject.php @@ -5,16 +5,13 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ namespace Grav\Common\Flex\Types\Generic; -use Grav\Common\Flex\Traits\FlexGravTrait; -use Grav\Common\Flex\Traits\FlexObjectTrait; -use Grav\Framework\Flex\FlexObject; -use Grav\Framework\Flex\Traits\FlexMediaTrait; +use Grav\Common\Flex\FlexObject; /** * Class GenericObject @@ -22,7 +19,4 @@ use Grav\Framework\Flex\Traits\FlexMediaTrait; */ class GenericObject extends FlexObject { - use FlexGravTrait; - use FlexObjectTrait; - use FlexMediaTrait; } diff --git a/system/src/Grav/Common/Flex/Types/Pages/PageCollection.php b/system/src/Grav/Common/Flex/Types/Pages/PageCollection.php index 0732cf91a..1811a0e63 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/PageCollection.php +++ b/system/src/Grav/Common/Flex/Types/Pages/PageCollection.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php b/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php index 12d7f9f7a..fbf0df4c1 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php +++ b/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -36,7 +36,6 @@ use function is_string; * @package Grav\Plugin\FlexObjects\Types\GravPages * * @extends FlexPageIndex - * @mixin PageCollection * * @method PageIndex withModules(bool $bool = true) * @method PageIndex withPages(bool $bool = true) @@ -449,6 +448,10 @@ class PageIndex extends FlexPageIndex implements PageCollectionInterface 'has-children' => $child_count > 0 ]; } else { + $lang = $child->findTranslation($language) ?? 'n/a'; + /** @var PageObject $child */ + $child = $child->getTranslation($language) ?? $child; + // TODO: all these features are independent from each other, we cannot just have one icon/color to catch all. // TODO: maybe icon by home/modular/page/folder (or even from blueprints) and color by visibility etc.. if ($child->home()) { @@ -468,9 +471,6 @@ class PageIndex extends FlexPageIndex implements PageCollectionInterface $child->visible() ? 'visible' : 'non-visible', $child->routable() ? 'routable' : 'non-routable' ]; - $lang = $child->findTranslation($language) ?? 'n/a'; - /** @var PageObject $child */ - $child = $child->getTranslation($language) ?? $child; $extras = [ 'template' => $child->template(), 'lang' => $lang ?: null, diff --git a/system/src/Grav/Common/Flex/Types/Pages/PageObject.php b/system/src/Grav/Common/Flex/Types/Pages/PageObject.php index 1d4f9b981..56c0527e3 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/PageObject.php +++ b/system/src/Grav/Common/Flex/Types/Pages/PageObject.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -25,7 +25,6 @@ use Grav\Common\Page\Pages; use Grav\Common\Utils; use Grav\Framework\Filesystem\Filesystem; use Grav\Framework\Flex\FlexObject; -use Grav\Framework\Flex\Interfaces\FlexCollectionInterface; use Grav\Framework\Flex\Interfaces\FlexObjectInterface; use Grav\Framework\Flex\Pages\FlexPageObject; use Grav\Framework\Route\Route; @@ -35,7 +34,6 @@ use RocketTheme\Toolbox\Event\Event; use RuntimeException; use stdClass; use function array_key_exists; -use function assert; use function count; use function func_get_args; use function in_array; diff --git a/system/src/Grav/Common/Flex/Types/Pages/Storage/PageStorage.php b/system/src/Grav/Common/Flex/Types/Pages/Storage/PageStorage.php index a619fb1df..a23517456 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/Storage/PageStorage.php +++ b/system/src/Grav/Common/Flex/Types/Pages/Storage/PageStorage.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Flex/Types/Pages/Traits/PageContentTrait.php b/system/src/Grav/Common/Flex/Types/Pages/Traits/PageContentTrait.php index ac1c58b84..1bde7b003 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/Traits/PageContentTrait.php +++ b/system/src/Grav/Common/Flex/Types/Pages/Traits/PageContentTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Flex/Types/Pages/Traits/PageLegacyTrait.php b/system/src/Grav/Common/Flex/Types/Pages/Traits/PageLegacyTrait.php index 75ca381d3..d8193df7c 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/Traits/PageLegacyTrait.php +++ b/system/src/Grav/Common/Flex/Types/Pages/Traits/PageLegacyTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Flex/Types/Pages/Traits/PageRoutableTrait.php b/system/src/Grav/Common/Flex/Types/Pages/Traits/PageRoutableTrait.php index e2045ecef..341ac4d27 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/Traits/PageRoutableTrait.php +++ b/system/src/Grav/Common/Flex/Types/Pages/Traits/PageRoutableTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Flex/Types/Pages/Traits/PageTranslateTrait.php b/system/src/Grav/Common/Flex/Types/Pages/Traits/PageTranslateTrait.php index 2362fa937..e2de4946c 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/Traits/PageTranslateTrait.php +++ b/system/src/Grav/Common/Flex/Types/Pages/Traits/PageTranslateTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupCollection.php b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupCollection.php index 20dea64fb..b1443a8c6 100644 --- a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupCollection.php +++ b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupCollection.php @@ -5,15 +5,13 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ namespace Grav\Common\Flex\Types\UserGroups; -use Grav\Common\Flex\Traits\FlexCollectionTrait; -use Grav\Common\Flex\Traits\FlexGravTrait; -use Grav\Framework\Flex\FlexCollection; +use Grav\Common\Flex\FlexCollection; /** * Class UserGroupCollection @@ -23,9 +21,6 @@ use Grav\Framework\Flex\FlexCollection; */ class UserGroupCollection extends FlexCollection { - use FlexGravTrait; - use FlexCollectionTrait; - /** * @return array */ diff --git a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupIndex.php b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupIndex.php index 211296fb0..effd27f61 100644 --- a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupIndex.php +++ b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupIndex.php @@ -5,25 +5,20 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ namespace Grav\Common\Flex\Types\UserGroups; -use Grav\Common\Flex\Traits\FlexGravTrait; -use Grav\Common\Flex\Traits\FlexIndexTrait; -use Grav\Framework\Flex\FlexIndex; +use Grav\Common\Flex\FlexIndex; /** * Class GroupIndex * @package Grav\Common\User\FlexUser * * @extends FlexIndex - * @mixin UserGroupCollection */ class UserGroupIndex extends FlexIndex { - use FlexGravTrait; - use FlexIndexTrait; } diff --git a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupObject.php b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupObject.php index 76652833a..fb69eab68 100644 --- a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupObject.php +++ b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupObject.php @@ -5,18 +5,15 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ namespace Grav\Common\Flex\Types\UserGroups; -use Grav\Common\Flex\Traits\FlexGravTrait; -use Grav\Common\Flex\Traits\FlexObjectTrait; +use Grav\Common\Flex\FlexObject; use Grav\Common\User\Access; use Grav\Common\User\Interfaces\UserGroupInterface; -use Grav\Framework\Flex\FlexObject; -use Grav\Framework\Flex\Traits\FlexMediaTrait; use function is_bool; /** @@ -29,10 +26,6 @@ use function is_bool; */ class UserGroupObject extends FlexObject implements UserGroupInterface { - use FlexGravTrait; - use FlexObjectTrait; - use FlexMediaTrait; - /** @var Access */ protected $_access; /** @var array|null */ diff --git a/system/src/Grav/Common/Flex/Types/Users/Storage/UserFileStorage.php b/system/src/Grav/Common/Flex/Types/Users/Storage/UserFileStorage.php index 9f9633e9f..f565c9f17 100644 --- a/system/src/Grav/Common/Flex/Types/Users/Storage/UserFileStorage.php +++ b/system/src/Grav/Common/Flex/Types/Users/Storage/UserFileStorage.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -19,22 +19,6 @@ use Grav\Framework\Flex\Storage\FileStorage; */ class UserFileStorage extends FileStorage { - /** @var bool */ - public $caseSensitive; - - /** - * @param string $key - * @return string - */ - public function normalizeKey(string $key): string - { - if ($this->caseSensitive === true) { - return $key; - } - - return mb_strtolower($key); - } - /** * {@inheritdoc} * @see FlexStorageInterface::getMediaPath() @@ -60,15 +44,4 @@ class UserFileStorage extends FileStorage $row['access'] = $access; } } - - /** - * @param array $options - * @return void - */ - protected function initOptions(array $options): void - { - parent::initOptions($options); - - $this->caseSensitive = $options['case_sensitive'] ?? false; - } } diff --git a/system/src/Grav/Common/Flex/Types/Users/Storage/UserFolderStorage.php b/system/src/Grav/Common/Flex/Types/Users/Storage/UserFolderStorage.php index e11fa8fb9..7d9924e0d 100644 --- a/system/src/Grav/Common/Flex/Types/Users/Storage/UserFolderStorage.php +++ b/system/src/Grav/Common/Flex/Types/Users/Storage/UserFolderStorage.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -19,22 +19,6 @@ use Grav\Framework\Flex\Storage\FolderStorage; */ class UserFolderStorage extends FolderStorage { - /** @var bool */ - public $caseSensitive; - - /** - * @param string $key - * @return string - */ - public function normalizeKey(string $key): string - { - if ($this->caseSensitive === true) { - return $key; - } - - return mb_strtolower($key); - } - /** * Prepares the row for saving and returns the storage key for the record. * @@ -50,15 +34,4 @@ class UserFolderStorage extends FolderStorage $row['access'] = $access; } } - - /** - * @param array $options - * @return void - */ - protected function initOptions(array $options): void - { - parent::initOptions($options); - - $this->caseSensitive = $options['case_sensitive'] ?? false; - } } diff --git a/system/src/Grav/Common/Flex/Types/Users/Traits/UserObjectLegacyTrait.php b/system/src/Grav/Common/Flex/Types/Users/Traits/UserObjectLegacyTrait.php index 82f1bf729..b0fc0c4ca 100644 --- a/system/src/Grav/Common/Flex/Types/Users/Traits/UserObjectLegacyTrait.php +++ b/system/src/Grav/Common/Flex/Types/Users/Traits/UserObjectLegacyTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Flex/Types/Users/UserCollection.php b/system/src/Grav/Common/Flex/Types/Users/UserCollection.php index f07be1cd9..e4e252cd4 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserCollection.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserCollection.php @@ -5,17 +5,15 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ namespace Grav\Common\Flex\Types\Users; -use Grav\Common\Flex\Traits\FlexCollectionTrait; -use Grav\Common\Flex\Traits\FlexGravTrait; +use Grav\Common\Flex\FlexCollection; use Grav\Common\User\Interfaces\UserCollectionInterface; use Grav\Common\User\Interfaces\UserInterface; -use Grav\Framework\Flex\FlexCollection; use function is_string; /** @@ -26,9 +24,6 @@ use function is_string; */ class UserCollection extends FlexCollection implements UserCollectionInterface { - use FlexGravTrait; - use FlexCollectionTrait; - /** * @return array */ diff --git a/system/src/Grav/Common/Flex/Types/Users/UserIndex.php b/system/src/Grav/Common/Flex/Types/Users/UserIndex.php index eaa13385b..4735c933e 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserIndex.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserIndex.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -13,11 +13,9 @@ namespace Grav\Common\Flex\Types\Users; use Grav\Common\Debugger; use Grav\Common\File\CompiledYamlFile; -use Grav\Common\Flex\Traits\FlexGravTrait; -use Grav\Common\Flex\Traits\FlexIndexTrait; +use Grav\Common\Flex\FlexIndex; use Grav\Common\Grav; use Grav\Common\User\Interfaces\UserInterface; -use Grav\Framework\Flex\FlexIndex; use Grav\Framework\Flex\Interfaces\FlexStorageInterface; use Monolog\Logger; use function count; @@ -29,15 +27,11 @@ use function method_exists; * @package Grav\Common\Flex\Types\Users * * @extends FlexIndex - * @mixin UserCollection */ class UserIndex extends FlexIndex { public const VERSION = parent::VERSION . '.1'; - use FlexGravTrait; - use FlexIndexTrait; - /** * @param FlexStorageInterface $storage * @return array @@ -152,11 +146,7 @@ class UserIndex extends FlexIndex */ protected static function filterUsername(string $key, FlexStorageInterface $storage): string { - if (method_exists($storage, 'normalizeKey')) { - return $storage->normalizeKey($key); - } - - return mb_strtolower($key); + return $storage->normalizeKey($key); } /** diff --git a/system/src/Grav/Common/Flex/Types/Users/UserObject.php b/system/src/Grav/Common/Flex/Types/Users/UserObject.php index a89782053..900c01035 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserObject.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserObject.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -14,6 +14,7 @@ namespace Grav\Common\Flex\Types\Users; use Countable; use Grav\Common\Config\Config; use Grav\Common\Data\Blueprint; +use Grav\Common\Flex\FlexObject; use Grav\Common\Flex\Traits\FlexGravTrait; use Grav\Common\Flex\Traits\FlexObjectTrait; use Grav\Common\Flex\Types\Users\Traits\UserObjectLegacyTrait; @@ -33,7 +34,6 @@ use Grav\Framework\File\Formatter\JsonFormatter; use Grav\Framework\File\Formatter\YamlFormatter; use Grav\Framework\Flex\Flex; use Grav\Framework\Flex\FlexDirectory; -use Grav\Framework\Flex\FlexObject; use Grav\Framework\Flex\Storage\FileStorage; use Grav\Framework\Flex\Traits\FlexMediaTrait; use Grav\Framework\Form\FormFlashFile; @@ -42,7 +42,6 @@ use RocketTheme\Toolbox\Event\Event; use RocketTheme\Toolbox\File\FileInterface; use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator; use RuntimeException; -use function assert; use function is_array; use function is_bool; use function is_object; @@ -121,11 +120,22 @@ class UserObject extends FlexObject implements UserInterface, Countable // User can only be authenticated via login. unset($elements['authenticated'], $elements['authorized']); - parent::__construct($elements, $key, $directory, $validate); + // Define username if it's not set. + if (!isset($elements['username'])) { + $storageKey = $elements['__META']['storage_key'] ?? null; + if (null !== $storageKey && $key === $directory->getStorage()->normalizeKey($storageKey)) { + $elements['username'] = $storageKey; + } else { + $elements['username'] = $key; + } + } - // Define username and state if they aren't set. - $this->defProperty('username', $key); - $this->defProperty('state', 'enabled'); + // Define state if it isn't set. + if (!isset($elements['state'])) { + $elements['state'] = 'enabled'; + } + + parent::__construct($elements, $key, $directory, $validate); } /** @@ -270,32 +280,6 @@ class UserObject extends FlexObject implements UserInterface, Countable return $this->getGroups()->authorize($action, $scope); } - /** - * Get value from a page variable (used mostly for creating edit forms). - * - * @param string $name Variable name. - * @param mixed $default - * @param string|null $separator - * @return mixed - */ - public function getFormValue(string $name, $default = null, string $separator = null) - { - $value = parent::getFormValue($name, null, $separator); - - $settings = $this->getFieldSettings($name); - if ($settings['media_field'] ?? false === true) { - return $this->parseFileProperty($value); - } - - if (null === $value) { - if ($name === 'media_order') { - return implode(',', $this->getMediaOrder()); - } - } - - return $value ?? $default; - } - /** * @param string $property * @param mixed $default @@ -536,7 +520,7 @@ class UserObject extends FlexObject implements UserInterface, Countable } /** - * Save user without the username + * Save user * * @return static */ @@ -826,9 +810,10 @@ class UserObject extends FlexObject implements UserInterface, Countable /** * @param array|mixed $value + * @param array $settings * @return array|mixed */ - protected function parseFileProperty($value) + protected function parseFileProperty($value, array $settings = []) { if (!is_array($value)) { return $value; diff --git a/system/src/Grav/Common/Form/FormFlash.php b/system/src/Grav/Common/Form/FormFlash.php index 6f0a2c39e..430f15e09 100644 --- a/system/src/Grav/Common/Form/FormFlash.php +++ b/system/src/Grav/Common/Form/FormFlash.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Form * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/AbstractCollection.php b/system/src/Grav/Common/GPM/AbstractCollection.php index 6d1c914d2..b5b867ef7 100644 --- a/system/src/Grav/Common/GPM/AbstractCollection.php +++ b/system/src/Grav/Common/GPM/AbstractCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/Common/AbstractPackageCollection.php b/system/src/Grav/Common/GPM/Common/AbstractPackageCollection.php index 99f8ef0ff..5d6ad9fb8 100644 --- a/system/src/Grav/Common/GPM/Common/AbstractPackageCollection.php +++ b/system/src/Grav/Common/GPM/Common/AbstractPackageCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/Common/CachedCollection.php b/system/src/Grav/Common/GPM/Common/CachedCollection.php index b0944881d..172ba939f 100644 --- a/system/src/Grav/Common/GPM/Common/CachedCollection.php +++ b/system/src/Grav/Common/GPM/Common/CachedCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/Common/Package.php b/system/src/Grav/Common/GPM/Common/Package.php index 2f49e45b5..e06ebb60d 100644 --- a/system/src/Grav/Common/GPM/Common/Package.php +++ b/system/src/Grav/Common/GPM/Common/Package.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/GPM.php b/system/src/Grav/Common/GPM/GPM.php index 80fea081a..1b15e5de8 100644 --- a/system/src/Grav/Common/GPM/GPM.php +++ b/system/src/Grav/Common/GPM/GPM.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -139,13 +139,27 @@ class GPM extends Iterator return $this->installed['plugins']; } + + /** + * Returns the plugin's enabled state + * + * @param string $slug + * @return bool True if the Plugin is Enabled. False if manually set to enable:false. Null otherwise. + */ + public function isPluginEnabled($slug): bool + { + $grav = Grav::instance(); + + return ($grav['config']['plugins'][$slug]['enabled'] ?? false) === true; + } + /** * Checks if a Plugin is installed * * @param string $slug The slug of the Plugin * @return bool True if the Plugin has been installed. False otherwise */ - public function isPluginInstalled($slug) + public function isPluginInstalled($slug): bool { return isset($this->installed['plugins'][$slug]); } @@ -182,13 +196,28 @@ class GPM extends Iterator return $this->installed['themes']; } + /** + * Checks if a Theme is enabled + * + * @param string $slug The slug of the Theme + * @return bool True if the Theme has been set to the default theme. False if installed, but not enabled. Null otherwise. + */ + public function isThemeEnabled($slug): bool + { + $grav = Grav::instance(); + + $current_theme = $grav['config']['system']['pages']['theme'] ?? null; + + return $current_theme === $slug; + } + /** * Checks if a Theme is installed * * @param string $slug The slug of the Theme * @return bool True if the Theme has been installed. False otherwise */ - public function isThemeInstalled($slug) + public function isThemeInstalled($slug): bool { return isset($this->installed['themes'][$slug]); } @@ -1023,7 +1052,6 @@ class GPM extends Iterator //Factor in the package dependencies too $dependencies = $this->calculateMergedDependenciesOfPackage($dependencyName, $dependencies); - } elseif ($dependencyVersion !== '*') { // Dependency already added by another package // If this package requires a version higher than the currently stored one, store this requirement instead @@ -1059,7 +1087,7 @@ class GPM extends Iterator $dependencies[$dependencyName] = $dependencyVersion; } } else { - $compatible = $this->checkNextSignificantReleasesAreCompatible($currently_stored_version_number,$current_package_version_number); + $compatible = $this->checkNextSignificantReleasesAreCompatible($currently_stored_version_number, $current_package_version_number); if (!$compatible) { throw new RuntimeException("Dependency {$dependencyName} is required in two incompatible versions", 2); } diff --git a/system/src/Grav/Common/GPM/Installer.php b/system/src/Grav/Common/GPM/Installer.php index 9b9f90548..9cdea52aa 100644 --- a/system/src/Grav/Common/GPM/Installer.php +++ b/system/src/Grav/Common/GPM/Installer.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/Licenses.php b/system/src/Grav/Common/GPM/Licenses.php index c8a5fbcc3..662a14624 100644 --- a/system/src/Grav/Common/GPM/Licenses.php +++ b/system/src/Grav/Common/GPM/Licenses.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/Local/AbstractPackageCollection.php b/system/src/Grav/Common/GPM/Local/AbstractPackageCollection.php index dce33bdb7..d1f3e4671 100644 --- a/system/src/Grav/Common/GPM/Local/AbstractPackageCollection.php +++ b/system/src/Grav/Common/GPM/Local/AbstractPackageCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/Local/Package.php b/system/src/Grav/Common/GPM/Local/Package.php index 573ec541c..ffe2c63cc 100644 --- a/system/src/Grav/Common/GPM/Local/Package.php +++ b/system/src/Grav/Common/GPM/Local/Package.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/Local/Packages.php b/system/src/Grav/Common/GPM/Local/Packages.php index 9a1384e76..0290296c4 100644 --- a/system/src/Grav/Common/GPM/Local/Packages.php +++ b/system/src/Grav/Common/GPM/Local/Packages.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/Local/Plugins.php b/system/src/Grav/Common/GPM/Local/Plugins.php index 37f6b6007..8a6574b58 100644 --- a/system/src/Grav/Common/GPM/Local/Plugins.php +++ b/system/src/Grav/Common/GPM/Local/Plugins.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/Local/Themes.php b/system/src/Grav/Common/GPM/Local/Themes.php index 6dda784e8..73253ccd8 100644 --- a/system/src/Grav/Common/GPM/Local/Themes.php +++ b/system/src/Grav/Common/GPM/Local/Themes.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/Remote/AbstractPackageCollection.php b/system/src/Grav/Common/GPM/Remote/AbstractPackageCollection.php index 28449e02b..9e68d6660 100644 --- a/system/src/Grav/Common/GPM/Remote/AbstractPackageCollection.php +++ b/system/src/Grav/Common/GPM/Remote/AbstractPackageCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/Remote/GravCore.php b/system/src/Grav/Common/GPM/Remote/GravCore.php index 892aa9f05..f93209edd 100644 --- a/system/src/Grav/Common/GPM/Remote/GravCore.php +++ b/system/src/Grav/Common/GPM/Remote/GravCore.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/Remote/Package.php b/system/src/Grav/Common/GPM/Remote/Package.php index 8dd82b75c..c37d6a00d 100644 --- a/system/src/Grav/Common/GPM/Remote/Package.php +++ b/system/src/Grav/Common/GPM/Remote/Package.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/Remote/Packages.php b/system/src/Grav/Common/GPM/Remote/Packages.php index 16be487c2..f55c12dc0 100644 --- a/system/src/Grav/Common/GPM/Remote/Packages.php +++ b/system/src/Grav/Common/GPM/Remote/Packages.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/Remote/Plugins.php b/system/src/Grav/Common/GPM/Remote/Plugins.php index bde0f7514..a134a104b 100644 --- a/system/src/Grav/Common/GPM/Remote/Plugins.php +++ b/system/src/Grav/Common/GPM/Remote/Plugins.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/Remote/Themes.php b/system/src/Grav/Common/GPM/Remote/Themes.php index 194fc88c8..160ac97ac 100644 --- a/system/src/Grav/Common/GPM/Remote/Themes.php +++ b/system/src/Grav/Common/GPM/Remote/Themes.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/Response.php b/system/src/Grav/Common/GPM/Response.php index 29665f0b0..6f3ae4e75 100644 --- a/system/src/Grav/Common/GPM/Response.php +++ b/system/src/Grav/Common/GPM/Response.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/GPM/Upgrader.php b/system/src/Grav/Common/GPM/Upgrader.php index 3164ed825..dfa6eb133 100644 --- a/system/src/Grav/Common/GPM/Upgrader.php +++ b/system/src/Grav/Common/GPM/Upgrader.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\GPM * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Getters.php b/system/src/Grav/Common/Getters.php index e70401ab0..8f3a73a2b 100644 --- a/system/src/Grav/Common/Getters.php +++ b/system/src/Grav/Common/Getters.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Grav.php b/system/src/Grav/Common/Grav.php index 78896af78..048f7d40b 100644 --- a/system/src/Grav/Common/Grav.php +++ b/system/src/Grav/Common/Grav.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -162,6 +162,19 @@ class Grav extends Container return self::$instance; } + /** + * Get Grav version. + * + * @return string + */ + public function getVersion(): string + { + return GRAV_VERSION; + } + + /** + * @return bool + */ public function isSetup(): bool { return isset($this->initialized['setup']); diff --git a/system/src/Grav/Common/GravTrait.php b/system/src/Grav/Common/GravTrait.php index b43dfb94e..463890572 100644 --- a/system/src/Grav/Common/GravTrait.php +++ b/system/src/Grav/Common/GravTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Helpers/Base32.php b/system/src/Grav/Common/Helpers/Base32.php index 11898ef87..825c1eca3 100644 --- a/system/src/Grav/Common/Helpers/Base32.php +++ b/system/src/Grav/Common/Helpers/Base32.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Helpers * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Helpers/Excerpts.php b/system/src/Grav/Common/Helpers/Excerpts.php index aa5e6d1b3..cd285cf87 100644 --- a/system/src/Grav/Common/Helpers/Excerpts.php +++ b/system/src/Grav/Common/Helpers/Excerpts.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Helpers * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Helpers/Exif.php b/system/src/Grav/Common/Helpers/Exif.php index 6e2fa6091..36e391fe7 100644 --- a/system/src/Grav/Common/Helpers/Exif.php +++ b/system/src/Grav/Common/Helpers/Exif.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Helpers * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Helpers/LogViewer.php b/system/src/Grav/Common/Helpers/LogViewer.php index f450a6e6a..1e3e8d2f7 100644 --- a/system/src/Grav/Common/Helpers/LogViewer.php +++ b/system/src/Grav/Common/Helpers/LogViewer.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Helpers * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Helpers/Truncator.php b/system/src/Grav/Common/Helpers/Truncator.php index fd9fd2883..0a701b694 100644 --- a/system/src/Grav/Common/Helpers/Truncator.php +++ b/system/src/Grav/Common/Helpers/Truncator.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Helpers * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Helpers/YamlLinter.php b/system/src/Grav/Common/Helpers/YamlLinter.php index a5bc9b5a0..45b5144ef 100644 --- a/system/src/Grav/Common/Helpers/YamlLinter.php +++ b/system/src/Grav/Common/Helpers/YamlLinter.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Helpers * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Inflector.php b/system/src/Grav/Common/Inflector.php index c97dad3f6..50c218f1b 100644 --- a/system/src/Grav/Common/Inflector.php +++ b/system/src/Grav/Common/Inflector.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Iterator.php b/system/src/Grav/Common/Iterator.php index 5b076c360..cc7cf9286 100644 --- a/system/src/Grav/Common/Iterator.php +++ b/system/src/Grav/Common/Iterator.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Language/Language.php b/system/src/Grav/Common/Language/Language.php index 6f954d45f..49454319e 100644 --- a/system/src/Grav/Common/Language/Language.php +++ b/system/src/Grav/Common/Language/Language.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Language * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Language/LanguageCodes.php b/system/src/Grav/Common/Language/LanguageCodes.php index e89ad168f..9282070d6 100644 --- a/system/src/Grav/Common/Language/LanguageCodes.php +++ b/system/src/Grav/Common/Language/LanguageCodes.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Language * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Markdown/Parsedown.php b/system/src/Grav/Common/Markdown/Parsedown.php index 6a6666f5e..bdc5bdcd2 100644 --- a/system/src/Grav/Common/Markdown/Parsedown.php +++ b/system/src/Grav/Common/Markdown/Parsedown.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Markdown * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Markdown/ParsedownExtra.php b/system/src/Grav/Common/Markdown/ParsedownExtra.php index af4ee672b..b8e760efd 100644 --- a/system/src/Grav/Common/Markdown/ParsedownExtra.php +++ b/system/src/Grav/Common/Markdown/ParsedownExtra.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Markdown * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Markdown/ParsedownGravTrait.php b/system/src/Grav/Common/Markdown/ParsedownGravTrait.php index 28ececaf2..7c2b0d667 100644 --- a/system/src/Grav/Common/Markdown/ParsedownGravTrait.php +++ b/system/src/Grav/Common/Markdown/ParsedownGravTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Markdown * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Interfaces/AudioMediaInterface.php b/system/src/Grav/Common/Media/Interfaces/AudioMediaInterface.php index a2122c7f7..d9c69d281 100644 --- a/system/src/Grav/Common/Media/Interfaces/AudioMediaInterface.php +++ b/system/src/Grav/Common/Media/Interfaces/AudioMediaInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Interfaces/ImageManipulateInterface.php b/system/src/Grav/Common/Media/Interfaces/ImageManipulateInterface.php index f603b72cf..702cfda9b 100644 --- a/system/src/Grav/Common/Media/Interfaces/ImageManipulateInterface.php +++ b/system/src/Grav/Common/Media/Interfaces/ImageManipulateInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Interfaces/ImageMediaInterface.php b/system/src/Grav/Common/Media/Interfaces/ImageMediaInterface.php index 99b59fb24..377258c9e 100644 --- a/system/src/Grav/Common/Media/Interfaces/ImageMediaInterface.php +++ b/system/src/Grav/Common/Media/Interfaces/ImageMediaInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Interfaces/MediaCollectionInterface.php b/system/src/Grav/Common/Media/Interfaces/MediaCollectionInterface.php index 28d0fd402..ad9fe96c3 100644 --- a/system/src/Grav/Common/Media/Interfaces/MediaCollectionInterface.php +++ b/system/src/Grav/Common/Media/Interfaces/MediaCollectionInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Interfaces/MediaFileInterface.php b/system/src/Grav/Common/Media/Interfaces/MediaFileInterface.php index 0f0700e51..07a5c26df 100644 --- a/system/src/Grav/Common/Media/Interfaces/MediaFileInterface.php +++ b/system/src/Grav/Common/Media/Interfaces/MediaFileInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Interfaces/MediaInterface.php b/system/src/Grav/Common/Media/Interfaces/MediaInterface.php index 1e73dd3e0..436fe1681 100644 --- a/system/src/Grav/Common/Media/Interfaces/MediaInterface.php +++ b/system/src/Grav/Common/Media/Interfaces/MediaInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Interfaces/MediaLinkInterface.php b/system/src/Grav/Common/Media/Interfaces/MediaLinkInterface.php index ee19fa3af..4f229c2b5 100644 --- a/system/src/Grav/Common/Media/Interfaces/MediaLinkInterface.php +++ b/system/src/Grav/Common/Media/Interfaces/MediaLinkInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Interfaces/MediaObjectInterface.php b/system/src/Grav/Common/Media/Interfaces/MediaObjectInterface.php index a3cce1bfc..64388817a 100644 --- a/system/src/Grav/Common/Media/Interfaces/MediaObjectInterface.php +++ b/system/src/Grav/Common/Media/Interfaces/MediaObjectInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -115,6 +115,15 @@ interface MediaObjectInterface extends \Grav\Framework\Media\Interfaces\MediaObj */ public function reset(); + /** + * Add custom attribute to medium. + * + * @param string $attribute + * @param string $value + * @return $this + */ + public function attribute($attribute = null, $value = ''); + /** * Switch display mode. * diff --git a/system/src/Grav/Common/Media/Interfaces/MediaPlayerInterface.php b/system/src/Grav/Common/Media/Interfaces/MediaPlayerInterface.php index d008eea97..9307915c4 100644 --- a/system/src/Grav/Common/Media/Interfaces/MediaPlayerInterface.php +++ b/system/src/Grav/Common/Media/Interfaces/MediaPlayerInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Interfaces/MediaUploadInterface.php b/system/src/Grav/Common/Media/Interfaces/MediaUploadInterface.php index feb79ee28..8bfef845e 100644 --- a/system/src/Grav/Common/Media/Interfaces/MediaUploadInterface.php +++ b/system/src/Grav/Common/Media/Interfaces/MediaUploadInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Interfaces/VideoMediaInterface.php b/system/src/Grav/Common/Media/Interfaces/VideoMediaInterface.php index d78b4ce8f..ff0655a62 100644 --- a/system/src/Grav/Common/Media/Interfaces/VideoMediaInterface.php +++ b/system/src/Grav/Common/Media/Interfaces/VideoMediaInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Traits/AudioMediaTrait.php b/system/src/Grav/Common/Media/Traits/AudioMediaTrait.php index 16dbbc3c7..160837dec 100644 --- a/system/src/Grav/Common/Media/Traits/AudioMediaTrait.php +++ b/system/src/Grav/Common/Media/Traits/AudioMediaTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Traits/ImageLoadingTrait.php b/system/src/Grav/Common/Media/Traits/ImageLoadingTrait.php index 344df7e8f..c0237638e 100644 --- a/system/src/Grav/Common/Media/Traits/ImageLoadingTrait.php +++ b/system/src/Grav/Common/Media/Traits/ImageLoadingTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Traits/ImageMediaTrait.php b/system/src/Grav/Common/Media/Traits/ImageMediaTrait.php index 1acf4410c..ad168a370 100644 --- a/system/src/Grav/Common/Media/Traits/ImageMediaTrait.php +++ b/system/src/Grav/Common/Media/Traits/ImageMediaTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Traits/MediaFileTrait.php b/system/src/Grav/Common/Media/Traits/MediaFileTrait.php index 24578d4bf..71981331d 100644 --- a/system/src/Grav/Common/Media/Traits/MediaFileTrait.php +++ b/system/src/Grav/Common/Media/Traits/MediaFileTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php b/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php index 7fa6c2a4b..3c2a38baf 100644 --- a/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php +++ b/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -303,6 +303,21 @@ trait MediaObjectTrait return $this; } + /** + * Add custom attribute to medium. + * + * @param string $attribute + * @param string $value + * @return $this + */ + public function attribute($attribute = null, $value = '') + { + if (!empty($attribute)) { + $this->attributes[$attribute] = $value; + } + return $this; + } + /** * Switch display mode. * diff --git a/system/src/Grav/Common/Media/Traits/MediaPlayerTrait.php b/system/src/Grav/Common/Media/Traits/MediaPlayerTrait.php index 2a0620cdc..66e9f47d9 100644 --- a/system/src/Grav/Common/Media/Traits/MediaPlayerTrait.php +++ b/system/src/Grav/Common/Media/Traits/MediaPlayerTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Traits/MediaTrait.php b/system/src/Grav/Common/Media/Traits/MediaTrait.php index df842b410..5faba826b 100644 --- a/system/src/Grav/Common/Media/Traits/MediaTrait.php +++ b/system/src/Grav/Common/Media/Traits/MediaTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php b/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php index 60d83e65e..3a0181a32 100644 --- a/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php +++ b/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Traits/StaticResizeTrait.php b/system/src/Grav/Common/Media/Traits/StaticResizeTrait.php index 4d0899ec1..49d75be67 100644 --- a/system/src/Grav/Common/Media/Traits/StaticResizeTrait.php +++ b/system/src/Grav/Common/Media/Traits/StaticResizeTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Traits/ThumbnailMediaTrait.php b/system/src/Grav/Common/Media/Traits/ThumbnailMediaTrait.php index 3ba5aa145..eab732004 100644 --- a/system/src/Grav/Common/Media/Traits/ThumbnailMediaTrait.php +++ b/system/src/Grav/Common/Media/Traits/ThumbnailMediaTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Traits/VideoMediaTrait.php b/system/src/Grav/Common/Media/Traits/VideoMediaTrait.php index 38782157a..e03fbbd81 100644 --- a/system/src/Grav/Common/Media/Traits/VideoMediaTrait.php +++ b/system/src/Grav/Common/Media/Traits/VideoMediaTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Collection.php b/system/src/Grav/Common/Page/Collection.php index 3b06a60f2..e67ff047b 100644 --- a/system/src/Grav/Common/Page/Collection.php +++ b/system/src/Grav/Common/Page/Collection.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Header.php b/system/src/Grav/Common/Page/Header.php index 38032a643..71c7b16c3 100644 --- a/system/src/Grav/Common/Page/Header.php +++ b/system/src/Grav/Common/Page/Header.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Interfaces/PageCollectionInterface.php b/system/src/Grav/Common/Page/Interfaces/PageCollectionInterface.php index cca287fdb..67c5b1e96 100644 --- a/system/src/Grav/Common/Page/Interfaces/PageCollectionInterface.php +++ b/system/src/Grav/Common/Page/Interfaces/PageCollectionInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Interfaces/PageContentInterface.php b/system/src/Grav/Common/Page/Interfaces/PageContentInterface.php index ed53b65c2..5156ede29 100644 --- a/system/src/Grav/Common/Page/Interfaces/PageContentInterface.php +++ b/system/src/Grav/Common/Page/Interfaces/PageContentInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Interfaces/PageInterface.php b/system/src/Grav/Common/Page/Interfaces/PageInterface.php index db4fc48d4..e5ea20c4f 100644 --- a/system/src/Grav/Common/Page/Interfaces/PageInterface.php +++ b/system/src/Grav/Common/Page/Interfaces/PageInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Interfaces/PagesSourceInterface.php b/system/src/Grav/Common/Page/Interfaces/PagesSourceInterface.php index 25a9971e1..ef5cfba11 100644 --- a/system/src/Grav/Common/Page/Interfaces/PagesSourceInterface.php +++ b/system/src/Grav/Common/Page/Interfaces/PagesSourceInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Markdown/Excerpts.php b/system/src/Grav/Common/Page/Markdown/Excerpts.php index 792c0d3c1..1a366027b 100644 --- a/system/src/Grav/Common/Page/Markdown/Excerpts.php +++ b/system/src/Grav/Common/Page/Markdown/Excerpts.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Media.php b/system/src/Grav/Common/Page/Media.php index 528ced76e..9201e66f8 100644 --- a/system/src/Grav/Common/Page/Media.php +++ b/system/src/Grav/Common/Page/Media.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Medium/AbstractMedia.php b/system/src/Grav/Common/Page/Medium/AbstractMedia.php index 96bc9d922..06b44a77c 100644 --- a/system/src/Grav/Common/Page/Medium/AbstractMedia.php +++ b/system/src/Grav/Common/Page/Medium/AbstractMedia.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Medium/AudioMedium.php b/system/src/Grav/Common/Page/Medium/AudioMedium.php index ca0061f10..f34f0a9c2 100644 --- a/system/src/Grav/Common/Page/Medium/AudioMedium.php +++ b/system/src/Grav/Common/Page/Medium/AudioMedium.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Medium/GlobalMedia.php b/system/src/Grav/Common/Page/Medium/GlobalMedia.php index 51a739e17..4097c8f58 100644 --- a/system/src/Grav/Common/Page/Medium/GlobalMedia.php +++ b/system/src/Grav/Common/Page/Medium/GlobalMedia.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Medium/ImageFile.php b/system/src/Grav/Common/Page/Medium/ImageFile.php index f9a5c1d29..bd853bfc0 100644 --- a/system/src/Grav/Common/Page/Medium/ImageFile.php +++ b/system/src/Grav/Common/Page/Medium/ImageFile.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Medium/ImageMedium.php b/system/src/Grav/Common/Page/Medium/ImageMedium.php index 9c88ef11d..70ab1280d 100644 --- a/system/src/Grav/Common/Page/Medium/ImageMedium.php +++ b/system/src/Grav/Common/Page/Medium/ImageMedium.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Medium/Link.php b/system/src/Grav/Common/Page/Medium/Link.php index fa0a0a7d9..2bb857ba1 100644 --- a/system/src/Grav/Common/Page/Medium/Link.php +++ b/system/src/Grav/Common/Page/Medium/Link.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Medium/Medium.php b/system/src/Grav/Common/Page/Medium/Medium.php index 3c95006b7..87009ac80 100644 --- a/system/src/Grav/Common/Page/Medium/Medium.php +++ b/system/src/Grav/Common/Page/Medium/Medium.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Medium/MediumFactory.php b/system/src/Grav/Common/Page/Medium/MediumFactory.php index e8fa4abe4..7dee4ea18 100644 --- a/system/src/Grav/Common/Page/Medium/MediumFactory.php +++ b/system/src/Grav/Common/Page/Medium/MediumFactory.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Medium/ParsedownHtmlTrait.php b/system/src/Grav/Common/Page/Medium/ParsedownHtmlTrait.php index bc3475344..44ab95292 100644 --- a/system/src/Grav/Common/Page/Medium/ParsedownHtmlTrait.php +++ b/system/src/Grav/Common/Page/Medium/ParsedownHtmlTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Medium/RenderableInterface.php b/system/src/Grav/Common/Page/Medium/RenderableInterface.php index 2f9bba905..ac7244700 100644 --- a/system/src/Grav/Common/Page/Medium/RenderableInterface.php +++ b/system/src/Grav/Common/Page/Medium/RenderableInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Medium/StaticImageMedium.php b/system/src/Grav/Common/Page/Medium/StaticImageMedium.php index 0794034a2..ba92fa1ca 100644 --- a/system/src/Grav/Common/Page/Medium/StaticImageMedium.php +++ b/system/src/Grav/Common/Page/Medium/StaticImageMedium.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Medium/StaticResizeTrait.php b/system/src/Grav/Common/Page/Medium/StaticResizeTrait.php index 575aa1d3c..d95b2d634 100644 --- a/system/src/Grav/Common/Page/Medium/StaticResizeTrait.php +++ b/system/src/Grav/Common/Page/Medium/StaticResizeTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Medium/ThumbnailImageMedium.php b/system/src/Grav/Common/Page/Medium/ThumbnailImageMedium.php index 642eab0c8..a56a20d15 100644 --- a/system/src/Grav/Common/Page/Medium/ThumbnailImageMedium.php +++ b/system/src/Grav/Common/Page/Medium/ThumbnailImageMedium.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Medium/VideoMedium.php b/system/src/Grav/Common/Page/Medium/VideoMedium.php index 77efd7f85..bfcf550c4 100644 --- a/system/src/Grav/Common/Page/Medium/VideoMedium.php +++ b/system/src/Grav/Common/Page/Medium/VideoMedium.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index 344a7ba60..9d037d244 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -24,6 +24,7 @@ use Grav\Common\Page\Interfaces\PageInterface; use Grav\Common\Media\Traits\MediaTrait; use Grav\Common\Page\Markdown\Excerpts; use Grav\Common\Page\Traits\PageFormTrait; +use Grav\Common\Twig\Twig; use Grav\Common\Uri; use Grav\Common\Utils; use Grav\Common\Yaml; @@ -271,7 +272,8 @@ class Page implements PageInterface if ($exists) { $aPage = new Page(); $aPage->init(new SplFileInfo($path), $languageExtension); - + $aPage->route($this->route()); + $aPage->rawRoute($this->rawRoute()); $route = $aPage->header()->routes['default'] ?? $aPage->rawRoute(); if (!$route) { $route = $aPage->route(); @@ -908,20 +910,25 @@ class Page implements PageInterface $content = $this->content; if ($keepTwig) { + $token = [ + '/' . Utils::generateRandomString(3), + Utils::generateRandomString(3) . '/' + ]; // Base64 encode any twig. $content = preg_replace_callback( - ['/({#)(.*?)(#})/mu', '/({{)(.*?)(}})/mu', '/({%)(.*?)(%})/mu'], - static function ($matches) { return $matches[1] . base64_encode($matches[2]) . $matches[3]; }, + ['/({#.*?#})/mu', '/({{.*?}})/mu', '/({%.*?%})/mu'], + static function ($matches) use ($token) { return $token[0] . base64_encode($matches[1]) . $token[1]; }, $content ); } + $content = $parsedown->text($content); if ($keepTwig) { // Base64 decode the encoded twig. $content = preg_replace_callback( - ['/({#)(.*?)(#})/mu', '/({{)(.*?)(}})/mu', '/({%)(.*?)(%})/mu'], - static function ($matches) { return $matches[1] . base64_decode($matches[2]) . $matches[3]; }, + ['`' . $token[0] . '([A-Za-z0-9+/]+={0,2})' . $token[1] . '`mu'], + static function ($matches) { return base64_decode($matches[1]); }, $content ); } @@ -937,6 +944,7 @@ class Page implements PageInterface */ private function processTwig() { + /** @var Twig $twig */ $twig = Grav::instance()['twig']; $this->content = $twig->processPage($this, $this->content); } @@ -948,6 +956,7 @@ class Page implements PageInterface */ public function cachePageContent() { + /** @var Cache $cache */ $cache = Grav::instance()['cache']; $cache_id = md5('page' . $this->getCacheKey()); $cache->save($cache_id, ['content' => $this->content, 'content_meta' => $this->content_meta]); @@ -1665,7 +1674,7 @@ class Page implements PageInterface // if not metadata yet, process it. if (null === $this->metadata) { - $header_tag_http_equivs = ['content-type', 'default-style', 'refresh', 'x-ua-compatible']; + $header_tag_http_equivs = ['content-type', 'default-style', 'refresh', 'x-ua-compatible', 'content-security-policy']; $this->metadata = []; @@ -1698,7 +1707,7 @@ class Page implements PageInterface $this->metadata[$prop_key] = [ 'name' => $prop_key, 'property' => $prop_key, - 'content' => $escape ? htmlspecialchars($prop_value, ENT_QUOTES, 'UTF-8') : $prop_value + 'content' => $escape ? htmlspecialchars($prop_value, ENT_QUOTES | ENT_HTML5, 'UTF-8') : $prop_value ]; } } else { @@ -1707,19 +1716,19 @@ class Page implements PageInterface if (in_array($key, $header_tag_http_equivs, true)) { $this->metadata[$key] = [ 'http_equiv' => $key, - 'content' => $escape ? htmlspecialchars($value, ENT_QUOTES, 'UTF-8') : $value + 'content' => $escape ? htmlspecialchars($value, ENT_COMPAT, 'UTF-8') : $value ]; } elseif ($key === 'charset') { - $this->metadata[$key] = ['charset' => $escape ? htmlspecialchars($value, ENT_QUOTES, 'UTF-8') : $value]; + $this->metadata[$key] = ['charset' => $escape ? htmlspecialchars($value, ENT_QUOTES | ENT_HTML5, 'UTF-8') : $value]; } else { // if it's a social metadata with separator, render as property $separator = strpos($key, ':'); $hasSeparator = $separator && $separator < strlen($key) - 1; $entry = [ - 'content' => $escape ? htmlspecialchars($value, ENT_QUOTES, 'UTF-8') : $value + 'content' => $escape ? htmlspecialchars($value, ENT_QUOTES | ENT_HTML5, 'UTF-8') : $value ]; - if ($hasSeparator && !Utils::startsWith($key, 'twitter')) { + if ($hasSeparator && !Utils::startsWith($key, ['twitter', 'flattr'])) { $entry['property'] = $key; } else { $entry['name'] = $key; @@ -1858,11 +1867,6 @@ class Page implements PageInterface $uri = $grav['uri']; $url = $uri->rootUrl($include_host) . '/' . trim($route, '/') . $this->urlExtension(); - // trim trailing / if not root - if ($url !== '/') { - $url = rtrim($url, '/'); - } - return Uri::filterPath($url); } diff --git a/system/src/Grav/Common/Page/Pages.php b/system/src/Grav/Common/Page/Pages.php index 6913115ec..0c430fd5d 100644 --- a/system/src/Grav/Common/Page/Pages.php +++ b/system/src/Grav/Common/Page/Pages.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -449,7 +449,6 @@ class Pages } } - // Remove any inclusive sets from filter. $filters = $params['filter'] ?? []; // Assume published=true if not set. @@ -457,8 +456,27 @@ class Pages $filters['published'] = true; } + // Remove any inclusive sets from filter. + $sets = ['published', 'visible', 'modular', 'routable']; + foreach ($sets as $type) { + $nonType = "non-{$type}"; + if (isset($filters[$type], $filters[$nonType]) && $filters[$type] === $filters[$nonType]) { + if (!$filters[$type]) { + // Both options are false, return empty collection as nothing can match the filters. + return new Collection(); + } + + // Both options are true, remove opposite filters as all pages will match the filters. + unset($filters[$type], $filters[$nonType]); + } + } + // Filter the collection foreach ($filters as $type => $filter) { + if (null === $filter) { + continue; + } + // Convert non-type to type. if (str_starts_with($type, 'non-')) { $type = substr($type, 4); @@ -759,6 +777,12 @@ class Pages $instance = $this->index[$path] ?? null; if (is_string($instance)) { + /** @var Language $language */ + $language = $this->grav['language']; + $lang = $language->getActive(); + if ($lang) { + $instance .= ':' . $lang; + } $instance = $this->directory ? $this->directory->getObject($instance, 'flex_key') : null; if ($instance) { if ($this->fire_events && method_exists($instance, 'initialize')) { diff --git a/system/src/Grav/Common/Page/Types.php b/system/src/Grav/Common/Page/Types.php index c76798f43..051610f6b 100644 --- a/system/src/Grav/Common/Page/Types.php +++ b/system/src/Grav/Common/Page/Types.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Page * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Plugin.php b/system/src/Grav/Common/Plugin.php index 14af4dd94..d075860f4 100644 --- a/system/src/Grav/Common/Plugin.php +++ b/system/src/Grav/Common/Plugin.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Plugins.php b/system/src/Grav/Common/Plugins.php index 99a1d70af..f1d7b8e66 100644 --- a/system/src/Grav/Common/Plugins.php +++ b/system/src/Grav/Common/Plugins.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -170,6 +170,33 @@ class Plugins extends Iterator return $array; } + /** + * @return Plugin[] Index of all plugins by plugin name. + */ + public static function getPlugins(): array + { + $grav = Grav::instance(); + $plugins = $grav['plugins']; + + $list = []; + foreach ($plugins as $instance) { + $list[$instance->name] = $instance; + } + + return $list; + } + + /** + * @param string $name Plugin name + * @return Plugin|null Plugin object or null if plugin cannot be found. + */ + public static function getPlugin(string $name) + { + $list = static::getPlugins(); + + return $list[$name] ?? null; + } + /** * Return list of all plugin data with their blueprints. * diff --git a/system/src/Grav/Common/Processors/AssetsProcessor.php b/system/src/Grav/Common/Processors/AssetsProcessor.php index 2570cfdd8..66bb5e3ff 100644 --- a/system/src/Grav/Common/Processors/AssetsProcessor.php +++ b/system/src/Grav/Common/Processors/AssetsProcessor.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Processors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Processors/BackupsProcessor.php b/system/src/Grav/Common/Processors/BackupsProcessor.php index fa92bbd8e..6e960b493 100644 --- a/system/src/Grav/Common/Processors/BackupsProcessor.php +++ b/system/src/Grav/Common/Processors/BackupsProcessor.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Processors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Processors/DebuggerAssetsProcessor.php b/system/src/Grav/Common/Processors/DebuggerAssetsProcessor.php index 141a8c890..de7cafcfc 100644 --- a/system/src/Grav/Common/Processors/DebuggerAssetsProcessor.php +++ b/system/src/Grav/Common/Processors/DebuggerAssetsProcessor.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Processors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Processors/Events/RequestHandlerEvent.php b/system/src/Grav/Common/Processors/Events/RequestHandlerEvent.php index a94d311c0..32908bad7 100644 --- a/system/src/Grav/Common/Processors/Events/RequestHandlerEvent.php +++ b/system/src/Grav/Common/Processors/Events/RequestHandlerEvent.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Processors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Processors/InitializeProcessor.php b/system/src/Grav/Common/Processors/InitializeProcessor.php index f41670990..a6a606cc6 100644 --- a/system/src/Grav/Common/Processors/InitializeProcessor.php +++ b/system/src/Grav/Common/Processors/InitializeProcessor.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Processors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -30,6 +30,7 @@ use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; use function defined; +use function in_array; /** * Class InitializeProcessor @@ -414,13 +415,18 @@ class InitializeProcessor extends ProcessorBase protected function handleRedirectRequest(RequestInterface $request): ?ResponseInterface { + if (!in_array($request->getMethod(), ['GET', 'HEAD'])) { + return null; + } + // Redirect pages with trailing slash if configured to do so. $uri = $request->getUri(); $path = $uri->getPath() ?: '/'; $root = $this->container['uri']->rootUrl(); if ($path !== $root && $path !== $root . '/' && Utils::endsWith($path, '/')) { - return $this->container->getRedirectResponse((string)$uri->withPath(rtrim($path, '/'))); + // Use permanent redirect for SEO reasons. + return $this->container->getRedirectResponse((string)$uri->withPath(rtrim($path, '/')), 301); } return null; diff --git a/system/src/Grav/Common/Processors/PagesProcessor.php b/system/src/Grav/Common/Processors/PagesProcessor.php index 8d1377b86..33b483fbd 100644 --- a/system/src/Grav/Common/Processors/PagesProcessor.php +++ b/system/src/Grav/Common/Processors/PagesProcessor.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Processors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Processors/PluginsProcessor.php b/system/src/Grav/Common/Processors/PluginsProcessor.php index 412acc4e8..485578e49 100644 --- a/system/src/Grav/Common/Processors/PluginsProcessor.php +++ b/system/src/Grav/Common/Processors/PluginsProcessor.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Processors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Processors/ProcessorBase.php b/system/src/Grav/Common/Processors/ProcessorBase.php index 1b455f45a..a3506f599 100644 --- a/system/src/Grav/Common/Processors/ProcessorBase.php +++ b/system/src/Grav/Common/Processors/ProcessorBase.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Processors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Processors/ProcessorInterface.php b/system/src/Grav/Common/Processors/ProcessorInterface.php index ccc4de353..8a6edbe18 100644 --- a/system/src/Grav/Common/Processors/ProcessorInterface.php +++ b/system/src/Grav/Common/Processors/ProcessorInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Processors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Processors/RenderProcessor.php b/system/src/Grav/Common/Processors/RenderProcessor.php index 1dac5fd54..32f48e7ce 100644 --- a/system/src/Grav/Common/Processors/RenderProcessor.php +++ b/system/src/Grav/Common/Processors/RenderProcessor.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Processors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Processors/RequestProcessor.php b/system/src/Grav/Common/Processors/RequestProcessor.php index 9385682c1..971fb6747 100644 --- a/system/src/Grav/Common/Processors/RequestProcessor.php +++ b/system/src/Grav/Common/Processors/RequestProcessor.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Processors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Processors/SchedulerProcessor.php b/system/src/Grav/Common/Processors/SchedulerProcessor.php index a07f814bf..69cc16385 100644 --- a/system/src/Grav/Common/Processors/SchedulerProcessor.php +++ b/system/src/Grav/Common/Processors/SchedulerProcessor.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Processors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Processors/TasksProcessor.php b/system/src/Grav/Common/Processors/TasksProcessor.php index ea42dc913..07e0934af 100644 --- a/system/src/Grav/Common/Processors/TasksProcessor.php +++ b/system/src/Grav/Common/Processors/TasksProcessor.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Processors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Processors/ThemesProcessor.php b/system/src/Grav/Common/Processors/ThemesProcessor.php index 77c8f13e7..951dc79e5 100644 --- a/system/src/Grav/Common/Processors/ThemesProcessor.php +++ b/system/src/Grav/Common/Processors/ThemesProcessor.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Processors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Processors/TwigProcessor.php b/system/src/Grav/Common/Processors/TwigProcessor.php index b4dd28cbc..6604b5c05 100644 --- a/system/src/Grav/Common/Processors/TwigProcessor.php +++ b/system/src/Grav/Common/Processors/TwigProcessor.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Processors * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Scheduler/Cron.php b/system/src/Grav/Common/Scheduler/Cron.php index 48a138470..5127a997f 100644 --- a/system/src/Grav/Common/Scheduler/Cron.php +++ b/system/src/Grav/Common/Scheduler/Cron.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Scheduler * @author Originally based on jqCron by Arnaud Buathier modified for Grav integration - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Scheduler/IntervalTrait.php b/system/src/Grav/Common/Scheduler/IntervalTrait.php index 369222422..cc5c1654c 100644 --- a/system/src/Grav/Common/Scheduler/IntervalTrait.php +++ b/system/src/Grav/Common/Scheduler/IntervalTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Scheduler * @author Originally based on peppeocchi/php-cron-scheduler modified for Grav integration - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Scheduler/Job.php b/system/src/Grav/Common/Scheduler/Job.php index 0a6fd9f39..f21c26def 100644 --- a/system/src/Grav/Common/Scheduler/Job.php +++ b/system/src/Grav/Common/Scheduler/Job.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Scheduler * @author Originally based on peppeocchi/php-cron-scheduler modified for Grav integration - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Scheduler/Scheduler.php b/system/src/Grav/Common/Scheduler/Scheduler.php index c22d00e6c..73a071225 100644 --- a/system/src/Grav/Common/Scheduler/Scheduler.php +++ b/system/src/Grav/Common/Scheduler/Scheduler.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Scheduler * @author Originally based on peppeocchi/php-cron-scheduler modified for Grav integration - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Security.php b/system/src/Grav/Common/Security.php index ede8741ab..21d059e23 100644 --- a/system/src/Grav/Common/Security.php +++ b/system/src/Grav/Common/Security.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/AccountsServiceProvider.php b/system/src/Grav/Common/Service/AccountsServiceProvider.php index d39925eea..8b158c93c 100644 --- a/system/src/Grav/Common/Service/AccountsServiceProvider.php +++ b/system/src/Grav/Common/Service/AccountsServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/AssetsServiceProvider.php b/system/src/Grav/Common/Service/AssetsServiceProvider.php index d5b39b1a6..1e4e647ca 100644 --- a/system/src/Grav/Common/Service/AssetsServiceProvider.php +++ b/system/src/Grav/Common/Service/AssetsServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/BackupsServiceProvider.php b/system/src/Grav/Common/Service/BackupsServiceProvider.php index fb09d8cc5..00fa9631a 100644 --- a/system/src/Grav/Common/Service/BackupsServiceProvider.php +++ b/system/src/Grav/Common/Service/BackupsServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/ConfigServiceProvider.php b/system/src/Grav/Common/Service/ConfigServiceProvider.php index 38d933cfc..a423f6e1d 100644 --- a/system/src/Grav/Common/Service/ConfigServiceProvider.php +++ b/system/src/Grav/Common/Service/ConfigServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/ErrorServiceProvider.php b/system/src/Grav/Common/Service/ErrorServiceProvider.php index 1a1944596..322736584 100644 --- a/system/src/Grav/Common/Service/ErrorServiceProvider.php +++ b/system/src/Grav/Common/Service/ErrorServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/FilesystemServiceProvider.php b/system/src/Grav/Common/Service/FilesystemServiceProvider.php index 38914e187..62dad5d81 100644 --- a/system/src/Grav/Common/Service/FilesystemServiceProvider.php +++ b/system/src/Grav/Common/Service/FilesystemServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/FlexServiceProvider.php b/system/src/Grav/Common/Service/FlexServiceProvider.php index 4aebf121e..9c8cd49b1 100644 --- a/system/src/Grav/Common/Service/FlexServiceProvider.php +++ b/system/src/Grav/Common/Service/FlexServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/InflectorServiceProvider.php b/system/src/Grav/Common/Service/InflectorServiceProvider.php index 77870c9c1..861a69e04 100644 --- a/system/src/Grav/Common/Service/InflectorServiceProvider.php +++ b/system/src/Grav/Common/Service/InflectorServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/LoggerServiceProvider.php b/system/src/Grav/Common/Service/LoggerServiceProvider.php index 7890d5c3a..5043cfbd0 100644 --- a/system/src/Grav/Common/Service/LoggerServiceProvider.php +++ b/system/src/Grav/Common/Service/LoggerServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/OutputServiceProvider.php b/system/src/Grav/Common/Service/OutputServiceProvider.php index 19072bd77..9a49185a8 100644 --- a/system/src/Grav/Common/Service/OutputServiceProvider.php +++ b/system/src/Grav/Common/Service/OutputServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/PagesServiceProvider.php b/system/src/Grav/Common/Service/PagesServiceProvider.php index 836598cfe..4acf37088 100644 --- a/system/src/Grav/Common/Service/PagesServiceProvider.php +++ b/system/src/Grav/Common/Service/PagesServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/RequestServiceProvider.php b/system/src/Grav/Common/Service/RequestServiceProvider.php index 69bd1c93f..1cc03ed18 100644 --- a/system/src/Grav/Common/Service/RequestServiceProvider.php +++ b/system/src/Grav/Common/Service/RequestServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/SchedulerServiceProvider.php b/system/src/Grav/Common/Service/SchedulerServiceProvider.php index 016cc8ea3..a95272544 100644 --- a/system/src/Grav/Common/Service/SchedulerServiceProvider.php +++ b/system/src/Grav/Common/Service/SchedulerServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/SessionServiceProvider.php b/system/src/Grav/Common/Service/SessionServiceProvider.php index e5b725703..88c833f26 100644 --- a/system/src/Grav/Common/Service/SessionServiceProvider.php +++ b/system/src/Grav/Common/Service/SessionServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -43,19 +43,23 @@ class SessionServiceProvider implements ServiceProviderInterface $cookie_secure = (bool)$config->get('system.session.secure', false); $cookie_httponly = (bool)$config->get('system.session.httponly', true); $cookie_lifetime = (int)$config->get('system.session.timeout', 1800); + $cookie_domain = $config->get('system.session.domain'); $cookie_path = $config->get('system.session.path'); $cookie_samesite = $config->get('system.session.samesite', 'Lax'); + + if (null === $cookie_domain) { + $cookie_domain = $uri->host(); + if ($cookie_domain === 'localhost') { + $cookie_domain = ''; + } + } + if (null === $cookie_path) { $cookie_path = '/' . trim(Uri::filterPath($uri->rootUrl(false)), '/'); } // Session cookie path requires trailing slash. $cookie_path = rtrim($cookie_path, '/') . '/'; - $cookie_domain = $uri->host(); - if ($cookie_domain === 'localhost') { - $cookie_domain = ''; - } - // Activate admin if we're inside the admin path. $is_admin = false; if ($config->get('plugins.admin.enabled')) { diff --git a/system/src/Grav/Common/Service/StreamsServiceProvider.php b/system/src/Grav/Common/Service/StreamsServiceProvider.php index e0f9a200a..2099d06d1 100644 --- a/system/src/Grav/Common/Service/StreamsServiceProvider.php +++ b/system/src/Grav/Common/Service/StreamsServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/TaskServiceProvider.php b/system/src/Grav/Common/Service/TaskServiceProvider.php index 03362534a..9afab59a4 100644 --- a/system/src/Grav/Common/Service/TaskServiceProvider.php +++ b/system/src/Grav/Common/Service/TaskServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Session.php b/system/src/Grav/Common/Session.php index ee86080cb..6ff080a11 100644 --- a/system/src/Grav/Common/Session.php +++ b/system/src/Grav/Common/Session.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Taxonomy.php b/system/src/Grav/Common/Taxonomy.php index b21c82fa5..de3c4526c 100644 --- a/system/src/Grav/Common/Taxonomy.php +++ b/system/src/Grav/Common/Taxonomy.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Theme.php b/system/src/Grav/Common/Theme.php index d08ab3b67..2b807b611 100644 --- a/system/src/Grav/Common/Theme.php +++ b/system/src/Grav/Common/Theme.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Themes.php b/system/src/Grav/Common/Themes.php index 687ae4232..6adeea09e 100644 --- a/system/src/Grav/Common/Themes.php +++ b/system/src/Grav/Common/Themes.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -318,6 +318,7 @@ class Themes extends Iterator /** * Load theme languages. + * Reads ALL language files from theme stream and merges them. * * @param Config $config Configuration class * @return void @@ -328,13 +329,13 @@ class Themes extends Iterator $locator = $this->grav['locator']; if ($config->get('system.languages.translations', true)) { - $language_file = $locator->findResource('theme://languages' . YAML_EXT); - if ($language_file) { + $language_files = array_reverse($locator->findResources('theme://languages' . YAML_EXT)); + foreach ($language_files as $language_file) { $language = CompiledYamlFile::instance($language_file)->content(); $this->grav['languages']->mergeRecursive($language); } - $languages_folder = $locator->findResource('theme://languages'); - if (file_exists($languages_folder)) { + $languages_folders = array_reverse($locator->findResources('theme://languages')); + foreach ($languages_folders as $languages_folder) { $languages = []; $iterator = new DirectoryIterator($languages_folder); foreach ($iterator as $file) { diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeCache.php b/system/src/Grav/Common/Twig/Node/TwigNodeCache.php index 930e597c1..0ed1fff0c 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeCache.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeCache.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeMarkdown.php b/system/src/Grav/Common/Twig/Node/TwigNodeMarkdown.php index 93504c7b5..38194e669 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeMarkdown.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeMarkdown.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeRender.php b/system/src/Grav/Common/Twig/Node/TwigNodeRender.php index 38f67e446..798c6baa6 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeRender.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeRender.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeScript.php b/system/src/Grav/Common/Twig/Node/TwigNodeScript.php index 60bb3cf21..46a08703b 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeScript.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeScript.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeStyle.php b/system/src/Grav/Common/Twig/Node/TwigNodeStyle.php index 87c80dde9..05355f904 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeStyle.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeStyle.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeSwitch.php b/system/src/Grav/Common/Twig/Node/TwigNodeSwitch.php index 535d01cdc..43ae56f18 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeSwitch.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeSwitch.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeThrow.php b/system/src/Grav/Common/Twig/Node/TwigNodeThrow.php index 669af514c..1a32a91a3 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeThrow.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeThrow.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeTryCatch.php b/system/src/Grav/Common/Twig/Node/TwigNodeTryCatch.php index f31a07ce8..da95a1d98 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeTryCatch.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeTryCatch.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserCache.php b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserCache.php index bf00ce86d..371e89ae6 100644 --- a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserCache.php +++ b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserCache.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserMarkdown.php b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserMarkdown.php index 8533e87d3..9dab4ae5c 100644 --- a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserMarkdown.php +++ b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserMarkdown.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserRender.php b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserRender.php index b65126b7c..ab2bdde0f 100644 --- a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserRender.php +++ b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserRender.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserScript.php b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserScript.php index 42c78fb21..b86063165 100644 --- a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserScript.php +++ b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserScript.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserStyle.php b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserStyle.php index 0134491dd..c8d9544ce 100644 --- a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserStyle.php +++ b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserStyle.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserSwitch.php b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserSwitch.php index 24e555e36..4540bbf7e 100644 --- a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserSwitch.php +++ b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserSwitch.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. * @origin https://gist.github.com/maxgalbu/9409182 */ diff --git a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserThrow.php b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserThrow.php index 02fb7c8e2..bd4adab97 100644 --- a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserThrow.php +++ b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserThrow.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserTryCatch.php b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserTryCatch.php index 4cfab55b7..46af1767a 100644 --- a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserTryCatch.php +++ b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserTryCatch.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Twig.php b/system/src/Grav/Common/Twig/Twig.php index 7284fb686..d4f710be3 100644 --- a/system/src/Grav/Common/Twig/Twig.php +++ b/system/src/Grav/Common/Twig/Twig.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -289,8 +289,7 @@ class Twig $output = ''; try { - // Process Modular Twig - if ($item->modularTwig()) { + if ($item->isModule()) { $twig_vars['content'] = $content; $template = $this->getPageTwigTemplate($item); $output = $content = $local_twig->render($template, $twig_vars); @@ -452,6 +451,7 @@ class Twig public function getPageTwigTemplate($page, &$format = null) { $template = $page->template(); + $default = $page->isModule() ? 'modular/default' : 'default'; $extension = $format ?: $page->templateFormat(); $twig_extension = $extension ? '.'. $extension .TWIG_EXT : TEMPLATE_EXT; $template_file = $this->template($page->template() . $twig_extension); @@ -459,26 +459,21 @@ class Twig $page_template = null; $loader = $this->twig->getLoader(); - if ($loader instanceof ExistsLoaderInterface ) { - + if ($loader instanceof ExistsLoaderInterface) { if ($loader->exists($template_file)) { + // template.xxx.twig $page_template = $template_file; + } elseif ($twig_extension !== TEMPLATE_EXT && $loader->exists($template . TEMPLATE_EXT)) { + // template.html.twig + $page_template = $template . TEMPLATE_EXT; + $format = 'html'; + } elseif ($loader->exists($default . $twig_extension)) { + // default.xxx.twig + $page_template = $default . $twig_extension; } else { - // Try with template + html.twig - if ($twig_extension !== TEMPLATE_EXT && $loader->exists($template . TEMPLATE_EXT)) { - $page_template = $template . TEMPLATE_EXT; - $format = 'html'; - // Try with default and original extension - } elseif ($loader->exists('default' . $twig_extension)) { - $page_template = 'default' . $twig_extension; - // Else try default + default extension - } elseif (!$page->isModule() && $loader->exists('default' . TEMPLATE_EXT)) { - $page_template = 'default' . TEMPLATE_EXT; - $format = 'html'; - } else { - $page_template = 'modular/default' . TEMPLATE_EXT; - $format = 'html'; - } + // default.html.twig + $page_template = $default . TEMPLATE_EXT; + $format = 'html'; } } diff --git a/system/src/Grav/Common/Twig/TwigClockworkDataSource.php b/system/src/Grav/Common/Twig/TwigClockworkDataSource.php index b8eb0eea1..11127b87c 100644 --- a/system/src/Grav/Common/Twig/TwigClockworkDataSource.php +++ b/system/src/Grav/Common/Twig/TwigClockworkDataSource.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TwigClockworkDumper.php b/system/src/Grav/Common/Twig/TwigClockworkDumper.php index a63cba81b..2c1f4be02 100644 --- a/system/src/Grav/Common/Twig/TwigClockworkDumper.php +++ b/system/src/Grav/Common/Twig/TwigClockworkDumper.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TwigEnvironment.php b/system/src/Grav/Common/Twig/TwigEnvironment.php index ef4b31e2c..bebbdf16e 100644 --- a/system/src/Grav/Common/Twig/TwigEnvironment.php +++ b/system/src/Grav/Common/Twig/TwigEnvironment.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TwigExtension.php b/system/src/Grav/Common/Twig/TwigExtension.php index 9996618f9..4c6fa9e00 100644 --- a/system/src/Grav/Common/Twig/TwigExtension.php +++ b/system/src/Grav/Common/Twig/TwigExtension.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -192,6 +192,8 @@ class TwigExtension extends AbstractExtension implements GlobalsInterface new TwigFunction('repeat', [$this, 'repeatFunc']), new TwigFunction('regex_replace', [$this, 'regexReplace']), new TwigFunction('regex_filter', [$this, 'regexFilter']), + new TwigFunction('regex_match', [$this, 'regexMatch']), + new TwigFunction('regex_split', [$this, 'regexSplit']), new TwigFunction('string', [$this, 'stringFilter']), new TwigFunction('url', [$this, 'urlFunc']), new TwigFunction('json_decode', [$this, 'jsonDecodeFilter']), @@ -1157,6 +1159,38 @@ class TwigExtension extends AbstractExtension implements GlobalsInterface return preg_grep($regex, $array, $flags); } + /** + * Twig wrapper for PHP's preg_match method + * + * @param string $subject the content to perform the match on + * @param string $pattern the regex pattern to use for match + * @param int $flags + * @param int $offset + * @return array|false returns the matches if there is at least one match in the subject for a given pattern or null if not. + */ + public function regexMatch($subject, $pattern, $flags = 0, $offset = 0) + { + if (preg_match($pattern, $subject, $matches, $flags, $offset) === false) { + return false; + } + + return $matches; + } + + /** + * Twig wrapper for PHP's preg_split method + * + * @param string $subject the content to perform the split on + * @param string $pattern the regex pattern to use for split + * @param int $limit the maximum possible splits for the given pattern + * @param int $flags + * @return array|false the resulting array after performing the split operation + */ + public function regexSplit($subject, $pattern, $limit = -1, $flags = 0) + { + return preg_split($pattern, $subject, $limit, $flags); + } + /** * redirect browser from twig * diff --git a/system/src/Grav/Common/Twig/WriteCacheFileTrait.php b/system/src/Grav/Common/Twig/WriteCacheFileTrait.php index 1b7e4797a..edab8e5b8 100644 --- a/system/src/Grav/Common/Twig/WriteCacheFileTrait.php +++ b/system/src/Grav/Common/Twig/WriteCacheFileTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Uri.php b/system/src/Grav/Common/Uri.php index ec842b504..dd98b1670 100644 --- a/system/src/Grav/Common/Uri.php +++ b/system/src/Grav/Common/Uri.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/Access.php b/system/src/Grav/Common/User/Access.php index 34766f4a4..6503c891f 100644 --- a/system/src/Grav/Common/User/Access.php +++ b/system/src/Grav/Common/User/Access.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/Authentication.php b/system/src/Grav/Common/User/Authentication.php index db89e9bdf..6ff95e7bf 100644 --- a/system/src/Grav/Common/User/Authentication.php +++ b/system/src/Grav/Common/User/Authentication.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/DataUser/User.php b/system/src/Grav/Common/User/DataUser/User.php index 917e30e3e..d81381777 100644 --- a/system/src/Grav/Common/User/DataUser/User.php +++ b/system/src/Grav/Common/User/DataUser/User.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -110,7 +110,7 @@ class User extends Data implements UserInterface } /** - * Save user without the username + * Save user * * @return void */ @@ -138,7 +138,10 @@ class User extends Data implements UserInterface } $data = $this->items; - unset($data['username'], $data['authenticated'], $data['authorized']); + if ($username === $data['username']) { + unset($data['username']); + } + unset($data['authenticated'], $data['authorized']); $file->save($data); diff --git a/system/src/Grav/Common/User/DataUser/UserCollection.php b/system/src/Grav/Common/User/DataUser/UserCollection.php index 5be500155..3da7e2dde 100644 --- a/system/src/Grav/Common/User/DataUser/UserCollection.php +++ b/system/src/Grav/Common/User/DataUser/UserCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/Group.php b/system/src/Grav/Common/User/Group.php index 404385762..5be53869e 100644 --- a/system/src/Grav/Common/User/Group.php +++ b/system/src/Grav/Common/User/Group.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/Interfaces/AuthorizeInterface.php b/system/src/Grav/Common/User/Interfaces/AuthorizeInterface.php index 8f530beac..3ad8d2cc5 100644 --- a/system/src/Grav/Common/User/Interfaces/AuthorizeInterface.php +++ b/system/src/Grav/Common/User/Interfaces/AuthorizeInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/Interfaces/UserCollectionInterface.php b/system/src/Grav/Common/User/Interfaces/UserCollectionInterface.php index e9b99d578..d892e820f 100644 --- a/system/src/Grav/Common/User/Interfaces/UserCollectionInterface.php +++ b/system/src/Grav/Common/User/Interfaces/UserCollectionInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/Interfaces/UserGroupInterface.php b/system/src/Grav/Common/User/Interfaces/UserGroupInterface.php index 56f0f8ae0..c345c4b38 100644 --- a/system/src/Grav/Common/User/Interfaces/UserGroupInterface.php +++ b/system/src/Grav/Common/User/Interfaces/UserGroupInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/Interfaces/UserInterface.php b/system/src/Grav/Common/User/Interfaces/UserInterface.php index c6af3b11d..02827e37c 100644 --- a/system/src/Grav/Common/User/Interfaces/UserInterface.php +++ b/system/src/Grav/Common/User/Interfaces/UserInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/Traits/UserTrait.php b/system/src/Grav/Common/User/Traits/UserTrait.php index 0c71d268a..5a6b74938 100644 --- a/system/src/Grav/Common/User/Traits/UserTrait.php +++ b/system/src/Grav/Common/User/Traits/UserTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/User.php b/system/src/Grav/Common/User/User.php index 58d1f7dcf..4b2319fc5 100644 --- a/system/src/Grav/Common/User/User.php +++ b/system/src/Grav/Common/User/User.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Utils.php b/system/src/Grav/Common/Utils.php index 4e02d5712..cfb96bc33 100644 --- a/system/src/Grav/Common/Utils.php +++ b/system/src/Grav/Common/Utils.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -1196,7 +1196,6 @@ abstract class Utils if (count($parts) > 0 && in_array($parts[0], $languages_enabled)) { return $parts[0]; } - return false; } diff --git a/system/src/Grav/Common/Yaml.php b/system/src/Grav/Common/Yaml.php index f9dde79cb..5adbd0c10 100644 --- a/system/src/Grav/Common/Yaml.php +++ b/system/src/Grav/Common/Yaml.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Application/Application.php b/system/src/Grav/Console/Application/Application.php index be4e3c8cd..21cea8730 100644 --- a/system/src/Grav/Console/Application/Application.php +++ b/system/src/Grav/Console/Application/Application.php @@ -3,7 +3,7 @@ /** * @package Grav\Console * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Application/CommandLoader/PluginCommandLoader.php b/system/src/Grav/Console/Application/CommandLoader/PluginCommandLoader.php index bff1e9812..9b7b568d9 100644 --- a/system/src/Grav/Console/Application/CommandLoader/PluginCommandLoader.php +++ b/system/src/Grav/Console/Application/CommandLoader/PluginCommandLoader.php @@ -3,7 +3,7 @@ /** * @package Grav\Console * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Application/GpmApplication.php b/system/src/Grav/Console/Application/GpmApplication.php index 69bb2344f..df383f2d2 100644 --- a/system/src/Grav/Console/Application/GpmApplication.php +++ b/system/src/Grav/Console/Application/GpmApplication.php @@ -3,7 +3,7 @@ /** * @package Grav\Console * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Application/GravApplication.php b/system/src/Grav/Console/Application/GravApplication.php index 45c8b13eb..739ca396b 100644 --- a/system/src/Grav/Console/Application/GravApplication.php +++ b/system/src/Grav/Console/Application/GravApplication.php @@ -3,7 +3,7 @@ /** * @package Grav\Console * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Application/PluginApplication.php b/system/src/Grav/Console/Application/PluginApplication.php index dd23d9301..75e9eb704 100644 --- a/system/src/Grav/Console/Application/PluginApplication.php +++ b/system/src/Grav/Console/Application/PluginApplication.php @@ -3,7 +3,7 @@ /** * @package Grav\Console * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/BackupCommand.php b/system/src/Grav/Console/Cli/BackupCommand.php index 8dbf5b6af..a8a025d2a 100644 --- a/system/src/Grav/Console/Cli/BackupCommand.php +++ b/system/src/Grav/Console/Cli/BackupCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -66,9 +66,9 @@ class BackupCommand extends GravCommand ProgressBar::setFormatDefinition('zip', 'Archiving %current% files [%bar%] %percent:3s%% %elapsed:6s% %message%'); - $this->progress = $io->createProgressBar(); + $this->progress = new ProgressBar($this->output, 100); $this->progress->setFormat('zip'); - $this->progress->setBarWidth(100); + /** @var Backups $backups */ $backups = Grav::instance()['backups']; diff --git a/system/src/Grav/Console/Cli/CleanCommand.php b/system/src/Grav/Console/Cli/CleanCommand.php index fd4bbdbb2..8aa019ccb 100644 --- a/system/src/Grav/Console/Cli/CleanCommand.php +++ b/system/src/Grav/Console/Cli/CleanCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/ClearCacheCommand.php b/system/src/Grav/Console/Cli/ClearCacheCommand.php index 9a61b0454..daed2a533 100644 --- a/system/src/Grav/Console/Cli/ClearCacheCommand.php +++ b/system/src/Grav/Console/Cli/ClearCacheCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/ComposerCommand.php b/system/src/Grav/Console/Cli/ComposerCommand.php index 99fdf3592..5075d1d0f 100644 --- a/system/src/Grav/Console/Cli/ComposerCommand.php +++ b/system/src/Grav/Console/Cli/ComposerCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/InstallCommand.php b/system/src/Grav/Console/Cli/InstallCommand.php index b75a47fcd..08bc7144e 100644 --- a/system/src/Grav/Console/Cli/InstallCommand.php +++ b/system/src/Grav/Console/Cli/InstallCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/LogViewerCommand.php b/system/src/Grav/Console/Cli/LogViewerCommand.php index 7eecbc20c..d3924f88c 100644 --- a/system/src/Grav/Console/Cli/LogViewerCommand.php +++ b/system/src/Grav/Console/Cli/LogViewerCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/NewProjectCommand.php b/system/src/Grav/Console/Cli/NewProjectCommand.php index d8ba08ce4..d67cb1c8d 100644 --- a/system/src/Grav/Console/Cli/NewProjectCommand.php +++ b/system/src/Grav/Console/Cli/NewProjectCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/PageSystemValidatorCommand.php b/system/src/Grav/Console/Cli/PageSystemValidatorCommand.php index 06abbbdf3..4d234d75d 100644 --- a/system/src/Grav/Console/Cli/PageSystemValidatorCommand.php +++ b/system/src/Grav/Console/Cli/PageSystemValidatorCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/SandboxCommand.php b/system/src/Grav/Console/Cli/SandboxCommand.php index 356e3dc05..d865b4ae7 100644 --- a/system/src/Grav/Console/Cli/SandboxCommand.php +++ b/system/src/Grav/Console/Cli/SandboxCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/SchedulerCommand.php b/system/src/Grav/Console/Cli/SchedulerCommand.php index 87834076f..c5385aad2 100644 --- a/system/src/Grav/Console/Cli/SchedulerCommand.php +++ b/system/src/Grav/Console/Cli/SchedulerCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/SecurityCommand.php b/system/src/Grav/Console/Cli/SecurityCommand.php index fcf200a7b..7f728b69f 100644 --- a/system/src/Grav/Console/Cli/SecurityCommand.php +++ b/system/src/Grav/Console/Cli/SecurityCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -46,7 +46,7 @@ class SecurityCommand extends GravCommand /** @var Grav $grav */ $grav = Grav::instance(); - $this->progress = $io->createProgressBar(count($grav['pages']->routes()) - 1); + $this->progress = new ProgressBar($this->output, count($grav['pages']->routes()) - 1); $this->progress->setFormat('Scanning %current% pages [%bar%] %percent:3s%% %elapsed:6s%'); $this->progress->setBarWidth(100); diff --git a/system/src/Grav/Console/Cli/ServerCommand.php b/system/src/Grav/Console/Cli/ServerCommand.php index 80bbe2a8b..77bce8b1d 100644 --- a/system/src/Grav/Console/Cli/ServerCommand.php +++ b/system/src/Grav/Console/Cli/ServerCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/YamlLinterCommand.php b/system/src/Grav/Console/Cli/YamlLinterCommand.php index db6e573ed..a9628cdd1 100644 --- a/system/src/Grav/Console/Cli/YamlLinterCommand.php +++ b/system/src/Grav/Console/Cli/YamlLinterCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/ConsoleCommand.php b/system/src/Grav/Console/ConsoleCommand.php index 6c796321c..044f1b0ff 100644 --- a/system/src/Grav/Console/ConsoleCommand.php +++ b/system/src/Grav/Console/ConsoleCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/ConsoleTrait.php b/system/src/Grav/Console/ConsoleTrait.php index 4c239e912..feb10d32e 100644 --- a/system/src/Grav/Console/ConsoleTrait.php +++ b/system/src/Grav/Console/ConsoleTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Console * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Gpm/DirectInstallCommand.php b/system/src/Grav/Console/Gpm/DirectInstallCommand.php index a79bd6a44..e5c662bcc 100644 --- a/system/src/Grav/Console/Gpm/DirectInstallCommand.php +++ b/system/src/Grav/Console/Gpm/DirectInstallCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Gpm * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Gpm/IndexCommand.php b/system/src/Grav/Console/Gpm/IndexCommand.php index 9f4634410..64d359781 100644 --- a/system/src/Grav/Console/Gpm/IndexCommand.php +++ b/system/src/Grav/Console/Gpm/IndexCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Gpm * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -90,6 +90,18 @@ class IndexCommand extends GpmCommand InputOption::VALUE_NONE, 'Reverses the order of the output.' ) + ->addOption( + 'enabled', + 'e', + InputOption::VALUE_NONE, + 'Filters the results to only enabled Themes and Plugins.' + ) + ->addOption( + 'disabled', + 'd', + InputOption::VALUE_NONE, + 'Filters the results to only disabled Themes and Plugins.' + ) ->setDescription('Lists the plugins and themes available for installation') ->setHelp('The index command lists the plugins and themes available for installation') ; @@ -129,7 +141,7 @@ class IndexCommand extends GpmCommand if (!empty($packages)) { $io->section('Packages table'); $table = new Table($io); - $table->setHeaders(['Count', 'Name', 'Slug', 'Version', 'Installed']); + $table->setHeaders(['Count', 'Name', 'Slug', 'Version', 'Installed', 'Enabled']); $index = 0; foreach ($packages as $slug => $package) { @@ -138,7 +150,8 @@ class IndexCommand extends GpmCommand 'Name' => '' . Utils::truncate($package->name, 20, false, ' ', '...') . ' ', 'Slug' => $slug, 'Version'=> $this->version($package), - 'Installed' => $this->installed($package) + 'Installed' => $this->installed($package), + 'Enabled' => $this->enabled($package), ]; $table->addRow($row); @@ -195,6 +208,31 @@ class IndexCommand extends GpmCommand return !$installed ? 'not installed' : 'installed'; } + /** + * @param Package $package + * @return string + */ + private function enabled(Package $package): string + { + $package = $list[$package->slug] ?? $package; + $type = ucfirst(preg_replace('/s$/', '', $package->package_type)); + $method = 'is' . $type . 'Installed'; + $installed = $this->gpm->{$method}($package->slug); + + $result = ''; + if ($installed) { + $method = 'is' . $type . 'Enabled'; + $enabled = $this->gpm->{$method}($package->slug); + if ($enabled === true) { + $result = 'enabled'; + } elseif ($enabled === false) { + $result = 'disabled'; + } + } + + return $result; + } + /** * @param Packages $data * @return Packages @@ -210,10 +248,12 @@ class IndexCommand extends GpmCommand } $filter = [ + $this->options['desc'], + $this->options['disabled'], + $this->options['enabled'], $this->options['filter'], $this->options['installed-only'], $this->options['updates-only'], - $this->options['desc'] ]; if (count(array_filter($filter))) { @@ -227,7 +267,7 @@ class IndexCommand extends GpmCommand } // Filtering updatables only - if ($filter && $this->options['installed-only']) { + if ($filter && ($this->options['installed-only'] || $this->options['enabled'] || $this->options['disabled'])) { $method = ucfirst(preg_replace('/s$/', '', $package->package_type)); $function = 'is' . $method . 'Installed'; $filter = $this->gpm->{$function}($package->slug); @@ -240,6 +280,29 @@ class IndexCommand extends GpmCommand $filter = $this->gpm->{$function}($package->slug); } + // Filtering enabled only + if ($filter && $this->options['enabled']) { + $method = ucfirst(preg_replace('/s$/', '', $package->package_type)); + + // Check if packaged is enabled. + $function = 'is' . $method . 'Enabled'; + $filter = $this->gpm->{$function}($package->slug); + } + + // Filtering disabled only + if ($filter && $this->options['disabled']) { + $method = ucfirst(preg_replace('/s$/', '', $package->package_type)); + + // Check if package is disabled. + $function = 'is' . $method . 'Enabled'; + $enabled_filter = $this->gpm->{$function}($package->slug); + + // Apply filtering results. + if (!( $enabled_filter === false)) { + $filter = false; + } + } + if (!$filter) { unset($data[$type][$slug]); } diff --git a/system/src/Grav/Console/Gpm/InfoCommand.php b/system/src/Grav/Console/Gpm/InfoCommand.php index d7b9e9419..5dddd32b5 100644 --- a/system/src/Grav/Console/Gpm/InfoCommand.php +++ b/system/src/Grav/Console/Gpm/InfoCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Gpm * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Gpm/InstallCommand.php b/system/src/Grav/Console/Gpm/InstallCommand.php index 706013ea5..202427cff 100644 --- a/system/src/Grav/Console/Gpm/InstallCommand.php +++ b/system/src/Grav/Console/Gpm/InstallCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Gpm * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Gpm/SelfupgradeCommand.php b/system/src/Grav/Console/Gpm/SelfupgradeCommand.php index ac8d4d9b6..b84001698 100644 --- a/system/src/Grav/Console/Gpm/SelfupgradeCommand.php +++ b/system/src/Grav/Console/Gpm/SelfupgradeCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Gpm * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Gpm/UninstallCommand.php b/system/src/Grav/Console/Gpm/UninstallCommand.php index 850c28a5b..ff917191e 100644 --- a/system/src/Grav/Console/Gpm/UninstallCommand.php +++ b/system/src/Grav/Console/Gpm/UninstallCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Gpm * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -11,12 +11,14 @@ namespace Grav\Console\Gpm; use Grav\Common\GPM\GPM; use Grav\Common\GPM\Installer; -use Grav\Common\GPM\Local\Package; +use Grav\Common\GPM\Local; +use Grav\Common\GPM\Remote; use Grav\Common\Grav; use Grav\Console\GpmCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Question\ConfirmationQuestion; +use Throwable; use function count; use function in_array; use function is_array; @@ -113,7 +115,7 @@ class UninstallCommand extends GpmCommand // Plugins need to be initialized in order to make clear-cache to work. try { $this->initializePlugins(); - } catch (\Throwable $e) { + } catch (Throwable $e) { $io->writeln("Some plugins failed to initialize: {$e->getMessage()}"); } @@ -148,11 +150,11 @@ class UninstallCommand extends GpmCommand /** * @param string $slug - * @param Package $package + * @param Local\Package|Remote\Package $package * @param bool $is_dependency * @return bool */ - private function uninstallPackage($slug, Package $package, $is_dependency = false): bool + private function uninstallPackage($slug, $package, $is_dependency = false): bool { $io = $this->getIO(); @@ -255,10 +257,10 @@ class UninstallCommand extends GpmCommand /** * @param string $slug - * @param Package $package + * @param Local\Package|Remote\Package $package * @return bool */ - private function checkDestination(string $slug, Package $package): bool + private function checkDestination(string $slug, $package): bool { $io = $this->getIO(); @@ -297,10 +299,10 @@ class UninstallCommand extends GpmCommand * Check if package exists * * @param string $slug - * @param Package $package + * @param Local\Package|Remote\Package $package * @return int */ - private function packageExists(string $slug, Package $package): int + private function packageExists(string $slug, $package): int { $path = Grav::instance()['locator']->findResource($package->package_type . '://' . $slug); Installer::isValidDestination($path); diff --git a/system/src/Grav/Console/Gpm/UpdateCommand.php b/system/src/Grav/Console/Gpm/UpdateCommand.php index d5e90a8ee..300fe61d8 100644 --- a/system/src/Grav/Console/Gpm/UpdateCommand.php +++ b/system/src/Grav/Console/Gpm/UpdateCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Gpm * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Gpm/VersionCommand.php b/system/src/Grav/Console/Gpm/VersionCommand.php index 0880dddb8..124aad3c0 100644 --- a/system/src/Grav/Console/Gpm/VersionCommand.php +++ b/system/src/Grav/Console/Gpm/VersionCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Gpm * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/GpmCommand.php b/system/src/Grav/Console/GpmCommand.php index 685049e0d..816e87223 100644 --- a/system/src/Grav/Console/GpmCommand.php +++ b/system/src/Grav/Console/GpmCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/GravCommand.php b/system/src/Grav/Console/GravCommand.php index 4634a1fdb..0249f1427 100644 --- a/system/src/Grav/Console/GravCommand.php +++ b/system/src/Grav/Console/GravCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Plugin/PluginListCommand.php b/system/src/Grav/Console/Plugin/PluginListCommand.php index df8301e63..81041c0e5 100644 --- a/system/src/Grav/Console/Plugin/PluginListCommand.php +++ b/system/src/Grav/Console/Plugin/PluginListCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Plugin * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/TerminalObjects/Table.php b/system/src/Grav/Console/TerminalObjects/Table.php index bf0ac5280..a71d7c0c8 100644 --- a/system/src/Grav/Console/TerminalObjects/Table.php +++ b/system/src/Grav/Console/TerminalObjects/Table.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\TerminalObjects * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Events/FlexRegisterEvent.php b/system/src/Grav/Events/FlexRegisterEvent.php index ae2c930b6..13aebf386 100644 --- a/system/src/Grav/Events/FlexRegisterEvent.php +++ b/system/src/Grav/Events/FlexRegisterEvent.php @@ -3,7 +3,7 @@ /** * @package Grav\Events * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Events/PermissionsRegisterEvent.php b/system/src/Grav/Events/PermissionsRegisterEvent.php index 5fa1dbcfa..5e63c85ab 100644 --- a/system/src/Grav/Events/PermissionsRegisterEvent.php +++ b/system/src/Grav/Events/PermissionsRegisterEvent.php @@ -3,7 +3,7 @@ /** * @package Grav\Events * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Events/PluginsLoadedEvent.php b/system/src/Grav/Events/PluginsLoadedEvent.php index bd9d70898..9dfd18b4a 100644 --- a/system/src/Grav/Events/PluginsLoadedEvent.php +++ b/system/src/Grav/Events/PluginsLoadedEvent.php @@ -3,7 +3,7 @@ /** * @package Grav\Events * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Events/SessionStartEvent.php b/system/src/Grav/Events/SessionStartEvent.php index aeca40bc7..e724a0922 100644 --- a/system/src/Grav/Events/SessionStartEvent.php +++ b/system/src/Grav/Events/SessionStartEvent.php @@ -3,7 +3,7 @@ /** * @package Grav\Events * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Acl/Access.php b/system/src/Grav/Framework/Acl/Access.php index 1717daa18..ccc22cf1f 100644 --- a/system/src/Grav/Framework/Acl/Access.php +++ b/system/src/Grav/Framework/Acl/Access.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Acl * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Acl/Action.php b/system/src/Grav/Framework/Acl/Action.php index 4bce7c582..1f883a054 100644 --- a/system/src/Grav/Framework/Acl/Action.php +++ b/system/src/Grav/Framework/Acl/Action.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Acl * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Acl/Permissions.php b/system/src/Grav/Framework/Acl/Permissions.php index b9aa5e118..037571675 100644 --- a/system/src/Grav/Framework/Acl/Permissions.php +++ b/system/src/Grav/Framework/Acl/Permissions.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Acl * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Acl/PermissionsReader.php b/system/src/Grav/Framework/Acl/PermissionsReader.php index 8de6df906..2c38afbea 100644 --- a/system/src/Grav/Framework/Acl/PermissionsReader.php +++ b/system/src/Grav/Framework/Acl/PermissionsReader.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Acl * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Acl/RecursiveActionIterator.php b/system/src/Grav/Framework/Acl/RecursiveActionIterator.php index 05574db5b..ac219da38 100644 --- a/system/src/Grav/Framework/Acl/RecursiveActionIterator.php +++ b/system/src/Grav/Framework/Acl/RecursiveActionIterator.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Acl * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/AbstractCache.php b/system/src/Grav/Framework/Cache/AbstractCache.php index 177db0b36..bfb5125ec 100644 --- a/system/src/Grav/Framework/Cache/AbstractCache.php +++ b/system/src/Grav/Framework/Cache/AbstractCache.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/Adapter/ChainCache.php b/system/src/Grav/Framework/Cache/Adapter/ChainCache.php index 0c995f2ab..76f518541 100644 --- a/system/src/Grav/Framework/Cache/Adapter/ChainCache.php +++ b/system/src/Grav/Framework/Cache/Adapter/ChainCache.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/Adapter/DoctrineCache.php b/system/src/Grav/Framework/Cache/Adapter/DoctrineCache.php index b6fcd357f..29e9e3b52 100644 --- a/system/src/Grav/Framework/Cache/Adapter/DoctrineCache.php +++ b/system/src/Grav/Framework/Cache/Adapter/DoctrineCache.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/Adapter/FileCache.php b/system/src/Grav/Framework/Cache/Adapter/FileCache.php index 597f4341e..1995e159d 100644 --- a/system/src/Grav/Framework/Cache/Adapter/FileCache.php +++ b/system/src/Grav/Framework/Cache/Adapter/FileCache.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/Adapter/MemoryCache.php b/system/src/Grav/Framework/Cache/Adapter/MemoryCache.php index f8bb9bdc4..c043bf9e6 100644 --- a/system/src/Grav/Framework/Cache/Adapter/MemoryCache.php +++ b/system/src/Grav/Framework/Cache/Adapter/MemoryCache.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/Adapter/SessionCache.php b/system/src/Grav/Framework/Cache/Adapter/SessionCache.php index 96ceab5b6..e189e3e7e 100644 --- a/system/src/Grav/Framework/Cache/Adapter/SessionCache.php +++ b/system/src/Grav/Framework/Cache/Adapter/SessionCache.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/CacheInterface.php b/system/src/Grav/Framework/Cache/CacheInterface.php index 8b1936674..efd9d3122 100644 --- a/system/src/Grav/Framework/Cache/CacheInterface.php +++ b/system/src/Grav/Framework/Cache/CacheInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/CacheTrait.php b/system/src/Grav/Framework/Cache/CacheTrait.php index dc00712b3..287f92462 100644 --- a/system/src/Grav/Framework/Cache/CacheTrait.php +++ b/system/src/Grav/Framework/Cache/CacheTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/Exception/CacheException.php b/system/src/Grav/Framework/Cache/Exception/CacheException.php index 6a8ab2abe..1db325694 100644 --- a/system/src/Grav/Framework/Cache/Exception/CacheException.php +++ b/system/src/Grav/Framework/Cache/Exception/CacheException.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/Exception/InvalidArgumentException.php b/system/src/Grav/Framework/Cache/Exception/InvalidArgumentException.php index 657f7262c..08a343504 100644 --- a/system/src/Grav/Framework/Cache/Exception/InvalidArgumentException.php +++ b/system/src/Grav/Framework/Cache/Exception/InvalidArgumentException.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Collection/AbstractFileCollection.php b/system/src/Grav/Framework/Collection/AbstractFileCollection.php index 82a5c2038..50e90515d 100644 --- a/system/src/Grav/Framework/Collection/AbstractFileCollection.php +++ b/system/src/Grav/Framework/Collection/AbstractFileCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Collection * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Collection/AbstractIndexCollection.php b/system/src/Grav/Framework/Collection/AbstractIndexCollection.php index e3900a5da..190f42279 100644 --- a/system/src/Grav/Framework/Collection/AbstractIndexCollection.php +++ b/system/src/Grav/Framework/Collection/AbstractIndexCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Collection * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Collection/AbstractLazyCollection.php b/system/src/Grav/Framework/Collection/AbstractLazyCollection.php index 90b5048c9..af7ffe182 100644 --- a/system/src/Grav/Framework/Collection/AbstractLazyCollection.php +++ b/system/src/Grav/Framework/Collection/AbstractLazyCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Collection * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Collection/ArrayCollection.php b/system/src/Grav/Framework/Collection/ArrayCollection.php index 78e0dd5ec..474a3fba5 100644 --- a/system/src/Grav/Framework/Collection/ArrayCollection.php +++ b/system/src/Grav/Framework/Collection/ArrayCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Collection * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Collection/CollectionInterface.php b/system/src/Grav/Framework/Collection/CollectionInterface.php index 8273ce718..e024366a4 100644 --- a/system/src/Grav/Framework/Collection/CollectionInterface.php +++ b/system/src/Grav/Framework/Collection/CollectionInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Collection * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Collection/FileCollection.php b/system/src/Grav/Framework/Collection/FileCollection.php index 41ffacfed..5dd8d55b0 100644 --- a/system/src/Grav/Framework/Collection/FileCollection.php +++ b/system/src/Grav/Framework/Collection/FileCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Collection * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Collection/FileCollectionInterface.php b/system/src/Grav/Framework/Collection/FileCollectionInterface.php index b25904982..ce6e18f25 100644 --- a/system/src/Grav/Framework/Collection/FileCollectionInterface.php +++ b/system/src/Grav/Framework/Collection/FileCollectionInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Collection * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Compat/Serializable.php b/system/src/Grav/Framework/Compat/Serializable.php index 35bbfbe59..3c9bf6a08 100644 --- a/system/src/Grav/Framework/Compat/Serializable.php +++ b/system/src/Grav/Framework/Compat/Serializable.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Compat * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/ContentBlock/ContentBlock.php b/system/src/Grav/Framework/ContentBlock/ContentBlock.php index bd6a2484b..efcd5f3fd 100644 --- a/system/src/Grav/Framework/ContentBlock/ContentBlock.php +++ b/system/src/Grav/Framework/ContentBlock/ContentBlock.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\ContentBlock * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/ContentBlock/ContentBlockInterface.php b/system/src/Grav/Framework/ContentBlock/ContentBlockInterface.php index 6af9aa23b..fb445a398 100644 --- a/system/src/Grav/Framework/ContentBlock/ContentBlockInterface.php +++ b/system/src/Grav/Framework/ContentBlock/ContentBlockInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\ContentBlock * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/ContentBlock/HtmlBlock.php b/system/src/Grav/Framework/ContentBlock/HtmlBlock.php index 1853e7c7e..5c5eb4342 100644 --- a/system/src/Grav/Framework/ContentBlock/HtmlBlock.php +++ b/system/src/Grav/Framework/ContentBlock/HtmlBlock.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\ContentBlock * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/ContentBlock/HtmlBlockInterface.php b/system/src/Grav/Framework/ContentBlock/HtmlBlockInterface.php index d9fd16111..616e4a2cc 100644 --- a/system/src/Grav/Framework/ContentBlock/HtmlBlockInterface.php +++ b/system/src/Grav/Framework/ContentBlock/HtmlBlockInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\ContentBlock * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php b/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php index 551301c90..1c9181b6d 100644 --- a/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php +++ b/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Controller * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/DI/Container.php b/system/src/Grav/Framework/DI/Container.php index bd0c336a3..76434a36a 100644 --- a/system/src/Grav/Framework/DI/Container.php +++ b/system/src/Grav/Framework/DI/Container.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\DI * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/AbstractFile.php b/system/src/Grav/Framework/File/AbstractFile.php index 6b53d12c5..b82bb33d2 100644 --- a/system/src/Grav/Framework/File/AbstractFile.php +++ b/system/src/Grav/Framework/File/AbstractFile.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/CsvFile.php b/system/src/Grav/Framework/File/CsvFile.php index 25c0c028b..999f88a52 100644 --- a/system/src/Grav/Framework/File/CsvFile.php +++ b/system/src/Grav/Framework/File/CsvFile.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/DataFile.php b/system/src/Grav/Framework/File/DataFile.php index 8bf4ad500..114146f94 100644 --- a/system/src/Grav/Framework/File/DataFile.php +++ b/system/src/Grav/Framework/File/DataFile.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/File.php b/system/src/Grav/Framework/File/File.php index ce431c41c..1d4055aec 100644 --- a/system/src/Grav/Framework/File/File.php +++ b/system/src/Grav/Framework/File/File.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/Formatter/AbstractFormatter.php b/system/src/Grav/Framework/File/Formatter/AbstractFormatter.php index 49ec9bb92..f5ff3f24a 100644 --- a/system/src/Grav/Framework/File/Formatter/AbstractFormatter.php +++ b/system/src/Grav/Framework/File/Formatter/AbstractFormatter.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File\Formatter * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/Formatter/CsvFormatter.php b/system/src/Grav/Framework/File/Formatter/CsvFormatter.php index 1f7158abb..9d0a9a882 100644 --- a/system/src/Grav/Framework/File/Formatter/CsvFormatter.php +++ b/system/src/Grav/Framework/File/Formatter/CsvFormatter.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File\Formatter * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/Formatter/IniFormatter.php b/system/src/Grav/Framework/File/Formatter/IniFormatter.php index 81b4f84e9..ec169598e 100644 --- a/system/src/Grav/Framework/File/Formatter/IniFormatter.php +++ b/system/src/Grav/Framework/File/Formatter/IniFormatter.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File\Formatter * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/Formatter/JsonFormatter.php b/system/src/Grav/Framework/File/Formatter/JsonFormatter.php index 88899fe07..6b19690c3 100644 --- a/system/src/Grav/Framework/File/Formatter/JsonFormatter.php +++ b/system/src/Grav/Framework/File/Formatter/JsonFormatter.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File\Formatter * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/Formatter/MarkdownFormatter.php b/system/src/Grav/Framework/File/Formatter/MarkdownFormatter.php index 1ab36a277..8a624df55 100644 --- a/system/src/Grav/Framework/File/Formatter/MarkdownFormatter.php +++ b/system/src/Grav/Framework/File/Formatter/MarkdownFormatter.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File\Formatter * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/Formatter/SerializeFormatter.php b/system/src/Grav/Framework/File/Formatter/SerializeFormatter.php index f22eed442..f045d71e3 100644 --- a/system/src/Grav/Framework/File/Formatter/SerializeFormatter.php +++ b/system/src/Grav/Framework/File/Formatter/SerializeFormatter.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File\Formatter * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/Formatter/YamlFormatter.php b/system/src/Grav/Framework/File/Formatter/YamlFormatter.php index 316e7c44e..32d4d296a 100644 --- a/system/src/Grav/Framework/File/Formatter/YamlFormatter.php +++ b/system/src/Grav/Framework/File/Formatter/YamlFormatter.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File\Formatter * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/IniFile.php b/system/src/Grav/Framework/File/IniFile.php index 34c2bd9b5..6cda6096c 100644 --- a/system/src/Grav/Framework/File/IniFile.php +++ b/system/src/Grav/Framework/File/IniFile.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/Interfaces/FileFormatterInterface.php b/system/src/Grav/Framework/File/Interfaces/FileFormatterInterface.php index cce51b288..49eda4f1d 100644 --- a/system/src/Grav/Framework/File/Interfaces/FileFormatterInterface.php +++ b/system/src/Grav/Framework/File/Interfaces/FileFormatterInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/Interfaces/FileInterface.php b/system/src/Grav/Framework/File/Interfaces/FileInterface.php index fb63cee04..015b1ada2 100644 --- a/system/src/Grav/Framework/File/Interfaces/FileInterface.php +++ b/system/src/Grav/Framework/File/Interfaces/FileInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/JsonFile.php b/system/src/Grav/Framework/File/JsonFile.php index 604ce7bc2..f3b0902c8 100644 --- a/system/src/Grav/Framework/File/JsonFile.php +++ b/system/src/Grav/Framework/File/JsonFile.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/MarkdownFile.php b/system/src/Grav/Framework/File/MarkdownFile.php index ddfd8c2ec..4ae3aa0de 100644 --- a/system/src/Grav/Framework/File/MarkdownFile.php +++ b/system/src/Grav/Framework/File/MarkdownFile.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/YamlFile.php b/system/src/Grav/Framework/File/YamlFile.php index a10dd8189..29224ce78 100644 --- a/system/src/Grav/Framework/File/YamlFile.php +++ b/system/src/Grav/Framework/File/YamlFile.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Filesystem/Filesystem.php b/system/src/Grav/Framework/Filesystem/Filesystem.php index ca826390c..9b077d780 100644 --- a/system/src/Grav/Framework/Filesystem/Filesystem.php +++ b/system/src/Grav/Framework/Filesystem/Filesystem.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Filesystem * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Filesystem/Interfaces/FilesystemInterface.php b/system/src/Grav/Framework/Filesystem/Interfaces/FilesystemInterface.php index 130f69628..0e280a837 100644 --- a/system/src/Grav/Framework/Filesystem/Interfaces/FilesystemInterface.php +++ b/system/src/Grav/Framework/Filesystem/Interfaces/FilesystemInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Filesystem * - * @copyright Copyright (C) 2015 - 2018 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Flex.php b/system/src/Grav/Framework/Flex/Flex.php index b1ca46a7a..87392823d 100644 --- a/system/src/Grav/Framework/Flex/Flex.php +++ b/system/src/Grav/Framework/Flex/Flex.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/FlexCollection.php b/system/src/Grav/Framework/Flex/FlexCollection.php index 3c956794c..ee56ba410 100644 --- a/system/src/Grav/Framework/Flex/FlexCollection.php +++ b/system/src/Grav/Framework/Flex/FlexCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/FlexDirectory.php b/system/src/Grav/Framework/Flex/FlexDirectory.php index c8efd2472..093074806 100644 --- a/system/src/Grav/Framework/Flex/FlexDirectory.php +++ b/system/src/Grav/Framework/Flex/FlexDirectory.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/FlexDirectoryForm.php b/system/src/Grav/Framework/Flex/FlexDirectoryForm.php index 4339124e2..ba26b6319 100644 --- a/system/src/Grav/Framework/Flex/FlexDirectoryForm.php +++ b/system/src/Grav/Framework/Flex/FlexDirectoryForm.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/FlexForm.php b/system/src/Grav/Framework/Flex/FlexForm.php index 34fe2dc12..83c98d6bc 100644 --- a/system/src/Grav/Framework/Flex/FlexForm.php +++ b/system/src/Grav/Framework/Flex/FlexForm.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -122,6 +122,10 @@ class FlexForm implements FlexObjectFormInterface, JsonSerializable $this->setFlashLookupFolder($directory->getBlueprint()->get('form/flash_folder') ?? 'tmp://forms/[SESSIONID]'); $this->form = $options['form'] ?? null; + if (!empty($options['reset'])) { + $this->getFlash()->delete(); + } + $this->initialize(); } diff --git a/system/src/Grav/Framework/Flex/FlexFormFlash.php b/system/src/Grav/Framework/Flex/FlexFormFlash.php index 94c26de3e..feb7a9ee9 100644 --- a/system/src/Grav/Framework/Flex/FlexFormFlash.php +++ b/system/src/Grav/Framework/Flex/FlexFormFlash.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/FlexIndex.php b/system/src/Grav/Framework/Flex/FlexIndex.php index d3e800a65..98f6c8bbb 100644 --- a/system/src/Grav/Framework/Flex/FlexIndex.php +++ b/system/src/Grav/Framework/Flex/FlexIndex.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -38,6 +38,7 @@ use function in_array; * @template C of FlexCollectionInterface * @extends ObjectIndex * @implements FlexIndexInterface + * @mixin C */ class FlexIndex extends ObjectIndex implements FlexCollectionInterface, FlexIndexInterface { diff --git a/system/src/Grav/Framework/Flex/FlexObject.php b/system/src/Grav/Framework/Flex/FlexObject.php index f8abb7387..9011745ad 100644 --- a/system/src/Grav/Framework/Flex/FlexObject.php +++ b/system/src/Grav/Framework/Flex/FlexObject.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexAuthorizeInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexAuthorizeInterface.php index 27ab7752c..102dbf4a7 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexAuthorizeInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexAuthorizeInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexCollectionInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexCollectionInterface.php index ff36d0dd2..6fd81feb7 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexCollectionInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexCollectionInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexCommonInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexCommonInterface.php index 333f35a35..ed045e25f 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexCommonInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexCommonInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryFormInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryFormInterface.php index 0e666bbf5..df6f7d6a6 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryFormInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryFormInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php index 47203d90b..752324133 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexFormInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexFormInterface.php index 45d5b3349..9539a154c 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexFormInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexFormInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexIndexInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexIndexInterface.php index ed1c69120..91bf14893 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexIndexInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexIndexInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexInterface.php index b87bf0854..3c5a103d2 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexObjectFormInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexObjectFormInterface.php index eece60ead..044ee612d 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexObjectFormInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexObjectFormInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexObjectInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexObjectInterface.php index 74fb4e165..a1e3e3b92 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexObjectInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexObjectInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexStorageInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexStorageInterface.php index 0dca5ee85..08c433596 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexStorageInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexStorageInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexTranslateInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexTranslateInterface.php index f3652ef29..28e488860 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexTranslateInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexTranslateInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Pages/FlexPageCollection.php b/system/src/Grav/Framework/Flex/Pages/FlexPageCollection.php index 326e8292d..d5532084f 100644 --- a/system/src/Grav/Framework/Flex/Pages/FlexPageCollection.php +++ b/system/src/Grav/Framework/Flex/Pages/FlexPageCollection.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Pages/FlexPageIndex.php b/system/src/Grav/Framework/Flex/Pages/FlexPageIndex.php index 08e6335d5..47a5e066d 100644 --- a/system/src/Grav/Framework/Flex/Pages/FlexPageIndex.php +++ b/system/src/Grav/Framework/Flex/Pages/FlexPageIndex.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php b/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php index af4141599..09f9e60ae 100644 --- a/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php +++ b/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -354,8 +354,9 @@ class FlexPageObject extends FlexObject implements PageInterface, FlexTranslateI */ public function setNestedProperty($property, $value, $separator = null) { - if (strpos($property, 'header.') === 0) { - $this->getProperty('header')->set(str_replace('header.', '', $property), $value, $separator); + $separator = $separator ?: '.'; + if (strpos($property, 'header' . $separator) === 0) { + $this->getProperty('header')->set(str_replace('header' . $separator, '', $property), $value, $separator); return $this; } @@ -372,8 +373,9 @@ class FlexPageObject extends FlexObject implements PageInterface, FlexTranslateI */ public function unsetNestedProperty($property, $separator = null) { - if (strpos($property, 'header.') === 0) { - $this->getProperty('header')->undef(str_replace('header.', '', $property), $separator); + $separator = $separator ?: '.'; + if (strpos($property, 'header' . $separator) === 0) { + $this->getProperty('header')->undef(str_replace('header' . $separator, '', $property), $separator); return $this; } diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageAuthorsTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageAuthorsTrait.php index b775edb4f..d7af40fa9 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageAuthorsTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageAuthorsTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php index f17f27626..6aff73277 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -810,10 +810,14 @@ trait PageContentTrait $keepTwig = (bool)($options['keep_twig'] ?? false); if ($keepTwig) { + $token = [ + '/' . Utils::generateRandomString(3), + Utils::generateRandomString(3) . '/' + ]; // Base64 encode any twig. $content = preg_replace_callback( - ['/({#)(.*?)(#})/mu', '/({{)(.*?)(}})/mu', '/({%)(.*?)(%})/mu'], - static function ($matches) { return $matches[1] . base64_encode($matches[2]) . $matches[3]; }, + ['/({#.*?#})/mu', '/({{.*?}})/mu', '/({%.*?%})/mu'], + static function ($matches) use ($token) { return $token[0] . base64_encode($matches[1]) . $token[1]; }, $content ); } @@ -823,8 +827,8 @@ trait PageContentTrait if ($keepTwig) { // Base64 decode the encoded twig. $content = preg_replace_callback( - ['/({#)(.*?)(#})/mu', '/({{)(.*?)(}})/mu', '/({%)(.*?)(%})/mu'], - static function ($matches) { return $matches[1] . base64_decode($matches[2]) . $matches[3]; }, + ['`' . $token[0] . '([A-Za-z0-9+/]+={0,2})' . $token[1] . '`mu'], + static function ($matches) { return base64_decode($matches[1]); }, $content ); } diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php index c6a9475d2..ba81d8f29 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -619,7 +619,7 @@ trait PageLegacyTrait // Get initial metadata for the page $metadata = array_merge($defaultMetadata, $siteMetadata, $headerMetadata); - $header_tag_http_equivs = ['content-type', 'default-style', 'refresh', 'x-ua-compatible']; + $header_tag_http_equivs = ['content-type', 'default-style', 'refresh', 'x-ua-compatible', 'content-security-policy']; $escape = !$config->get('system.strict_mode.twig_compat', false) || $config->get('system.twig.autoescape', true); // Build an array of meta objects.. @@ -643,7 +643,7 @@ trait PageLegacyTrait if (in_array($key, $header_tag_http_equivs, true)) { $this->_metadata[$key] = [ 'http_equiv' => $key, - 'content' => $escape ? htmlspecialchars($value, ENT_QUOTES | ENT_HTML5, 'UTF-8') : $value + 'content' => $escape ? htmlspecialchars($value, ENT_COMPAT, 'UTF-8') : $value ]; } elseif ($key === 'charset') { $this->_metadata[$key] = ['charset' => $escape ? htmlspecialchars($value, ENT_QUOTES | ENT_HTML5, 'UTF-8') : $value]; diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php index 26b3b607c..002973982 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -150,11 +150,6 @@ trait PageRoutableTrait $uri = $grav['uri']; $url = $uri->rootUrl($include_host) . '/' . trim($route, '/') . $this->urlExtension(); - // trim trailing / if not root - if ($url !== '/') { - $url = rtrim($url, '/'); - } - return Uri::filterPath($url); } diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageTranslateTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageTranslateTrait.php index a1aa05410..877fec10e 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageTranslateTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageTranslateTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Storage/AbstractFilesystemStorage.php b/system/src/Grav/Framework/Flex/Storage/AbstractFilesystemStorage.php index 45b9a9e46..97384abce 100644 --- a/system/src/Grav/Framework/Flex/Storage/AbstractFilesystemStorage.php +++ b/system/src/Grav/Framework/Flex/Storage/AbstractFilesystemStorage.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -20,7 +20,6 @@ use Grav\Framework\File\Formatter\MarkdownFormatter; use Grav\Framework\File\Formatter\YamlFormatter; use Grav\Framework\File\Interfaces\FileFormatterInterface; use Grav\Framework\Flex\Interfaces\FlexStorageInterface; -use RocketTheme\Toolbox\File\File; use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator; use RuntimeException; use function is_array; @@ -37,6 +36,8 @@ abstract class AbstractFilesystemStorage implements FlexStorageInterface protected $keyField = 'storage_key'; /** @var int */ protected $keyLen = 32; + /** @var bool */ + protected $caseSensitive = true; /** * @return bool @@ -98,7 +99,7 @@ abstract class AbstractFilesystemStorage implements FlexStorageInterface public function extractKeysFromRow(array $row): array { return [ - 'key' => $row[$this->keyField] ?? '' + 'key' => $this->normalizeKey($row[$this->keyField] ?? '') ]; } @@ -201,6 +202,19 @@ abstract class AbstractFilesystemStorage implements FlexStorageInterface return substr(hash('sha256', random_bytes($this->keyLen)), 0, $this->keyLen); } + /** + * @param string $key + * @return string + */ + public function normalizeKey(string $key): string + { + if ($this->caseSensitive === true) { + return $key; + } + + return mb_strtolower($key); + } + /** * Checks if a key is valid. * diff --git a/system/src/Grav/Framework/Flex/Storage/FileStorage.php b/system/src/Grav/Framework/Flex/Storage/FileStorage.php index b854555eb..2dc0757a9 100644 --- a/system/src/Grav/Framework/Flex/Storage/FileStorage.php +++ b/system/src/Grav/Framework/Flex/Storage/FileStorage.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -13,6 +13,7 @@ namespace Grav\Framework\Flex\Storage; use FilesystemIterator; use Grav\Framework\Flex\Interfaces\FlexStorageInterface; +use RuntimeException; use SplFileInfo; /** @@ -50,6 +51,73 @@ class FileStorage extends FolderStorage return $key ? "{$path}/{$key}" : $path; } + /** + * @param string $src + * @param string $dst + * @return bool + */ + public function copyRow(string $src, string $dst): bool + { + if ($this->hasKey($dst)) { + throw new RuntimeException("Cannot copy object: key '{$dst}' is already taken"); + } + + if (!$this->hasKey($src)) { + return false; + } + + return true; + } + + /** + * {@inheritdoc} + * @see FlexStorageInterface::renameRow() + */ + public function renameRow(string $src, string $dst): bool + { + if (!$this->hasKey($src)) { + return false; + } + + // Remove old file. + $path = $this->getPathFromKey($src); + $file = $this->getFile($path); + $file->delete(); + + return true; + } + + /** + * @param string $src + * @param string $dst + * @return bool + */ + protected function copyFolder(string $src, string $dst): bool + { + // Nothing to copy. + return true; + } + + /** + * @param string $src + * @param string $dst + * @return bool + */ + protected function moveFolder(string $src, string $dst): bool + { + // Nothing to move. + return true; + } + + /** + * @param string $key + * @return bool + */ + protected function canDeleteFolder(string $key): bool + { + return false; + } + /** * {@inheritdoc} */ diff --git a/system/src/Grav/Framework/Flex/Storage/FolderStorage.php b/system/src/Grav/Framework/Flex/Storage/FolderStorage.php index f6da141db..acdab7816 100644 --- a/system/src/Grav/Framework/Flex/Storage/FolderStorage.php +++ b/system/src/Grav/Framework/Flex/Storage/FolderStorage.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -242,7 +242,6 @@ class FolderStorage extends AbstractFilesystemStorage return $this->copyFolder($srcPath, $dstPath); } - /** * {@inheritdoc} * @see FlexStorageInterface::renameRow() @@ -360,7 +359,12 @@ class FolderStorage extends AbstractFilesystemStorage */ protected function prepareRow(array &$row): void { - unset($row[$this->keyField]); + if (array_key_exists($this->keyField, $row)) { + $key = $row[$this->keyField]; + if ($key === $this->normalizeKey($key)) { + unset($row[$this->keyField]); + } + } } /** @@ -401,6 +405,8 @@ class FolderStorage extends AbstractFilesystemStorage $key = $this->getNewKey(); } + $key = $this->normalizeKey($key); + // Check if the row already exists and if the key has been changed. $oldKey = $row['__META']['storage_key'] ?? null; if (is_string($oldKey) && $oldKey !== $key) { @@ -679,6 +685,7 @@ class FolderStorage extends AbstractFilesystemStorage $this->indexed = (bool)($options['indexed'] ?? false); $this->keyField = $options['key'] ?? 'storage_key'; $this->keyLen = (int)($options['key_len'] ?? 32); + $this->caseSensitive = (bool)($options['case_sensitive'] ?? true); $variables = ['FOLDER' => '%1$s', 'KEY' => '%2$s', 'KEY:2' => '%3$s', 'FILE' => '%4$s', 'EXT' => '%5$s']; $pattern = Utils::simpleTemplate($pattern, $variables); diff --git a/system/src/Grav/Framework/Flex/Storage/SimpleStorage.php b/system/src/Grav/Framework/Flex/Storage/SimpleStorage.php index ee4393f39..df889ce6d 100644 --- a/system/src/Grav/Framework/Flex/Storage/SimpleStorage.php +++ b/system/src/Grav/Framework/Flex/Storage/SimpleStorage.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Traits/FlexAuthorizeTrait.php b/system/src/Grav/Framework/Flex/Traits/FlexAuthorizeTrait.php index 0e6351b10..8cbd1d542 100644 --- a/system/src/Grav/Framework/Flex/Traits/FlexAuthorizeTrait.php +++ b/system/src/Grav/Framework/Flex/Traits/FlexAuthorizeTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php b/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php index 4277471ab..6db2eecfe 100644 --- a/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php +++ b/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php @@ -5,7 +5,7 @@ namespace Grav\Framework\Flex\Traits; /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -73,6 +73,10 @@ trait FlexMediaTrait return $media; } + /** + * @param string $field + * @return array|null + */ protected function getFieldSettings(string $field): ?array { if ($field === '') { @@ -109,6 +113,57 @@ trait FlexMediaTrait return $settings + ['accept' => '*', 'limit' => 1000, 'self' => true]; } + + protected function getMediaFields(): array + { + // Load settings for the field. + $schema = $this->getBlueprint()->schema(); + + $list = []; + foreach ($schema->getState()['items'] as $field => $settings) { + if (isset($settings['type']) && (in_array($settings['type'], ['avatar', 'file', 'pagemedia']) || !empty($settings['destination']))) { + $list[] = $field; + } + } + + return $list; + } + + /** + * @param array|mixed $value + * @param array $settings + * @return array|mixed + */ + protected function parseFileProperty($value, array $settings = []) + { + if (!is_array($value)) { + return $value; + } + + $media = $this->getMedia(); + + $list = []; + foreach ($value as $filename => $info) { + if (!is_array($info)) { + continue; + } + + /** @var Medium|null $thumbFile */ + $imageFile = $media[$filename]; + $url = $imageFile ? $imageFile->url() : null; + $list[$filename] = [ + 'name' => $info['name'] ?? null, + 'type' => $info['type'] ?? null, + 'size' => $info['size'] ?? null, + 'path' => $filename, + 'image_url' => $url, + 'thumb_url' => $url + ]; + } + + return $list; + } + /** * @param UploadedFileInterface $uploadedFile * @param string|null $filename diff --git a/system/src/Grav/Framework/Flex/Traits/FlexRelatedDirectoryTrait.php b/system/src/Grav/Framework/Flex/Traits/FlexRelatedDirectoryTrait.php index 0adfff75b..9f7380c03 100644 --- a/system/src/Grav/Framework/Flex/Traits/FlexRelatedDirectoryTrait.php +++ b/system/src/Grav/Framework/Flex/Traits/FlexRelatedDirectoryTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Form/FormFlash.php b/system/src/Grav/Framework/Form/FormFlash.php index def7e5eaf..00aab2893 100644 --- a/system/src/Grav/Framework/Form/FormFlash.php +++ b/system/src/Grav/Framework/Form/FormFlash.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Form * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Form/FormFlashFile.php b/system/src/Grav/Framework/Form/FormFlashFile.php index 108852c89..dc510e28f 100644 --- a/system/src/Grav/Framework/Form/FormFlashFile.php +++ b/system/src/Grav/Framework/Form/FormFlashFile.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Form * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Form/Interfaces/FormFactoryInterface.php b/system/src/Grav/Framework/Form/Interfaces/FormFactoryInterface.php index edf8e36cc..d21d4aa05 100644 --- a/system/src/Grav/Framework/Form/Interfaces/FormFactoryInterface.php +++ b/system/src/Grav/Framework/Form/Interfaces/FormFactoryInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Form * - * @copyright Copyright (C) 2015 - 2018 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Form/Interfaces/FormFlashInterface.php b/system/src/Grav/Framework/Form/Interfaces/FormFlashInterface.php index 61fd290ac..d51bd8d9e 100644 --- a/system/src/Grav/Framework/Form/Interfaces/FormFlashInterface.php +++ b/system/src/Grav/Framework/Form/Interfaces/FormFlashInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Form * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Form/Interfaces/FormInterface.php b/system/src/Grav/Framework/Form/Interfaces/FormInterface.php index f2d799201..98156469d 100644 --- a/system/src/Grav/Framework/Form/Interfaces/FormInterface.php +++ b/system/src/Grav/Framework/Form/Interfaces/FormInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Form * - * @copyright Copyright (C) 2015 - 2018 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Form/Traits/FormTrait.php b/system/src/Grav/Framework/Form/Traits/FormTrait.php index b5256f8e1..8dfed1983 100644 --- a/system/src/Grav/Framework/Form/Traits/FormTrait.php +++ b/system/src/Grav/Framework/Form/Traits/FormTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Form * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Interfaces/RenderInterface.php b/system/src/Grav/Framework/Interfaces/RenderInterface.php index af3efb543..7a7d9d367 100644 --- a/system/src/Grav/Framework/Interfaces/RenderInterface.php +++ b/system/src/Grav/Framework/Interfaces/RenderInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Interfaces * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Media/Interfaces/MediaCollectionInterface.php b/system/src/Grav/Framework/Media/Interfaces/MediaCollectionInterface.php index 846e368be..a3587d8cb 100644 --- a/system/src/Grav/Framework/Media/Interfaces/MediaCollectionInterface.php +++ b/system/src/Grav/Framework/Media/Interfaces/MediaCollectionInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Media/Interfaces/MediaInterface.php b/system/src/Grav/Framework/Media/Interfaces/MediaInterface.php index 20ecb3efa..2c5a4b374 100644 --- a/system/src/Grav/Framework/Media/Interfaces/MediaInterface.php +++ b/system/src/Grav/Framework/Media/Interfaces/MediaInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Media/Interfaces/MediaManipulationInterface.php b/system/src/Grav/Framework/Media/Interfaces/MediaManipulationInterface.php index 56994ac49..fef475f8b 100644 --- a/system/src/Grav/Framework/Media/Interfaces/MediaManipulationInterface.php +++ b/system/src/Grav/Framework/Media/Interfaces/MediaManipulationInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Media/Interfaces/MediaObjectInterface.php b/system/src/Grav/Framework/Media/Interfaces/MediaObjectInterface.php index e22f2466b..dc7f1481d 100644 --- a/system/src/Grav/Framework/Media/Interfaces/MediaObjectInterface.php +++ b/system/src/Grav/Framework/Media/Interfaces/MediaObjectInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Access/ArrayAccessTrait.php b/system/src/Grav/Framework/Object/Access/ArrayAccessTrait.php index a76dcc21a..de5cc7aeb 100644 --- a/system/src/Grav/Framework/Object/Access/ArrayAccessTrait.php +++ b/system/src/Grav/Framework/Object/Access/ArrayAccessTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Access/NestedArrayAccessTrait.php b/system/src/Grav/Framework/Object/Access/NestedArrayAccessTrait.php index c8056787c..e0485655c 100644 --- a/system/src/Grav/Framework/Object/Access/NestedArrayAccessTrait.php +++ b/system/src/Grav/Framework/Object/Access/NestedArrayAccessTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Access/NestedPropertyCollectionTrait.php b/system/src/Grav/Framework/Object/Access/NestedPropertyCollectionTrait.php index 96b2811bc..120c1a49d 100644 --- a/system/src/Grav/Framework/Object/Access/NestedPropertyCollectionTrait.php +++ b/system/src/Grav/Framework/Object/Access/NestedPropertyCollectionTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Access/NestedPropertyTrait.php b/system/src/Grav/Framework/Object/Access/NestedPropertyTrait.php index 707359a92..7409f4c9e 100644 --- a/system/src/Grav/Framework/Object/Access/NestedPropertyTrait.php +++ b/system/src/Grav/Framework/Object/Access/NestedPropertyTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Access/OverloadedPropertyTrait.php b/system/src/Grav/Framework/Object/Access/OverloadedPropertyTrait.php index c88591ef1..0f0f89f00 100644 --- a/system/src/Grav/Framework/Object/Access/OverloadedPropertyTrait.php +++ b/system/src/Grav/Framework/Object/Access/OverloadedPropertyTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/ArrayObject.php b/system/src/Grav/Framework/Object/ArrayObject.php index 216421f92..2bbe93781 100644 --- a/system/src/Grav/Framework/Object/ArrayObject.php +++ b/system/src/Grav/Framework/Object/ArrayObject.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Base/ObjectCollectionTrait.php b/system/src/Grav/Framework/Object/Base/ObjectCollectionTrait.php index 81a3a259e..fa0920b88 100644 --- a/system/src/Grav/Framework/Object/Base/ObjectCollectionTrait.php +++ b/system/src/Grav/Framework/Object/Base/ObjectCollectionTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Base/ObjectTrait.php b/system/src/Grav/Framework/Object/Base/ObjectTrait.php index be2957992..d4e324b46 100644 --- a/system/src/Grav/Framework/Object/Base/ObjectTrait.php +++ b/system/src/Grav/Framework/Object/Base/ObjectTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Collection/ObjectExpressionVisitor.php b/system/src/Grav/Framework/Object/Collection/ObjectExpressionVisitor.php index be733b290..d8f152431 100644 --- a/system/src/Grav/Framework/Object/Collection/ObjectExpressionVisitor.php +++ b/system/src/Grav/Framework/Object/Collection/ObjectExpressionVisitor.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Interfaces/NestedObjectCollectionInterface.php b/system/src/Grav/Framework/Object/Interfaces/NestedObjectCollectionInterface.php index 3071d8e51..0e2373eb6 100644 --- a/system/src/Grav/Framework/Object/Interfaces/NestedObjectCollectionInterface.php +++ b/system/src/Grav/Framework/Object/Interfaces/NestedObjectCollectionInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Interfaces/NestedObjectInterface.php b/system/src/Grav/Framework/Object/Interfaces/NestedObjectInterface.php index bc008a2f6..4d7a880be 100644 --- a/system/src/Grav/Framework/Object/Interfaces/NestedObjectInterface.php +++ b/system/src/Grav/Framework/Object/Interfaces/NestedObjectInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Interfaces/ObjectCollectionInterface.php b/system/src/Grav/Framework/Object/Interfaces/ObjectCollectionInterface.php index 8768826eb..3a43981b1 100644 --- a/system/src/Grav/Framework/Object/Interfaces/ObjectCollectionInterface.php +++ b/system/src/Grav/Framework/Object/Interfaces/ObjectCollectionInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Interfaces/ObjectInterface.php b/system/src/Grav/Framework/Object/Interfaces/ObjectInterface.php index be8173169..e8ec2c1e7 100644 --- a/system/src/Grav/Framework/Object/Interfaces/ObjectInterface.php +++ b/system/src/Grav/Framework/Object/Interfaces/ObjectInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/LazyObject.php b/system/src/Grav/Framework/Object/LazyObject.php index 47a105a47..309c0d6f6 100644 --- a/system/src/Grav/Framework/Object/LazyObject.php +++ b/system/src/Grav/Framework/Object/LazyObject.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/ObjectCollection.php b/system/src/Grav/Framework/Object/ObjectCollection.php index 5e3468402..0d82434a1 100644 --- a/system/src/Grav/Framework/Object/ObjectCollection.php +++ b/system/src/Grav/Framework/Object/ObjectCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/ObjectIndex.php b/system/src/Grav/Framework/Object/ObjectIndex.php index 3d4423900..2c13765bc 100644 --- a/system/src/Grav/Framework/Object/ObjectIndex.php +++ b/system/src/Grav/Framework/Object/ObjectIndex.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Property/ArrayPropertyTrait.php b/system/src/Grav/Framework/Object/Property/ArrayPropertyTrait.php index df8e3c713..fa3fed1d3 100644 --- a/system/src/Grav/Framework/Object/Property/ArrayPropertyTrait.php +++ b/system/src/Grav/Framework/Object/Property/ArrayPropertyTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Property/LazyPropertyTrait.php b/system/src/Grav/Framework/Object/Property/LazyPropertyTrait.php index 7d5b90cd9..d5baddbee 100644 --- a/system/src/Grav/Framework/Object/Property/LazyPropertyTrait.php +++ b/system/src/Grav/Framework/Object/Property/LazyPropertyTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Property/MixedPropertyTrait.php b/system/src/Grav/Framework/Object/Property/MixedPropertyTrait.php index eb2e791c5..584e812f3 100644 --- a/system/src/Grav/Framework/Object/Property/MixedPropertyTrait.php +++ b/system/src/Grav/Framework/Object/Property/MixedPropertyTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Property/ObjectPropertyTrait.php b/system/src/Grav/Framework/Object/Property/ObjectPropertyTrait.php index a397392e0..435220a19 100644 --- a/system/src/Grav/Framework/Object/Property/ObjectPropertyTrait.php +++ b/system/src/Grav/Framework/Object/Property/ObjectPropertyTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/PropertyObject.php b/system/src/Grav/Framework/Object/PropertyObject.php index c05414dac..dbeb5c432 100644 --- a/system/src/Grav/Framework/Object/PropertyObject.php +++ b/system/src/Grav/Framework/Object/PropertyObject.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Pagination/AbstractPagination.php b/system/src/Grav/Framework/Pagination/AbstractPagination.php index e98027ecd..49e7fe455 100644 --- a/system/src/Grav/Framework/Pagination/AbstractPagination.php +++ b/system/src/Grav/Framework/Pagination/AbstractPagination.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Pagination * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Pagination/AbstractPaginationPage.php b/system/src/Grav/Framework/Pagination/AbstractPaginationPage.php index e66cf8576..95ff8af35 100644 --- a/system/src/Grav/Framework/Pagination/AbstractPaginationPage.php +++ b/system/src/Grav/Framework/Pagination/AbstractPaginationPage.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Pagination * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Pagination/Interfaces/PaginationInterface.php b/system/src/Grav/Framework/Pagination/Interfaces/PaginationInterface.php index 184ec4b7f..56d336195 100644 --- a/system/src/Grav/Framework/Pagination/Interfaces/PaginationInterface.php +++ b/system/src/Grav/Framework/Pagination/Interfaces/PaginationInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Pagination * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Pagination/Interfaces/PaginationPageInterface.php b/system/src/Grav/Framework/Pagination/Interfaces/PaginationPageInterface.php index ca9014315..b90594d71 100644 --- a/system/src/Grav/Framework/Pagination/Interfaces/PaginationPageInterface.php +++ b/system/src/Grav/Framework/Pagination/Interfaces/PaginationPageInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Pagination * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Pagination/Pagination.php b/system/src/Grav/Framework/Pagination/Pagination.php index e58527725..e602872d1 100644 --- a/system/src/Grav/Framework/Pagination/Pagination.php +++ b/system/src/Grav/Framework/Pagination/Pagination.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Pagination * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Pagination/PaginationPage.php b/system/src/Grav/Framework/Pagination/PaginationPage.php index 27fadd2ac..63ceb5f63 100644 --- a/system/src/Grav/Framework/Pagination/PaginationPage.php +++ b/system/src/Grav/Framework/Pagination/PaginationPage.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Pagination * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/AbstractUri.php b/system/src/Grav/Framework/Psr7/AbstractUri.php index 5e8797c61..85d802f64 100644 --- a/system/src/Grav/Framework/Psr7/AbstractUri.php +++ b/system/src/Grav/Framework/Psr7/AbstractUri.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Request.php b/system/src/Grav/Framework/Psr7/Request.php index b92c0d434..cd65fd98f 100644 --- a/system/src/Grav/Framework/Psr7/Request.php +++ b/system/src/Grav/Framework/Psr7/Request.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Response.php b/system/src/Grav/Framework/Psr7/Response.php index 737fe788c..6cb67e0e8 100644 --- a/system/src/Grav/Framework/Psr7/Response.php +++ b/system/src/Grav/Framework/Psr7/Response.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/ServerRequest.php b/system/src/Grav/Framework/Psr7/ServerRequest.php index de29a150c..40848345b 100644 --- a/system/src/Grav/Framework/Psr7/ServerRequest.php +++ b/system/src/Grav/Framework/Psr7/ServerRequest.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Stream.php b/system/src/Grav/Framework/Psr7/Stream.php index c27191d4e..a5a104363 100644 --- a/system/src/Grav/Framework/Psr7/Stream.php +++ b/system/src/Grav/Framework/Psr7/Stream.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Traits/MessageDecoratorTrait.php b/system/src/Grav/Framework/Psr7/Traits/MessageDecoratorTrait.php index 17310b92e..39e3818ce 100644 --- a/system/src/Grav/Framework/Psr7/Traits/MessageDecoratorTrait.php +++ b/system/src/Grav/Framework/Psr7/Traits/MessageDecoratorTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Traits/RequestDecoratorTrait.php b/system/src/Grav/Framework/Psr7/Traits/RequestDecoratorTrait.php index b8425509d..13f4c6fd8 100644 --- a/system/src/Grav/Framework/Psr7/Traits/RequestDecoratorTrait.php +++ b/system/src/Grav/Framework/Psr7/Traits/RequestDecoratorTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Traits/ResponseDecoratorTrait.php b/system/src/Grav/Framework/Psr7/Traits/ResponseDecoratorTrait.php index 5a8e1d133..7b62c3c05 100644 --- a/system/src/Grav/Framework/Psr7/Traits/ResponseDecoratorTrait.php +++ b/system/src/Grav/Framework/Psr7/Traits/ResponseDecoratorTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Traits/ServerRequestDecoratorTrait.php b/system/src/Grav/Framework/Psr7/Traits/ServerRequestDecoratorTrait.php index 1d92ce9a4..33c26e0c7 100644 --- a/system/src/Grav/Framework/Psr7/Traits/ServerRequestDecoratorTrait.php +++ b/system/src/Grav/Framework/Psr7/Traits/ServerRequestDecoratorTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Traits/StreamDecoratorTrait.php b/system/src/Grav/Framework/Psr7/Traits/StreamDecoratorTrait.php index d08375924..db1e746d4 100644 --- a/system/src/Grav/Framework/Psr7/Traits/StreamDecoratorTrait.php +++ b/system/src/Grav/Framework/Psr7/Traits/StreamDecoratorTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Traits/UploadedFileDecoratorTrait.php b/system/src/Grav/Framework/Psr7/Traits/UploadedFileDecoratorTrait.php index acb6aa66e..e0c65bddd 100644 --- a/system/src/Grav/Framework/Psr7/Traits/UploadedFileDecoratorTrait.php +++ b/system/src/Grav/Framework/Psr7/Traits/UploadedFileDecoratorTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Traits/UriDecorationTrait.php b/system/src/Grav/Framework/Psr7/Traits/UriDecorationTrait.php index 6f61fb338..607d7571f 100644 --- a/system/src/Grav/Framework/Psr7/Traits/UriDecorationTrait.php +++ b/system/src/Grav/Framework/Psr7/Traits/UriDecorationTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/UploadedFile.php b/system/src/Grav/Framework/Psr7/UploadedFile.php index d058f9a72..f13674228 100644 --- a/system/src/Grav/Framework/Psr7/UploadedFile.php +++ b/system/src/Grav/Framework/Psr7/UploadedFile.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Uri.php b/system/src/Grav/Framework/Psr7/Uri.php index 95cafc751..c920b3373 100644 --- a/system/src/Grav/Framework/Psr7/Uri.php +++ b/system/src/Grav/Framework/Psr7/Uri.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/RequestHandler/Exception/InvalidArgumentException.php b/system/src/Grav/Framework/RequestHandler/Exception/InvalidArgumentException.php index 3ff8f2eed..451e58642 100644 --- a/system/src/Grav/Framework/RequestHandler/Exception/InvalidArgumentException.php +++ b/system/src/Grav/Framework/RequestHandler/Exception/InvalidArgumentException.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\RequestHandler * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/RequestHandler/Exception/NotFoundException.php b/system/src/Grav/Framework/RequestHandler/Exception/NotFoundException.php index 42eaa0ed1..28a226a4e 100644 --- a/system/src/Grav/Framework/RequestHandler/Exception/NotFoundException.php +++ b/system/src/Grav/Framework/RequestHandler/Exception/NotFoundException.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\RequestHandler * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/RequestHandler/Exception/NotHandledException.php b/system/src/Grav/Framework/RequestHandler/Exception/NotHandledException.php index 8817ce594..1b18473f5 100644 --- a/system/src/Grav/Framework/RequestHandler/Exception/NotHandledException.php +++ b/system/src/Grav/Framework/RequestHandler/Exception/NotHandledException.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\RequestHandler * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/RequestHandler/Exception/PageExpiredException.php b/system/src/Grav/Framework/RequestHandler/Exception/PageExpiredException.php index ab56ba1b7..747c0ca5a 100644 --- a/system/src/Grav/Framework/RequestHandler/Exception/PageExpiredException.php +++ b/system/src/Grav/Framework/RequestHandler/Exception/PageExpiredException.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\RequestHandler * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/RequestHandler/Exception/RequestException.php b/system/src/Grav/Framework/RequestHandler/Exception/RequestException.php index 2ae31010f..60799644f 100644 --- a/system/src/Grav/Framework/RequestHandler/Exception/RequestException.php +++ b/system/src/Grav/Framework/RequestHandler/Exception/RequestException.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\RequestHandler * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/RequestHandler/Middlewares/Exceptions.php b/system/src/Grav/Framework/RequestHandler/Middlewares/Exceptions.php index dba0b4315..a9935eeb0 100644 --- a/system/src/Grav/Framework/RequestHandler/Middlewares/Exceptions.php +++ b/system/src/Grav/Framework/RequestHandler/Middlewares/Exceptions.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\RequestHandler * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/RequestHandler/RequestHandler.php b/system/src/Grav/Framework/RequestHandler/RequestHandler.php index 97d5c0c89..5b0380583 100644 --- a/system/src/Grav/Framework/RequestHandler/RequestHandler.php +++ b/system/src/Grav/Framework/RequestHandler/RequestHandler.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\RequestHandler * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/RequestHandler/Traits/RequestHandlerTrait.php b/system/src/Grav/Framework/RequestHandler/Traits/RequestHandlerTrait.php index e8905859e..1b5a79e8d 100644 --- a/system/src/Grav/Framework/RequestHandler/Traits/RequestHandlerTrait.php +++ b/system/src/Grav/Framework/RequestHandler/Traits/RequestHandlerTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\RequestHandler * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Route/Route.php b/system/src/Grav/Framework/Route/Route.php index d7554b73e..f9a7fa722 100644 --- a/system/src/Grav/Framework/Route/Route.php +++ b/system/src/Grav/Framework/Route/Route.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Route * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Route/RouteFactory.php b/system/src/Grav/Framework/Route/RouteFactory.php index 9d8213c77..68baf55b6 100644 --- a/system/src/Grav/Framework/Route/RouteFactory.php +++ b/system/src/Grav/Framework/Route/RouteFactory.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Route * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Session/Exceptions/SessionException.php b/system/src/Grav/Framework/Session/Exceptions/SessionException.php index f24df0a79..5ad948b67 100644 --- a/system/src/Grav/Framework/Session/Exceptions/SessionException.php +++ b/system/src/Grav/Framework/Session/Exceptions/SessionException.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Session * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Session/Messages.php b/system/src/Grav/Framework/Session/Messages.php index 83d8c8f18..5d854a218 100644 --- a/system/src/Grav/Framework/Session/Messages.php +++ b/system/src/Grav/Framework/Session/Messages.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Session * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Session/Session.php b/system/src/Grav/Framework/Session/Session.php index 5b656e9ce..ddab08d75 100644 --- a/system/src/Grav/Framework/Session/Session.php +++ b/system/src/Grav/Framework/Session/Session.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Session * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ @@ -11,6 +11,8 @@ namespace Grav\Framework\Session; use ArrayIterator; use Exception; +use Grav\Common\Debugger; +use Grav\Common\Grav; use Grav\Common\User\Interfaces\UserInterface; use Grav\Framework\Session\Exceptions\SessionException; use RuntimeException; @@ -28,6 +30,7 @@ class Session implements SessionInterface protected $options = []; /** @var bool */ protected $started = false; + /** @var Session */ protected static $instance; @@ -216,12 +219,22 @@ class Session implements SessionInterface // Should not happen usually. This could be attack or due to unstable network. Destroy this session. $this->invalidate(); - throw new RuntimeException('Your session was destroyed.', 500); + throw new RuntimeException('Obsolete session access.', 500); } // Not fully expired yet. Could be lost cookie by unstable network. Start session with new session id. session_write_close(); + + // Start session with new session id. + $useStrictMode = $options['use_strict_mode'] ?? 0; + if ($useStrictMode) { + ini_set('session.use_strict_mode', '0'); + } session_id($newId); + if ($useStrictMode) { + ini_set('session.use_strict_mode', '1'); + } + $success = @session_start($options); if (!$success) { $last = error_get_last(); @@ -246,22 +259,7 @@ class Session implements SessionInterface // Extend the lifetime of the session. if ($sessionExists) { - $params = session_get_cookie_params(); - - $cookie_options = array ( - 'expires' => time() + $params['lifetime'], - 'path' => $params['path'], - 'domain' => $params['domain'], - 'secure' => $params['secure'], - 'httponly' => $params['httponly'], - 'samesite' => $params['samesite'] - ); - - setcookie( - $sessionName, - session_id(), - $cookie_options - ); + $this->setCookie(); } return $this; @@ -281,20 +279,29 @@ class Session implements SessionInterface return $this; } - // TODO: session_create_id() segfaults in PHP 7.3 (PHP bug #73461), remove phpstan rule when fixing this one. - $newId = 0; // session_create_id(); + // TODO: session_create_id() segfaults in PHP 7.3 (PHP bug #73461), remove phpstan rule when removing this one. + if (PHP_VERSION_ID < 70400) { + $newId = 0; + } else { + // Session id creation may fail with some session storages. + $newId = @session_create_id() ?: 0; + } // Set destroyed timestamp for the old session as well as pointer to the new id. $this->__set('session_destroyed', time()); $this->__set('session_new_id', $newId); // Keep the old session alive to avoid lost sessions by unstable network. - // TODO: remove session_regenerate_id() and use session_create_id() from above when not in PHP 7.3 (PHP bug #73461). - session_regenerate_id(false); - session_write_close(); + if (!$newId) { + /** @var Debugger $debugger */ + $debugger = Grav::instance()['debugger']; + $debugger->addMessage('Session fixation lost session detection is turned of due to server limitations.', 'warning'); - // Start session with new session id. - if ($newId) { + session_regenerate_id(false); + } else { + session_write_close(); + + // Start session with new session id. $useStrictMode = $this->options['use_strict_mode'] ?? 0; if ($useStrictMode) { ini_set('session.use_strict_mode', '0'); @@ -303,8 +310,19 @@ class Session implements SessionInterface if ($useStrictMode) { ini_set('session.use_strict_mode', '1'); } + + $this->removeCookie(); + + $success = @session_start($this->options); + if (!$success) { + $last = error_get_last(); + $error = $last ? $last['message'] : 'Unknown error'; + + throw new RuntimeException($error); + } + + $this->onSessionStart(); } - session_start(); // New session does not have these. $this->__unset('session_destroyed'); @@ -331,6 +349,8 @@ class Session implements SessionInterface 'samesite' => $params['samesite'] ); + $this->removeCookie(); + setcookie( session_name(), '', @@ -442,6 +462,61 @@ class Session implements SessionInterface { } + /** + * @return void + */ + protected function setCookie(): void + { + $params = session_get_cookie_params(); + + $cookie_options = array ( + 'expires' => time() + $params['lifetime'], + 'path' => $params['path'], + 'domain' => $params['domain'], + 'secure' => $params['secure'], + 'httponly' => $params['httponly'], + 'samesite' => $params['samesite'] + ); + + $this->removeCookie(); + + setcookie( + session_name(), + session_id(), + $cookie_options + ); + } + + protected function removeCookie(): void + { + $search = " {$this->getName()}="; + $cookies = []; + $found = false; + + foreach (headers_list() as $header) { + // Identify cookie headers + if (strpos($header, 'Set-Cookie:') === 0) { + // Add all but session cookie(s). + if (!str_contains($header, $search)) { + $cookies[] = $header; + } else { + $found = true; + } + } + } + + // Nothing to do. + if (false === $found) { + return; + } + + // Remove all cookies and put back all but session cookie. + header_remove('Set-Cookie'); + foreach($cookies as $cookie) { + header($cookie, false); + } + } + /** * @param string $key * @param mixed $value diff --git a/system/src/Grav/Framework/Session/SessionInterface.php b/system/src/Grav/Framework/Session/SessionInterface.php index 91ca9ce28..43ca40fd9 100644 --- a/system/src/Grav/Framework/Session/SessionInterface.php +++ b/system/src/Grav/Framework/Session/SessionInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Session * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Uri/Uri.php b/system/src/Grav/Framework/Uri/Uri.php index 1ec86c6f1..c43496ea9 100644 --- a/system/src/Grav/Framework/Uri/Uri.php +++ b/system/src/Grav/Framework/Uri/Uri.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Uri * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Uri/UriFactory.php b/system/src/Grav/Framework/Uri/UriFactory.php index 237aa0aa6..f7724b78d 100644 --- a/system/src/Grav/Framework/Uri/UriFactory.php +++ b/system/src/Grav/Framework/Uri/UriFactory.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Uri * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Uri/UriPartsFilter.php b/system/src/Grav/Framework/Uri/UriPartsFilter.php index 4761f2da7..71a5135d6 100644 --- a/system/src/Grav/Framework/Uri/UriPartsFilter.php +++ b/system/src/Grav/Framework/Uri/UriPartsFilter.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Uri * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Installer/Install.php b/system/src/Grav/Installer/Install.php index d10427489..def3446dc 100644 --- a/system/src/Grav/Installer/Install.php +++ b/system/src/Grav/Installer/Install.php @@ -3,7 +3,7 @@ /** * @package Grav\Installer * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Installer/InstallException.php b/system/src/Grav/Installer/InstallException.php index 4471107d9..145b7c9cc 100644 --- a/system/src/Grav/Installer/InstallException.php +++ b/system/src/Grav/Installer/InstallException.php @@ -3,7 +3,7 @@ /** * @package Grav\Installer * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Installer/Versions.php b/system/src/Grav/Installer/Versions.php index c66b344f8..cc2687504 100644 --- a/system/src/Grav/Installer/Versions.php +++ b/system/src/Grav/Installer/Versions.php @@ -3,7 +3,7 @@ /** * @package Grav\Installer * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Installer/YamlUpdater.php b/system/src/Grav/Installer/YamlUpdater.php index 0747854d2..9af20558f 100644 --- a/system/src/Grav/Installer/YamlUpdater.php +++ b/system/src/Grav/Installer/YamlUpdater.php @@ -3,7 +3,7 @@ /** * @package Grav\Installer * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/templates/partials/metadata.html.twig b/system/templates/partials/metadata.html.twig index bf323e7ab..fcf121773 100644 --- a/system/templates/partials/metadata.html.twig +++ b/system/templates/partials/metadata.html.twig @@ -1,3 +1,3 @@ {% for meta in page.metadata %} - -{% endfor %} \ No newline at end of file + +{% endfor %} diff --git a/tests/_bootstrap.php b/tests/_bootstrap.php index 59be24ede..618781de6 100644 --- a/tests/_bootstrap.php +++ b/tests/_bootstrap.php @@ -12,6 +12,10 @@ $grav = function () { $grav = Grav::instance(); $grav['config']->init(); + // This must be set first before the other init + $grav['config']->set('system.languages.supported', ['en', 'fr', 'vi']); + $grav['config']->set('system.languages.default_lang', 'en'); + foreach (array_keys($grav['setup']->getStreams()) as $stream) { @stream_wrapper_unregister($stream); } diff --git a/tests/fake/simple-site/user/pages/04.page-translated/default.en.md b/tests/fake/simple-site/user/pages/04.page-translated/default.en.md new file mode 100644 index 000000000..e69de29bb diff --git a/tests/fake/simple-site/user/pages/04.page-translated/default.fr.md b/tests/fake/simple-site/user/pages/04.page-translated/default.fr.md new file mode 100644 index 000000000..97156cc5e --- /dev/null +++ b/tests/fake/simple-site/user/pages/04.page-translated/default.fr.md @@ -0,0 +1,5 @@ +--- +title: Simple Page avec traduction +--- + +Simple Page Content in English \ No newline at end of file diff --git a/tests/fake/simple-site/user/pages/05.translatedlong/part2/default.en.md b/tests/fake/simple-site/user/pages/05.translatedlong/part2/default.en.md new file mode 100644 index 000000000..e69de29bb diff --git a/tests/fake/simple-site/user/pages/05.translatedlong/part2/default.fr.md b/tests/fake/simple-site/user/pages/05.translatedlong/part2/default.fr.md new file mode 100644 index 000000000..715706234 --- /dev/null +++ b/tests/fake/simple-site/user/pages/05.translatedlong/part2/default.fr.md @@ -0,0 +1,5 @@ +--- +title: Simple Page avec traduction +--- + +Page Simple FR \ No newline at end of file diff --git a/tests/fake/single-page-translated/user/pages/01.simple-page/default.en.md b/tests/fake/single-page-translated/user/pages/01.simple-page/default.en.md new file mode 100644 index 000000000..e69de29bb diff --git a/tests/fake/single-page-translated/user/pages/01.simple-page/default.fr.md b/tests/fake/single-page-translated/user/pages/01.simple-page/default.fr.md new file mode 100644 index 000000000..715706234 --- /dev/null +++ b/tests/fake/single-page-translated/user/pages/01.simple-page/default.fr.md @@ -0,0 +1,5 @@ +--- +title: Simple Page avec traduction +--- + +Page Simple FR \ No newline at end of file diff --git a/tests/unit/Grav/Common/Page/PagesTest.php b/tests/unit/Grav/Common/Page/PagesTest.php index 6301a1b3d..edff75bc8 100644 --- a/tests/unit/Grav/Common/Page/PagesTest.php +++ b/tests/unit/Grav/Common/Page/PagesTest.php @@ -236,6 +236,31 @@ class PagesTest extends \Codeception\TestCase\Test self::assertSame('—-▸ Blog', $list['/blog']); } + public function testTranslatedLanguages(): void + { + /** @var UniformResourceLocator $locator */ + $locator = $this->grav['locator']; + $folder = $locator->findResource('tests://'); + + $page = $this->pages->get($folder . '/fake/simple-site/user/pages/04.page-translated'); + $this->assertInstanceOf(PageInterface::class, $page); + $translatedLanguages = $page->translatedLanguages(); + $this->assertIsArray($translatedLanguages); + $this->assertSame(["en" => "/page-translated", "fr" => "/page-translated"], $translatedLanguages); + } + + public function testLongPathTranslatedLanguages(): void + { + /** @var UniformResourceLocator $locator */ + $locator = $this->grav['locator']; + $folder = $locator->findResource('tests://'); + $page = $this->pages->get($folder . '/fake/simple-site/user/pages/05.translatedlong/part2'); + $this->assertInstanceOf(PageInterface::class, $page); + $translatedLanguages = $page->translatedLanguages(); + $this->assertIsArray($translatedLanguages); + $this->assertSame(["en" => "/translatedlong/part2", "fr" => "/translatedlong/part2"], $translatedLanguages); + } + public function testGetTypes(): void { } diff --git a/tests/unit/Grav/Common/UtilsTest.php b/tests/unit/Grav/Common/UtilsTest.php index d396a2c3b..4329a454e 100644 --- a/tests/unit/Grav/Common/UtilsTest.php +++ b/tests/unit/Grav/Common/UtilsTest.php @@ -299,7 +299,9 @@ class UtilsTest extends \Codeception\TestCase\Test $oneLanguageNotEnabled = reset($languagesNotEnabled); if (count($languagesEnabled)) { - self::assertTrue(Utils::pathPrefixedByLangCode('/' . $languagesEnabled[0] . '/test')); + $languageCodePathPrefix = Utils::pathPrefixedByLangCode('/' . $languagesEnabled[0] . '/test'); + $this->assertIsString($languageCodePathPrefix); + $this->assertTrue(in_array($languageCodePathPrefix, $languagesEnabled)); } self::assertFalse(Utils::pathPrefixedByLangCode('/' . $oneLanguageNotEnabled . '/test')); diff --git a/tmp/.gitkeep b/tmp/.gitkeep index e69de29bb..33a9aed71 100644 --- a/tmp/.gitkeep +++ b/tmp/.gitkeep @@ -0,0 +1 @@ +/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ diff --git a/user/accounts/.gitkeep b/user/accounts/.gitkeep index e69de29bb..33a9aed71 100644 --- a/user/accounts/.gitkeep +++ b/user/accounts/.gitkeep @@ -0,0 +1 @@ +/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ diff --git a/user/data/.gitkeep b/user/data/.gitkeep index e69de29bb..33a9aed71 100644 --- a/user/data/.gitkeep +++ b/user/data/.gitkeep @@ -0,0 +1 @@ +/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ diff --git a/user/plugins/.gitkeep b/user/plugins/.gitkeep index e69de29bb..33a9aed71 100644 --- a/user/plugins/.gitkeep +++ b/user/plugins/.gitkeep @@ -0,0 +1 @@ +/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ diff --git a/user/themes/.gitkeep b/user/themes/.gitkeep index e69de29bb..33a9aed71 100644 --- a/user/themes/.gitkeep +++ b/user/themes/.gitkeep @@ -0,0 +1 @@ +/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */