From a56453cf0a98c34bfa7df1b0f37e67fe82ae1640 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 8 Dec 2021 10:15:26 +0200 Subject: [PATCH 01/98] Update clockwork --- composer.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index 6e33c9626..2bc68f592 100644 --- a/composer.lock +++ b/composer.lock @@ -888,16 +888,16 @@ }, { "name": "itsgoingd/clockwork", - "version": "v5.1.1", + "version": "v5.1.2", "source": { "type": "git", "url": "https://github.com/itsgoingd/clockwork.git", - "reference": "2daf30fa6dfc5a1ccfdb2142df59243a72c473d8" + "reference": "4f46a69b123635ba2910a3ca8d100edfadc924e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/itsgoingd/clockwork/zipball/2daf30fa6dfc5a1ccfdb2142df59243a72c473d8", - "reference": "2daf30fa6dfc5a1ccfdb2142df59243a72c473d8", + "url": "https://api.github.com/repos/itsgoingd/clockwork/zipball/4f46a69b123635ba2910a3ca8d100edfadc924e1", + "reference": "4f46a69b123635ba2910a3ca8d100edfadc924e1", "shasum": "" }, "require": { @@ -945,7 +945,7 @@ ], "support": { "issues": "https://github.com/itsgoingd/clockwork/issues", - "source": "https://github.com/itsgoingd/clockwork/tree/v5.1.1" + "source": "https://github.com/itsgoingd/clockwork/tree/v5.1.2" }, "funding": [ { @@ -953,7 +953,7 @@ "type": "github" } ], - "time": "2021-11-01T17:38:35+00:00" + "time": "2021-12-07T18:24:19+00:00" }, { "name": "league/climate", From 6079562c902a4761a1d8abb577812de7b8e33186 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 8 Dec 2021 10:58:38 +0200 Subject: [PATCH 02/98] More minor fixes for PHP 8.1 --- .../Collection/AbstractIndexCollection.php | 17 +++++++++++++---- .../Grav/Framework/Filesystem/Filesystem.php | 2 ++ .../src/Grav/Framework/Flex/FlexCollection.php | 1 + .../src/Grav/Framework/Flex/FlexDirectory.php | 4 ++++ system/src/Grav/Framework/Flex/FlexIndex.php | 1 + system/src/Grav/Framework/Flex/FlexObject.php | 1 + .../Framework/Flex/Pages/FlexPageCollection.php | 5 +++-- 7 files changed, 25 insertions(+), 6 deletions(-) diff --git a/system/src/Grav/Framework/Collection/AbstractIndexCollection.php b/system/src/Grav/Framework/Collection/AbstractIndexCollection.php index 8c98a8111..a4392c144 100644 --- a/system/src/Grav/Framework/Collection/AbstractIndexCollection.php +++ b/system/src/Grav/Framework/Collection/AbstractIndexCollection.php @@ -145,31 +145,37 @@ abstract class AbstractIndexCollection implements CollectionInterface /** * Required by interface ArrayAccess. * - * {@inheritDoc} + * @param string|int|null $offset + * @return bool * @phpstan-param TKey|null $offset */ #[\ReturnTypeWillChange] public function offsetExists($offset) { + /** @phpstan-ignore-next-line phpstan bug? */ return $offset !== null ? $this->containsKey($offset) : false; } /** * Required by interface ArrayAccess. * - * {@inheritDoc} + * @param string|int|null $offset + * @return mixed * @phpstan-param TKey|null $offset */ #[\ReturnTypeWillChange] public function offsetGet($offset) { + /** @phpstan-ignore-next-line phpstan bug? */ return $offset !== null ? $this->get($offset) : null; } /** * Required by interface ArrayAccess. * - * {@inheritDoc} + * @param string|int|null $offset + * @param mixed $value + * @return void * @phpstan-param TKey|null $offset */ #[\ReturnTypeWillChange] @@ -178,6 +184,7 @@ abstract class AbstractIndexCollection implements CollectionInterface if (null === $offset) { $this->add($value); } else { + /** @phpstan-ignore-next-line phpstan bug? */ $this->set($offset, $value); } } @@ -185,13 +192,15 @@ abstract class AbstractIndexCollection implements CollectionInterface /** * Required by interface ArrayAccess. * - * {@inheritDoc} + * @param string|int|null $offset + * @return void * @phpstan-param TKey|null $offset */ #[\ReturnTypeWillChange] public function offsetUnset($offset) { if ($offset !== null) { + /** @phpstan-ignore-next-line phpstan bug? */ $this->remove($offset); } } diff --git a/system/src/Grav/Framework/Filesystem/Filesystem.php b/system/src/Grav/Framework/Filesystem/Filesystem.php index 2f66e54c6..f4e753e08 100644 --- a/system/src/Grav/Framework/Filesystem/Filesystem.php +++ b/system/src/Grav/Framework/Filesystem/Filesystem.php @@ -239,6 +239,8 @@ class Filesystem implements FilesystemInterface if (null !== $scheme) { $info['scheme'] = $scheme; + + /** @phpstan-ignore-next-line because pathinfo('') doesn't have dirname */ $dirname = $info['dirname'] ?? '.'; if ('' !== $dirname && '.' !== $dirname) { diff --git a/system/src/Grav/Framework/Flex/FlexCollection.php b/system/src/Grav/Framework/Flex/FlexCollection.php index 8ad78f06a..17c557ae0 100644 --- a/system/src/Grav/Framework/Flex/FlexCollection.php +++ b/system/src/Grav/Framework/Flex/FlexCollection.php @@ -125,6 +125,7 @@ class FlexCollection extends ObjectCollection implements FlexCollectionInterface */ public function getFlexFeatures(): array { + /** @var array $implements */ $implements = class_implements($this); $list = []; diff --git a/system/src/Grav/Framework/Flex/FlexDirectory.php b/system/src/Grav/Framework/Flex/FlexDirectory.php index 594c34c3f..21965fce9 100644 --- a/system/src/Grav/Framework/Flex/FlexDirectory.php +++ b/system/src/Grav/Framework/Flex/FlexDirectory.php @@ -907,6 +907,10 @@ class FlexDirectory implements FlexDirectoryInterface $className = $storage['class'] ?? SimpleStorage::class; $options = $storage['options'] ?? []; + if (!is_a($className, FlexStorageInterface::class, true)) { + throw new \RuntimeException('Bad storage class: ' . $className); + } + return new $className($options); } diff --git a/system/src/Grav/Framework/Flex/FlexIndex.php b/system/src/Grav/Framework/Flex/FlexIndex.php index 14a48f5a4..1dae57d81 100644 --- a/system/src/Grav/Framework/Flex/FlexIndex.php +++ b/system/src/Grav/Framework/Flex/FlexIndex.php @@ -133,6 +133,7 @@ class FlexIndex extends ObjectIndex implements FlexIndexInterface */ public function getFlexFeatures(): array { + /** @var array $implements */ $implements = class_implements($this->getFlexDirectory()->getCollectionClass()); $list = []; diff --git a/system/src/Grav/Framework/Flex/FlexObject.php b/system/src/Grav/Framework/Flex/FlexObject.php index f4987a43c..87773470a 100644 --- a/system/src/Grav/Framework/Flex/FlexObject.php +++ b/system/src/Grav/Framework/Flex/FlexObject.php @@ -163,6 +163,7 @@ class FlexObject implements FlexObjectInterface, FlexAuthorizeInterface */ public function getFlexFeatures(): array { + /** @var array $implements */ $implements = class_implements($this); $list = []; diff --git a/system/src/Grav/Framework/Flex/Pages/FlexPageCollection.php b/system/src/Grav/Framework/Flex/Pages/FlexPageCollection.php index fe7a22107..d206921e5 100644 --- a/system/src/Grav/Framework/Flex/Pages/FlexPageCollection.php +++ b/system/src/Grav/Framework/Flex/Pages/FlexPageCollection.php @@ -155,9 +155,10 @@ class FlexPageCollection extends FlexCollection public function adjacentSibling($path, $direction = 1) { $keys = $this->getKeys(); + $direction = (int)$direction; $pos = array_search($path, $keys, true); - if ($pos !== false) { + if (is_int($pos)) { $pos += $direction; if (isset($keys[$pos])) { return $this[$keys[$pos]]; @@ -177,7 +178,7 @@ class FlexPageCollection extends FlexCollection { $pos = array_search($path, $this->getKeys(), true); - return $pos !== false ? $pos : null; + return is_int($pos) ? $pos : null; } /** From 5552ea2d705bca4faeefdd1d92dccd609092359b Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 8 Dec 2021 12:34:54 +0200 Subject: [PATCH 03/98] Replace unmaintained DOMIterators by our own versions (fixes PHP 8.1 warnings) --- composer.json | 5 +- composer.lock | 50 +-------- system/src/DOMLettersIterator.php | 165 ++++++++++++++++++++++++++++++ system/src/DOMWordsIterator.php | 158 ++++++++++++++++++++++++++++ 4 files changed, 327 insertions(+), 51 deletions(-) create mode 100644 system/src/DOMLettersIterator.php create mode 100644 system/src/DOMWordsIterator.php diff --git a/composer.json b/composer.json index 6a7455b9d..8e5924a6c 100644 --- a/composer.json +++ b/composer.json @@ -52,7 +52,6 @@ "rockettheme/toolbox": "~1.5", "maximebf/debugbar": "~1.16", "league/climate": "^3.6", - "antoligy/dom-string-iterators": "^1.0", "miljar/php-exif": "^0.6", "composer/ca-bundle": "^1.2", "dragonmantank/cron-expression": "^1.2", @@ -97,7 +96,9 @@ "Twig\\": "system/src/Twig" }, "files": [ - "system/defines.php" + "system/defines.php", + "system/src/DOMLettersIterator.php", + "system/src/DOMWordsIterator.php" ] }, "archive": { diff --git a/composer.lock b/composer.lock index 2bc68f592..2c4c4ea44 100644 --- a/composer.lock +++ b/composer.lock @@ -4,56 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "209e1ceeafd2ef97fbf90bf4b1ec5dd4", + "content-hash": "1067938388862c52927c6450e8a36df0", "packages": [ - { - "name": "antoligy/dom-string-iterators", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/antoligy/dom-string-iterators.git", - "reference": "fae88f66e1970d68c5585fc42db44f1217bf74e6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/antoligy/dom-string-iterators/zipball/fae88f66e1970d68c5585fc42db44f1217bf74e6", - "reference": "fae88f66e1970d68c5585fc42db44f1217bf74e6", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "CC0-1.0" - ], - "authors": [ - { - "name": "Alex Wilson", - "email": "a@ax.gy" - }, - { - "name": "Kornel Lesinski", - "email": "pornel@pornel.net" - }, - { - "name": "Patrick Galbraith", - "email": "patrick.j.galbraith@gmail.com" - } - ], - "description": "Composer package for DOMWordsIterator and DOMLettersIterator", - "support": { - "issues": "https://github.com/antoligy/dom-string-iterators/issues", - "source": "https://github.com/antoligy/dom-string-iterators/tree/v1.0.1" - }, - "time": "2018-02-03T16:01:11+00:00" - }, { "name": "composer/ca-bundle", "version": "1.3.1", diff --git a/system/src/DOMLettersIterator.php b/system/src/DOMLettersIterator.php new file mode 100644 index 000000000..3ebe20e4f --- /dev/null +++ b/system/src/DOMLettersIterator.php @@ -0,0 +1,165 @@ +load('example.xml'); + * foreach(new DOMLettersIterator($doc) as $letter) echo $letter; + * + * NB: If you only need characters without their position + * in the document, use DOMNode->textContent instead. + * + * @author porneL http://pornel.net + * @license Public Domain + * @url https://github.com/antoligy/dom-string-iterators + * + * @implements Iterator + */ +final class DOMLettersIterator implements Iterator +{ + /** @var DOMElement */ + private $start; + /** @var DOMElement|null */ + private $current; + /** @var int */ + private $offset = -1; + /** @var int|null */ + private $key; + /** @var array|null */ + private $letters; + + /** + * expects DOMElement or DOMDocument (see DOMDocument::load and DOMDocument::loadHTML) + * + * @param DOMNode $el + */ + public function __construct(DOMNode $el) + { + if ($el instanceof DOMDocument) { + $el = $el->documentElement; + } + + if (!$el instanceof DOMElement) { + throw new InvalidArgumentException('Invalid arguments, expected DOMElement or DOMDocument'); + } + + $this->start = $el; + } + + /** + * Returns position in text as DOMText node and character offset. + * (it's NOT a byte offset, you must use mb_substr() or similar to use this offset properly). + * node may be NULL if iterator has finished. + * + * @return array + */ + public function currentTextPosition(): array + { + return [$this->current, $this->offset]; + } + + /** + * Returns DOMElement that is currently being iterated or NULL if iterator has finished. + * + * @return DOMElement|null + */ + public function currentElement(): ?DOMElement + { + return $this->current ? $this->current->parentNode : null; + } + + // Implementation of Iterator interface + + /** + * @return int|null + */ + public function key(): ?int + { + return $this->key; + } + + /** + * @return void + */ + public function next(): void + { + if (null === $this->current) { + return; + } + + if ($this->current->nodeType === XML_TEXT_NODE || $this->current->nodeType === XML_CDATA_SECTION_NODE) { + if ($this->offset === -1) { + preg_match_all('/./us', $this->current->textContent, $m); + $this->letters = $m[0]; + } + + $this->offset++; + $this->key++; + if ($this->letters && $this->offset < count($this->letters)) { + return; + } + + $this->offset = -1; + } + + while ($this->current->nodeType === XML_ELEMENT_NODE && $this->current->firstChild) { + $this->current = $this->current->firstChild; + if ($this->current->nodeType === XML_TEXT_NODE || $this->current->nodeType === XML_CDATA_SECTION_NODE) { + $this->next(); + return; + } + } + + while (!$this->current->nextSibling && $this->current->parentNode) { + $this->current = $this->current->parentNode; + if ($this->current === $this->start) { + $this->current = null; + return; + } + } + + $this->current = $this->current->nextSibling; + + $this->next(); + } + + /** + * Return the current element + * @link https://php.net/manual/en/iterator.current.php + * + * @return string|null + */ + public function current(): ?string + { + return $this->letters ? $this->letters[$this->offset] : null; + } + + /** + * Checks if current position is valid + * @link https://php.net/manual/en/iterator.valid.php + * + * @return bool + */ + public function valid(): bool + { + return (bool)$this->current; + } + + /** + * @return void + */ + public function rewind(): void + { + $this->current = $this->start; + $this->offset = -1; + $this->key = -1; + $this->letters = []; + + $this->next(); + } +} + diff --git a/system/src/DOMWordsIterator.php b/system/src/DOMWordsIterator.php new file mode 100644 index 000000000..31ca90fe9 --- /dev/null +++ b/system/src/DOMWordsIterator.php @@ -0,0 +1,158 @@ +load('example.xml'); + * foreach(new DOMWordsIterator($doc) as $word) echo $word; + * + * @author pjgalbraith http://www.pjgalbraith.com + * @author porneL http://pornel.net (based on DOMLettersIterator available at http://pornel.net/source/domlettersiterator.php) + * @license Public Domain + * @url https://github.com/antoligy/dom-string-iterators + * + * @implements Iterator + */ + +final class DOMWordsIterator implements Iterator +{ + /** @var DOMElement */ + private $start; + /** @var DOMElement|null */ + private $current; + /** @var int */ + private $offset = -1; + /** @var int|null */ + private $key; + /** @var array|null */ + private $words; + + /** + * expects DOMElement or DOMDocument (see DOMDocument::load and DOMDocument::loadHTML) + * + * @param DOMNode $el + */ + public function __construct(DOMNode $el) + { + if ($el instanceof DOMDocument) { + $el = $el->documentElement; + } + + if (!$el instanceof DOMElement) { + throw new InvalidArgumentException('Invalid arguments, expected DOMElement or DOMDocument'); + } + + $this->start = $el; + } + + /** + * Returns position in text as DOMText node and character offset. + * (it's NOT a byte offset, you must use mb_substr() or similar to use this offset properly). + * node may be NULL if iterator has finished. + * + * @return array + */ + public function currentWordPosition(): array + { + return [$this->current, $this->offset, $this->words]; + } + + /** + * Returns DOMElement that is currently being iterated or NULL if iterator has finished. + * + * @return DOMElement|null + */ + public function currentElement(): ?DOMElement + { + return $this->current ? $this->current->parentNode : null; + } + + // Implementation of Iterator interface + + /** + * Return the key of the current element + * @link https://php.net/manual/en/iterator.key.php + * @return int|null + */ + public function key(): ?int + { + return $this->key; + } + + /** + * @return void + */ + public function next(): void + { + if (null === $this->current) { + return; + } + + if ($this->current->nodeType === XML_TEXT_NODE || $this->current->nodeType === XML_CDATA_SECTION_NODE) { + if ($this->offset === -1) { + $this->words = preg_split("/[\n\r\t ]+/u", $this->current->textContent, -1, PREG_SPLIT_NO_EMPTY) ?: []; + } + $this->offset++; + + if ($this->words && $this->offset < count($this->words)) { + $this->key++; + return; + } + $this->offset = -1; + } + + while ($this->current->nodeType === XML_ELEMENT_NODE && $this->current->firstChild) { + $this->current = $this->current->firstChild; + if ($this->current->nodeType === XML_TEXT_NODE || $this->current->nodeType === XML_CDATA_SECTION_NODE) { + $this->next(); + return; + } + } + + while (!$this->current->nextSibling && $this->current->parentNode) { + $this->current = $this->current->parentNode; + if ($this->current === $this->start) { + $this->current = null; + return; + } + } + + $this->current = $this->current->nextSibling; + + $this->next(); + } + + /** + * Return the current element + * @link https://php.net/manual/en/iterator.current.php + * @return string|null + */ + public function current(): ?string + { + return $this->words ? $this->words[$this->offset] : null; + } + + /** + * Checks if current position is valid + * @link https://php.net/manual/en/iterator.valid.php + * @return bool + */ + public function valid(): bool + { + return (bool)$this->current; + } + + public function rewind(): void + { + $this->current = $this->start; + $this->offset = -1; + $this->key = -1; + $this->words = []; + + $this->next(); + } +} From 9df7b35c658c6ecbb5a5788d3d1b2c03c2dc6f6d Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 8 Dec 2021 12:49:13 +0200 Subject: [PATCH 04/98] DomIterator keys were off-by-one --- system/src/DOMLettersIterator.php | 2 +- system/src/DOMWordsIterator.php | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/system/src/DOMLettersIterator.php b/system/src/DOMLettersIterator.php index 3ebe20e4f..e3c2c4ad9 100644 --- a/system/src/DOMLettersIterator.php +++ b/system/src/DOMLettersIterator.php @@ -156,7 +156,7 @@ final class DOMLettersIterator implements Iterator { $this->current = $this->start; $this->offset = -1; - $this->key = -1; + $this->key = 0; $this->letters = []; $this->next(); diff --git a/system/src/DOMWordsIterator.php b/system/src/DOMWordsIterator.php index 31ca90fe9..fb7c2e374 100644 --- a/system/src/DOMWordsIterator.php +++ b/system/src/DOMWordsIterator.php @@ -28,7 +28,7 @@ final class DOMWordsIterator implements Iterator private $offset = -1; /** @var int|null */ private $key; - /** @var array|null */ + /** @var array>|null */ private $words; /** @@ -94,7 +94,7 @@ final class DOMWordsIterator implements Iterator if ($this->current->nodeType === XML_TEXT_NODE || $this->current->nodeType === XML_CDATA_SECTION_NODE) { if ($this->offset === -1) { - $this->words = preg_split("/[\n\r\t ]+/u", $this->current->textContent, -1, PREG_SPLIT_NO_EMPTY) ?: []; + $this->words = preg_split("/[\n\r\t ]+/", $this->current->textContent, -1, PREG_SPLIT_NO_EMPTY|PREG_SPLIT_OFFSET_CAPTURE) ?: []; } $this->offset++; @@ -133,7 +133,7 @@ final class DOMWordsIterator implements Iterator */ public function current(): ?string { - return $this->words ? $this->words[$this->offset] : null; + return $this->words ? (string)$this->words[$this->offset][0] : null; } /** @@ -150,7 +150,7 @@ final class DOMWordsIterator implements Iterator { $this->current = $this->start; $this->offset = -1; - $this->key = -1; + $this->key = 0; $this->words = []; $this->next(); From 6c7064db9358336ff119e1387176026340abeea9 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 8 Dec 2021 14:34:38 +0200 Subject: [PATCH 05/98] Fix phpstan issues --- .../Grav/Framework/Flex/Pages/Traits/PageContentTrait.php | 3 +++ .../Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php | 4 +++- .../Framework/Flex/Traits/FlexRelatedDirectoryTrait.php | 6 +++--- .../Grav/Framework/Object/Base/ObjectCollectionTrait.php | 3 ++- system/src/Grav/Framework/Object/ObjectCollection.php | 2 +- system/src/Grav/Framework/Uri/UriFactory.php | 2 +- 6 files changed, 13 insertions(+), 7 deletions(-) diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php index 0fac6d608..c3bbb405e 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php @@ -744,6 +744,7 @@ trait PageContentTrait } if ($process_twig) { + \assert(is_string($this->_content)); $this->_content = $this->processTwig($this->_content); } } @@ -753,6 +754,8 @@ trait PageContentTrait } } + \assert(is_string($this->_content)); + // Handle summary divider $delimiter = $config->get('site.summary.delimiter', '==='); $divider_pos = mb_strpos($this->_content, "

{$delimiter}

"); diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php index 26c66d8be..ae2a6bc9c 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php @@ -22,6 +22,7 @@ use Grav\Framework\File\Formatter\YamlFormatter; use Grav\Framework\Filesystem\Filesystem; use Grav\Framework\Flex\Interfaces\FlexCollectionInterface; use Grav\Framework\Flex\Interfaces\FlexIndexInterface; +use Grav\Framework\Flex\Pages\FlexPageCollection; use Grav\Framework\Flex\Pages\FlexPageIndex; use Grav\Framework\Flex\Pages\FlexPageObject; use InvalidArgumentException; @@ -298,7 +299,7 @@ trait PageLegacyTrait $parentStorageKey = ltrim($filesystem->dirname("/{$this->getMasterKey()}"), '/'); - /** @var FlexPageIndex $index */ + /** @var FlexPageIndex> $index */ $index = $this->getFlexDirectory()->getIndex(); if ($parent) { @@ -321,6 +322,7 @@ trait PageLegacyTrait if ($this instanceof FlexPageObject) { $key = trim($parentKey . '/' . $this->folder(), '/'); $key = preg_replace(static::PAGE_ORDER_PREFIX_REGEX, '', $key); + \assert(is_string($key)); } else { $key = trim($parentKey . '/' . basename($this->getKey()), '/'); } diff --git a/system/src/Grav/Framework/Flex/Traits/FlexRelatedDirectoryTrait.php b/system/src/Grav/Framework/Flex/Traits/FlexRelatedDirectoryTrait.php index 37a0070dd..bafcb1ed3 100644 --- a/system/src/Grav/Framework/Flex/Traits/FlexRelatedDirectoryTrait.php +++ b/system/src/Grav/Framework/Flex/Traits/FlexRelatedDirectoryTrait.php @@ -11,9 +11,9 @@ declare(strict_types=1); namespace Grav\Framework\Flex\Traits; -use Grav\Framework\Flex\FlexCollection; use Grav\Framework\Flex\FlexDirectory; use Grav\Framework\Flex\Interfaces\FlexCollectionInterface; +use Grav\Framework\Flex\Interfaces\FlexObjectInterface; use RuntimeException; use function in_array; @@ -26,7 +26,7 @@ trait FlexRelatedDirectoryTrait /** * @param string $type * @param string $property - * @return FlexCollectionInterface + * @return FlexCollectionInterface */ protected function getCollectionByProperty($type, $property) { @@ -34,7 +34,7 @@ trait FlexRelatedDirectoryTrait $collection = $directory->getCollection(); $list = $this->getNestedProperty($property) ?: []; - /** @var FlexCollection $collection */ + /** @var FlexCollectionInterface $collection */ $collection = $collection->filter(static function ($object) use ($list) { return in_array($object->getKey(), $list, true); }); diff --git a/system/src/Grav/Framework/Object/Base/ObjectCollectionTrait.php b/system/src/Grav/Framework/Object/Base/ObjectCollectionTrait.php index b110c5b57..e3c216492 100644 --- a/system/src/Grav/Framework/Object/Base/ObjectCollectionTrait.php +++ b/system/src/Grav/Framework/Object/Base/ObjectCollectionTrait.php @@ -22,7 +22,7 @@ use function is_object; * @package Grav\Framework\Object * * @template TKey as array-key - * @template T as object + * @template T as ObjectInterface */ trait ObjectCollectionTrait { @@ -366,6 +366,7 @@ trait ObjectCollectionTrait { $collections = []; foreach ($this->group($property) as $id => $elements) { + /** @phpstan-var static $collection */ $collection = $this->createFrom($elements); $collections[$id] = $collection; diff --git a/system/src/Grav/Framework/Object/ObjectCollection.php b/system/src/Grav/Framework/Object/ObjectCollection.php index 40774fc5d..4d23aa2cd 100644 --- a/system/src/Grav/Framework/Object/ObjectCollection.php +++ b/system/src/Grav/Framework/Object/ObjectCollection.php @@ -22,7 +22,7 @@ use function array_slice; * Class contains a collection of objects. * * @template TKey of array-key - * @template T of object + * @template T of \Grav\Framework\Object\Interfaces\ObjectInterface * @extends ArrayCollection * @implements NestedObjectCollectionInterface */ diff --git a/system/src/Grav/Framework/Uri/UriFactory.php b/system/src/Grav/Framework/Uri/UriFactory.php index f7724b78d..6b4e7afc5 100644 --- a/system/src/Grav/Framework/Uri/UriFactory.php +++ b/system/src/Grav/Framework/Uri/UriFactory.php @@ -125,7 +125,7 @@ class UriFactory $encodedUrl = preg_replace_callback( '%[^:/@?&=#]+%u', - function ($matches) { + static function ($matches) { return rawurlencode($matches[0]); }, $url From 1f3f1828c2da742723a1c2a2d51284cad7f094f8 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 8 Dec 2021 15:07:42 +0200 Subject: [PATCH 06/98] Block `.json` files in web server configs --- .htaccess | 4 ++-- CHANGELOG.md | 1 + webserver-configs/htaccess.txt | 4 ++-- webserver-configs/lighttpd.conf | 2 +- webserver-configs/nginx.conf | 4 ++-- webserver-configs/web.config | 6 +++--- 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/.htaccess b/.htaccess index 83063ae2e..098c58244 100644 --- a/.htaccess +++ b/.htaccess @@ -59,9 +59,9 @@ RewriteRule .* index.php [L] # Block all direct access for these folders RewriteRule ^(\.git|cache|bin|logs|backup|webserver-configs|tests)/(.*) error [F] # Block access to specific file types for these system folders -RewriteRule ^(system|vendor)/(.*)\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ error [F] +RewriteRule ^(system|vendor)/(.*)\.(txt|xml|md|html|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ error [F] # Block access to specific file types for these user folders -RewriteRule ^(user)/(.*)\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ error [F] +RewriteRule ^(user)/(.*)\.(txt|md|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ error [F] # Block all direct access to .md files: RewriteRule \.md$ error [F] # Block all direct access to files and folders beginning with a dot diff --git a/CHANGELOG.md b/CHANGELOG.md index dc2dbf843..e5202a383 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ 3. [](#bugfix) * Fixed bad key lookup in `FlexRelatedDirectoryTrait::getCollectionByProperty()` * Fixed RequestHandlers `NotFoundException` having empty request + * Block `.json` files in web server configs # v1.7.25 ## 11/16/2021 diff --git a/webserver-configs/htaccess.txt b/webserver-configs/htaccess.txt index 83063ae2e..098c58244 100644 --- a/webserver-configs/htaccess.txt +++ b/webserver-configs/htaccess.txt @@ -59,9 +59,9 @@ RewriteRule .* index.php [L] # Block all direct access for these folders RewriteRule ^(\.git|cache|bin|logs|backup|webserver-configs|tests)/(.*) error [F] # Block access to specific file types for these system folders -RewriteRule ^(system|vendor)/(.*)\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ error [F] +RewriteRule ^(system|vendor)/(.*)\.(txt|xml|md|html|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ error [F] # Block access to specific file types for these user folders -RewriteRule ^(user)/(.*)\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ error [F] +RewriteRule ^(user)/(.*)\.(txt|md|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ error [F] # Block all direct access to .md files: RewriteRule \.md$ error [F] # Block all direct access to files and folders beginning with a dot diff --git a/webserver-configs/lighttpd.conf b/webserver-configs/lighttpd.conf index 512362fd1..f14c5a8b9 100644 --- a/webserver-configs/lighttpd.conf +++ b/webserver-configs/lighttpd.conf @@ -33,7 +33,7 @@ $HTTP["url"] =~ "^/grav_path/(LICENSE\.txt|composer\.json|composer\.lock|nginx\. $HTTP["url"] =~ "^/grav_path/(\.git|cache|bin|logs|backup|tests)/(.*)" { url.access-deny = ("") } -$HTTP["url"] =~ "^/grav_path/(system|user|vendor)/(.*)\.(txt|md|html|yaml|yml|php|twig|sh|bat)$" { +$HTTP["url"] =~ "^/grav_path/(system|user|vendor)/(.*)\.(txt|md|html|json|yaml|yml|php|twig|sh|bat)$" { url.access-deny = ("") } $HTTP["url"] =~ "^/grav_path/(\.(.*))" { diff --git a/webserver-configs/nginx.conf b/webserver-configs/nginx.conf index bbca7d32d..fc7d06b49 100644 --- a/webserver-configs/nginx.conf +++ b/webserver-configs/nginx.conf @@ -20,9 +20,9 @@ server { # deny all direct access for these folders location ~* /(\.git|cache|bin|logs|backup|tests)/.*$ { return 403; } # deny running scripts inside core system folders - location ~* /(system|vendor)/.*\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; } + location ~* /(system|vendor)/.*\.(txt|xml|md|html|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; } # deny running scripts inside user folder - location ~* /user/.*\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; } + location ~* /user/.*\.(txt|md|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; } # deny access to specific files in the root folder location ~ /(LICENSE\.txt|composer\.lock|composer\.json|nginx\.conf|web\.config|htaccess\.txt|\.htaccess) { return 403; } ## End - Security diff --git a/webserver-configs/web.config b/webserver-configs/web.config index 892ce9282..1c351a3b3 100644 --- a/webserver-configs/web.config +++ b/webserver-configs/web.config @@ -18,7 +18,7 @@ - + @@ -26,11 +26,11 @@ - + - + From 3bfbb1a4efd5d26531dad9f5ae1606a68e375341 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 8 Dec 2021 15:17:28 +0200 Subject: [PATCH 07/98] Composer 2 checks for minimum PHP version, remove duplicated checks --- bin/gpm | 4 ---- bin/grav | 4 ---- bin/plugin | 4 ---- index.php | 4 ---- system/router.php | 4 ++-- tests/phpstan/plugins-bootstrap.php | 4 ---- 6 files changed, 2 insertions(+), 22 deletions(-) diff --git a/bin/gpm b/bin/gpm index a2eebc68c..ba2fad110 100755 --- a/bin/gpm +++ b/bin/gpm @@ -25,10 +25,6 @@ if (!file_exists(__DIR__ . '/../vendor/autoload.php')){ $autoload = require __DIR__ . '/../vendor/autoload.php'; -if (version_compare($ver = PHP_VERSION, $req = GRAV_PHP_MIN, '<')) { - exit(sprintf("You are running PHP %s, but Grav needs at least PHP %s to run.\n", $ver, $req)); -} - if (!ini_get('date.timezone')) { date_default_timezone_set('UTC'); } diff --git a/bin/grav b/bin/grav index f3f77efe8..4d0e80c8d 100755 --- a/bin/grav +++ b/bin/grav @@ -25,10 +25,6 @@ if (!file_exists(__DIR__ . '/../vendor/autoload.php')){ $autoload = require __DIR__ . '/../vendor/autoload.php'; -if (version_compare($ver = PHP_VERSION, $req = GRAV_PHP_MIN, '<')) { - exit(sprintf("You are running PHP %s, but Grav needs at least PHP %s to run.\n", $ver, $req)); -} - if (!ini_get('date.timezone')) { date_default_timezone_set('UTC'); } diff --git a/bin/plugin b/bin/plugin index b401c0357..0f2a64720 100755 --- a/bin/plugin +++ b/bin/plugin @@ -25,10 +25,6 @@ if (!file_exists(__DIR__ . '/../vendor/autoload.php')){ $autoload = require __DIR__ . '/../vendor/autoload.php'; -if (version_compare($ver = PHP_VERSION, $req = GRAV_PHP_MIN, '<')) { - exit(sprintf("You are running PHP %s, but Grav needs at least PHP %s to run.\n", $ver, $req)); -} - if (!ini_get('date.timezone')) { date_default_timezone_set('UTC'); } diff --git a/index.php b/index.php index 091e9a824..66e2deeb9 100644 --- a/index.php +++ b/index.php @@ -12,10 +12,6 @@ namespace Grav; \define('GRAV_REQUEST_TIME', microtime(true)); \define('GRAV_PHP_MIN', '7.3.6'); -if (version_compare($ver = PHP_VERSION, $req = GRAV_PHP_MIN, '<')) { - die(sprintf('You are running PHP %s, but Grav needs at least PHP %s to run.', $ver, $req)); -} - if (PHP_SAPI === 'cli-server') { $symfony_server = stripos(getenv('_'), 'symfony') !== false || stripos($_SERVER['SERVER_SOFTWARE'] ?? '', 'symfony') !== false || stripos($_ENV['SERVER_SOFTWARE'] ?? '', 'symfony') !== false; diff --git a/system/router.php b/system/router.php index d58609c83..b43ea5d38 100644 --- a/system/router.php +++ b/system/router.php @@ -22,9 +22,9 @@ if ($path !== '/index.php' && is_file($root . $path)) { // Block all direct access for these folders || preg_match('`^/(\.git|cache|bin|logs|backup|webserver-configs|tests)/`ui', $path) // Block access to specific file types for these system folders - || preg_match('`^/(system|vendor)/(.*)\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$`ui', $path) + || preg_match('`^/(system|vendor)/(.*)\.(txt|xml|md|html|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$`ui', $path) // Block access to specific file types for these user folders - || preg_match('`^/(user)/(.*)\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$`ui', $path) + || preg_match('`^/(user)/(.*)\.(txt|md|json|yaml|yml|php|pl|py|cgi|twig|sh|bat)$`ui', $path) // Block all direct access to .md files || preg_match('`\.md$`ui', $path) // Block access to specific files in the root folder diff --git a/tests/phpstan/plugins-bootstrap.php b/tests/phpstan/plugins-bootstrap.php index c28f2ab8a..1c1828033 100644 --- a/tests/phpstan/plugins-bootstrap.php +++ b/tests/phpstan/plugins-bootstrap.php @@ -10,10 +10,6 @@ use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator; $autoload = require __DIR__ . '/../../vendor/autoload.php'; -if (version_compare($ver = PHP_VERSION, $req = GRAV_PHP_MIN, '<')) { - exit(sprintf("You are running PHP %s, but Grav needs at least PHP %s to run.\n", $ver, $req)); -} - if (!ini_get('date.timezone')) { date_default_timezone_set('UTC'); } From 90f5ff7c74525d1f5d15141cf5080def8bf1693b Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 8 Dec 2021 17:38:16 +0200 Subject: [PATCH 08/98] Use secure session cookies in HTTPS by default (`system.session.secure_https: true`) --- CHANGELOG.md | 1 + system/config/system.yaml | 1 + system/src/Grav/Common/Service/SessionServiceProvider.php | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e5202a383..f48280844 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ 1. [](#new) * Made `Grav::redirect()` to accept `Route` class * Added `translated()` method to `PageTranslateInterface` + * Use secure session cookies in HTTPS by default (`system.session.secure_https: true`) 2. [](#improved) * Upgraded vendor libs for PHP 8.1 compatibility * Upgraded to **composer v2.1.14** for PHP 8.1 compatibility diff --git a/system/config/system.yaml b/system/config/system.yaml index 652910d86..60abcee34 100644 --- a/system/config/system.yaml +++ b/system/config/system.yaml @@ -182,6 +182,7 @@ session: name: grav-site # Name prefix of the session cookie. Use alphanumeric, dashes or underscores only. Do not use dots in the session name uniqueness: path # Should sessions be `path` based or `security.salt` based secure: false # Set session secure. If true, indicates that communication for this cookie must be over an encrypted transmission. Enable this only on sites that run exclusively on HTTPS + secure_https: true # Set session secure on HTTPS but not on HTTP. Has no effect if you have `session.secure: true`. Set to false if your site jumps between HTTP and HTTPS. 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) diff --git a/system/src/Grav/Common/Service/SessionServiceProvider.php b/system/src/Grav/Common/Service/SessionServiceProvider.php index 88c833f26..502007c7d 100644 --- a/system/src/Grav/Common/Service/SessionServiceProvider.php +++ b/system/src/Grav/Common/Service/SessionServiceProvider.php @@ -40,7 +40,8 @@ class SessionServiceProvider implements ServiceProviderInterface // Get session options. $enabled = (bool)$config->get('system.session.enabled', false); - $cookie_secure = (bool)$config->get('system.session.secure', false); + $cookie_secure = $config->get('system.session.secure', false) + || ($config->get('system.session.secure_https', true) && $uri->scheme(true) === 'https'); $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'); From bc70c9b93c26d4e04dbded25d15f7ff66cda1503 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 8 Dec 2021 17:40:30 +0200 Subject: [PATCH 09/98] Added `session.secure_https` to system blueprint --- system/blueprints/config/system.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/system/blueprints/config/system.yaml b/system/blueprints/config/system.yaml index 1aeaf2bf2..aff54b46c 100644 --- a/system/blueprints/config/system.yaml +++ b/system/blueprints/config/system.yaml @@ -1394,6 +1394,18 @@ form: validate: type: bool + session.secure_https: + type: toggle + label: PLUGIN_ADMIN.SESSION_SECURE_HTTPS + help: PLUGIN_ADMIN.SESSION_SECURE_HTTPS_HELP + highlight: 1 + options: + 1: PLUGIN_ADMIN.YES + 0: PLUGIN_ADMIN.NO + default: true + validate: + type: bool + session.httponly: type: toggle label: PLUGIN_ADMIN.SESSION_HTTPONLY From 3f3503e0f3f68bd6bd2213ec04a6d41a20516e33 Mon Sep 17 00:00:00 2001 From: dani <10264696+dani-ooo@users.noreply.github.com> Date: Thu, 9 Dec 2021 00:27:38 -0500 Subject: [PATCH 10/98] Update external.yaml (#3493) --- system/blueprints/pages/external.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/system/blueprints/pages/external.yaml b/system/blueprints/pages/external.yaml index df1d7b0aa..d3bb57ac9 100644 --- a/system/blueprints/pages/external.yaml +++ b/system/blueprints/pages/external.yaml @@ -1,7 +1,7 @@ -title: PLUGIN_ADMIN:EXTERNAL +title: PLUGIN_ADMIN.EXTERNAL extends@: - type: default - context: blueprints://pages + type: default + context: blueprints://pages form: validation: loose @@ -29,16 +29,16 @@ form: unset@: true header.external_url: - type: text - label: PLUGIN_ADMIN.EXTERNAL_URL - placeholder: https://getgrav.org - validate: - required: true + type: text + label: PLUGIN_ADMIN.EXTERNAL_URL + placeholder: https://getgrav.org + validate: + required: true + options: fields: publishing: - fields: header.date: From 236c068d704c3cb7b9f51f0487926127bb2c8749 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 9 Dec 2021 14:06:58 +0200 Subject: [PATCH 11/98] Improve typehints --- composer.json | 5 ++ composer.lock | 12 ++--- system/src/Grav/Common/Page/Medium/Medium.php | 5 ++ system/src/Grav/Common/Uri.php | 6 +-- .../UniformResourceLocatorExtension.php | 51 +++++++++++++++++++ tests/phpstan/extension.neon | 5 ++ tests/phpstan/phpstan.neon | 1 + tests/phpstan/plugins.neon | 1 + 8 files changed, 77 insertions(+), 9 deletions(-) create mode 100644 tests/phpstan/classes/Toolbox/UniformResourceLocatorExtension.php create mode 100644 tests/phpstan/extension.neon diff --git a/composer.json b/composer.json index 8e5924a6c..2c82dd72d 100644 --- a/composer.json +++ b/composer.json @@ -101,6 +101,11 @@ "system/src/DOMWordsIterator.php" ] }, + "autoload-dev": { + "psr-4": { + "PHPStan\\": "tests/phpstan/classes" + } + }, "archive": { "exclude": [ "VERSION" diff --git a/composer.lock b/composer.lock index 2c4c4ea44..f26fa2439 100644 --- a/composer.lock +++ b/composer.lock @@ -4562,16 +4562,16 @@ }, { "name": "phpspec/prophecy", - "version": "1.14.0", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e" + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", - "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", "shasum": "" }, "require": { @@ -4623,9 +4623,9 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.14.0" + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" }, - "time": "2021-09-10T09:02:12+00:00" + "time": "2021-12-08T12:19:24+00:00" }, { "name": "phpstan/phpstan", diff --git a/system/src/Grav/Common/Page/Medium/Medium.php b/system/src/Grav/Common/Page/Medium/Medium.php index c94cf9fd0..15263bd8f 100644 --- a/system/src/Grav/Common/Page/Medium/Medium.php +++ b/system/src/Grav/Common/Page/Medium/Medium.php @@ -22,7 +22,12 @@ use Grav\Common\Media\Traits\MediaObjectTrait; * Class Medium * @package Grav\Common\Page\Medium * + * @property string $filepath * @property string $mime + * @property int $size + * @property int $modified + * @property array $metadata + * @property int|string $timestamp */ class Medium extends Data implements RenderableInterface, MediaFileInterface { diff --git a/system/src/Grav/Common/Uri.php b/system/src/Grav/Common/Uri.php index 908d99f8f..7491068c0 100644 --- a/system/src/Grav/Common/Uri.php +++ b/system/src/Grav/Common/Uri.php @@ -337,9 +337,9 @@ class Uri /** * Get URI parameter. * - * @param string|null $id - * @param string|bool|null $default - * @return bool|string + * @param string $id + * @param string|false|null $default + * @return string|false|null */ public function param($id, $default = false) { diff --git a/tests/phpstan/classes/Toolbox/UniformResourceLocatorExtension.php b/tests/phpstan/classes/Toolbox/UniformResourceLocatorExtension.php new file mode 100644 index 000000000..98bbca8a9 --- /dev/null +++ b/tests/phpstan/classes/Toolbox/UniformResourceLocatorExtension.php @@ -0,0 +1,51 @@ +getName() === 'findResource'; + } + + /** + * @param MethodReflection $methodReflection + * @param MethodCall $methodCall + * @param Scope $scope + * @return Type + */ + public function getTypeFromMethodCall(MethodReflection $methodReflection, MethodCall $methodCall, Scope $scope): Type + { + $first = $methodCall->getArgs()[2] ?? false; + if ($first) { + return new StringType(); + } + + return ParametersAcceptorSelector::selectSingle($methodReflection->getVariants())->getReturnType(); + } +} diff --git a/tests/phpstan/extension.neon b/tests/phpstan/extension.neon new file mode 100644 index 000000000..ef44d0b41 --- /dev/null +++ b/tests/phpstan/extension.neon @@ -0,0 +1,5 @@ +services: + - + class: PHPStan\Toolbox\UniformResourceLocatorExtension + tags: + - phpstan.broker.dynamicMethodReturnTypeExtension diff --git a/tests/phpstan/phpstan.neon b/tests/phpstan/phpstan.neon index 546e2f088..ef7a598de 100644 --- a/tests/phpstan/phpstan.neon +++ b/tests/phpstan/phpstan.neon @@ -2,6 +2,7 @@ includes: #- '../../vendor/phpstan/phpstan-strict-rules/rules.neon' - '../../vendor/phpstan/phpstan-deprecation-rules/rules.neon' + - 'extension.neon' parameters: fileExtensions: - php diff --git a/tests/phpstan/plugins.neon b/tests/phpstan/plugins.neon index 6cf9e93c8..d6d037a21 100644 --- a/tests/phpstan/plugins.neon +++ b/tests/phpstan/plugins.neon @@ -1,6 +1,7 @@ includes: #- '../../vendor/phpstan/phpstan-strict-rules/rules.neon' - '../../vendor/phpstan/phpstan-deprecation-rules/rules.neon' + - 'extension.neon' parameters: fileExtensions: - php From 432f0eb9e57cb38f022f121495728215fc4a998b Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 9 Dec 2021 15:07:37 +0200 Subject: [PATCH 12/98] Fixed some deprecation notices in flex --- system/src/Grav/Framework/Flex/FlexIndex.php | 8 ++++++++ system/src/Grav/Framework/Object/ObjectIndex.php | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/system/src/Grav/Framework/Flex/FlexIndex.php b/system/src/Grav/Framework/Flex/FlexIndex.php index 1dae57d81..d3759787d 100644 --- a/system/src/Grav/Framework/Flex/FlexIndex.php +++ b/system/src/Grav/Framework/Flex/FlexIndex.php @@ -118,6 +118,14 @@ class FlexIndex extends ObjectIndex implements FlexIndexInterface $this->setKeyField(null); } + /** + * @return string + */ + public function getKey() + { + return $this->_key ?: $this->getFlexType() . '@@' . spl_object_hash($this); + } + /** * {@inheritdoc} * @see FlexCommonInterface::hasFlexFeature() diff --git a/system/src/Grav/Framework/Object/ObjectIndex.php b/system/src/Grav/Framework/Object/ObjectIndex.php index e09c0dd95..123723345 100644 --- a/system/src/Grav/Framework/Object/ObjectIndex.php +++ b/system/src/Grav/Framework/Object/ObjectIndex.php @@ -35,7 +35,7 @@ abstract class ObjectIndex extends AbstractIndexCollection implements NestedObje protected static $type; /** @var string */ - private $_key; + protected $_key; /** * @param bool $prefix From 6ed453890d4c98de6c38587ab6240d1d8aaf4609 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 9 Dec 2021 15:45:25 +0200 Subject: [PATCH 13/98] Disabled pretty debug info for Flex as it slows down Twig rendering --- CHANGELOG.md | 1 + system/src/Grav/Common/Flex/Types/Pages/PageObject.php | 6 ++++-- system/src/Grav/Framework/Flex/FlexCollection.php | 6 ++++-- system/src/Grav/Framework/Flex/FlexIndex.php | 6 ++++-- system/src/Grav/Framework/Flex/FlexObject.php | 6 ++++-- system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php | 6 ++++-- 6 files changed, 21 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f48280844..01bd21b81 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ * Fixed bad key lookup in `FlexRelatedDirectoryTrait::getCollectionByProperty()` * Fixed RequestHandlers `NotFoundException` having empty request * Block `.json` files in web server configs + * Disabled pretty debug info for Flex as it slows down Twig rendering # v1.7.25 ## 11/16/2021 diff --git a/system/src/Grav/Common/Flex/Types/Pages/PageObject.php b/system/src/Grav/Common/Flex/Types/Pages/PageObject.php index 7f39d3b3b..143a4ab4b 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/PageObject.php +++ b/system/src/Grav/Common/Flex/Types/Pages/PageObject.php @@ -641,9 +641,10 @@ class PageObject extends FlexPageObject return $this->root ?: parent::exists(); } - /** + // TODO: Disabled because this slows down exception handling on missing Twig template files + /* * * @return array - */ + * / public function __debugInfo(): array { $list = parent::__debugInfo(); @@ -653,6 +654,7 @@ class PageObject extends FlexPageObject '_content:private' => $this->getRawContent() ]; } + */ /** * @param array $elements diff --git a/system/src/Grav/Framework/Flex/FlexCollection.php b/system/src/Grav/Framework/Flex/FlexCollection.php index 17c557ae0..afab91d0d 100644 --- a/system/src/Grav/Framework/Flex/FlexCollection.php +++ b/system/src/Grav/Framework/Flex/FlexCollection.php @@ -550,9 +550,10 @@ class FlexCollection extends ObjectCollection implements FlexCollectionInterface return $elements; } - /** + // TODO: Disabled because this slows down exception handling on missing Twig template files + /* * * @return array - */ + * / #[\ReturnTypeWillChange] public function __debugInfo() { @@ -563,6 +564,7 @@ class FlexCollection extends ObjectCollection implements FlexCollectionInterface 'objects:private' => $this->getElements() ]; } + */ /** * Creates a new instance from the specified elements. diff --git a/system/src/Grav/Framework/Flex/FlexIndex.php b/system/src/Grav/Framework/Flex/FlexIndex.php index d3759787d..da23aef76 100644 --- a/system/src/Grav/Framework/Flex/FlexIndex.php +++ b/system/src/Grav/Framework/Flex/FlexIndex.php @@ -529,9 +529,10 @@ class FlexIndex extends ObjectIndex implements FlexIndexInterface $this->setEntries($data['entries']); } - /** + // TODO: Disabled because this slows down exception handling on missing Twig template files + /* * * @return array - */ + * / #[\ReturnTypeWillChange] public function __debugInfo() { @@ -542,6 +543,7 @@ class FlexIndex extends ObjectIndex implements FlexIndexInterface 'entries:private' => $this->getEntries() ]; } + */ /** * @param array $entries diff --git a/system/src/Grav/Framework/Flex/FlexObject.php b/system/src/Grav/Framework/Flex/FlexObject.php index 87773470a..631629e6d 100644 --- a/system/src/Grav/Framework/Flex/FlexObject.php +++ b/system/src/Grav/Framework/Flex/FlexObject.php @@ -958,9 +958,10 @@ class FlexObject implements FlexObjectInterface, FlexAuthorizeInterface return $this->getFlexKey(); } - /** + // TODO: Disabled because this slows down exception handling on missing Twig template files + /* * * @return array - */ + * / #[\ReturnTypeWillChange] public function __debugInfo() { @@ -973,6 +974,7 @@ class FlexObject implements FlexObjectInterface, FlexAuthorizeInterface 'storage:private' => $this->getMetaData() ]; } + */ /** * Clone object. diff --git a/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php b/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php index c2bc66891..dfbc5b737 100644 --- a/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php +++ b/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php @@ -286,9 +286,10 @@ trait FlexMediaTrait $this->clearMediaCache(); } - /** + // TODO: Disabled because this slows down exception handling on missing Twig template files + /* * * @return array - */ + * / #[\ReturnTypeWillChange] public function __debugInfo() { @@ -296,6 +297,7 @@ trait FlexMediaTrait 'uploads:private' => $this->getUpdatedMedia() ]; } + */ /** * @param array $files From 491252476d79f8f358852d6d69c4dd0ad6088e45 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 9 Dec 2021 21:09:23 +0200 Subject: [PATCH 14/98] Fixed Twig being very slow when templates do not exist --- CHANGELOG.md | 1 + .../src/Grav/Common/Twig/TwigEnvironment.php | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 01bd21b81..8360e6be9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ * Fixed RequestHandlers `NotFoundException` having empty request * Block `.json` files in web server configs * Disabled pretty debug info for Flex as it slows down Twig rendering + * Fixed Twig being very slow when templates do not exist # v1.7.25 ## 11/16/2021 diff --git a/system/src/Grav/Common/Twig/TwigEnvironment.php b/system/src/Grav/Common/Twig/TwigEnvironment.php index bebbdf16e..357e94bce 100644 --- a/system/src/Grav/Common/Twig/TwigEnvironment.php +++ b/system/src/Grav/Common/Twig/TwigEnvironment.php @@ -10,6 +10,9 @@ namespace Grav\Common\Twig; use Twig\Environment; +use Twig\Error\LoaderError; +use Twig\Template; +use Twig\TemplateWrapper; /** * Class TwigEnvironment @@ -18,4 +21,38 @@ use Twig\Environment; class TwigEnvironment extends Environment { use WriteCacheFileTrait; + + /** + * @inheritDoc + */ + public function resolveTemplate($names) + { + if (!\is_array($names)) { + $names = [$names]; + } + + $count = \count($names); + foreach ($names as $name) { + if ($name instanceof Template) { + return $name; + } + if ($name instanceof TemplateWrapper) { + return $name; + } + + if (1 !== $count && !$this->getLoader()->exists($name)) { + continue; + } + + try { + return $this->loadTemplate($name); + } catch (LoaderError $e) { + if (1 === $count) { + throw $e; + } + } + } + + throw new LoaderError(sprintf('Unable to find one of the following templates: "%s".', implode('", "', $names))); + } } From f2a78339336646480ae7b6c3c7fef70ae0100a5a Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 9 Dec 2021 21:12:47 +0200 Subject: [PATCH 15/98] Restore debug info for flex --- system/src/Grav/Framework/Flex/FlexCollection.php | 6 ++---- system/src/Grav/Framework/Flex/FlexIndex.php | 6 ++---- system/src/Grav/Framework/Flex/FlexObject.php | 6 ++---- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/system/src/Grav/Framework/Flex/FlexCollection.php b/system/src/Grav/Framework/Flex/FlexCollection.php index afab91d0d..17c557ae0 100644 --- a/system/src/Grav/Framework/Flex/FlexCollection.php +++ b/system/src/Grav/Framework/Flex/FlexCollection.php @@ -550,10 +550,9 @@ class FlexCollection extends ObjectCollection implements FlexCollectionInterface return $elements; } - // TODO: Disabled because this slows down exception handling on missing Twig template files - /* * + /** * @return array - * / + */ #[\ReturnTypeWillChange] public function __debugInfo() { @@ -564,7 +563,6 @@ class FlexCollection extends ObjectCollection implements FlexCollectionInterface 'objects:private' => $this->getElements() ]; } - */ /** * Creates a new instance from the specified elements. diff --git a/system/src/Grav/Framework/Flex/FlexIndex.php b/system/src/Grav/Framework/Flex/FlexIndex.php index da23aef76..d3759787d 100644 --- a/system/src/Grav/Framework/Flex/FlexIndex.php +++ b/system/src/Grav/Framework/Flex/FlexIndex.php @@ -529,10 +529,9 @@ class FlexIndex extends ObjectIndex implements FlexIndexInterface $this->setEntries($data['entries']); } - // TODO: Disabled because this slows down exception handling on missing Twig template files - /* * + /** * @return array - * / + */ #[\ReturnTypeWillChange] public function __debugInfo() { @@ -543,7 +542,6 @@ class FlexIndex extends ObjectIndex implements FlexIndexInterface 'entries:private' => $this->getEntries() ]; } - */ /** * @param array $entries diff --git a/system/src/Grav/Framework/Flex/FlexObject.php b/system/src/Grav/Framework/Flex/FlexObject.php index 631629e6d..87773470a 100644 --- a/system/src/Grav/Framework/Flex/FlexObject.php +++ b/system/src/Grav/Framework/Flex/FlexObject.php @@ -958,10 +958,9 @@ class FlexObject implements FlexObjectInterface, FlexAuthorizeInterface return $this->getFlexKey(); } - // TODO: Disabled because this slows down exception handling on missing Twig template files - /* * + /** * @return array - * / + */ #[\ReturnTypeWillChange] public function __debugInfo() { @@ -974,7 +973,6 @@ class FlexObject implements FlexObjectInterface, FlexAuthorizeInterface 'storage:private' => $this->getMetaData() ]; } - */ /** * Clone object. From 420a4e3566739064b63133a8efcc96d16761cd71 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 9 Dec 2021 21:18:10 +0200 Subject: [PATCH 16/98] Add comment into TwigEnvironment --- system/src/Grav/Common/Twig/TwigEnvironment.php | 1 + 1 file changed, 1 insertion(+) diff --git a/system/src/Grav/Common/Twig/TwigEnvironment.php b/system/src/Grav/Common/Twig/TwigEnvironment.php index 357e94bce..6709ae334 100644 --- a/system/src/Grav/Common/Twig/TwigEnvironment.php +++ b/system/src/Grav/Common/Twig/TwigEnvironment.php @@ -40,6 +40,7 @@ class TwigEnvironment extends Environment return $name; } + // Avoid throwing an exception as it is really slow to handle. if (1 !== $count && !$this->getLoader()->exists($name)) { continue; } From 945b90fa46693006675fc0268044979b6e852fe8 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Fri, 10 Dec 2021 12:46:55 +0200 Subject: [PATCH 17/98] Changelog update --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8360e6be9..7fa7a8c05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,7 @@ * Fixed RequestHandlers `NotFoundException` having empty request * Block `.json` files in web server configs * Disabled pretty debug info for Flex as it slows down Twig rendering - * Fixed Twig being very slow when templates do not exist + * Fixed Twig being very slow when template overrides do not exist # v1.7.25 ## 11/16/2021 From 25bc1edf3115e9495ebdbb83b3e350613918d843 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Fri, 10 Dec 2021 16:20:19 +0200 Subject: [PATCH 18/98] Update Twig optimization to reflect upstream code --- system/src/Grav/Common/Twig/TwigEnvironment.php | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/system/src/Grav/Common/Twig/TwigEnvironment.php b/system/src/Grav/Common/Twig/TwigEnvironment.php index 6709ae334..f7e7c15bd 100644 --- a/system/src/Grav/Common/Twig/TwigEnvironment.php +++ b/system/src/Grav/Common/Twig/TwigEnvironment.php @@ -40,18 +40,13 @@ class TwigEnvironment extends Environment return $name; } - // Avoid throwing an exception as it is really slow to handle. + // Optimization: Avoid throwing an exception when it would be ignored anyway. if (1 !== $count && !$this->getLoader()->exists($name)) { continue; } - try { - return $this->loadTemplate($name); - } catch (LoaderError $e) { - if (1 === $count) { - throw $e; - } - } + // Throws LoaderError: Unable to find template "%s". + return $this->loadTemplate($name); } throw new LoaderError(sprintf('Unable to find one of the following templates: "%s".', implode('", "', $names))); From fae431bc39e5ad833642e80637278c550b98bc69 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Tue, 14 Dec 2021 17:13:55 +0200 Subject: [PATCH 19/98] Composer update --- composer.lock | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/composer.lock b/composer.lock index f26fa2439..b52530826 100644 --- a/composer.lock +++ b/composer.lock @@ -3439,16 +3439,16 @@ }, { "name": "codeception/codeception", - "version": "4.1.22", + "version": "4.1.23", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "9777ec3690ceedc4bce2ed13af7af4ca4ee3088f" + "reference": "27d18cd5d5a1d77d3f1b01ea776238676faf5dcc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/9777ec3690ceedc4bce2ed13af7af4ca4ee3088f", - "reference": "9777ec3690ceedc4bce2ed13af7af4ca4ee3088f", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/27d18cd5d5a1d77d3f1b01ea776238676faf5dcc", + "reference": "27d18cd5d5a1d77d3f1b01ea776238676faf5dcc", "shasum": "" }, "require": { @@ -3498,7 +3498,10 @@ "psr-4": { "Codeception\\": "src/Codeception", "Codeception\\Extension\\": "ext" - } + }, + "files": [ + "functions.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3522,7 +3525,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/4.1.22" + "source": "https://github.com/Codeception/Codeception/tree/4.1.23" }, "funding": [ { @@ -3530,7 +3533,7 @@ "type": "open_collective" } ], - "time": "2021-08-06T17:15:34+00:00" + "time": "2021-12-11T18:05:26+00:00" }, { "name": "codeception/lib-asserts", From def62ec2a2b4da347ba6e5f7868d9e1943d973ba Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 15 Dec 2021 12:48:02 +0200 Subject: [PATCH 20/98] Fixed message about user groups not being cached --- .../Grav/Common/Flex/Types/UserGroups/UserGroupCollection.php | 2 +- .../src/Grav/Common/Flex/Types/UserGroups/UserGroupObject.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupCollection.php b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupCollection.php index 93abbf886..b2c176d71 100644 --- a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupCollection.php +++ b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupCollection.php @@ -27,7 +27,7 @@ class UserGroupCollection extends FlexCollection public static function getCachedMethods(): array { return [ - 'authorize' => 'session', + 'authorize' => false, ] + parent::getCachedMethods(); } diff --git a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupObject.php b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupObject.php index ea68fa1bf..e341ce9aa 100644 --- a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupObject.php +++ b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupObject.php @@ -37,7 +37,7 @@ class UserGroupObject extends FlexObject implements UserGroupInterface public static function getCachedMethods(): array { return [ - 'authorize' => 'session', + 'authorize' => false, ] + parent::getCachedMethods(); } From 484a41e42a9d8717c33c4b011977b03084182506 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 15 Dec 2021 13:28:03 +0200 Subject: [PATCH 21/98] Added second parameter to `UserObject::isMyself()` method --- CHANGELOG.md | 1 + .../src/Grav/Common/Flex/Types/Users/UserObject.php | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fa7a8c05..822d9a6cc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ 1. [](#new) * Made `Grav::redirect()` to accept `Route` class * Added `translated()` method to `PageTranslateInterface` + * Added second parameter to `UserObject::isMyself()` method * Use secure session cookies in HTTPS by default (`system.session.secure_https: true`) 2. [](#improved) * Upgraded vendor libs for PHP 8.1 compatibility diff --git a/system/src/Grav/Common/Flex/Types/Users/UserObject.php b/system/src/Grav/Common/Flex/Types/Users/UserObject.php index 6c6d965f7..b89997ac7 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserObject.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserObject.php @@ -232,13 +232,19 @@ class UserObject extends FlexObject implements UserInterface, Countable } /** + * @param UserInterface|null $user * @return bool */ - public function isMyself(): bool + public function isMyself(?UserInterface $user = null): bool { - $me = $this->getActiveUser(); + if (null === $user) { + $user = $this->getActiveUser(); + if ($user && !$user->authenticated) { + $user = null; + } + } - return $me && $me->authenticated && $this->username === $me->username; + return $user && $this->username === $user->username; } /** From a4beb9b8bdc6f5233d6944404e5977036ecf8eb9 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 15 Dec 2021 18:00:27 +0200 Subject: [PATCH 22/98] Fixed `UserObject::$authorizeCallable` binding to the user object --- CHANGELOG.md | 1 + system/src/Grav/Common/Flex/Types/Users/UserObject.php | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 822d9a6cc..1736bc153 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ * Block `.json` files in web server configs * Disabled pretty debug info for Flex as it slows down Twig rendering * Fixed Twig being very slow when template overrides do not exist + * Fixed `UserObject::$authorizeCallable` binding to the user object # v1.7.25 ## 11/16/2021 diff --git a/system/src/Grav/Common/Flex/Types/Users/UserObject.php b/system/src/Grav/Common/Flex/Types/Users/UserObject.php index b89997ac7..77d49528c 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserObject.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserObject.php @@ -284,8 +284,8 @@ class UserObject extends FlexObject implements UserInterface, Countable // Check custom application access. $authorizeCallable = static::$authorizeCallable; if ($authorizeCallable instanceof Closure) { - $authorizeCallable->bindTo($this); - $authorized = $authorizeCallable($action, $scope); + $callable = $authorizeCallable->bindTo($this, $this); + $authorized = $callable($action, $scope); if (is_bool($authorized)) { return $authorized; } From 1c51bf8a66756ed8d8a8c069ae8366975bb37edd Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 15 Dec 2021 18:00:50 +0200 Subject: [PATCH 23/98] Added `UserObject::$isAuthorizedCallable` to allow `$user->isAuthorized()` customization --- CHANGELOG.md | 1 + .../src/Grav/Common/Flex/Types/Users/UserObject.php | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1736bc153..6dc12acd2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * Made `Grav::redirect()` to accept `Route` class * Added `translated()` method to `PageTranslateInterface` * Added second parameter to `UserObject::isMyself()` method + * Added `UserObject::$isAuthorizedCallable` to allow `$user->isAuthorized()` customization * Use secure session cookies in HTTPS by default (`system.session.secure_https: true`) 2. [](#improved) * Upgraded vendor libs for PHP 8.1 compatibility diff --git a/system/src/Grav/Common/Flex/Types/Users/UserObject.php b/system/src/Grav/Common/Flex/Types/Users/UserObject.php index 77d49528c..8891e7f87 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserObject.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserObject.php @@ -79,6 +79,8 @@ class UserObject extends FlexObject implements UserInterface, Countable /** @var Closure|null */ static public $authorizeCallable; + /** @var Closure|null */ + static public $isAuthorizedCallable; /** @var array|null */ protected $_uploads_original; @@ -690,6 +692,16 @@ class UserObject extends FlexObject implements UserInterface, Countable */ protected function isAuthorizedOverride(UserInterface $user, string $action, string $scope, bool $isMe = false): ?bool { + // Check custom application access. + $isAuthorizedCallable = static::$isAuthorizedCallable; + if ($isAuthorizedCallable instanceof Closure) { + $callable = $isAuthorizedCallable->bindTo($this, $this); + $authorized = $callable($user, $action, $scope, $isMe); + if (is_bool($authorized)) { + return $authorized; + } + } + if ($user instanceof self && $user->getStorageKey() === $this->getStorageKey()) { // User cannot delete his own account, otherwise he has full access. return $action !== 'delete'; From 74096e836f6a3c886aad09f93a663769f94ee35c Mon Sep 17 00:00:00 2001 From: Djamil Legato Date: Wed, 15 Dec 2021 12:19:01 -0800 Subject: [PATCH 24/98] Updated OpenCollective tiers --- README.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 31a4a7e4b..5f0e679a9 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![PHPStan](https://img.shields.io/badge/PHPStan-enabled-brightgreen.svg?style=flat)](https://github.com/phpstan/phpstan) [![Discord](https://img.shields.io/discord/501836936584101899.svg?logo=discord&colorB=728ADA&label=Discord%20Chat)](https://chat.getgrav.org) - [![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) + [![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/tiers/backers/badge.svg?label=Backers&color=brightgreen)](#backers) [![OpenCollective](https://opencollective.com/grav/tiers/supporters/badge.svg?label=Supporters&color=brightgreen)](#supporters) [![OpenCollective](https://opencollective.com/grav/tiers/sponsors/badge.svg?label=Sponsors&color=brightgreen)](#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. @@ -117,12 +117,19 @@ If you discover a possible security issue related to Grav or one of its plugins, * More [Awesome Grav Stuff](https://github.com/getgrav/awesome-grav) # Backers -Support Grav with a monthly donation to help us continue development. [[Become a backer](https://opencollective.com/grav#backer)] +Support Grav with a monthly donation to help us continue development. [[Become a backer](https://opencollective.com/grav/contribute)] + +# Supporters +Support Grav with a monthly donation to help us continue development. [[Become a supporter](https://opencollective.com/grav/contribute)] + + + + # Sponsors -Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/grav#sponsor)] +Support Grav with a yearly donation to help us continue development. [[Become a sponsor](https://opencollective.com/grav/contribute)] From 4ccbdafe8a63e326899e60eb23da3334b85b6329 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 16 Dec 2021 08:49:45 +0200 Subject: [PATCH 25/98] Update Toolbox library for PHP 8.1 support --- composer.lock | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/composer.lock b/composer.lock index b52530826..25fad88cc 100644 --- a/composer.lock +++ b/composer.lock @@ -2075,16 +2075,16 @@ }, { "name": "rockettheme/toolbox", - "version": "1.5.11", + "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/rockettheme/toolbox.git", - "reference": "ea23368c1bf635981c7b33babd842a6236befd86" + "reference": "a0eb328b9c416e526c8264b48ccbc1a7519e8618" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rockettheme/toolbox/zipball/ea23368c1bf635981c7b33babd842a6236befd86", - "reference": "ea23368c1bf635981c7b33babd842a6236befd86", + "url": "https://api.github.com/repos/rockettheme/toolbox/zipball/a0eb328b9c416e526c8264b48ccbc1a7519e8618", + "reference": "a0eb328b9c416e526c8264b48ccbc1a7519e8618", "shasum": "" }, "require": { @@ -2097,9 +2097,9 @@ "symfony/yaml": "^3.4|^4.0" }, "require-dev": { - "phpstan/phpstan": "^1.0", + "phpstan/phpstan": "^1.2", "phpstan/phpstan-deprecation-rules": "^1.0", - "phpunit/phpunit": "~8.0" + "phpunit/phpunit": "^8.0" }, "type": "library", "autoload": { @@ -2113,7 +2113,10 @@ "RocketTheme\\Toolbox\\ResourceLocator\\": "ResourceLocator/src", "RocketTheme\\Toolbox\\Session\\": "Session/src", "RocketTheme\\Toolbox\\StreamWrapper\\": "StreamWrapper/src" - } + }, + "exclude-from-classmap": [ + "**/tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2127,9 +2130,9 @@ ], "support": { "issues": "https://github.com/rockettheme/toolbox/issues", - "source": "https://github.com/rockettheme/toolbox/tree/1.5.11" + "source": "https://github.com/rockettheme/toolbox/tree/1.6.0" }, - "time": "2021-11-25T19:43:12+00:00" + "time": "2021-12-15T19:20:00+00:00" }, { "name": "seld/cli-prompt", From 89acc59ac31293a65966b00d0654bb305305c2f7 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 16 Dec 2021 10:57:10 +0200 Subject: [PATCH 26/98] Improved UserObject cloning --- system/src/Grav/Common/Flex/Types/Users/UserObject.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/system/src/Grav/Common/Flex/Types/Users/UserObject.php b/system/src/Grav/Common/Flex/Types/Users/UserObject.php index 8891e7f87..3a7e2c2cb 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserObject.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserObject.php @@ -141,6 +141,14 @@ class UserObject extends FlexObject implements UserInterface, Countable parent::__construct($elements, $key, $directory, $validate); } + public function __clone() + { + $this->_access = null; + $this->_groups = null; + + parent::__clone(); + } + /** * @return void */ From c7700c2e16324eb3bebc75feef0cba67ba60abbb Mon Sep 17 00:00:00 2001 From: dani <10264696+daniurx@users.noreply.github.com> Date: Wed, 15 Dec 2021 12:38:41 -0500 Subject: [PATCH 27/98] Update es.yaml missing accents --- system/languages/es.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/system/languages/es.yaml b/system/languages/es.yaml index 95827ee2b..a8a47aa38 100644 --- a/system/languages/es.yaml +++ b/system/languages/es.yaml @@ -44,7 +44,7 @@ GRAV: WK: sem MO: mes YR: año - DEC: dic + DEC: déc SECOND_PLURAL: segundos MINUTE_PLURAL: minutos HOUR_PLURAL: horas @@ -64,7 +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'" + XSS_ISSUES: "Se detectaron potenciales problemas XSS en el campo '%s'" MONTHS_OF_THE_YEAR: - 'Enero' - 'Febrero' @@ -86,7 +86,7 @@ GRAV: - 'Viernes' - 'Sábado' - 'Domingo' - YES: "Si" + YES: "Sí" NO: "No" CRON: EVERY: cada @@ -96,12 +96,12 @@ GRAV: EVERY_DAY_OF_MONTH: cada día del mes EVERY_MONTH: cada mes TEXT_PERIOD: Cada - TEXT_MINS: ' a minuto(s) despues de la hora' + TEXT_MINS: ' a minuto(s) después de la hora' TEXT_TIME: ' a :' TEXT_DOW: ' en ' TEXT_MONTH: ' de' TEXT_DOM: ' en' - ERROR1: La etiqueta %s no está soportada! - ERROR2: El número de elementos es erroneo + ERROR1: '¡La etiqueta %s no está soportada!' + ERROR2: El número de elementos es erróneo ERROR3: El jquery_element debería establecerse en la configuración del jqCron ERROR4: Expresión no reconocida From 530e6a4399c6a37cbd56c673e95a08ca522f0b2c Mon Sep 17 00:00:00 2001 From: dani <10264696+daniurx@users.noreply.github.com> Date: Wed, 15 Dec 2021 12:40:19 -0500 Subject: [PATCH 28/98] Update pages.yaml i believe this is a mistake, the unclosed `` tag is rendering the entire form this way. --- system/blueprints/flex/pages.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/blueprints/flex/pages.yaml b/system/blueprints/flex/pages.yaml index 5c6ed8eb5..89dab6a56 100644 --- a/system/blueprints/flex/pages.yaml +++ b/system/blueprints/flex/pages.yaml @@ -104,7 +104,7 @@ config: edit: title: - template: "{% if object.root %}Root ( <root> ){% else %}{{ (form.value('header.title') ?? form.value('folder'))|e }} ( {{ (object.getRoute().toString(false) ?: '/')|e }} ){% endif %}" + template: "{% if object.root %}Root ( <root> ){% else %}{{ (form.value('header.title') ?? form.value('folder'))|e }} ( {{ (object.getRoute().toString(false) ?: '/')|e }} ){% endif %}" # TODO: not used yet buttons: From 0f85b831b528c7e70c6ff9bd2e7bd95b66208d57 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 16 Dec 2021 13:55:36 +0200 Subject: [PATCH 29/98] Minor fixes --- system/src/Grav/Common/Flex/Types/Pages/PageObject.php | 4 +--- .../src/Grav/Common/Page/Interfaces/PageContentInterface.php | 3 ++- system/src/Grav/Common/Page/Page.php | 2 +- .../src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php | 1 + system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php | 4 +--- tests/phpstan/plugins.neon | 1 + 6 files changed, 7 insertions(+), 8 deletions(-) diff --git a/system/src/Grav/Common/Flex/Types/Pages/PageObject.php b/system/src/Grav/Common/Flex/Types/Pages/PageObject.php index 143a4ab4b..2ff5ed8d2 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/PageObject.php +++ b/system/src/Grav/Common/Flex/Types/Pages/PageObject.php @@ -641,8 +641,7 @@ class PageObject extends FlexPageObject return $this->root ?: parent::exists(); } - // TODO: Disabled because this slows down exception handling on missing Twig template files - /* * + /** * @return array * / public function __debugInfo(): array @@ -654,7 +653,6 @@ class PageObject extends FlexPageObject '_content:private' => $this->getRawContent() ]; } - */ /** * @param array $elements diff --git a/system/src/Grav/Common/Page/Interfaces/PageContentInterface.php b/system/src/Grav/Common/Page/Interfaces/PageContentInterface.php index 30db89d66..69bf8bf0d 100644 --- a/system/src/Grav/Common/Page/Interfaces/PageContentInterface.php +++ b/system/src/Grav/Common/Page/Interfaces/PageContentInterface.php @@ -11,6 +11,7 @@ namespace Grav\Common\Page\Interfaces; use Grav\Common\Data\Blueprint; use Grav\Common\Media\Interfaces\MediaCollectionInterface; +use Grav\Common\Page\Header; /** * Methods currently implemented in Flex Page emulation layer. @@ -21,7 +22,7 @@ interface PageContentInterface * Gets and Sets the header based on the YAML configuration at the top of the .md file * * @param object|array|null $var a YAML object representing the configuration for the file - * @return object the current YAML configuration + * @return \stdClass|Header The current YAML configuration */ public function header($var = null); diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index 992926248..31dfe1ffd 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -388,7 +388,7 @@ class Page implements PageInterface * Gets and Sets the header based on the YAML configuration at the top of the .md file * * @param object|array|null $var a YAML object representing the configuration for the file - * @return object the current YAML configuration + * @return \stdClass the current YAML configuration */ public function header($var = null) { diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php index c3bbb405e..bbf5e1b04 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php @@ -100,6 +100,7 @@ trait PageContentTrait /** * @inheritdoc + * @return Header */ public function header($var = null) { diff --git a/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php b/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php index dfbc5b737..d34b39144 100644 --- a/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php +++ b/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php @@ -286,8 +286,7 @@ trait FlexMediaTrait $this->clearMediaCache(); } - // TODO: Disabled because this slows down exception handling on missing Twig template files - /* * + /** * @return array * / #[\ReturnTypeWillChange] @@ -297,7 +296,6 @@ trait FlexMediaTrait 'uploads:private' => $this->getUpdatedMedia() ]; } - */ /** * @param array $files diff --git a/tests/phpstan/plugins.neon b/tests/phpstan/plugins.neon index d6d037a21..82570cca5 100644 --- a/tests/phpstan/plugins.neon +++ b/tests/phpstan/plugins.neon @@ -38,6 +38,7 @@ parameters: - Grav\Common\GPM\Common\Package - Grav\Common\GPM\Local\Package - Grav\Common\GPM\Remote\Package + - Grav\Common\Page\Header - Grav\Common\Session - Gantry\Component\Config\Config dynamicConstantNames: From a6fb0a14f03c046e779ab3e92fc2a0eda2515b45 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 16 Dec 2021 13:59:13 +0200 Subject: [PATCH 30/98] Fix bad docblocks --- system/src/Grav/Common/Flex/Types/Pages/PageObject.php | 2 +- system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/system/src/Grav/Common/Flex/Types/Pages/PageObject.php b/system/src/Grav/Common/Flex/Types/Pages/PageObject.php index 2ff5ed8d2..7f39d3b3b 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/PageObject.php +++ b/system/src/Grav/Common/Flex/Types/Pages/PageObject.php @@ -643,7 +643,7 @@ class PageObject extends FlexPageObject /** * @return array - * / + */ public function __debugInfo(): array { $list = parent::__debugInfo(); diff --git a/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php b/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php index d34b39144..c2bc66891 100644 --- a/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php +++ b/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php @@ -288,7 +288,7 @@ trait FlexMediaTrait /** * @return array - * / + */ #[\ReturnTypeWillChange] public function __debugInfo() { From 5bec5db5e13ae63b84df59c1c5c8305abe558120 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 16 Dec 2021 14:25:51 +0200 Subject: [PATCH 31/98] Fixed Plugin::config() returning null in some cases --- system/src/Grav/Common/Plugin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/src/Grav/Common/Plugin.php b/system/src/Grav/Common/Plugin.php index 3b0d3fb14..ac5a3c474 100644 --- a/system/src/Grav/Common/Plugin.php +++ b/system/src/Grav/Common/Plugin.php @@ -118,7 +118,7 @@ class Plugin implements EventSubscriberInterface, ArrayAccess */ public function config() { - return null !== $this->config ? $this->config["plugins.{$this->name}"] : []; + return $this->config["plugins.{$this->name}"] ?? []; } /** From 290a28109e3fea7bbaf7957f81653adaa315f65f Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Fri, 17 Dec 2021 19:42:02 +0200 Subject: [PATCH 32/98] When symlinking Grav install, include also tests --- CHANGELOG.md | 1 + system/src/Grav/Console/Cli/SandboxCommand.php | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6dc12acd2..8e1a6cd4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ * Upgraded to **composer v2.1.14** for PHP 8.1 compatibility * Added third `$name` parameter to `Blueprint::flattenData()` method, useful for flattening repeating data * `ControllerResponseTrait`: Redirect response should be json if the extension is .json + * When symlinking Grav install, include also tests 3. [](#bugfix) * Fixed bad key lookup in `FlexRelatedDirectoryTrait::getCollectionByProperty()` * Fixed RequestHandlers `NotFoundException` having empty request diff --git a/system/src/Grav/Console/Cli/SandboxCommand.php b/system/src/Grav/Console/Cli/SandboxCommand.php index d865b4ae7..995812c1f 100644 --- a/system/src/Grav/Console/Cli/SandboxCommand.php +++ b/system/src/Grav/Console/Cli/SandboxCommand.php @@ -200,6 +200,10 @@ class SandboxCommand extends GravCommand $io->newLine(); $io->writeln('Resetting Symbolic Links'); + // Symlink also tests if using git. + if (is_dir($this->source . '/tests')) { + $this->mappings['/tests'] = '/tests'; + } foreach ($this->mappings as $source => $target) { if ((string)(int)$source === (string)$source) { From 8343cfb27812753f2919226c51d75460116784da Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Sat, 18 Dec 2021 17:46:55 -0700 Subject: [PATCH 33/98] new Plugin::upstreamConfigVar --- CHANGELOG.md | 1 + system/src/Grav/Common/Plugin.php | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6dc12acd2..d422c7c62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ * Added second parameter to `UserObject::isMyself()` method * Added `UserObject::$isAuthorizedCallable` to allow `$user->isAuthorized()` customization * Use secure session cookies in HTTPS by default (`system.session.secure_https: true`) + * Added new `Plugin::upstreamConfigVar()` function to access plugin specific functions for page overrides 2. [](#improved) * Upgraded vendor libs for PHP 8.1 compatibility * Upgraded to **composer v2.1.14** for PHP 8.1 compatibility diff --git a/system/src/Grav/Common/Plugin.php b/system/src/Grav/Common/Plugin.php index ac5a3c474..bd245d761 100644 --- a/system/src/Grav/Common/Plugin.php +++ b/system/src/Grav/Common/Plugin.php @@ -414,6 +414,30 @@ class Plugin implements EventSubscriberInterface, ArrayAccess return true; } + public static function upstreamConfigVar(string $plugin, string $var, PageInterface $page = null, $default = null) + { + if (Utils::isAdminPlugin()) { + $page = Grav::instance()['admin']->page() ?? null; + } else { + $page = $page ?? Grav::instance()['page'] ?? null; + } + + // Try to find var in the page headers + if ($page instanceof PageInterface && $page->exists()) { + // Loop over pages and look for header vars + while ($page && !$page->root()) { + $header = new Data((array)$page->header()); + $value = $header->get("$plugin.$var"); + if (isset($value)) { + return $value; + } + $page = $page->parent(); + } + } + + return Grav::instance()['config']->get("plugins.$plugin.$var", $default); + } + /** * Simpler getter for the plugin blueprint * From bfc9e26f2650c8bcbd3daf4aa55c53d44ad96d1f Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Sat, 18 Dec 2021 17:53:19 -0700 Subject: [PATCH 34/98] renamed method --- CHANGELOG.md | 2 +- system/src/Grav/Common/Plugin.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e4b5f899..f3efb28ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ * Added second parameter to `UserObject::isMyself()` method * Added `UserObject::$isAuthorizedCallable` to allow `$user->isAuthorized()` customization * Use secure session cookies in HTTPS by default (`system.session.secure_https: true`) - * Added new `Plugin::upstreamConfigVar()` function to access plugin specific functions for page overrides + * Added new `Plugin::inheritedConfigOption()` function to access plugin specific functions for page overrides 2. [](#improved) * Upgraded vendor libs for PHP 8.1 compatibility * Upgraded to **composer v2.1.14** for PHP 8.1 compatibility diff --git a/system/src/Grav/Common/Plugin.php b/system/src/Grav/Common/Plugin.php index bd245d761..3510b53ec 100644 --- a/system/src/Grav/Common/Plugin.php +++ b/system/src/Grav/Common/Plugin.php @@ -414,7 +414,7 @@ class Plugin implements EventSubscriberInterface, ArrayAccess return true; } - public static function upstreamConfigVar(string $plugin, string $var, PageInterface $page = null, $default = null) + public static function inheritedConfigOption(string $plugin, string $var, PageInterface $page = null, $default = null) { if (Utils::isAdminPlugin()) { $page = Grav::instance()['admin']->page() ?? null; From 26295d5cf28177d3e3ef0f3de9541e4cdbcd8200 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 20 Dec 2021 14:46:20 +0200 Subject: [PATCH 35/98] Fixed `FlexIndex::call()` to return null instead of failing to call undefined method --- CHANGELOG.md | 1 + system/src/Grav/Framework/Flex/FlexIndex.php | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f3efb28ba..724b617df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ * Disabled pretty debug info for Flex as it slows down Twig rendering * Fixed Twig being very slow when template overrides do not exist * Fixed `UserObject::$authorizeCallable` binding to the user object + * Fixed `FlexIndex::call()` to return null instead of failing to call undefined method # v1.7.25 ## 11/16/2021 diff --git a/system/src/Grav/Framework/Flex/FlexIndex.php b/system/src/Grav/Framework/Flex/FlexIndex.php index d3759787d..c433a080b 100644 --- a/system/src/Grav/Framework/Flex/FlexIndex.php +++ b/system/src/Grav/Framework/Flex/FlexIndex.php @@ -502,9 +502,13 @@ class FlexIndex extends ObjectIndex implements FlexIndexInterface } } else { $collection = $this->loadCollection(); - $result = $collection->{$name}(...$arguments); - if (!isset($cachedMethods[$name])) { - $debugger->addMessage("Call '{$flexType}:{$name}()' isn't cached", 'debug'); + if (\is_callable([$collection, $name])) { + $result = $collection->{$name}(...$arguments); + if (!isset($cachedMethods[$name])) { + $debugger->addMessage("Call '{$flexType}:{$name}()' isn't cached", 'debug'); + } + } else { + $result = null; } } From 4519971a762175b61c24e2f9c4c07d3113f282f4 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 22 Dec 2021 21:28:26 +0200 Subject: [PATCH 36/98] Fixed Flex directory configuration creating environment configuration when it should not --- CHANGELOG.md | 1 + system/src/Grav/Framework/Flex/FlexDirectory.php | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 724b617df..f487b4cb1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ * Fixed Twig being very slow when template overrides do not exist * Fixed `UserObject::$authorizeCallable` binding to the user object * Fixed `FlexIndex::call()` to return null instead of failing to call undefined method + * Fixed Flex directory configuration creating environment configuration when it should not # v1.7.25 ## 11/16/2021 diff --git a/system/src/Grav/Framework/Flex/FlexDirectory.php b/system/src/Grav/Framework/Flex/FlexDirectory.php index 21965fce9..57a0a4c46 100644 --- a/system/src/Grav/Framework/Flex/FlexDirectory.php +++ b/system/src/Grav/Framework/Flex/FlexDirectory.php @@ -21,7 +21,7 @@ use Grav\Common\Utils; use Grav\Framework\Cache\Adapter\DoctrineCache; use Grav\Framework\Cache\Adapter\MemoryCache; use Grav\Framework\Cache\CacheInterface; -use Grav\Framework\Flex\Interfaces\FlexAuthorizeInterface; +use Grav\Framework\Filesystem\Filesystem; use Grav\Framework\Flex\Interfaces\FlexCollectionInterface; use Grav\Framework\Flex\Interfaces\FlexDirectoryInterface; use Grav\Framework\Flex\Interfaces\FlexFormInterface; @@ -218,8 +218,17 @@ class FlexDirectory implements FlexDirectoryInterface /** @var UniformResourceLocator $locator */ $locator = $grav['locator']; - /** @var string $filename Filename is always string */ - $filename = $locator->findResource($this->getDirectoryConfigUri($name), true, true); + + $filename = $this->getDirectoryConfigUri($name); + if (file_exists($filename)) { + $filename = $locator->findResource($filename, true); + } else { + $filesystem = Filesystem::getInstance(); + $dirname = $filesystem->dirname($filename); + $basename = $filesystem->basename($filename); + $dirname = $locator->findResource($dirname, true) ?: $locator->findResource($dirname, true, true); + $filename = "{$dirname}/{$basename}"; + } $file = YamlFile::instance($filename); if (!empty($data)) { From 6af1ee48a5feaa5a0d4baf375dcad1c57d145cc9 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 3 Jan 2022 16:38:11 +0200 Subject: [PATCH 37/98] Fixed PHP 8.1 issue in Media, minor optimization --- system/src/Grav/Common/Page/Media.php | 17 ++++++++++++----- .../src/Grav/Common/Page/Medium/ImageMedium.php | 8 ++++---- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/system/src/Grav/Common/Page/Media.php b/system/src/Grav/Common/Page/Media.php index e18201420..b9936850c 100644 --- a/system/src/Grav/Common/Page/Media.php +++ b/system/src/Grav/Common/Page/Media.php @@ -10,6 +10,7 @@ namespace Grav\Common\Page; use FilesystemIterator; +use Grav\Common\Config\Config; use Grav\Common\Grav; use Grav\Common\Media\Interfaces\MediaObjectInterface; use Grav\Common\Yaml; @@ -86,11 +87,6 @@ class Media extends AbstractMedia */ protected function init() { - /** @var UniformResourceLocator $locator */ - $locator = Grav::instance()['locator']; - $config = Grav::instance()['config']; - $exif_reader = isset(Grav::instance()['exif']) ? Grav::instance()['exif']->getReader() : false; - $media_types = array_keys(Grav::instance()['config']->get('media.types')); $path = $this->getPath(); // Handle special cases where page doesn't exist in filesystem. @@ -98,6 +94,17 @@ class Media extends AbstractMedia return; } + $grav = Grav::instance(); + + /** @var UniformResourceLocator $locator */ + $locator = $grav['locator']; + + /** @var Config $config */ + $config = $grav['config']; + + $exif_reader = isset($grav['exif']) ? $grav['exif']->getReader() : null; + $media_types = array_keys($config->get('media.types', [])); + $iterator = new FilesystemIterator($path, FilesystemIterator::UNIX_PATHS | FilesystemIterator::SKIP_DOTS); $media = []; diff --git a/system/src/Grav/Common/Page/Medium/ImageMedium.php b/system/src/Grav/Common/Page/Medium/ImageMedium.php index 6d1e9043d..7bb5b46c2 100644 --- a/system/src/Grav/Common/Page/Medium/ImageMedium.php +++ b/system/src/Grav/Common/Page/Medium/ImageMedium.php @@ -249,12 +249,12 @@ class ImageMedium extends Medium implements ImageMediaInterface, ImageManipulate if ($this->saved_image_path && $this->auto_sizes) { if (!array_key_exists('height', $this->attributes) && !array_key_exists('width', $this->attributes)) { $info = getimagesize($this->saved_image_path); - $width = intval($info[0]); - $height = intval($info[1]); + $width = (int)$info[0]; + $height = (int)$info[1]; $scaling_factor = $this->retina_scale > 0 ? $this->retina_scale : 1; - $attributes['width'] = intval($width / $scaling_factor); - $attributes['height'] = intval($height / $scaling_factor); + $attributes['width'] = (int)($width / $scaling_factor); + $attributes['height'] = (int)($height / $scaling_factor); if ($this->aspect_ratio) { $style = ($attributes['style'] ?? ' ') . "--aspect-ratio: $width/$height;"; From 3b7921b698fb8e4409958e68b7650bdbbb8588d6 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Mon, 3 Jan 2022 09:14:00 -0700 Subject: [PATCH 38/98] updated copyright year --- CHANGELOG.md | 1 + assets/.gitkeep | 2 +- backup/.gitkeep | 2 +- bin/gpm | 2 +- bin/grav | 2 +- bin/plugin | 2 +- cache/.gitkeep | 2 +- images/.gitkeep | 2 +- index.php | 2 +- logs/.gitkeep | 2 +- system/defines.php | 2 +- system/install.php | 2 +- system/router.php | 2 +- system/src/Grav/Common/Assets.php | 2 +- system/src/Grav/Common/Assets/BaseAsset.php | 2 +- system/src/Grav/Common/Assets/Css.php | 2 +- system/src/Grav/Common/Assets/InlineCss.php | 2 +- system/src/Grav/Common/Assets/InlineJs.php | 2 +- system/src/Grav/Common/Assets/Js.php | 2 +- system/src/Grav/Common/Assets/Pipeline.php | 2 +- system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php | 2 +- system/src/Grav/Common/Assets/Traits/LegacyAssetsTrait.php | 2 +- system/src/Grav/Common/Assets/Traits/TestingAssetsTrait.php | 2 +- system/src/Grav/Common/Backup/Backups.php | 2 +- system/src/Grav/Common/Browser.php | 2 +- system/src/Grav/Common/Cache.php | 2 +- system/src/Grav/Common/Composer.php | 2 +- system/src/Grav/Common/Config/CompiledBase.php | 2 +- system/src/Grav/Common/Config/CompiledBlueprints.php | 2 +- system/src/Grav/Common/Config/CompiledConfig.php | 2 +- system/src/Grav/Common/Config/CompiledLanguages.php | 2 +- system/src/Grav/Common/Config/Config.php | 2 +- system/src/Grav/Common/Config/ConfigFileFinder.php | 2 +- system/src/Grav/Common/Config/Languages.php | 2 +- system/src/Grav/Common/Config/Setup.php | 2 +- system/src/Grav/Common/Data/Blueprint.php | 2 +- system/src/Grav/Common/Data/BlueprintSchema.php | 2 +- system/src/Grav/Common/Data/Blueprints.php | 2 +- system/src/Grav/Common/Data/Data.php | 2 +- system/src/Grav/Common/Data/DataInterface.php | 2 +- system/src/Grav/Common/Data/Validation.php | 2 +- system/src/Grav/Common/Data/ValidationException.php | 2 +- system/src/Grav/Common/Debugger.php | 2 +- system/src/Grav/Common/Errors/BareHandler.php | 2 +- system/src/Grav/Common/Errors/Errors.php | 2 +- system/src/Grav/Common/Errors/SimplePageHandler.php | 2 +- system/src/Grav/Common/Errors/SystemFacade.php | 2 +- system/src/Grav/Common/File/CompiledFile.php | 2 +- system/src/Grav/Common/File/CompiledJsonFile.php | 2 +- system/src/Grav/Common/File/CompiledMarkdownFile.php | 2 +- system/src/Grav/Common/File/CompiledYamlFile.php | 2 +- system/src/Grav/Common/Filesystem/Archiver.php | 2 +- system/src/Grav/Common/Filesystem/Folder.php | 2 +- .../Common/Filesystem/RecursiveDirectoryFilterIterator.php | 2 +- .../Common/Filesystem/RecursiveFolderFilterIterator.php | 2 +- system/src/Grav/Common/Filesystem/ZipArchiver.php | 2 +- system/src/Grav/Common/Flex/FlexCollection.php | 2 +- system/src/Grav/Common/Flex/FlexIndex.php | 2 +- system/src/Grav/Common/Flex/FlexObject.php | 2 +- system/src/Grav/Common/Flex/Traits/FlexCollectionTrait.php | 2 +- system/src/Grav/Common/Flex/Traits/FlexCommonTrait.php | 2 +- system/src/Grav/Common/Flex/Traits/FlexGravTrait.php | 2 +- system/src/Grav/Common/Flex/Traits/FlexIndexTrait.php | 2 +- system/src/Grav/Common/Flex/Traits/FlexObjectTrait.php | 2 +- .../Grav/Common/Flex/Types/Generic/GenericCollection.php | 2 +- system/src/Grav/Common/Flex/Types/Generic/GenericIndex.php | 2 +- system/src/Grav/Common/Flex/Types/Generic/GenericObject.php | 2 +- system/src/Grav/Common/Flex/Types/Pages/PageCollection.php | 2 +- system/src/Grav/Common/Flex/Types/Pages/PageIndex.php | 2 +- system/src/Grav/Common/Flex/Types/Pages/PageObject.php | 2 +- .../Grav/Common/Flex/Types/Pages/Storage/PageStorage.php | 2 +- .../Common/Flex/Types/Pages/Traits/PageContentTrait.php | 2 +- .../Grav/Common/Flex/Types/Pages/Traits/PageLegacyTrait.php | 2 +- .../Common/Flex/Types/Pages/Traits/PageRoutableTrait.php | 2 +- .../Common/Flex/Types/Pages/Traits/PageTranslateTrait.php | 2 +- .../Common/Flex/Types/UserGroups/UserGroupCollection.php | 2 +- .../Grav/Common/Flex/Types/UserGroups/UserGroupIndex.php | 2 +- .../Grav/Common/Flex/Types/UserGroups/UserGroupObject.php | 2 +- .../Common/Flex/Types/Users/Storage/UserFileStorage.php | 2 +- .../Common/Flex/Types/Users/Storage/UserFolderStorage.php | 2 +- .../Flex/Types/Users/Traits/UserObjectLegacyTrait.php | 2 +- system/src/Grav/Common/Flex/Types/Users/UserCollection.php | 2 +- system/src/Grav/Common/Flex/Types/Users/UserIndex.php | 2 +- system/src/Grav/Common/Flex/Types/Users/UserObject.php | 2 +- system/src/Grav/Common/Form/FormFlash.php | 2 +- system/src/Grav/Common/GPM/AbstractCollection.php | 2 +- .../Grav/Common/GPM/Common/AbstractPackageCollection.php | 2 +- system/src/Grav/Common/GPM/Common/CachedCollection.php | 2 +- system/src/Grav/Common/GPM/Common/Package.php | 2 +- system/src/Grav/Common/GPM/GPM.php | 2 +- system/src/Grav/Common/GPM/Installer.php | 2 +- system/src/Grav/Common/GPM/Licenses.php | 2 +- .../src/Grav/Common/GPM/Local/AbstractPackageCollection.php | 2 +- system/src/Grav/Common/GPM/Local/Package.php | 2 +- system/src/Grav/Common/GPM/Local/Packages.php | 2 +- system/src/Grav/Common/GPM/Local/Plugins.php | 2 +- system/src/Grav/Common/GPM/Local/Themes.php | 2 +- .../Grav/Common/GPM/Remote/AbstractPackageCollection.php | 2 +- system/src/Grav/Common/GPM/Remote/GravCore.php | 2 +- system/src/Grav/Common/GPM/Remote/Package.php | 2 +- system/src/Grav/Common/GPM/Remote/Packages.php | 2 +- system/src/Grav/Common/GPM/Remote/Plugins.php | 2 +- system/src/Grav/Common/GPM/Remote/Themes.php | 2 +- system/src/Grav/Common/GPM/Upgrader.php | 2 +- system/src/Grav/Common/Getters.php | 2 +- system/src/Grav/Common/Grav.php | 2 +- system/src/Grav/Common/GravTrait.php | 2 +- system/src/Grav/Common/HTTP/Client.php | 2 +- system/src/Grav/Common/HTTP/Response.php | 2 +- system/src/Grav/Common/Helpers/Base32.php | 2 +- system/src/Grav/Common/Helpers/Excerpts.php | 2 +- system/src/Grav/Common/Helpers/Exif.php | 2 +- system/src/Grav/Common/Helpers/LogViewer.php | 2 +- system/src/Grav/Common/Helpers/Truncator.php | 2 +- system/src/Grav/Common/Helpers/YamlLinter.php | 2 +- system/src/Grav/Common/Inflector.php | 2 +- system/src/Grav/Common/Iterator.php | 2 +- system/src/Grav/Common/Language/Language.php | 2 +- system/src/Grav/Common/Language/LanguageCodes.php | 6 +++--- system/src/Grav/Common/Markdown/Parsedown.php | 2 +- system/src/Grav/Common/Markdown/ParsedownExtra.php | 2 +- system/src/Grav/Common/Markdown/ParsedownGravTrait.php | 2 +- .../Grav/Common/Media/Interfaces/AudioMediaInterface.php | 2 +- .../Common/Media/Interfaces/ImageManipulateInterface.php | 2 +- .../Grav/Common/Media/Interfaces/ImageMediaInterface.php | 2 +- .../Common/Media/Interfaces/MediaCollectionInterface.php | 2 +- .../src/Grav/Common/Media/Interfaces/MediaFileInterface.php | 2 +- system/src/Grav/Common/Media/Interfaces/MediaInterface.php | 2 +- .../src/Grav/Common/Media/Interfaces/MediaLinkInterface.php | 2 +- .../Grav/Common/Media/Interfaces/MediaObjectInterface.php | 2 +- .../Grav/Common/Media/Interfaces/MediaPlayerInterface.php | 2 +- .../Grav/Common/Media/Interfaces/MediaUploadInterface.php | 2 +- .../Grav/Common/Media/Interfaces/VideoMediaInterface.php | 2 +- system/src/Grav/Common/Media/Traits/AudioMediaTrait.php | 2 +- system/src/Grav/Common/Media/Traits/ImageLoadingTrait.php | 2 +- system/src/Grav/Common/Media/Traits/ImageMediaTrait.php | 2 +- system/src/Grav/Common/Media/Traits/MediaFileTrait.php | 2 +- system/src/Grav/Common/Media/Traits/MediaObjectTrait.php | 2 +- system/src/Grav/Common/Media/Traits/MediaPlayerTrait.php | 2 +- system/src/Grav/Common/Media/Traits/MediaTrait.php | 2 +- system/src/Grav/Common/Media/Traits/MediaUploadTrait.php | 2 +- system/src/Grav/Common/Media/Traits/StaticResizeTrait.php | 2 +- system/src/Grav/Common/Media/Traits/ThumbnailMediaTrait.php | 2 +- system/src/Grav/Common/Media/Traits/VideoMediaTrait.php | 2 +- system/src/Grav/Common/Page/Collection.php | 2 +- system/src/Grav/Common/Page/Header.php | 2 +- .../Grav/Common/Page/Interfaces/PageCollectionInterface.php | 2 +- .../Grav/Common/Page/Interfaces/PageContentInterface.php | 2 +- system/src/Grav/Common/Page/Interfaces/PageInterface.php | 2 +- .../Grav/Common/Page/Interfaces/PagesSourceInterface.php | 2 +- system/src/Grav/Common/Page/Markdown/Excerpts.php | 2 +- system/src/Grav/Common/Page/Media.php | 2 +- system/src/Grav/Common/Page/Medium/AbstractMedia.php | 2 +- system/src/Grav/Common/Page/Medium/AudioMedium.php | 2 +- system/src/Grav/Common/Page/Medium/GlobalMedia.php | 2 +- system/src/Grav/Common/Page/Medium/ImageFile.php | 2 +- system/src/Grav/Common/Page/Medium/ImageMedium.php | 2 +- system/src/Grav/Common/Page/Medium/Link.php | 2 +- system/src/Grav/Common/Page/Medium/Medium.php | 2 +- system/src/Grav/Common/Page/Medium/MediumFactory.php | 2 +- system/src/Grav/Common/Page/Medium/ParsedownHtmlTrait.php | 2 +- system/src/Grav/Common/Page/Medium/RenderableInterface.php | 2 +- system/src/Grav/Common/Page/Medium/StaticImageMedium.php | 2 +- system/src/Grav/Common/Page/Medium/StaticResizeTrait.php | 2 +- system/src/Grav/Common/Page/Medium/ThumbnailImageMedium.php | 2 +- system/src/Grav/Common/Page/Medium/VideoMedium.php | 2 +- system/src/Grav/Common/Page/Page.php | 2 +- system/src/Grav/Common/Page/Pages.php | 2 +- system/src/Grav/Common/Page/Types.php | 2 +- system/src/Grav/Common/Plugin.php | 2 +- system/src/Grav/Common/Plugins.php | 2 +- system/src/Grav/Common/Processors/AssetsProcessor.php | 2 +- system/src/Grav/Common/Processors/BackupsProcessor.php | 2 +- .../src/Grav/Common/Processors/DebuggerAssetsProcessor.php | 2 +- .../Grav/Common/Processors/Events/RequestHandlerEvent.php | 2 +- system/src/Grav/Common/Processors/InitializeProcessor.php | 2 +- system/src/Grav/Common/Processors/PagesProcessor.php | 2 +- system/src/Grav/Common/Processors/PluginsProcessor.php | 2 +- system/src/Grav/Common/Processors/ProcessorBase.php | 2 +- system/src/Grav/Common/Processors/ProcessorInterface.php | 2 +- system/src/Grav/Common/Processors/RenderProcessor.php | 2 +- system/src/Grav/Common/Processors/RequestProcessor.php | 2 +- system/src/Grav/Common/Processors/SchedulerProcessor.php | 2 +- system/src/Grav/Common/Processors/TasksProcessor.php | 2 +- system/src/Grav/Common/Processors/ThemesProcessor.php | 2 +- system/src/Grav/Common/Processors/TwigProcessor.php | 2 +- system/src/Grav/Common/Scheduler/Cron.php | 2 +- system/src/Grav/Common/Scheduler/IntervalTrait.php | 2 +- system/src/Grav/Common/Scheduler/Job.php | 2 +- system/src/Grav/Common/Scheduler/Scheduler.php | 2 +- system/src/Grav/Common/Security.php | 2 +- system/src/Grav/Common/Service/AccountsServiceProvider.php | 2 +- system/src/Grav/Common/Service/AssetsServiceProvider.php | 2 +- system/src/Grav/Common/Service/BackupsServiceProvider.php | 2 +- system/src/Grav/Common/Service/ConfigServiceProvider.php | 2 +- system/src/Grav/Common/Service/ErrorServiceProvider.php | 2 +- .../src/Grav/Common/Service/FilesystemServiceProvider.php | 2 +- system/src/Grav/Common/Service/FlexServiceProvider.php | 2 +- system/src/Grav/Common/Service/InflectorServiceProvider.php | 2 +- system/src/Grav/Common/Service/LoggerServiceProvider.php | 2 +- system/src/Grav/Common/Service/OutputServiceProvider.php | 2 +- system/src/Grav/Common/Service/PagesServiceProvider.php | 2 +- system/src/Grav/Common/Service/RequestServiceProvider.php | 2 +- system/src/Grav/Common/Service/SchedulerServiceProvider.php | 2 +- system/src/Grav/Common/Service/SessionServiceProvider.php | 2 +- system/src/Grav/Common/Service/StreamsServiceProvider.php | 2 +- system/src/Grav/Common/Service/TaskServiceProvider.php | 2 +- system/src/Grav/Common/Session.php | 2 +- system/src/Grav/Common/Taxonomy.php | 2 +- system/src/Grav/Common/Theme.php | 2 +- system/src/Grav/Common/Themes.php | 2 +- system/src/Grav/Common/Twig/Exception/TwigException.php | 2 +- .../src/Grav/Common/Twig/Extension/FilesystemExtension.php | 2 +- system/src/Grav/Common/Twig/Extension/GravExtension.php | 2 +- system/src/Grav/Common/Twig/Node/TwigNodeCache.php | 2 +- system/src/Grav/Common/Twig/Node/TwigNodeMarkdown.php | 2 +- system/src/Grav/Common/Twig/Node/TwigNodeRender.php | 2 +- system/src/Grav/Common/Twig/Node/TwigNodeScript.php | 2 +- system/src/Grav/Common/Twig/Node/TwigNodeStyle.php | 2 +- system/src/Grav/Common/Twig/Node/TwigNodeSwitch.php | 2 +- system/src/Grav/Common/Twig/Node/TwigNodeThrow.php | 2 +- system/src/Grav/Common/Twig/Node/TwigNodeTryCatch.php | 2 +- .../Grav/Common/Twig/TokenParser/TwigTokenParserCache.php | 2 +- .../Common/Twig/TokenParser/TwigTokenParserMarkdown.php | 2 +- .../Grav/Common/Twig/TokenParser/TwigTokenParserRender.php | 2 +- .../Grav/Common/Twig/TokenParser/TwigTokenParserScript.php | 2 +- .../Grav/Common/Twig/TokenParser/TwigTokenParserStyle.php | 2 +- .../Grav/Common/Twig/TokenParser/TwigTokenParserSwitch.php | 2 +- .../Grav/Common/Twig/TokenParser/TwigTokenParserThrow.php | 2 +- .../Common/Twig/TokenParser/TwigTokenParserTryCatch.php | 2 +- system/src/Grav/Common/Twig/Twig.php | 2 +- system/src/Grav/Common/Twig/TwigClockworkDataSource.php | 2 +- system/src/Grav/Common/Twig/TwigClockworkDumper.php | 2 +- system/src/Grav/Common/Twig/TwigEnvironment.php | 2 +- system/src/Grav/Common/Twig/TwigExtension.php | 2 +- system/src/Grav/Common/Twig/WriteCacheFileTrait.php | 2 +- system/src/Grav/Common/Uri.php | 2 +- system/src/Grav/Common/User/Access.php | 2 +- system/src/Grav/Common/User/Authentication.php | 2 +- system/src/Grav/Common/User/DataUser/User.php | 2 +- system/src/Grav/Common/User/DataUser/UserCollection.php | 2 +- system/src/Grav/Common/User/Group.php | 2 +- .../src/Grav/Common/User/Interfaces/AuthorizeInterface.php | 2 +- .../Grav/Common/User/Interfaces/UserCollectionInterface.php | 2 +- .../src/Grav/Common/User/Interfaces/UserGroupInterface.php | 2 +- system/src/Grav/Common/User/Interfaces/UserInterface.php | 2 +- system/src/Grav/Common/User/Traits/UserTrait.php | 2 +- system/src/Grav/Common/User/User.php | 2 +- system/src/Grav/Common/Utils.php | 2 +- system/src/Grav/Common/Yaml.php | 2 +- system/src/Grav/Console/Application/Application.php | 2 +- .../Application/CommandLoader/PluginCommandLoader.php | 2 +- system/src/Grav/Console/Application/GpmApplication.php | 2 +- system/src/Grav/Console/Application/GravApplication.php | 2 +- system/src/Grav/Console/Application/PluginApplication.php | 2 +- system/src/Grav/Console/Cli/BackupCommand.php | 2 +- system/src/Grav/Console/Cli/CleanCommand.php | 2 +- system/src/Grav/Console/Cli/ClearCacheCommand.php | 2 +- system/src/Grav/Console/Cli/ComposerCommand.php | 2 +- system/src/Grav/Console/Cli/InstallCommand.php | 2 +- system/src/Grav/Console/Cli/LogViewerCommand.php | 2 +- system/src/Grav/Console/Cli/NewProjectCommand.php | 2 +- system/src/Grav/Console/Cli/PageSystemValidatorCommand.php | 2 +- system/src/Grav/Console/Cli/SandboxCommand.php | 2 +- system/src/Grav/Console/Cli/SchedulerCommand.php | 2 +- system/src/Grav/Console/Cli/SecurityCommand.php | 2 +- system/src/Grav/Console/Cli/ServerCommand.php | 2 +- system/src/Grav/Console/Cli/YamlLinterCommand.php | 2 +- system/src/Grav/Console/ConsoleCommand.php | 2 +- system/src/Grav/Console/ConsoleTrait.php | 2 +- system/src/Grav/Console/Gpm/DirectInstallCommand.php | 2 +- system/src/Grav/Console/Gpm/IndexCommand.php | 2 +- system/src/Grav/Console/Gpm/InfoCommand.php | 2 +- system/src/Grav/Console/Gpm/InstallCommand.php | 2 +- system/src/Grav/Console/Gpm/SelfupgradeCommand.php | 2 +- system/src/Grav/Console/Gpm/UninstallCommand.php | 2 +- system/src/Grav/Console/Gpm/UpdateCommand.php | 2 +- system/src/Grav/Console/Gpm/VersionCommand.php | 2 +- system/src/Grav/Console/GpmCommand.php | 2 +- system/src/Grav/Console/GravCommand.php | 2 +- system/src/Grav/Console/Plugin/PluginListCommand.php | 2 +- system/src/Grav/Console/TerminalObjects/Table.php | 2 +- system/src/Grav/Events/FlexRegisterEvent.php | 2 +- system/src/Grav/Events/PermissionsRegisterEvent.php | 2 +- system/src/Grav/Events/PluginsLoadedEvent.php | 2 +- system/src/Grav/Events/SessionStartEvent.php | 2 +- system/src/Grav/Framework/Acl/Access.php | 2 +- system/src/Grav/Framework/Acl/Action.php | 2 +- system/src/Grav/Framework/Acl/Permissions.php | 2 +- system/src/Grav/Framework/Acl/PermissionsReader.php | 2 +- system/src/Grav/Framework/Acl/RecursiveActionIterator.php | 2 +- system/src/Grav/Framework/Cache/AbstractCache.php | 2 +- system/src/Grav/Framework/Cache/Adapter/ChainCache.php | 2 +- system/src/Grav/Framework/Cache/Adapter/DoctrineCache.php | 2 +- system/src/Grav/Framework/Cache/Adapter/FileCache.php | 2 +- system/src/Grav/Framework/Cache/Adapter/MemoryCache.php | 2 +- system/src/Grav/Framework/Cache/Adapter/SessionCache.php | 2 +- system/src/Grav/Framework/Cache/CacheInterface.php | 2 +- system/src/Grav/Framework/Cache/CacheTrait.php | 2 +- .../src/Grav/Framework/Cache/Exception/CacheException.php | 2 +- .../Framework/Cache/Exception/InvalidArgumentException.php | 2 +- .../Grav/Framework/Collection/AbstractFileCollection.php | 2 +- .../Grav/Framework/Collection/AbstractIndexCollection.php | 2 +- .../Grav/Framework/Collection/AbstractLazyCollection.php | 2 +- system/src/Grav/Framework/Collection/ArrayCollection.php | 2 +- .../src/Grav/Framework/Collection/CollectionInterface.php | 2 +- system/src/Grav/Framework/Collection/FileCollection.php | 2 +- .../Grav/Framework/Collection/FileCollectionInterface.php | 2 +- system/src/Grav/Framework/Compat/Serializable.php | 2 +- system/src/Grav/Framework/ContentBlock/ContentBlock.php | 2 +- .../Grav/Framework/ContentBlock/ContentBlockInterface.php | 2 +- system/src/Grav/Framework/ContentBlock/HtmlBlock.php | 2 +- .../src/Grav/Framework/ContentBlock/HtmlBlockInterface.php | 2 +- .../Framework/Controller/Traits/ControllerResponseTrait.php | 2 +- system/src/Grav/Framework/DI/Container.php | 2 +- system/src/Grav/Framework/File/AbstractFile.php | 2 +- system/src/Grav/Framework/File/CsvFile.php | 2 +- system/src/Grav/Framework/File/DataFile.php | 2 +- system/src/Grav/Framework/File/File.php | 2 +- .../src/Grav/Framework/File/Formatter/AbstractFormatter.php | 2 +- system/src/Grav/Framework/File/Formatter/CsvFormatter.php | 2 +- system/src/Grav/Framework/File/Formatter/IniFormatter.php | 2 +- system/src/Grav/Framework/File/Formatter/JsonFormatter.php | 2 +- .../src/Grav/Framework/File/Formatter/MarkdownFormatter.php | 2 +- .../Grav/Framework/File/Formatter/SerializeFormatter.php | 2 +- system/src/Grav/Framework/File/Formatter/YamlFormatter.php | 2 +- system/src/Grav/Framework/File/IniFile.php | 2 +- .../Framework/File/Interfaces/FileFormatterInterface.php | 2 +- system/src/Grav/Framework/File/Interfaces/FileInterface.php | 2 +- system/src/Grav/Framework/File/JsonFile.php | 2 +- system/src/Grav/Framework/File/MarkdownFile.php | 2 +- system/src/Grav/Framework/File/YamlFile.php | 2 +- system/src/Grav/Framework/Filesystem/Filesystem.php | 2 +- .../Framework/Filesystem/Interfaces/FilesystemInterface.php | 2 +- system/src/Grav/Framework/Flex/Flex.php | 2 +- system/src/Grav/Framework/Flex/FlexCollection.php | 2 +- system/src/Grav/Framework/Flex/FlexDirectory.php | 2 +- system/src/Grav/Framework/Flex/FlexDirectoryForm.php | 2 +- system/src/Grav/Framework/Flex/FlexForm.php | 2 +- system/src/Grav/Framework/Flex/FlexFormFlash.php | 2 +- system/src/Grav/Framework/Flex/FlexIndex.php | 2 +- system/src/Grav/Framework/Flex/FlexObject.php | 2 +- .../Framework/Flex/Interfaces/FlexAuthorizeInterface.php | 2 +- .../Framework/Flex/Interfaces/FlexCollectionInterface.php | 2 +- .../Grav/Framework/Flex/Interfaces/FlexCommonInterface.php | 2 +- .../Flex/Interfaces/FlexDirectoryFormInterface.php | 2 +- .../Framework/Flex/Interfaces/FlexDirectoryInterface.php | 2 +- .../Grav/Framework/Flex/Interfaces/FlexFormInterface.php | 2 +- .../Grav/Framework/Flex/Interfaces/FlexIndexInterface.php | 2 +- system/src/Grav/Framework/Flex/Interfaces/FlexInterface.php | 2 +- .../Framework/Flex/Interfaces/FlexObjectFormInterface.php | 2 +- .../Grav/Framework/Flex/Interfaces/FlexObjectInterface.php | 2 +- .../Grav/Framework/Flex/Interfaces/FlexStorageInterface.php | 2 +- .../Framework/Flex/Interfaces/FlexTranslateInterface.php | 2 +- system/src/Grav/Framework/Flex/Pages/FlexPageCollection.php | 2 +- system/src/Grav/Framework/Flex/Pages/FlexPageIndex.php | 2 +- system/src/Grav/Framework/Flex/Pages/FlexPageObject.php | 2 +- .../Grav/Framework/Flex/Pages/Traits/PageAuthorsTrait.php | 2 +- .../Grav/Framework/Flex/Pages/Traits/PageContentTrait.php | 2 +- .../Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php | 2 +- .../Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php | 2 +- .../Grav/Framework/Flex/Pages/Traits/PageTranslateTrait.php | 2 +- .../Framework/Flex/Storage/AbstractFilesystemStorage.php | 2 +- system/src/Grav/Framework/Flex/Storage/FileStorage.php | 2 +- system/src/Grav/Framework/Flex/Storage/FolderStorage.php | 2 +- system/src/Grav/Framework/Flex/Storage/SimpleStorage.php | 2 +- .../src/Grav/Framework/Flex/Traits/FlexAuthorizeTrait.php | 2 +- system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php | 2 +- .../Framework/Flex/Traits/FlexRelatedDirectoryTrait.php | 2 +- system/src/Grav/Framework/Form/FormFlash.php | 2 +- system/src/Grav/Framework/Form/FormFlashFile.php | 2 +- .../Grav/Framework/Form/Interfaces/FormFactoryInterface.php | 2 +- .../Grav/Framework/Form/Interfaces/FormFlashInterface.php | 2 +- system/src/Grav/Framework/Form/Interfaces/FormInterface.php | 2 +- system/src/Grav/Framework/Form/Traits/FormTrait.php | 2 +- system/src/Grav/Framework/Interfaces/RenderInterface.php | 2 +- .../src/Grav/Framework/Logger/Processors/UserProcessor.php | 2 +- .../Framework/Media/Interfaces/MediaCollectionInterface.php | 2 +- .../src/Grav/Framework/Media/Interfaces/MediaInterface.php | 2 +- .../Media/Interfaces/MediaManipulationInterface.php | 2 +- .../Framework/Media/Interfaces/MediaObjectInterface.php | 2 +- system/src/Grav/Framework/Mime/MimeTypes.php | 2 +- .../src/Grav/Framework/Object/Access/ArrayAccessTrait.php | 2 +- .../Grav/Framework/Object/Access/NestedArrayAccessTrait.php | 2 +- .../Object/Access/NestedPropertyCollectionTrait.php | 2 +- .../Grav/Framework/Object/Access/NestedPropertyTrait.php | 2 +- .../Framework/Object/Access/OverloadedPropertyTrait.php | 2 +- system/src/Grav/Framework/Object/ArrayObject.php | 2 +- .../Grav/Framework/Object/Base/ObjectCollectionTrait.php | 2 +- system/src/Grav/Framework/Object/Base/ObjectTrait.php | 2 +- .../Framework/Object/Collection/ObjectExpressionVisitor.php | 2 +- .../Object/Interfaces/NestedObjectCollectionInterface.php | 2 +- .../Framework/Object/Interfaces/NestedObjectInterface.php | 2 +- .../Object/Interfaces/ObjectCollectionInterface.php | 2 +- .../Grav/Framework/Object/Interfaces/ObjectInterface.php | 2 +- system/src/Grav/Framework/Object/LazyObject.php | 2 +- system/src/Grav/Framework/Object/ObjectCollection.php | 2 +- system/src/Grav/Framework/Object/ObjectIndex.php | 2 +- .../Grav/Framework/Object/Property/ArrayPropertyTrait.php | 2 +- .../Grav/Framework/Object/Property/LazyPropertyTrait.php | 2 +- .../Grav/Framework/Object/Property/MixedPropertyTrait.php | 2 +- .../Grav/Framework/Object/Property/ObjectPropertyTrait.php | 2 +- system/src/Grav/Framework/Object/PropertyObject.php | 2 +- system/src/Grav/Framework/Pagination/AbstractPagination.php | 2 +- .../Grav/Framework/Pagination/AbstractPaginationPage.php | 2 +- .../Framework/Pagination/Interfaces/PaginationInterface.php | 2 +- .../Pagination/Interfaces/PaginationPageInterface.php | 2 +- system/src/Grav/Framework/Pagination/Pagination.php | 2 +- system/src/Grav/Framework/Pagination/PaginationPage.php | 2 +- system/src/Grav/Framework/Psr7/AbstractUri.php | 2 +- system/src/Grav/Framework/Psr7/Request.php | 2 +- system/src/Grav/Framework/Psr7/Response.php | 2 +- system/src/Grav/Framework/Psr7/ServerRequest.php | 2 +- system/src/Grav/Framework/Psr7/Stream.php | 2 +- .../Grav/Framework/Psr7/Traits/MessageDecoratorTrait.php | 2 +- .../Grav/Framework/Psr7/Traits/RequestDecoratorTrait.php | 2 +- .../Grav/Framework/Psr7/Traits/ResponseDecoratorTrait.php | 2 +- .../Framework/Psr7/Traits/ServerRequestDecoratorTrait.php | 2 +- .../src/Grav/Framework/Psr7/Traits/StreamDecoratorTrait.php | 2 +- .../Framework/Psr7/Traits/UploadedFileDecoratorTrait.php | 2 +- .../src/Grav/Framework/Psr7/Traits/UriDecorationTrait.php | 2 +- system/src/Grav/Framework/Psr7/UploadedFile.php | 2 +- system/src/Grav/Framework/Psr7/Uri.php | 2 +- .../RequestHandler/Exception/InvalidArgumentException.php | 2 +- .../RequestHandler/Exception/NotFoundException.php | 2 +- .../RequestHandler/Exception/NotHandledException.php | 2 +- .../RequestHandler/Exception/PageExpiredException.php | 2 +- .../Framework/RequestHandler/Exception/RequestException.php | 2 +- .../Framework/RequestHandler/Middlewares/Exceptions.php | 2 +- system/src/Grav/Framework/RequestHandler/RequestHandler.php | 2 +- .../Framework/RequestHandler/Traits/RequestHandlerTrait.php | 2 +- system/src/Grav/Framework/Route/Route.php | 2 +- system/src/Grav/Framework/Route/RouteFactory.php | 2 +- .../Grav/Framework/Session/Exceptions/SessionException.php | 2 +- system/src/Grav/Framework/Session/Messages.php | 2 +- system/src/Grav/Framework/Session/Session.php | 2 +- system/src/Grav/Framework/Session/SessionInterface.php | 2 +- system/src/Grav/Framework/Uri/Uri.php | 2 +- system/src/Grav/Framework/Uri/UriFactory.php | 2 +- system/src/Grav/Framework/Uri/UriPartsFilter.php | 2 +- system/src/Grav/Installer/Install.php | 2 +- system/src/Grav/Installer/InstallException.php | 2 +- system/src/Grav/Installer/Versions.php | 2 +- system/src/Grav/Installer/YamlUpdater.php | 2 +- tmp/.gitkeep | 2 +- user/accounts/.gitkeep | 2 +- user/data/.gitkeep | 2 +- user/plugins/.gitkeep | 2 +- user/themes/.gitkeep | 2 +- 449 files changed, 451 insertions(+), 450 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f487b4cb1..485dbe3c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ * Added third `$name` parameter to `Blueprint::flattenData()` method, useful for flattening repeating data * `ControllerResponseTrait`: Redirect response should be json if the extension is .json * When symlinking Grav install, include also tests + * Updated copyright year to `2022` 3. [](#bugfix) * Fixed bad key lookup in `FlexRelatedDirectoryTrait::getCollectionByProperty()` * Fixed RequestHandlers `NotFoundException` having empty request diff --git a/assets/.gitkeep b/assets/.gitkeep index 33a9aed71..8efbf1f12 100644 --- a/assets/.gitkeep +++ b/assets/.gitkeep @@ -1 +1 @@ -/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ +/* @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. */ diff --git a/backup/.gitkeep b/backup/.gitkeep index 33a9aed71..8efbf1f12 100644 --- a/backup/.gitkeep +++ b/backup/.gitkeep @@ -1 +1 @@ -/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ +/* @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. */ diff --git a/bin/gpm b/bin/gpm index ba2fad110..9e58706f6 100755 --- a/bin/gpm +++ b/bin/gpm @@ -2,7 +2,7 @@ [ 'name' => 'Latin', 'nativeName' => 'Latina' ], 'lb' => [ 'name' => 'Luxembourgish', 'nativeName' => 'Lëtzebuergesch' ], 'lg' => [ 'name' => 'Luganda', 'nativeName' => 'Luganda' ], - 'lo' => [ 'name' => 'Lao', 'nativeName' => 'Lao' ], + 'lo' => [ 'name' => 'Lao', 'nativeName' => 'Lao' ], 'lt' => [ 'name' => 'Lithuanian', 'nativeName' => 'Lietuvių' ], 'lv' => [ 'name' => 'Latvian', 'nativeName' => 'Latviešu' ], 'mai' => [ 'name' => 'Maithili', 'nativeName' => 'मैथिली মৈথিলী' ], @@ -103,7 +103,7 @@ class LanguageCodes 'ml' => [ 'name' => 'Malayalam', 'nativeName' => 'മലയാളം' ], 'mn' => [ 'name' => 'Mongolian', 'nativeName' => 'Монгол' ], 'mr' => [ 'name' => 'Marathi', 'nativeName' => 'मराठी' ], - 'my' => [ 'name' => 'Myanmar (Burmese)', 'nativeName' => 'ဗမာी' ], + 'my' => [ 'name' => 'Myanmar (Burmese)', 'nativeName' => 'ဗမာी' ], 'no' => [ 'name' => 'Norwegian', 'nativeName' => 'Norsk' ], 'nb' => [ 'name' => 'Norwegian', 'nativeName' => 'Norsk' ], 'nb-NO' => [ 'name' => 'Norwegian (Bokmål)', 'nativeName' => 'Norsk bokmål' ], diff --git a/system/src/Grav/Common/Markdown/Parsedown.php b/system/src/Grav/Common/Markdown/Parsedown.php index bdc5bdcd2..f0d8a48ff 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 b8e760efd..ef450feaf 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 95a8f5f23..a593dd749 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 d9c69d281..6465d6b9c 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 702cfda9b..eb38ea83b 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 377258c9e..cbf8f1de3 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 ad9fe96c3..62c531c89 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 07a5c26df..c20e4de99 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 436fe1681..273556a6d 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 4f229c2b5..41747be67 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 90c891481..c46dd38c7 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Interfaces/MediaPlayerInterface.php b/system/src/Grav/Common/Media/Interfaces/MediaPlayerInterface.php index 9307915c4..fbe6f656f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 8bfef845e..73625999a 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 ff0655a62..6d42feff2 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 160837dec..a0834721d 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 c0237638e..75e23cab8 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 f6e22224e..c1c46dc94 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 71981331d..63906fc4a 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 705d3c83f..492b3af85 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Media/Traits/MediaPlayerTrait.php b/system/src/Grav/Common/Media/Traits/MediaPlayerTrait.php index 66e9f47d9..06cb99ad9 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 5faba826b..14bfa9072 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 7a1f55d6e..98885e06c 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 49d75be67..d8a4b0831 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 eab732004..100b5321c 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 e03fbbd81..b16bb53c7 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 a2fee1b7e..987b8d931 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 0ab9af407..c18b58d37 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 88968e5b5..493ab4398 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 69bf8bf0d..a80972b6b 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 e5ea20c4f..56fc891b9 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 ef5cfba11..ff4ebdae3 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 9b0b9963c..f500f4abe 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 b9936850c..24bc2a6c3 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 4ba532749..9b3650b8d 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 f34f0a9c2..cc53f8198 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 50d69c747..af8ee841e 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 987918714..1aae7eeb6 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 7bb5b46c2..42d8f0e75 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 03c15e5cb..c76d8c191 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 15263bd8f..1fe882e98 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 7dee4ea18..cf25f22cf 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 44ab95292..4ab2fb58f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 ac7244700..1ee6a9660 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 ba92fa1ca..5c5bf8c73 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 d95b2d634..caaa7e2d6 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 a56a20d15..1e4d862f9 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 bfcf550c4..0e629dc89 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 31dfe1ffd..abda49bfe 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Pages.php b/system/src/Grav/Common/Page/Pages.php index 9e5d47db0..c4029fe9f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Page/Types.php b/system/src/Grav/Common/Page/Types.php index c7183680e..43fe0fb64 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 3510b53ec..30e5344f6 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 88b5e524e..42b1593c2 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Processors/AssetsProcessor.php b/system/src/Grav/Common/Processors/AssetsProcessor.php index 66bb5e3ff..e460fb002 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 6e960b493..83e8a0c21 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 de7cafcfc..a3d5a5152 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 32908bad7..30f6195b6 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 b31530e80..04e06edf3 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Processors/PagesProcessor.php b/system/src/Grav/Common/Processors/PagesProcessor.php index 36f6718d2..3338e0c63 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 485578e49..ae8790104 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 a3506f599..935339144 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 8a6edbe18..0aed19504 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 329da22a3..e12cc45a3 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 971fb6747..358e81b42 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 69cc16385..722bfcc92 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 07e0934af..29f3458ee 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 951dc79e5..60d089e8b 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 6604b5c05..ffc1032ea 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 5127a997f..0103839d3 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 cc5c1654c..5f7406b8e 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 13059a572..41561192e 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 73a071225..19eb9eac3 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 fe259d8ba..a3ca3bb62 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 8b158c93c..60f26e5b0 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 1e4e647ca..54a44a1c8 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 00fa9631a..58f5021a3 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 3a5c2e27b..e65e22850 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 322736584..02d38c930 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 62dad5d81..1dde5b3e5 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 9c8cd49b1..e7b283ab0 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 861a69e04..f43a4461d 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 5043cfbd0..43a67cadf 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 9a49185a8..2dbd3436f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 55f6a450d..bec635ac8 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 17b3149e5..a44c73564 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 a95272544..13918fbc2 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 502007c7d..80e24b4c7 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/StreamsServiceProvider.php b/system/src/Grav/Common/Service/StreamsServiceProvider.php index edde09ad5..f501b4903 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 49ce147e9..2989e9d27 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 322162705..513143e09 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 0d0a450b0..5079a2572 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 a5006a215..60131292a 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 6126841cf..3567ccadd 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Exception/TwigException.php b/system/src/Grav/Common/Twig/Exception/TwigException.php index bc023afd7..7605de4c4 100644 --- a/system/src/Grav/Common/Twig/Exception/TwigException.php +++ b/system/src/Grav/Common/Twig/Exception/TwigException.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig\Exception * - * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Extension/FilesystemExtension.php b/system/src/Grav/Common/Twig/Extension/FilesystemExtension.php index dfd5fdd90..f60fa12c2 100644 --- a/system/src/Grav/Common/Twig/Extension/FilesystemExtension.php +++ b/system/src/Grav/Common/Twig/Extension/FilesystemExtension.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Extension/GravExtension.php b/system/src/Grav/Common/Twig/Extension/GravExtension.php index 4c0d9fe46..b6f30906b 100644 --- a/system/src/Grav/Common/Twig/Extension/GravExtension.php +++ b/system/src/Grav/Common/Twig/Extension/GravExtension.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeCache.php b/system/src/Grav/Common/Twig/Node/TwigNodeCache.php index 0ed1fff0c..e05e37248 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 81cecaeaf..4637db774 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 798c6baa6..1aeb616b1 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 46a08703b..d7b4ae79f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 05355f904..8710bf531 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 43ae56f18..7bd368e6d 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 3bfe6124e..41ca15dc2 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 40e9240f3..1213b7c64 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 371e89ae6..1cf21918b 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 9dab4ae5c..49e34e693 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 ab2bdde0f..de16266b0 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 b86063165..e98365b94 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 c8d9544ce..0687395ad 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 4540bbf7e..c63fe9565 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 bd4adab97..41f415d2a 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 46af1767a..993063283 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 1416dac85..39ae3c6f6 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TwigClockworkDataSource.php b/system/src/Grav/Common/Twig/TwigClockworkDataSource.php index 11127b87c..407a05ef4 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 2c1f4be02..c960cf2cd 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 f7e7c15bd..6b2a86bef 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 698858b56..07c442e8e 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/WriteCacheFileTrait.php b/system/src/Grav/Common/Twig/WriteCacheFileTrait.php index edab8e5b8..575a28163 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 7491068c0..cd339d3d6 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 6503c891f..96f4d96d6 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 6ff95e7bf..c32fd62e6 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 0b8a53b9e..b442cc3e5 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/DataUser/UserCollection.php b/system/src/Grav/Common/User/DataUser/UserCollection.php index 3da7e2dde..9f35e37e6 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 7dd6d650c..9be619a1c 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 3ad8d2cc5..1aeb004e6 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 d892e820f..5bcfbc0f2 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 c345c4b38..c18388ce9 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 02827e37c..dcd014c88 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 5a6b74938..0608caf5e 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 4b2319fc5..b38c72e26 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 5295a6400..72cd1ceae 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Yaml.php b/system/src/Grav/Common/Yaml.php index 330b6c383..0758599dc 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 21cea8730..29c18f3f1 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 9b7b568d9..adf644730 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 df383f2d2..f9e6b616e 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 739ca396b..f06dae650 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 75e9eb704..e365b1e08 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 a8a025d2a..1fe84ea01 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/CleanCommand.php b/system/src/Grav/Console/Cli/CleanCommand.php index 84b46d6cc..e6b8f9875 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 daed2a533..7550dd938 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 5075d1d0f..0dc9bcd15 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 22258beb3..33198cb5f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 d3924f88c..d7e127e5f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 d67cb1c8d..7abbc4ed3 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 4d234d75d..3a6960077 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 995812c1f..2ba562542 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 c5385aad2..8b8470a4c 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 7f728b69f..b6cb662e0 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/ServerCommand.php b/system/src/Grav/Console/Cli/ServerCommand.php index 77bce8b1d..29b423ecd 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 a9628cdd1..75a75594f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 044f1b0ff..c522c88b3 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 feb10d32e..0af4075ab 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 e5c662bcc..fbb02207c 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 ecc91feb0..367322bb9 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Gpm/InfoCommand.php b/system/src/Grav/Console/Gpm/InfoCommand.php index 5dddd32b5..c6f855208 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 92c8e07d7..1df7803f6 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 b84001698..a3d53ffee 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 cb14c6552..a3db65709 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Gpm/UpdateCommand.php b/system/src/Grav/Console/Gpm/UpdateCommand.php index 300fe61d8..73c5c9e42 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 124aad3c0..862919648 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 816e87223..a14eb4717 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 0249f1427..7db18e219 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 81041c0e5..022661452 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 a71d7c0c8..153993dcd 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 13aebf386..b02ed1dae 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 5e63c85ab..434dcfaf2 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 9dfd18b4a..13e22264d 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 e724a0922..fc4f3649c 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 0a6bb4102..45cf2bf9b 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 ee46f55f9..6251c3c89 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 83c6179ea..e54590a0d 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 5e8e892bb..350fc967a 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 3b0e822cd..1fb9a60ba 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 bfb5125ec..b6d00a3b8 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 a5f2f582e..bca940fa0 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 26819d89b..15afed380 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 69a112772..7f1d5e7b0 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 c043bf9e6..21cd89c1c 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 e189e3e7e..02fe7c9e3 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 efd9d3122..03dfa7a14 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 287f92462..37dd6c955 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 1db325694..db33883b0 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 08a343504..70c041885 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 77b3247f0..500aea8e4 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 a4392c144..02916d909 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 5f7ad1b12..b0a93f514 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 892cfcb5a..cad02f26d 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 def9427a1..e098dd6a1 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 f7b4f258b..bae0e7b2f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 45c446c63..1b56da953 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 3c9bf6a08..22e4648d8 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 95d11fd25..7259df090 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 fb445a398..bb0e46f8f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 5c5eb4342..734d5077f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 616e4a2cc..686127f45 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 36f5411af..efd9c7dbd 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 76434a36a..dde0da3ca 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 a49d79fc9..b216ea6c8 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 7be6879b7..7eba91e88 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 114146f94..189db53de 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 a6a8f3c9c..b1a1c4f67 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 f5ff3f24a..6a6981bc0 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 072de1211..37ab5bb25 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 2e7404b9c..ecf67d1f2 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 395766718..2bd6c79ad 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 a30d7a906..e36276a81 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 f045d71e3..25aee813b 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 3909f6e85..31aff2c67 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 64214998d..0807ee3c2 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 49eda4f1d..78714af7e 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 015b1ada2..f2cc288a9 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 f3b0902c8..7751e84d6 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 881862b78..a79d5ce77 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 d191e3cf9..c4300ade5 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 f4e753e08..5000b6996 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 f80b77244..fa1000941 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 28dc94345..4d662d192 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 17c557ae0..186c60abc 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 57a0a4c46..f96633b31 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 693ef120b..709f41891 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 5d7221847..a1263f67f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/FlexFormFlash.php b/system/src/Grav/Framework/Flex/FlexFormFlash.php index feb7a9ee9..3f52cdb6f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 c433a080b..54438af51 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/FlexObject.php b/system/src/Grav/Framework/Flex/FlexObject.php index 87773470a..afc656c04 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 102dbf4a7..c1025a4b7 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 2510e5de7..d14b69f40 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 ed045e25f..7c1975f21 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 df6f7d6a6..203c76603 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 1d9565745..a77df958f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 eaafaf01c..ba9996afc 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 71dd72770..d8f8ba3c9 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 cbd440bd2..f1376a589 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 044ee612d..190a9634a 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 a0f30c6e9..d02bc8b30 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 08c433596..420992472 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 28e488860..8df11fa23 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 d206921e5..5901557d7 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 904d1f6da..5bb551797 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 c2a2d6008..e700424b9 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageAuthorsTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageAuthorsTrait.php index 5d3e96803..d0934e12c 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 bbf5e1b04..43dfee116 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php index ae2a6bc9c..539b84c99 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php index 90773cdda..421cbec8c 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageTranslateTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageTranslateTrait.php index 0ce0d7308..4bec685b4 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 2e3132146..ee04c519d 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Storage/FileStorage.php b/system/src/Grav/Framework/Flex/Storage/FileStorage.php index eabd658fe..7a1764692 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Storage/FolderStorage.php b/system/src/Grav/Framework/Flex/Storage/FolderStorage.php index b2b9533a2..4da59d73c 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Storage/SimpleStorage.php b/system/src/Grav/Framework/Flex/Storage/SimpleStorage.php index 78a4ad206..30da11e19 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 8cbd1d542..ef4c433a2 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 c2bc66891..05e3a4433 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Traits/FlexRelatedDirectoryTrait.php b/system/src/Grav/Framework/Flex/Traits/FlexRelatedDirectoryTrait.php index bafcb1ed3..de98359e7 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 864e992f3..06cc2eeea 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 800d7c3a8..6c995993e 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 d21d4aa05..6a85f668c 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 d51bd8d9e..44bee025c 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 98156469d..0edfc42a9 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 3c368d97b..f4be9e7aa 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 7a7d9d367..5bc6e5835 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Logger/Processors/UserProcessor.php b/system/src/Grav/Framework/Logger/Processors/UserProcessor.php index 885b4f0a8..f0ebef10c 100644 --- a/system/src/Grav/Framework/Logger/Processors/UserProcessor.php +++ b/system/src/Grav/Framework/Logger/Processors/UserProcessor.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Logger * - * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 b3985f308..2bac98f15 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 2c5a4b374..8688ad1c3 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 fef475f8b..bca9a228d 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 dc7f1481d..f4409c5c9 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Mime/MimeTypes.php b/system/src/Grav/Framework/Mime/MimeTypes.php index dadcddf7a..e3a5ea8ca 100644 --- a/system/src/Grav/Framework/Mime/MimeTypes.php +++ b/system/src/Grav/Framework/Mime/MimeTypes.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Mime * - * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 affff03b0..4b67599fb 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 83658753d..d9acb104f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 120c1a49d..561b6fec3 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 40395cbb0..64107e0d3 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 d4dd049a8..f417fba02 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 57b65261d..a38864c89 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 e3c216492..e29370add 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 7b218c1b4..86df8c783 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 eaf589d86..e8b12b7f4 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 a2431be31..9f00babbf 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 4d7a880be..c144d8e92 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 8169c246e..bd25f6183 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 e8ec2c1e7..bc4d45df9 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 752c5b2d7..6be255884 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 4d23aa2cd..94392af89 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 123723345..ab495bd76 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 6f935fe97..8ab4c41e4 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 99ad446ea..e6892596a 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 584e812f3..1b57aab05 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 435220a19..bb0195d66 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 fcd364c6c..d9cdde83a 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 392bb7710..a4d902a2f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 946139589..072fea767 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 b2f5c352b..1a82147a1 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 b90594d71..26c069262 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 e602872d1..8f2fa203c 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 63ceb5f63..e64abe9c0 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 771899578..145437a58 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 cd65fd98f..795a1a46e 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 6d8e68f68..6189c4a6f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 692e891a4..cb5bcbbd3 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 a5a104363..6546bdc3e 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 39e3818ce..c09a03c28 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 13f4c6fd8..49f2a928a 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 7b62c3c05..4bbc73614 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 33c26e0c7..9222219e7 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 358f18b47..448323fdb 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 e0c65bddd..eec3add23 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 607d7571f..73adb6470 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 bfa63cdf4..c3ed62e69 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 bb88e937d..63fe04eff 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 451e58642..2456ea1f5 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 40c9e0a81..ce79ab2ac 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 1b18473f5..7b4a0e7d3 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 747c0ca5a..f75216722 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 60799644f..678b26786 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 9eadf72e3..36ef3a53f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 edd3178ff..2ce2427f4 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 1b5a79e8d..ff82889d4 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 68cd6c2b3..d4d90780f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 68baf55b6..fa1a76c30 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 5ad948b67..a07e87dc9 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 5d854a218..37c62a9af 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 53f331331..108563e37 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Session/SessionInterface.php b/system/src/Grav/Framework/Session/SessionInterface.php index a441791bd..fa2873d9a 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 c43496ea9..6355a1fc9 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 6b4e7afc5..ebfec0356 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 71a5135d6..260711bf4 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 889b1d5e6..0f23e8963 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 145b7c9cc..cdd5b7afa 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 03f3b0b0f..92a64ced7 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 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 9af20558f..ac562495f 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 - 2021 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/tmp/.gitkeep b/tmp/.gitkeep index 33a9aed71..8efbf1f12 100644 --- a/tmp/.gitkeep +++ b/tmp/.gitkeep @@ -1 +1 @@ -/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ +/* @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. */ diff --git a/user/accounts/.gitkeep b/user/accounts/.gitkeep index 33a9aed71..8efbf1f12 100644 --- a/user/accounts/.gitkeep +++ b/user/accounts/.gitkeep @@ -1 +1 @@ -/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ +/* @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. */ diff --git a/user/data/.gitkeep b/user/data/.gitkeep index 33a9aed71..8efbf1f12 100644 --- a/user/data/.gitkeep +++ b/user/data/.gitkeep @@ -1 +1 @@ -/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ +/* @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. */ diff --git a/user/plugins/.gitkeep b/user/plugins/.gitkeep index 33a9aed71..8efbf1f12 100644 --- a/user/plugins/.gitkeep +++ b/user/plugins/.gitkeep @@ -1 +1 @@ -/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ +/* @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. */ diff --git a/user/themes/.gitkeep b/user/themes/.gitkeep index 33a9aed71..8efbf1f12 100644 --- a/user/themes/.gitkeep +++ b/user/themes/.gitkeep @@ -1 +1 @@ -/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ +/* @copyright Copyright (c) 2015 - 2022 Trilby Media, LLC. All rights reserved. */ From b40b543790542f61df7b388fbdcce25dcf41db0f Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Mon, 3 Jan 2022 09:50:34 -0700 Subject: [PATCH 39/98] prepare for release --- CHANGELOG.md | 2 +- system/defines.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 485dbe3c8..571eda6ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ # v1.7.26 -## mm/dd/2021 +## 01/03/2022 1. [](#new) * Made `Grav::redirect()` to accept `Route` class diff --git a/system/defines.php b/system/defines.php index 6bacda3ac..7cbae21b7 100644 --- a/system/defines.php +++ b/system/defines.php @@ -9,7 +9,7 @@ // Some standard defines define('GRAV', true); -define('GRAV_VERSION', '1.7.25'); +define('GRAV_VERSION', '1.7.26'); define('GRAV_SCHEMA', '1.7.0_2020-11-20_1'); define('GRAV_TESTING', false); From 231c8a0f4cc3228228a09af8b34450dc77028352 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Tue, 4 Jan 2022 18:47:45 +0200 Subject: [PATCH 40/98] Fixed `UserObject::getAccess()` after cloning the object --- CHANGELOG.md | 6 ++++++ system/src/Grav/Common/Flex/Types/Users/UserObject.php | 4 +--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 571eda6ac..2f104546b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# v1.7.27 +## mm/dd/2022 + +3. [](#bugfix) + * Fixed `UserObject::getAccess()` after cloning the object + # v1.7.26 ## 01/03/2022 diff --git a/system/src/Grav/Common/Flex/Types/Users/UserObject.php b/system/src/Grav/Common/Flex/Types/Users/UserObject.php index 434a4a828..d78687137 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserObject.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserObject.php @@ -939,7 +939,7 @@ class UserObject extends FlexObject implements UserInterface, Countable protected function getAccess(): Access { if (null === $this->_access) { - $this->getProperty('access'); + $this->_access = new Access($this->getProperty('access')); } return $this->_access; @@ -955,8 +955,6 @@ class UserObject extends FlexObject implements UserInterface, Countable $value = new Access($value); } - $this->_access = $value; - return $value->jsonSerialize(); } From d541808604e1517a8d9f9da8e1c055937ee0a9d1 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Tue, 4 Jan 2022 11:01:21 -0700 Subject: [PATCH 41/98] prepare for release --- CHANGELOG.md | 4 ++-- system/defines.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f104546b..fc3900481 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ -# v1.7.27 -## mm/dd/2022 +# v1.7.26.1 +## 01/04/2022 3. [](#bugfix) * Fixed `UserObject::getAccess()` after cloning the object diff --git a/system/defines.php b/system/defines.php index 7cbae21b7..2bebab46c 100644 --- a/system/defines.php +++ b/system/defines.php @@ -9,7 +9,7 @@ // Some standard defines define('GRAV', true); -define('GRAV_VERSION', '1.7.26'); +define('GRAV_VERSION', '1.7.26.1'); define('GRAV_SCHEMA', '1.7.0_2020-11-20_1'); define('GRAV_TESTING', false); From cc8ec10098fb7acf370596fbbbe8fbb2ca278a1a Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 5 Jan 2022 19:52:57 +0200 Subject: [PATCH 42/98] Fixed CLI `--env` and `--lang` options having no effect if they aren't added before all the other options --- CHANGELOG.md | 6 ++++ .../Grav/Console/Application/Application.php | 35 +++++++++++++------ 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc3900481..f365fc25e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# v1.7.27 +## 01/04/2022 + +3. [](#bugfix) + * Fixed CLI `--env` and `--lang` options having no effect if they aren't added before all the other options + # v1.7.26.1 ## 01/04/2022 diff --git a/system/src/Grav/Console/Application/Application.php b/system/src/Grav/Console/Application/Application.php index 29c18f3f1..93ec7f6bd 100644 --- a/system/src/Grav/Console/Application/Application.php +++ b/system/src/Grav/Console/Application/Application.php @@ -10,11 +10,14 @@ namespace Grav\Console\Application; use Grav\Common\Grav; +use Symfony\Component\Console\ConsoleEvents; +use Symfony\Component\Console\Event\ConsoleCommandEvent; use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Symfony\Component\Console\Input\InputDefinition; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\EventDispatcher\EventDispatcher; /** * Class GpmApplication @@ -30,16 +33,28 @@ class Application extends \Symfony\Component\Console\Application protected $initialized = false; /** - * @param InputInterface $input - * @return string|null + * PluginApplication constructor. + * @param string $name + * @param string $version */ - public function getCommandName(InputInterface $input): ?string + public function __construct(string $name = 'UNKNOWN', string $version = 'UNKNOWN') { + parent::__construct($name, $version); + + // Add listener to prepare environment. + $dispatcher = new EventDispatcher(); + $dispatcher->addListener(ConsoleEvents::COMMAND, [$this, 'prepareEnvironment']); + + $this->setDispatcher($dispatcher); + } + + public function prepareEnvironment(ConsoleCommandEvent $event): void + { + $input = $event->getInput(); $this->environment = $input->getOption('env'); $this->language = $input->getOption('lang') ?? $this->language; - $this->init(); - return parent::getCommandName($input); + $this->init(); } /** @@ -58,7 +73,7 @@ class Application extends \Symfony\Component\Console\Application } /** - * Add global a --env option. + * Add global --env and --lang options. * * @return InputDefinition */ @@ -67,16 +82,16 @@ class Application extends \Symfony\Component\Console\Application $inputDefinition = parent::getDefaultInputDefinition(); $inputDefinition->addOption( new InputOption( - 'env', - null, + '--env', + '', InputOption::VALUE_OPTIONAL, 'Use environment configuration (defaults to localhost)' ) ); $inputDefinition->addOption( new InputOption( - 'lang', - null, + '--lang', + '', InputOption::VALUE_OPTIONAL, 'Language to be used (defaults to en)' ) From fbcaf991aab95d32061c0a7f98a32361831c0ad7 Mon Sep 17 00:00:00 2001 From: Djamil Legato Date: Wed, 5 Jan 2022 12:00:12 -0800 Subject: [PATCH 43/98] cleanup --- system/src/Grav/Console/Cli/SchedulerCommand.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/system/src/Grav/Console/Cli/SchedulerCommand.php b/system/src/Grav/Console/Cli/SchedulerCommand.php index 8b8470a4c..91fc57d14 100644 --- a/system/src/Grav/Console/Cli/SchedulerCommand.php +++ b/system/src/Grav/Console/Cli/SchedulerCommand.php @@ -77,8 +77,6 @@ class SchedulerCommand extends GravCommand $scheduler = $grav['scheduler']; $grav->fireEvent('onSchedulerInitialized', new Event(['scheduler' => $scheduler])); - $this->setHelp('foo'); - $input = $this->getInput(); $io = $this->getIO(); $error = 0; From e6447f72035e51c7049a1197cf1be6f55876672f Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 6 Jan 2022 15:36:29 +0200 Subject: [PATCH 44/98] Improved `Utils::download()` method to allow overrides on download name, mime and expires header --- CHANGELOG.md | 2 ++ system/src/Grav/Common/Utils.php | 11 ++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f365fc25e..217f6341e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # v1.7.27 ## 01/04/2022 +1. [](#improved) + * Improved `Utils::download()` method to allow overrides on download name, mime and expires header 3. [](#bugfix) * Fixed CLI `--env` and `--lang` options having no effect if they aren't added before all the other options diff --git a/system/src/Grav/Common/Utils.php b/system/src/Grav/Common/Utils.php index 72cd1ceae..ac0dd95d4 100644 --- a/system/src/Grav/Common/Utils.php +++ b/system/src/Grav/Common/Utils.php @@ -653,16 +653,17 @@ abstract class Utils * @param bool $force_download as opposed to letting browser choose if to download or render * @param int $sec Throttling, try 0.1 for some speed throttling of downloads * @param int $bytes Size of chunks to send in bytes. Default is 1024 + * @param array $options Extra options: [mime, download_name, expires] * @throws Exception */ - public static function download($file, $force_download = true, $sec = 0, $bytes = 1024) + public static function download($file, $force_download = true, $sec = 0, $bytes = 1024, array $options = []) { if (file_exists($file)) { // fire download event - Grav::instance()->fireEvent('onBeforeDownload', new Event(['file' => $file])); + Grav::instance()->fireEvent('onBeforeDownload', new Event(['file' => $file, 'options' => &$options])); $file_parts = pathinfo($file); - $mimetype = static::getMimeByExtension($file_parts['extension']); + $mimetype = $options['mime'] ?? static::getMimeByExtension($file_parts['extension']); $size = filesize($file); // File size // clean all buffers @@ -680,7 +681,7 @@ abstract class Utils if ($force_download) { // output the regular HTTP headers - header('Content-Disposition: attachment; filename="' . $file_parts['basename'] . '"'); + header('Content-Disposition: attachment; filename="' . ($options['download_name'] ?? $file_parts['basename']) . '"'); } // multipart-download and download resuming support @@ -704,7 +705,7 @@ abstract class Utils header('Content-Length: ' . $size); if (Grav::instance()['config']->get('system.cache.enabled')) { - $expires = Grav::instance()['config']->get('system.pages.expires'); + $expires = $options['expires'] ?? Grav::instance()['config']->get('system.pages.expires'); if ($expires > 0) { $expires_date = gmdate('D, d M Y H:i:s T', time() + $expires); header('Cache-Control: max-age=' . $expires); From d15542e55362204a83cce2afdb63ae5d6c8612cd Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 6 Jan 2022 16:01:53 +0200 Subject: [PATCH 45/98] SVG files do not have higher quality alternative --- system/src/Grav/Common/Page/Medium/StaticImageMedium.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/system/src/Grav/Common/Page/Medium/StaticImageMedium.php b/system/src/Grav/Common/Page/Medium/StaticImageMedium.php index 5c5bf8c73..97801000a 100644 --- a/system/src/Grav/Common/Page/Medium/StaticImageMedium.php +++ b/system/src/Grav/Common/Page/Medium/StaticImageMedium.php @@ -37,4 +37,12 @@ class StaticImageMedium extends Medium implements ImageMediaInterface return ['name' => 'img', 'attributes' => $attributes]; } + + /** + * @return $this + */ + public function higherQualityAlternative() + { + return $this; + } } From 47d7927bac8fcdd46af66c9ffb6e430e6be34ed6 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 6 Jan 2022 18:10:24 +0200 Subject: [PATCH 46/98] Improved `onPageFallBackUrl` event --- CHANGELOG.md | 1 + system/src/Grav/Common/Grav.php | 32 +++++++++++++++++++++----------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 217f6341e..6cea4dc23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ 1. [](#improved) * Improved `Utils::download()` method to allow overrides on download name, mime and expires header + * Improved `onPageFallBackUrl` event 3. [](#bugfix) * Fixed CLI `--env` and `--lang` options having no effect if they aren't added before all the other options diff --git a/system/src/Grav/Common/Grav.php b/system/src/Grav/Common/Grav.php index ca6112548..5519175e2 100644 --- a/system/src/Grav/Common/Grav.php +++ b/system/src/Grav/Common/Grav.php @@ -729,18 +729,36 @@ class Grav extends Container */ public function fallbackUrl($path) { - $this->fireEvent('onPageFallBackUrl'); - /** @var Uri $uri */ $uri = $this['uri']; /** @var Config $config */ $config = $this['config']; + $path_parts = pathinfo($path); + + /** @var Pages $pages */ + $pages = $this['pages']; + $page = $pages->find($path_parts['dirname'], true); + $uri_extension = strtolower($uri->extension() ?? ''); - $fallback_types = $config->get('system.media.allowed_fallback_types', null); + $fallback_types = $config->get('system.media.allowed_fallback_types'); $supported_types = $config->get('media.types'); + $parsed_url = parse_url(rawurldecode($uri->basename())); + $media_file = $parsed_url['path']; + + $event = new Event([ + 'uri' => $uri, + 'page' => &$page, + 'filename' => &$media_file, + 'extension' => $uri_extension, + 'allowed_fallback_types' => &$fallback_types, + 'media_types' => &$supported_types + ]); + + $this->fireEvent('onPageFallBackUrl', $event); + // Check whitelist first, then ensure extension is a valid media type if (!empty($fallback_types) && !in_array($uri_extension, $fallback_types, true)) { return false; @@ -749,16 +767,8 @@ class Grav extends Container return false; } - $path_parts = pathinfo($path); - - /** @var Pages $pages */ - $pages = $this['pages']; - $page = $pages->find($path_parts['dirname'], true); - if ($page) { $media = $page->media()->all(); - $parsed_url = parse_url(rawurldecode($uri->basename())); - $media_file = $parsed_url['path']; // if this is a media object, try actions first if (isset($media[$media_file])) { From 2335271472c5013a1d8139a70e52ec6d5c024e94 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Fri, 7 Jan 2022 21:42:25 +0200 Subject: [PATCH 47/98] Second attempt to fix CLI --env, now works with bin/plugins --- CHANGELOG.md | 2 +- .../Grav/Console/Application/Application.php | 25 ++++++++++++++++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cea4dc23..04e88091a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ # v1.7.27 -## 01/04/2022 +## mm/dd/2022 1. [](#improved) * Improved `Utils::download()` method to allow overrides on download name, mime and expires header diff --git a/system/src/Grav/Console/Application/Application.php b/system/src/Grav/Console/Application/Application.php index 93ec7f6bd..873b94e4f 100644 --- a/system/src/Grav/Console/Application/Application.php +++ b/system/src/Grav/Console/Application/Application.php @@ -48,13 +48,30 @@ class Application extends \Symfony\Component\Console\Application $this->setDispatcher($dispatcher); } - public function prepareEnvironment(ConsoleCommandEvent $event): void + /** + * @param InputInterface $input + * @return string|null + */ + public function getCommandName(InputInterface $input): ?string { - $input = $event->getInput(); - $this->environment = $input->getOption('env'); - $this->language = $input->getOption('lang') ?? $this->language; + if ($input->hasParameterOption('--env', true)) { + $this->environment = $input->getParameterOption('--env'); + } + if ($input->hasParameterOption('--lang', true)) { + $this->language = $input->getParameterOption('--lang'); + } $this->init(); + + return parent::getCommandName($input); + } + + /** + * @param ConsoleCommandEvent $event + * @return void + */ + public function prepareEnvironment(ConsoleCommandEvent $event): void + { } /** From c962201baead34427a274d0d64b2188869376ada Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Sun, 9 Jan 2022 13:29:40 -0700 Subject: [PATCH 48/98] initial js module support in assets --- system/blueprints/config/system.yaml | 33 ++++++++++ system/config/system.yaml | 3 + system/src/Grav/Common/Assets.php | 60 ++++++++++++++++--- system/src/Grav/Common/Assets/BaseAsset.php | 2 +- system/src/Grav/Common/Assets/Css.php | 2 +- system/src/Grav/Common/Assets/InlineCss.php | 2 +- system/src/Grav/Common/Assets/InlineJs.php | 2 +- .../src/Grav/Common/Assets/InlineJsModule.php | 38 ++++++++++++ system/src/Grav/Common/Assets/Js.php | 2 +- system/src/Grav/Common/Assets/JsModule.php | 36 +++++++++++ system/src/Grav/Common/Assets/Pipeline.php | 22 +++++-- user/config/system.yaml | 3 +- 12 files changed, 186 insertions(+), 19 deletions(-) create mode 100644 system/src/Grav/Common/Assets/InlineJsModule.php create mode 100644 system/src/Grav/Common/Assets/JsModule.php diff --git a/system/blueprints/config/system.yaml b/system/blueprints/config/system.yaml index aff54b46c..c5427d125 100644 --- a/system/blueprints/config/system.yaml +++ b/system/blueprints/config/system.yaml @@ -992,6 +992,39 @@ form: validate: type: bool + assets.js_module_pipeline: + type: toggle + label: PLUGIN_ADMIN.JAVASCRIPT_MODULE_PIPELINE + help: PLUGIN_ADMIN.JAVASCRIPT_MODULE_PIPELINE_HELP + highlight: 0 + options: + 1: PLUGIN_ADMIN.YES + 0: PLUGIN_ADMIN.NO + validate: + type: bool + + assets.js_module_pipeline_include_externals: + type: toggle + label: PLUGIN_ADMIN.JAVASCRIPT_MODULE_PIPELINE_INCLUDE_EXTERNALS + help: PLUGIN_ADMIN.JAVASCRIPT_MODULE_PIPELINE_INCLUDE_EXTERNALS_HELP + highlight: 1 + options: + 1: PLUGIN_ADMIN.YES + 0: PLUGIN_ADMIN.NO + validate: + type: bool + + assets.js_module_pipeline_before_excludes: + type: toggle + label: PLUGIN_ADMIN.JAVASCRIPT_MODULE_PIPELINE_BEFORE_EXCLUDES + help: PLUGIN_ADMIN.JAVASCRIPT_MODULE_PIPELINE_BEFORE_EXCLUDES_HELP + highlight: 1 + options: + 1: PLUGIN_ADMIN.YES + 0: PLUGIN_ADMIN.NO + validate: + type: bool + assets.js_minify: type: toggle label: PLUGIN_ADMIN.JAVASCRIPT_MINIFY diff --git a/system/config/system.yaml b/system/config/system.yaml index 60abcee34..2de075b26 100644 --- a/system/config/system.yaml +++ b/system/config/system.yaml @@ -127,6 +127,9 @@ assets: # Configuration for Assets Mana js_pipeline: false # The JS pipeline is the unification of multiple JS resources into one file js_pipeline_include_externals: true # Include external URLs in the pipeline by default js_pipeline_before_excludes: true # Render the pipeline before any excluded files + js_module_pipeline: false # The JS Module pipeline is the unification of multiple JS Module resources into one file + js_module_pipeline_include_externals: true # Include external URLs in the pipeline by default + js_module_pipeline_before_excludes: true # Render the pipeline before any excluded files js_minify: true # Minify the JS during pipelining enable_asset_timestamp: false # Enable asset timestamps enable_asset_sri: false # Enable asset SRI diff --git a/system/src/Grav/Common/Assets.php b/system/src/Grav/Common/Assets.php index 36dc79dd0..c0182e3b5 100644 --- a/system/src/Grav/Common/Assets.php +++ b/system/src/Grav/Common/Assets.php @@ -32,12 +32,16 @@ class Assets extends PropertyObject const CSS = 'css'; const JS = 'js'; + const JS_MODULE = 'js_module'; const CSS_COLLECTION = 'assets_css'; const JS_COLLECTION = 'assets_js'; + const JS_MODULE_COLLECTION = 'assets_js_module'; const CSS_TYPE = Assets\Css::class; const JS_TYPE = Assets\Js::class; + const JS_MODULE_TYPE = Assets\JsModule::class; const INLINE_CSS_TYPE = Assets\InlineCss::class; const INLINE_JS_TYPE = Assets\InlineJs::class; + const INLINE_JS_MODULE_TYPE = Assets\InlineJsModule::class; /** @const Regex to match CSS and JavaScript files */ const DEFAULT_REGEX = '/.\.(css|js)$/i'; @@ -48,6 +52,9 @@ class Assets extends PropertyObject /** @const Regex to match JavaScript files */ const JS_REGEX = '/.\.js$/i'; + /** @const Regex to match JavaScriptModyle files */ + const JS_MODULE_REGEX = '/.\.mjs$/i'; + /** @var string */ protected $assets_dir; /** @var string */ @@ -57,6 +64,8 @@ class Assets extends PropertyObject protected $assets_css = []; /** @var array */ protected $assets_js = []; + /** @var array */ + protected $assets_js_module = []; // Following variables come from the configuration: /** @var bool */ @@ -66,19 +75,17 @@ class Assets extends PropertyObject /** @var bool */ protected $css_pipeline_before_excludes; /** @var bool */ - protected $inlinecss_pipeline_include_externals; - /** @var bool */ - protected $inlinecss_pipeline_before_excludes; - /** @var bool */ protected $js_pipeline; /** @var bool */ protected $js_pipeline_include_externals; /** @var bool */ protected $js_pipeline_before_excludes; /** @var bool */ - protected $inlinejs_pipeline_include_externals; + protected $js_module_pipeline; /** @var bool */ - protected $inlinejs_pipeline_before_excludes; + protected $js_module_pipeline_include_externals; + /** @var bool */ + protected $js_module_pipeline_before_excludes; /** @var array */ protected $pipeline_options = []; @@ -193,6 +200,8 @@ class Assets extends PropertyObject call_user_func_array([$this, 'addCss'], $args); } elseif ($extension === 'js') { call_user_func_array([$this, 'addJs'], $args); + } elseif ($extension === 'mjs') { + call_user_func_array([$this, 'addJsModule'], $args); } } } @@ -222,7 +231,7 @@ class Assets extends PropertyObject return $this; } - if (($type === $this::CSS_TYPE || $type === $this::JS_TYPE) && isset($this->collections[$asset])) { + if (($type === $this::CSS_TYPE || $type === $this::JS_TYPE || $type === $this::JS_MODULE_TYPE) && isset($this->collections[$asset])) { $this->addType($collection, $type, $this->collections[$asset], $options); return $this; } @@ -230,7 +239,20 @@ class Assets extends PropertyObject // If pipeline disabled, set to position if provided, else after if (isset($options['pipeline'])) { if ($options['pipeline'] === false) { - $exclude_type = ($type === $this::JS_TYPE || $type === $this::INLINE_JS_TYPE) ? $this::JS : $this::CSS; + + switch ($type) { + case $this::JS_TYPE: + case $this::INLINE_JS_TYPE: + $exclude_type = $this::JS; + break; + case $this::JS_MODULE_TYPE: + case $this::INLINE_JS_MODULE_TYPE: + $exclude_type = $this::JS_MODULE; + break; + default: + $exclude_type = $this::CSS; + } + $excludes = strtolower($exclude_type . '_pipeline_before_excludes'); if ($this->{$excludes}) { $default = 'after'; @@ -309,6 +331,25 @@ class Assets extends PropertyObject return $this->addType($this::JS_COLLECTION, $this::INLINE_JS_TYPE, $asset, $this->unifyLegacyArguments(func_get_args(), $this::INLINE_JS_TYPE)); } + /** + * Add a JS asset or a collection of assets. + * + * @return $this + */ + public function addJsModule($asset) + { + return $this->addType($this::JS_MODULE_COLLECTION, $this::JS_MODULE_TYPE, $asset, $this->unifyLegacyArguments(func_get_args(), $this::JS_MODULE_TYPE)); + } + + /** + * Add an Inline JS asset or a collection of assets. + * + * @return $this + */ + public function addInlineJsModule($asset) + { + return $this->addType($this::JS_MODULE_COLLECTION, $this::INLINE_JS_MODULE_TYPE, $asset, $this->unifyLegacyArguments(func_get_args(), $this::INLINE_JS_MODULE_TYPE)); + } /** * Add/replace collection. @@ -446,6 +487,7 @@ class Assets extends PropertyObject */ public function js($group = 'head', $attributes = []) { - return $this->render('js', $group, $attributes); + return $this->render('js', $group, $attributes) . $this->render('js_module', $group, $attributes); + } } diff --git a/system/src/Grav/Common/Assets/BaseAsset.php b/system/src/Grav/Common/Assets/BaseAsset.php index 21d9eef63..2b107a5ee 100644 --- a/system/src/Grav/Common/Assets/BaseAsset.php +++ b/system/src/Grav/Common/Assets/BaseAsset.php @@ -69,7 +69,7 @@ abstract class BaseAsset extends PropertyObject * @param array $elements * @param string|null $key */ - public function __construct(array $elements = [], $key = null) + public function __construct(array $elements = [], ?string $key = null) { $base_config = [ 'group' => 'head', diff --git a/system/src/Grav/Common/Assets/Css.php b/system/src/Grav/Common/Assets/Css.php index 701c94235..ea6b388fa 100644 --- a/system/src/Grav/Common/Assets/Css.php +++ b/system/src/Grav/Common/Assets/Css.php @@ -22,7 +22,7 @@ class Css extends BaseAsset * @param array $elements * @param string|null $key */ - public function __construct(array $elements = [], $key = null) + public function __construct(array $elements = [], ?string $key = null) { $base_options = [ 'asset_type' => 'css', diff --git a/system/src/Grav/Common/Assets/InlineCss.php b/system/src/Grav/Common/Assets/InlineCss.php index 943cef6b6..4984db4d1 100644 --- a/system/src/Grav/Common/Assets/InlineCss.php +++ b/system/src/Grav/Common/Assets/InlineCss.php @@ -22,7 +22,7 @@ class InlineCss extends BaseAsset * @param array $elements * @param string|null $key */ - public function __construct(array $elements = [], $key = null) + public function __construct(array $elements = [], ?string $key = null) { $base_options = [ 'asset_type' => 'css', diff --git a/system/src/Grav/Common/Assets/InlineJs.php b/system/src/Grav/Common/Assets/InlineJs.php index 9ad365574..e38a51aee 100644 --- a/system/src/Grav/Common/Assets/InlineJs.php +++ b/system/src/Grav/Common/Assets/InlineJs.php @@ -22,7 +22,7 @@ class InlineJs extends BaseAsset * @param array $elements * @param string|null $key */ - public function __construct(array $elements = [], $key = null) + public function __construct(array $elements = [], ?string $key = null) { $base_options = [ 'asset_type' => 'js', diff --git a/system/src/Grav/Common/Assets/InlineJsModule.php b/system/src/Grav/Common/Assets/InlineJsModule.php new file mode 100644 index 000000000..c59a38104 --- /dev/null +++ b/system/src/Grav/Common/Assets/InlineJsModule.php @@ -0,0 +1,38 @@ + 'js_module', + 'attributes' => ['type' => 'module'], + 'position' => 'after' + ]; + + $merged_attributes = Utils::arrayMergeRecursiveUnique($base_options, $elements); + + parent::__construct($merged_attributes, $key); + } + +} diff --git a/system/src/Grav/Common/Assets/Js.php b/system/src/Grav/Common/Assets/Js.php index fb67491f3..8687a86b1 100644 --- a/system/src/Grav/Common/Assets/Js.php +++ b/system/src/Grav/Common/Assets/Js.php @@ -22,7 +22,7 @@ class Js extends BaseAsset * @param array $elements * @param string|null $key */ - public function __construct(array $elements = [], $key = null) + public function __construct(array $elements = [], ?string $key = null) { $base_options = [ 'asset_type' => 'js', diff --git a/system/src/Grav/Common/Assets/JsModule.php b/system/src/Grav/Common/Assets/JsModule.php new file mode 100644 index 000000000..e453a0fcc --- /dev/null +++ b/system/src/Grav/Common/Assets/JsModule.php @@ -0,0 +1,36 @@ + 'js_module', + 'attributes' => ['type' => 'module'] + ]; + + $merged_attributes = Utils::arrayMergeRecursiveUnique($base_options, $elements); + + parent::__construct($merged_attributes, $key); + } +} diff --git a/system/src/Grav/Common/Assets/Pipeline.php b/system/src/Grav/Common/Assets/Pipeline.php index a41e924a5..4e7348942 100644 --- a/system/src/Grav/Common/Assets/Pipeline.php +++ b/system/src/Grav/Common/Assets/Pipeline.php @@ -29,8 +29,9 @@ class Pipeline extends PropertyObject { use AssetUtilsTrait; - protected const CSS_ASSET = true; - protected const JS_ASSET = false; + protected const CSS_ASSET = 1; + protected const JS_ASSET = 2; + protected const JS_MODULE_ASSET = 3; /** @const Regex to match CSS urls */ protected const CSS_URL_REGEX = '{url\(([\'\"]?)(.*?)\1\)}'; @@ -169,7 +170,7 @@ class Pipeline extends PropertyObject * @param array $attributes * @return bool|string URL or generated content if available, else false */ - public function renderJs($assets, $group, $attributes = []) + public function renderJs($assets, $group, $attributes = [], $type = self::JS_ASSET) { // temporary list of assets to pipeline $inline_group = false; @@ -198,7 +199,7 @@ class Pipeline extends PropertyObject } // Concatenate files - $buffer = $this->gatherLinks($assets, self::JS_ASSET); + $buffer = $this->gatherLinks($assets, $type); // Minify if required if ($this->shouldMinify('js')) { @@ -223,6 +224,19 @@ class Pipeline extends PropertyObject return $output; } + /** + * Minify and concatenate JS files. + * + * @param array $assets + * @param string $group + * @param array $attributes + * @return bool|string URL or generated content if available, else false + */ + public function renderJs_Module($assets, $group, $attributes = []) + { + $attributes['type'] = 'module'; + return $this->renderJs($assets, $group, $attributes, self::JS_MODULE_ASSET); + } /** * Finds relative CSS urls() and rewrites the URL with an absolute one diff --git a/user/config/system.yaml b/user/config/system.yaml index 7a8ffe58c..b074f3af1 100644 --- a/user/config/system.yaml +++ b/user/config/system.yaml @@ -28,7 +28,8 @@ assets: css_pipeline: false css_minify: true css_rewrite: true - js_pipeline: false + js_pipeline: true + js_module_pipeline: true js_minify: true errors: From 756b088adae796645dd04dd7374fcc1b9cc4a8a5 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Sun, 9 Jan 2022 14:35:16 -0700 Subject: [PATCH 49/98] simplify asset collections in a single array --- system/src/Grav/Common/Assets.php | 17 ++++++------ .../Assets/Traits/TestingAssetsTrait.php | 26 +++++++++---------- user/config/system.yaml | 4 +-- 3 files changed, 24 insertions(+), 23 deletions(-) diff --git a/system/src/Grav/Common/Assets.php b/system/src/Grav/Common/Assets.php index c0182e3b5..7bda3ef18 100644 --- a/system/src/Grav/Common/Assets.php +++ b/system/src/Grav/Common/Assets.php @@ -61,11 +61,7 @@ class Assets extends PropertyObject protected $assets_url; /** @var array */ - protected $assets_css = []; - /** @var array */ - protected $assets_js = []; - /** @var array */ - protected $assets_js_module = []; + protected $assets= []; // Following variables come from the configuration: /** @var bool */ @@ -120,6 +116,11 @@ class Assets extends PropertyObject $this->assets_dir = $locator->findResource('asset://'); $this->assets_url = $locator->findResource('asset://', false); + // Initialize asset collection storage + $this->assets[self::CSS_COLLECTION] = []; + $this->assets[self::JS_COLLECTION] = []; + $this->assets[self::JS_MODULE_COLLECTION] = []; + $this->config($asset_config); // Register any preconfigured collections @@ -285,7 +286,7 @@ class Assets extends PropertyObject // If exists if ($asset_object->init($asset, $options)) { - $this->$collection[md5($asset)] = $asset_object; + $this->assets[$collection][md5($asset)] = $asset_object; } return $this; @@ -431,11 +432,11 @@ class Assets extends PropertyObject $pipeline_output = ''; $after_output = ''; - $assets = 'assets_' . $type; + $collection = 'assets_' . $type; $pipeline_enabled = $type . '_pipeline'; $render_pipeline = 'render' . ucfirst($type); - $group_assets = $this->filterAssets($this->$assets, 'group', $group); + $group_assets = $this->filterAssets($this->assets[$collection], 'group', $group); $pipeline_assets = $this->filterAssets($group_assets, 'position', 'pipeline', true); $before_assets = $this->filterAssets($group_assets, 'position', 'before', true); $after_assets = $this->filterAssets($group_assets, 'position', 'after', true); diff --git a/system/src/Grav/Common/Assets/Traits/TestingAssetsTrait.php b/system/src/Grav/Common/Assets/Traits/TestingAssetsTrait.php index ec00a6079..4e8524cce 100644 --- a/system/src/Grav/Common/Assets/Traits/TestingAssetsTrait.php +++ b/system/src/Grav/Common/Assets/Traits/TestingAssetsTrait.php @@ -30,7 +30,7 @@ trait TestingAssetsTrait */ public function exists($asset) { - return isset($this->collections[$asset]) || isset($this->assets_css[$asset]) || isset($this->assets_js[$asset]); + return isset($this->collections[$asset]) || isset($this->assets[self::CSS_COLLECTION][$asset]) || isset($this->assets[self::JS_COLLECTION][$asset]); } /** @@ -69,10 +69,10 @@ trait TestingAssetsTrait if (null !== $key) { $asset_key = md5($key); - return $this->assets_css[$asset_key] ?? null; + return $this->assets[self::CSS_COLLECTION][$asset_key] ?? null; } - return $this->assets_css; + return $this->assets[self::CSS_COLLECTION]; } /** @@ -88,10 +88,10 @@ trait TestingAssetsTrait if (null !== $key) { $asset_key = md5($key); - return $this->assets_js[$asset_key] ?? null; + return $this->assets[self::JS_COLLECTION][$asset_key] ?? null; } - return $this->assets_js; + return $this->assets[self::JS_COLLECTION]; } /** @@ -102,7 +102,7 @@ trait TestingAssetsTrait */ public function setCss($css) { - $this->assets_css = $css; + $this->assets[self::CSS_COLLECTION] = $css; return $this; } @@ -115,7 +115,7 @@ trait TestingAssetsTrait */ public function setJs($js) { - $this->assets_js = $js; + $this->assets[self::JS_COLLECTION] = $js; return $this; } @@ -129,8 +129,8 @@ trait TestingAssetsTrait public function removeCss($key) { $asset_key = md5($key); - if (isset($this->assets_css[$asset_key])) { - unset($this->assets_css[$asset_key]); + if (isset($this->assets[self::CSS_COLLECTION][$asset_key])) { + unset($this->assets[self::CSS_COLLECTION][$asset_key]); } return $this; @@ -145,8 +145,8 @@ trait TestingAssetsTrait public function removeJs($key) { $asset_key = md5($key); - if (isset($this->assets_js[$asset_key])) { - unset($this->assets_js[$asset_key]); + if (isset($this->assets[self::JS_COLLECTION][$asset_key])) { + unset($this->assets[self::JS_COLLECTION][$asset_key]); } return $this; @@ -201,7 +201,7 @@ trait TestingAssetsTrait */ public function resetJs() { - $this->assets_js = []; + $this->assets[self::JS_COLLECTION] = []; return $this; } @@ -213,7 +213,7 @@ trait TestingAssetsTrait */ public function resetCss() { - $this->assets_css = []; + $this->assets[self::CSS_COLLECTION] = []; return $this; } diff --git a/user/config/system.yaml b/user/config/system.yaml index b074f3af1..2e992778d 100644 --- a/user/config/system.yaml +++ b/user/config/system.yaml @@ -28,8 +28,8 @@ assets: css_pipeline: false css_minify: true css_rewrite: true - js_pipeline: true - js_module_pipeline: true + js_pipeline: false + js_module_pipeline: false js_minify: true errors: From 8767bfb9b0ba9c2c467093e3a604be639f6b795a Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Sun, 9 Jan 2022 15:51:00 -0700 Subject: [PATCH 50/98] refactoring and generic link support --- system/src/Grav/Common/Assets.php | 61 ++++++++++++++----- system/src/Grav/Common/Assets/BaseAsset.php | 5 +- .../src/Grav/Common/Assets/InlineJsModule.php | 10 ++- system/src/Grav/Common/Assets/JsModule.php | 15 ++++- system/src/Grav/Common/Assets/Link.php | 43 +++++++++++++ 5 files changed, 114 insertions(+), 20 deletions(-) create mode 100644 system/src/Grav/Common/Assets/Link.php diff --git a/system/src/Grav/Common/Assets.php b/system/src/Grav/Common/Assets.php index 7bda3ef18..09aa7e71f 100644 --- a/system/src/Grav/Common/Assets.php +++ b/system/src/Grav/Common/Assets.php @@ -30,12 +30,15 @@ class Assets extends PropertyObject use TestingAssetsTrait; use LegacyAssetsTrait; + const LINK = 'link'; const CSS = 'css'; const JS = 'js'; const JS_MODULE = 'js_module'; + const LINK_COLLECTION = 'assets_link'; const CSS_COLLECTION = 'assets_css'; const JS_COLLECTION = 'assets_js'; const JS_MODULE_COLLECTION = 'assets_js_module'; + const LINK_TYPE = Assets\Link::class; const CSS_TYPE = Assets\Css::class; const JS_TYPE = Assets\Js::class; const JS_MODULE_TYPE = Assets\JsModule::class; @@ -232,7 +235,7 @@ class Assets extends PropertyObject return $this; } - if (($type === $this::CSS_TYPE || $type === $this::JS_TYPE || $type === $this::JS_MODULE_TYPE) && isset($this->collections[$asset])) { + if ($this->isValidType($type) && isset($this->collections[$asset])) { $this->addType($collection, $type, $this->collections[$asset], $options); return $this; } @@ -241,18 +244,7 @@ class Assets extends PropertyObject if (isset($options['pipeline'])) { if ($options['pipeline'] === false) { - switch ($type) { - case $this::JS_TYPE: - case $this::INLINE_JS_TYPE: - $exclude_type = $this::JS; - break; - case $this::JS_MODULE_TYPE: - case $this::INLINE_JS_MODULE_TYPE: - $exclude_type = $this::JS_MODULE; - break; - default: - $exclude_type = $this::CSS; - } + $exclude_type = $this->getBaseType($type); $excludes = strtolower($exclude_type . '_pipeline_before_excludes'); if ($this->{$excludes}) { @@ -292,6 +284,16 @@ class Assets extends PropertyObject return $this; } + /** + * Add a CSS asset or a collection of assets. + * + * @return $this + */ + public function addLink($asset) + { + return $this->addType($this::LINK_COLLECTION, $this::LINK_TYPE, $asset, $this->unifyLegacyArguments(func_get_args(), $this::LINK_TYPE)); + } + /** * Add a CSS asset or a collection of assets. * @@ -442,7 +444,7 @@ class Assets extends PropertyObject $after_assets = $this->filterAssets($group_assets, 'position', 'after', true); // Pipeline - if ($this->{$pipeline_enabled}) { + if ($this->{$pipeline_enabled} ?? false) { $options = array_merge($this->pipeline_options, ['timestamp' => $this->timestamp]); $pipeline = new Pipeline($options); @@ -476,7 +478,9 @@ class Assets extends PropertyObject */ public function css($group = 'head', $attributes = []) { - return $this->render('css', $group, $attributes); + $output = $this->render(self::LINK, $group, $attributes); + $output .= $this->render(self::CSS, $group, $attributes); + return $output; } /** @@ -488,7 +492,32 @@ class Assets extends PropertyObject */ public function js($group = 'head', $attributes = []) { - return $this->render('js', $group, $attributes) . $this->render('js_module', $group, $attributes); + $output = $this->render(self::JS, $group, $attributes); + $output .= $this->render(self::JS_MODULE, $group, $attributes); + return $output; } + + protected function isValidType($type) + { + return in_array($type, [self::CSS_TYPE, self::JS_TYPE, self::JS_MODULE_TYPE]); + } + + protected function getBaseType($type) + { + switch ($type) { + case $this::JS_TYPE: + case $this::INLINE_JS_TYPE: + $base_type = $this::JS; + break; + case $this::JS_MODULE_TYPE: + case $this::INLINE_JS_MODULE_TYPE: + $base_type = $this::JS_MODULE; + break; + default: + $base_type = $this::CSS; + } + + return $base_type; + } } diff --git a/system/src/Grav/Common/Assets/BaseAsset.php b/system/src/Grav/Common/Assets/BaseAsset.php index 2b107a5ee..4f74f55f9 100644 --- a/system/src/Grav/Common/Assets/BaseAsset.php +++ b/system/src/Grav/Common/Assets/BaseAsset.php @@ -26,8 +26,9 @@ abstract class BaseAsset extends PropertyObject { use AssetUtilsTrait; - protected const CSS_ASSET = true; - protected const JS_ASSET = false; + protected const CSS_ASSET = 1; + protected const JS_ASSET = 2; + protected const JS_MODULE_ASSET = 3; /** @var string|false */ protected $asset; diff --git a/system/src/Grav/Common/Assets/InlineJsModule.php b/system/src/Grav/Common/Assets/InlineJsModule.php index c59a38104..42ce6f14a 100644 --- a/system/src/Grav/Common/Assets/InlineJsModule.php +++ b/system/src/Grav/Common/Assets/InlineJsModule.php @@ -15,7 +15,7 @@ use Grav\Common\Utils; * Class InlineJs * @package Grav\Common\Assets */ -class InlineJsModule extends InlineJs +class InlineJsModule extends BaseAsset { /** * InlineJs constructor. @@ -35,4 +35,12 @@ class InlineJsModule extends InlineJs parent::__construct($merged_attributes, $key); } + /** + * @return string + */ + public function render() + { + return 'renderAttributes(). ">\n" . trim($this->asset) . "\n\n"; + } + } diff --git a/system/src/Grav/Common/Assets/JsModule.php b/system/src/Grav/Common/Assets/JsModule.php index e453a0fcc..5c2a836c2 100644 --- a/system/src/Grav/Common/Assets/JsModule.php +++ b/system/src/Grav/Common/Assets/JsModule.php @@ -15,7 +15,7 @@ use Grav\Common\Utils; * Class Js * @package Grav\Common\Assets */ -class JsModule extends Js +class JsModule extends BaseAsset { /** * Js constructor. @@ -33,4 +33,17 @@ class JsModule extends Js parent::__construct($merged_attributes, $key); } + + /** + * @return string + */ + public function render() + { + if (isset($this->attributes['loading']) && $this->attributes['loading'] === 'inline') { + $buffer = $this->gatherLinks([$this], self::JS_MODULE_ASSET); + return 'renderAttributes() . ">\n" . trim($buffer) . "\n\n"; + } + + return '\n"; + } } diff --git a/system/src/Grav/Common/Assets/Link.php b/system/src/Grav/Common/Assets/Link.php new file mode 100644 index 000000000..ecafcea90 --- /dev/null +++ b/system/src/Grav/Common/Assets/Link.php @@ -0,0 +1,43 @@ + 'link', + ]; + + $merged_attributes = Utils::arrayMergeRecursiveUnique($base_options, $elements); + + parent::__construct($merged_attributes, $key); + } + + /** + * @return string + */ + public function render() + { + return 'renderAttributes() . $this->integrityHash($this->asset) . ">\n"; + } +} From 99ceb40c5ff516044d7668014581fd8f552c1a13 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Sun, 9 Jan 2022 16:14:20 -0700 Subject: [PATCH 51/98] improvements --- system/src/Grav/Common/Assets.php | 53 ++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/system/src/Grav/Common/Assets.php b/system/src/Grav/Common/Assets.php index 09aa7e71f..2956ea45d 100644 --- a/system/src/Grav/Common/Assets.php +++ b/system/src/Grav/Common/Assets.php @@ -120,6 +120,7 @@ class Assets extends PropertyObject $this->assets_url = $locator->findResource('asset://', false); // Initialize asset collection storage + $this->assets[self::LINK_COLLECTION] = []; $this->assets[self::CSS_COLLECTION] = []; $this->assets[self::JS_COLLECTION] = []; $this->assets[self::JS_MODULE_COLLECTION] = []; @@ -476,13 +477,31 @@ class Assets extends PropertyObject * @param array $attributes * @return string */ - public function css($group = 'head', $attributes = []) + public function css($group = 'head', $attributes = [], $include_link = true) { - $output = $this->render(self::LINK, $group, $attributes); + $output = ''; + + if ($include_link) { + $output = $this->link($group, $attributes); + } + $output .= $this->render(self::CSS, $group, $attributes); + return $output; } + /** + * Build the CSS link tags. + * + * @param string $group name of the group + * @param array $attributes + * @return string + */ + public function link($group = 'head', $attributes = []) + { + return $this->render(self::LINK, $group, $attributes); + } + /** * Build the JavaScript script tags. * @@ -490,12 +509,36 @@ class Assets extends PropertyObject * @param array $attributes * @return string */ - public function js($group = 'head', $attributes = []) + public function js($group = 'head', $attributes = [], $include_js_module = true) { $output = $this->render(self::JS, $group, $attributes); - $output .= $this->render(self::JS_MODULE, $group, $attributes); - return $output; + if ($include_js_module) { + $output .= $this->jsModule($group, $attributes); + } + + return $output; + } + + /** + * Build the Javascript Modules tags + * + * @param $group + * @param $attributes + * @return string + */ + public function jsModule($group = 'head', $attributes = []) + { + return $this->render(self::JS_MODULE, $group, $attributes); + } + + public function all($group = 'head', $attributes = []) + { + $output = $this->css($group, $attributes, false); + $output .= $this->link($group, $attributes); + $output .= $this->js($group, $attributes, false); + $output .= $this->jsModule($group, $attributes); + return $output; } protected function isValidType($type) From 8d519118738bd8d7e31f0ecfde7d1bb143a909f9 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Sun, 9 Jan 2022 16:22:35 -0700 Subject: [PATCH 52/98] updated changelog --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 04e88091a..b43e1dcb4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,10 @@ # v1.7.27 ## mm/dd/2022 -1. [](#improved) +1. [](#new) + * Added support for generic `assets.link()` for external references. No pipeline support. + * Added support for `assets.addJSmodule()` with full pipeline support. +2. [](#improved) * Improved `Utils::download()` method to allow overrides on download name, mime and expires header * Improved `onPageFallBackUrl` event 3. [](#bugfix) From 3febaaa80239f283717cc74c65e37df6295e4c0b Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Sun, 9 Jan 2022 17:03:03 -0700 Subject: [PATCH 53/98] minor method typo --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b43e1dcb4..8828c9d36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ 1. [](#new) * Added support for generic `assets.link()` for external references. No pipeline support. - * Added support for `assets.addJSmodule()` with full pipeline support. + * Added support for `assets.addJsModule()` with full pipeline support. 2. [](#improved) * Improved `Utils::download()` method to allow overrides on download name, mime and expires header * Improved `onPageFallBackUrl` event From f9fcdd6c5187fe46a38788d84b7747a52fa8d504 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Sun, 9 Jan 2022 21:12:39 -0700 Subject: [PATCH 54/98] Revert "simplify asset collections in a single array" This reverts commit 756b088adae796645dd04dd7374fcc1b9cc4a8a5. # Conflicts: # system/src/Grav/Common/Assets.php --- system/src/Grav/Common/Assets.php | 22 ++++++------ .../Assets/Traits/TestingAssetsTrait.php | 35 ++++++++++++------- 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/system/src/Grav/Common/Assets.php b/system/src/Grav/Common/Assets.php index 2956ea45d..953bbc88e 100644 --- a/system/src/Grav/Common/Assets.php +++ b/system/src/Grav/Common/Assets.php @@ -64,7 +64,15 @@ class Assets extends PropertyObject protected $assets_url; /** @var array */ - protected $assets= []; + protected $assets_link = []; + /** @var array */ + protected $assets_css = []; + /** @var array */ + protected $assets_js = []; + /** @var array */ + protected $assets_js_module = []; + + // Following variables come from the configuration: /** @var bool */ @@ -119,12 +127,6 @@ class Assets extends PropertyObject $this->assets_dir = $locator->findResource('asset://'); $this->assets_url = $locator->findResource('asset://', false); - // Initialize asset collection storage - $this->assets[self::LINK_COLLECTION] = []; - $this->assets[self::CSS_COLLECTION] = []; - $this->assets[self::JS_COLLECTION] = []; - $this->assets[self::JS_MODULE_COLLECTION] = []; - $this->config($asset_config); // Register any preconfigured collections @@ -279,7 +281,7 @@ class Assets extends PropertyObject // If exists if ($asset_object->init($asset, $options)) { - $this->assets[$collection][md5($asset)] = $asset_object; + $this->$collection[md5($asset)] = $asset_object; } return $this; @@ -435,11 +437,11 @@ class Assets extends PropertyObject $pipeline_output = ''; $after_output = ''; - $collection = 'assets_' . $type; + $assets = 'assets_' . $type; $pipeline_enabled = $type . '_pipeline'; $render_pipeline = 'render' . ucfirst($type); - $group_assets = $this->filterAssets($this->assets[$collection], 'group', $group); + $group_assets = $this->filterAssets($this->$assets, 'group', $group); $pipeline_assets = $this->filterAssets($group_assets, 'position', 'pipeline', true); $before_assets = $this->filterAssets($group_assets, 'position', 'before', true); $after_assets = $this->filterAssets($group_assets, 'position', 'after', true); diff --git a/system/src/Grav/Common/Assets/Traits/TestingAssetsTrait.php b/system/src/Grav/Common/Assets/Traits/TestingAssetsTrait.php index 4e8524cce..b11b439b6 100644 --- a/system/src/Grav/Common/Assets/Traits/TestingAssetsTrait.php +++ b/system/src/Grav/Common/Assets/Traits/TestingAssetsTrait.php @@ -30,7 +30,7 @@ trait TestingAssetsTrait */ public function exists($asset) { - return isset($this->collections[$asset]) || isset($this->assets[self::CSS_COLLECTION][$asset]) || isset($this->assets[self::JS_COLLECTION][$asset]); + return isset($this->collections[$asset]) || isset($this->assets_css[$asset]) || isset($this->assets_js[$asset]); } /** @@ -69,10 +69,10 @@ trait TestingAssetsTrait if (null !== $key) { $asset_key = md5($key); - return $this->assets[self::CSS_COLLECTION][$asset_key] ?? null; + return $this->assets_css[$asset_key] ?? null; } - return $this->assets[self::CSS_COLLECTION]; + return $this->assets_css; } /** @@ -88,10 +88,10 @@ trait TestingAssetsTrait if (null !== $key) { $asset_key = md5($key); - return $this->assets[self::JS_COLLECTION][$asset_key] ?? null; + return $this->assets_js[$asset_key] ?? null; } - return $this->assets[self::JS_COLLECTION]; + return $this->assets_js; } /** @@ -102,7 +102,7 @@ trait TestingAssetsTrait */ public function setCss($css) { - $this->assets[self::CSS_COLLECTION] = $css; + $this->assets_css = $css; return $this; } @@ -115,7 +115,7 @@ trait TestingAssetsTrait */ public function setJs($js) { - $this->assets[self::JS_COLLECTION] = $js; + $this->assets_js = $js; return $this; } @@ -129,8 +129,8 @@ trait TestingAssetsTrait public function removeCss($key) { $asset_key = md5($key); - if (isset($this->assets[self::CSS_COLLECTION][$asset_key])) { - unset($this->assets[self::CSS_COLLECTION][$asset_key]); + if (isset($this->assets_css[$asset_key])) { + unset($this->assets_css[$asset_key]); } return $this; @@ -145,8 +145,8 @@ trait TestingAssetsTrait public function removeJs($key) { $asset_key = md5($key); - if (isset($this->assets[self::JS_COLLECTION][$asset_key])) { - unset($this->assets[self::JS_COLLECTION][$asset_key]); + if (isset($this->assets_js[$asset_key])) { + unset($this->assets_js[$asset_key]); } return $this; @@ -201,7 +201,7 @@ trait TestingAssetsTrait */ public function resetJs() { - $this->assets[self::JS_COLLECTION] = []; + $this->assets_js = []; return $this; } @@ -213,7 +213,7 @@ trait TestingAssetsTrait */ public function resetCss() { - $this->assets[self::CSS_COLLECTION] = []; + $this->assets_css = []; return $this; } @@ -285,6 +285,15 @@ trait TestingAssetsTrait return $this; } + // Add JavaScript Module files + if ($pattern === self::JS_MODULE_REGEX) { + foreach ($files as $file) { + $this->addJsModule($file); + } + + return $this; + } + // Unknown pattern. foreach ($files as $asset) { $this->add($asset); From 7bb8d10b2240fd589502dc6d76d27b7dc2fd5db4 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Sun, 9 Jan 2022 21:23:19 -0700 Subject: [PATCH 55/98] Asset blueprint refactor --- system/blueprints/config/system.yaml | 100 ++++++++++++++++----------- 1 file changed, 59 insertions(+), 41 deletions(-) diff --git a/system/blueprints/config/system.yaml b/system/blueprints/config/system.yaml index c5427d125..b6beb41b9 100644 --- a/system/blueprints/config/system.yaml +++ b/system/blueprints/config/system.yaml @@ -888,9 +888,45 @@ form: title: PLUGIN_ADMIN.ASSETS fields: - assets_section: + general_config_section: type: section - title: PLUGIN_ADMIN.ASSETS + title: PLUGIN_ADMIN.GENERAL_CONFIG + underline: true + + assets.enable_asset_timestamp: + type: toggle + label: PLUGIN_ADMIN.ENABLED_TIMESTAMPS_ON_ASSETS + help: PLUGIN_ADMIN.ENABLED_TIMESTAMPS_ON_ASSETS_HELP + highlight: 0 + options: + 1: PLUGIN_ADMIN.YES + 0: PLUGIN_ADMIN.NO + validate: + type: bool + + assets.enable_asset_sri: + type: toggle + label: PLUGIN_ADMIN.ENABLED_SRI_ON_ASSETS + help: PLUGIN_ADMIN.ENABLED_SRI_ON_ASSETS_HELP + highlight: 0 + options: + 1: PLUGIN_ADMIN.YES + 0: PLUGIN_ADMIN.NO + validate: + type: bool + + assets.collections: + type: multilevel + label: PLUGIN_ADMIN.COLLECTIONS + placeholder_key: collection_name + placeholder_value: collection_path + validate: + type: array + + + css_assets_section: + type: section + title: PLUGIN_ADMIN.CSS_ASSETS underline: true assets.css_pipeline: @@ -959,6 +995,11 @@ form: validate: type: bool + js_assets_section: + type: section + title: PLUGIN_ADMIN.JS_ASSETS + underline: true + assets.js_pipeline: type: toggle label: PLUGIN_ADMIN.JAVASCRIPT_PIPELINE @@ -992,6 +1033,22 @@ form: validate: type: bool + assets.js_minify: + type: toggle + label: PLUGIN_ADMIN.JAVASCRIPT_MINIFY + help: PLUGIN_ADMIN.JAVASCRIPT_MINIFY_HELP + highlight: 1 + options: + 1: PLUGIN_ADMIN.YES + 0: PLUGIN_ADMIN.NO + validate: + type: bool + + js_module_assets_section: + type: section + title: PLUGIN_ADMIN.JS_MODULE_ASSETS + underline: true + assets.js_module_pipeline: type: toggle label: PLUGIN_ADMIN.JAVASCRIPT_MODULE_PIPELINE @@ -1025,46 +1082,7 @@ form: validate: type: bool - assets.js_minify: - type: toggle - label: PLUGIN_ADMIN.JAVASCRIPT_MINIFY - help: PLUGIN_ADMIN.JAVASCRIPT_MINIFY_HELP - highlight: 1 - options: - 1: PLUGIN_ADMIN.YES - 0: PLUGIN_ADMIN.NO - validate: - type: bool - assets.enable_asset_timestamp: - type: toggle - label: PLUGIN_ADMIN.ENABLED_TIMESTAMPS_ON_ASSETS - help: PLUGIN_ADMIN.ENABLED_TIMESTAMPS_ON_ASSETS_HELP - highlight: 0 - options: - 1: PLUGIN_ADMIN.YES - 0: PLUGIN_ADMIN.NO - validate: - type: bool - - assets.enable_asset_sri: - type: toggle - label: PLUGIN_ADMIN.ENABLED_SRI_ON_ASSETS - help: PLUGIN_ADMIN.ENABLED_SRI_ON_ASSETS_HELP - highlight: 0 - options: - 1: PLUGIN_ADMIN.YES - 0: PLUGIN_ADMIN.NO - validate: - type: bool - - assets.collections: - type: multilevel - label: PLUGIN_ADMIN.COLLECTIONS - placeholder_key: collection_name - placeholder_value: collection_path - validate: - type: array errors: type: tab From 2ac38d39ea33d5eaef0f67db99a1f93df83544dd Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Sun, 9 Jan 2022 21:24:45 -0700 Subject: [PATCH 56/98] updated changelog --- CHANGELOG.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8828c9d36..74da63aee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,10 +5,11 @@ * Added support for generic `assets.link()` for external references. No pipeline support. * Added support for `assets.addJsModule()` with full pipeline support. 2. [](#improved) - * Improved `Utils::download()` method to allow overrides on download name, mime and expires header - * Improved `onPageFallBackUrl` event + * Improved `Utils::download()` method to allow overrides on download name, mime and expires header + * Improved `onPageFallBackUrl` event + * Reorganized the Asset system configuration blueprint for clarity 3. [](#bugfix) - * Fixed CLI `--env` and `--lang` options having no effect if they aren't added before all the other options + * Fixed CLI `--env` and `--lang` options having no effect if they aren't added before all the other options # v1.7.26.1 ## 01/04/2022 From bd471cb61b58f0b842f6a51604339d2cfaecbd6b Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 10 Jan 2022 19:40:00 +0200 Subject: [PATCH 57/98] Added `Utils::getExtensionsByMime()` method to get all the registered extensions for the specific mime type --- CHANGELOG.md | 5 +++-- system/src/Grav/Common/Utils.php | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 74da63aee..b4a6d1f01 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,9 @@ ## mm/dd/2022 1. [](#new) - * Added support for generic `assets.link()` for external references. No pipeline support. - * Added support for `assets.addJsModule()` with full pipeline support. + * Added support for generic `assets.link()` for external references. No pipeline support + * Added support for `assets.addJsModule()` with full pipeline support + * Added `Utils::getExtensionsByMime()` method to get all the registered extensions for the specific mime type 2. [](#improved) * Improved `Utils::download()` method to allow overrides on download name, mime and expires header * Improved `onPageFallBackUrl` event diff --git a/system/src/Grav/Common/Utils.php b/system/src/Grav/Common/Utils.php index ac0dd95d4..9d76e1dd6 100644 --- a/system/src/Grav/Common/Utils.php +++ b/system/src/Grav/Common/Utils.php @@ -831,6 +831,31 @@ abstract class Utils return $mimetypes; } + /** + * Return all extensions for given mimetype. The first extension is the default one. + * + * @param string $mime Mime type (eg 'image/jpeg') + * @return string[] List of extensions eg. ['jpg', 'jpe', 'jpeg'] + */ + public static function getExtensionsByMime($mime) + { + $mime = strtolower($mime); + + $media_types = (array)Grav::instance()['config']->get('media.types'); + + $list = []; + foreach ($media_types as $extension => $type) { + if ($extension === '' || $extension === 'defaults') { + continue; + } + + if (isset($type['mime']) && $type['mime'] === $mime) { + $list[] = $extension; + } + } + + return $list; + } /** * Return the mimetype based on filename extension From 55b45fcf2f2741e70c0abf4a9862f27b41262aa5 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 10 Jan 2022 22:12:09 +0200 Subject: [PATCH 58/98] Fixed scaled image medium filename when using non-existing retina file --- CHANGELOG.md | 1 + system/src/Grav/Common/Page/Medium/Medium.php | 2 ++ system/src/Grav/Common/Page/Medium/MediumFactory.php | 4 +++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b4a6d1f01..ca9b295da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ * Reorganized the Asset system configuration blueprint for clarity 3. [](#bugfix) * Fixed CLI `--env` and `--lang` options having no effect if they aren't added before all the other options + * Fixed scaled image medium filename when using non-existing retina file # v1.7.26.1 ## 01/04/2022 diff --git a/system/src/Grav/Common/Page/Medium/Medium.php b/system/src/Grav/Common/Page/Medium/Medium.php index 1fe882e98..b65f7d0fa 100644 --- a/system/src/Grav/Common/Page/Medium/Medium.php +++ b/system/src/Grav/Common/Page/Medium/Medium.php @@ -23,6 +23,8 @@ use Grav\Common\Media\Traits\MediaObjectTrait; * @package Grav\Common\Page\Medium * * @property string $filepath + * @property string $filename + * @property string $basename * @property string $mime * @property int $size * @property int $modified diff --git a/system/src/Grav/Common/Page/Medium/MediumFactory.php b/system/src/Grav/Common/Page/Medium/MediumFactory.php index cf25f22cf..6e9f820eb 100644 --- a/system/src/Grav/Common/Page/Medium/MediumFactory.php +++ b/system/src/Grav/Common/Page/Medium/MediumFactory.php @@ -193,7 +193,7 @@ class MediumFactory $height = $medium->get('height') * $ratio; $prev_basename = $medium->get('basename'); - $basename = str_replace('@'.$from.'x', '@'.$to.'x', $prev_basename); + $basename = str_replace('@' . $from . 'x', $to !== 1 ? '@' . $to . 'x' : '', $prev_basename); $debug = $medium->get('debug'); $medium->set('debug', false); @@ -208,6 +208,8 @@ class MediumFactory $medium = self::fromFile($file); if ($medium) { + $medium->set('basename', $basename); + $medium->set('filename', $basename . '.' . $medium->extension); $medium->set('size', $size); } From f8f5502c40688f1fb2874ce068a739ed07d09388 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Tue, 11 Jan 2022 14:34:35 +0200 Subject: [PATCH 59/98] Added `Media::getRoute()` and `Media::getRawRoute()` methods to get page route if available --- CHANGELOG.md | 1 + system/src/Grav/Common/Page/Media.php | 40 +++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca9b295da..1c7448e45 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * Added support for generic `assets.link()` for external references. No pipeline support * Added support for `assets.addJsModule()` with full pipeline support * Added `Utils::getExtensionsByMime()` method to get all the registered extensions for the specific mime type + * Added `Media::getRoute()` and `Media::getRawRoute()` methods to get page route if available 2. [](#improved) * Improved `Utils::download()` method to allow overrides on download name, mime and expires header * Improved `onPageFallBackUrl` event diff --git a/system/src/Grav/Common/Page/Media.php b/system/src/Grav/Common/Page/Media.php index 24bc2a6c3..6c0a6c390 100644 --- a/system/src/Grav/Common/Page/Media.php +++ b/system/src/Grav/Common/Page/Media.php @@ -60,6 +60,46 @@ class Media extends AbstractMedia } } + /** + * Return raw route to the page. + * + * @return string|null Route to the page or null if media isn't for a page. + */ + public function getRawRoute(): ?string + { + $path = $this->getPath(); + if ($path) { + /** @var Pages $pages */ + $pages = $this->getGrav()['pages']; + $page = $pages->get($path); + if ($page) { + return $page->rawRoute(); + } + } + + return null; + } + + /** + * Return page route. + * + * @return string|null Route to the page or null if media isn't for a page. + */ + public function getRoute(): ?string + { + $path = $this->getPath(); + if ($path) { + /** @var Pages $pages */ + $pages = $this->getGrav()['pages']; + $page = $pages->get($path); + if ($page) { + return $page->route(); + } + } + + return null; + } + /** * @param string $offset * @return bool From 308383b09388cdff393154fb025298cced0486a4 Mon Sep 17 00:00:00 2001 From: "pmoreno.rodriguez" <60596353+pmoreno-rodriguez@users.noreply.github.com> Date: Tue, 11 Jan 2022 17:55:24 +0100 Subject: [PATCH 60/98] Update README.md (#3517) Changed the Twig Templating address to https://twig.symfony.com/. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5f0e679a9..562726dfd 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Grav is a **Fast**, **Simple**, and **Flexible**, file-based Web-platform. Ther The underlying architecture of Grav is designed to use well-established and _best-in-class_ technologies to ensure that Grav is simple to use and easy to extend. Some of these key technologies include: -* [Twig Templating](https://twig.sensiolabs.org/): for powerful control of the user interface +* [Twig Templating](https://twig.symfony.com/): for powerful control of the user interface * [Markdown](https://en.wikipedia.org/wiki/Markdown): for easy content creation * [YAML](https://yaml.org): for simple configuration * [Parsedown](https://parsedown.org/): for fast Markdown and Markdown Extra support From fb2c4f48f770fc5039ed0c19c10e9b07ebbe749e Mon Sep 17 00:00:00 2001 From: Rotzbua Date: Tue, 11 Jan 2022 17:55:45 +0100 Subject: [PATCH 61/98] add php 8.1 to test (#3504) now released https://www.php.net/releases/8.1/en.php --- .github/workflows/tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index ea22ad291..90ed324b9 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -14,7 +14,7 @@ jobs: strategy: matrix: - php: [ 8.0, 7.4, 7.3] + php: [ 8.1, 8.0, 7.4, 7.3] os: [ubuntu-latest] steps: From b07bf96ad9968d42211c169101da5001c74ec44a Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Tue, 11 Jan 2022 12:03:13 -0700 Subject: [PATCH 62/98] Support for `YubiKey OTP` 2-Factor authenticator --- CHANGELOG.md | 1 + system/blueprints/user/account.yaml | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca9b295da..fa461e032 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## mm/dd/2022 1. [](#new) + * Support for `YubiKey OTP` 2-Factor authenticator * Added support for generic `assets.link()` for external references. No pipeline support * Added support for `assets.addJsModule()` with full pipeline support * Added `Utils::getExtensionsByMime()` method to get all the registered extensions for the specific mime type diff --git a/system/blueprints/user/account.yaml b/system/blueprints/user/account.yaml index 127a99e5b..1fe3eae5a 100644 --- a/system/blueprints/user/account.yaml +++ b/system/blueprints/user/account.yaml @@ -107,6 +107,11 @@ form: label: PLUGIN_ADMIN.2FA_SECRET sublabel: PLUGIN_ADMIN.2FA_SECRET_HELP + yubikey_id: + type: text + label: PLUGIN_ADMIN.YUBIKEY_ID + description: PLUGIN_ADMIN.YUBIKEY_HELP + maxlength: 12 From bda6b268968e04617a87f868032e2e758e94a59b Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 12 Jan 2022 12:00:41 +0200 Subject: [PATCH 63/98] Added `Medium::getAlternatives()` to be able to list all the retina sizes --- CHANGELOG.md | 1 + .../Media/Interfaces/MediaObjectInterface.php | 8 ++++++++ .../Common/Media/Traits/MediaObjectTrait.php | 20 ++++++++++++++++++- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f522f1ea..3ef81b007 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ * Added support for `assets.addJsModule()` with full pipeline support * Added `Utils::getExtensionsByMime()` method to get all the registered extensions for the specific mime type * Added `Media::getRoute()` and `Media::getRawRoute()` methods to get page route if available + * Added `Medium::getAlternatives()` to be able to list all the retina sizes 2. [](#improved) * Improved `Utils::download()` method to allow overrides on download name, mime and expires header * Improved `onPageFallBackUrl` event diff --git a/system/src/Grav/Common/Media/Interfaces/MediaObjectInterface.php b/system/src/Grav/Common/Media/Interfaces/MediaObjectInterface.php index c46dd38c7..4af3052b0 100644 --- a/system/src/Grav/Common/Media/Interfaces/MediaObjectInterface.php +++ b/system/src/Grav/Common/Media/Interfaces/MediaObjectInterface.php @@ -63,6 +63,14 @@ interface MediaObjectInterface extends \Grav\Framework\Media\Interfaces\MediaObj */ public function addAlternative($ratio, MediaObjectInterface $alternative); + /** + * Get list of image alternatives. Includes the current media image as well. + * + * @param bool $withDerived If true, include generated images as well. If false, only return existing files. + * @return array + */ + public function getAlternatives(bool $withDerived = true): array; + /** * Return string representation of the object (html). * diff --git a/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php b/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php index 492b3af85..884b3aa19 100644 --- a/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php +++ b/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php @@ -128,11 +128,29 @@ trait MediaObjectTrait } $alternative->set('ratio', $ratio); - $width = $alternative->get('width'); + $width = $alternative->get('width', 0); $this->alternatives[$width] = $alternative; } + /** + * @param bool $withDerived + * @return array + */ + public function getAlternatives(bool $withDerived = true): array + { + $alternatives = []; + foreach ($this->alternatives + [$this->get('width', 0) => $this] as $size => $alternative) { + if ($withDerived || $alternative->filename === basename($alternative->filepath)) { + $alternatives[$size] = $alternative; + } + } + + ksort($alternatives); + + return $alternatives; + } + /** * Return string representation of the object (html). * From 67b9623d6cebaf036623ed08cb0e644ea2cf05c9 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 12 Jan 2022 13:29:18 +0200 Subject: [PATCH 64/98] Numeric sort for sizes: MediaObjectTrait::getAlternatives() --- system/src/Grav/Common/Media/Traits/MediaObjectTrait.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php b/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php index 884b3aa19..0949f1d50 100644 --- a/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php +++ b/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php @@ -146,7 +146,7 @@ trait MediaObjectTrait } } - ksort($alternatives); + ksort($alternatives, SORT_NUMERIC); return $alternatives; } From b422d9585cfa5e51ebcaeb90ba886ca16cc20fcc Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Wed, 12 Jan 2022 11:10:12 -0700 Subject: [PATCH 65/98] small size for field --- system/blueprints/user/account.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/system/blueprints/user/account.yaml b/system/blueprints/user/account.yaml index 1fe3eae5a..cfe537620 100644 --- a/system/blueprints/user/account.yaml +++ b/system/blueprints/user/account.yaml @@ -111,6 +111,7 @@ form: type: text label: PLUGIN_ADMIN.YUBIKEY_ID description: PLUGIN_ADMIN.YUBIKEY_HELP + size: small maxlength: 12 From 57bd3c9cb5d3efbb4271b54df89bdf8f034b0eaf Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Wed, 12 Jan 2022 12:21:18 -0700 Subject: [PATCH 66/98] fixed js module import when pipelined --- CHANGELOG.md | 1 + system/src/Grav/Common/Assets/Pipeline.php | 39 +++++++++++++++++++ .../Common/Assets/Traits/AssetUtilsTrait.php | 16 +++++--- 3 files changed, 50 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ef81b007..80bc018a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ 3. [](#bugfix) * Fixed CLI `--env` and `--lang` options having no effect if they aren't added before all the other options * Fixed scaled image medium filename when using non-existing retina file + * Fixed an issue with JS `imports` and pipelining Assets # v1.7.26.1 ## 01/04/2022 diff --git a/system/src/Grav/Common/Assets/Pipeline.php b/system/src/Grav/Common/Assets/Pipeline.php index 4e7348942..42b794976 100644 --- a/system/src/Grav/Common/Assets/Pipeline.php +++ b/system/src/Grav/Common/Assets/Pipeline.php @@ -36,6 +36,9 @@ class Pipeline extends PropertyObject /** @const Regex to match CSS urls */ protected const CSS_URL_REGEX = '{url\(([\'\"]?)(.*?)\1\)}'; + /** @const Regex to match JS imports */ + protected const JS_IMPORT_REGEX = '{import.*from\s?[\'|\"](.+?)[\'|\"]}'; + /** @const Regex to match CSS sourcemap comments */ protected const CSS_SOURCEMAP_REGEX = '{\/\*# (.*?) \*\/}'; @@ -276,6 +279,42 @@ class Pipeline extends PropertyObject return $file; } + /** + * Finds relative JS urls() and rewrites the URL with an absolute one + * + * @param string $file the css source file + * @param string $dir , $local relative path to the css file + * @param bool $local is this a local or remote asset + * @return string + */ + protected function jsRewrite($file, $dir, $local) + { + // Find any js import elements, grab the URLs and calculate an absolute path + // Then replace the old url with the new one + $file = (string)preg_replace_callback(self::JS_IMPORT_REGEX, function ($matches) use ($dir, $local) { + + $old_url = $matches[1]; + + // Ensure link is not rooted to web server, a data URL, or to a remote host + if (preg_match(self::FIRST_FORWARDSLASH_REGEX, $old_url) || $this->isRemoteLink($old_url)) { + return $matches[0]; + } + + // clean leading / + $old_url = Utils::normalizePath($dir . '/' . $old_url); + $old_url = str_replace('/./', '/', $old_url); + if (preg_match(self::FIRST_FORWARDSLASH_REGEX, $old_url)) { + $old_url = ltrim($old_url, '/'); + } + + $new_url = ($local ? $this->base_url : '') . $old_url; + + return str_replace($matches[1], $new_url, $matches[0]); + }, $file); + + return $file; + } + /** * @param string $type * @return bool diff --git a/system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php b/system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php index 5b1087d6c..f04ba438f 100644 --- a/system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php +++ b/system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php @@ -62,13 +62,13 @@ trait AssetUtilsTrait * Download and concatenate the content of several links. * * @param array $assets - * @param bool $css + * @param int $type * @return string */ - protected function gatherLinks(array $assets, $css = true) + protected function gatherLinks(array $assets, int $type = self::CSS_ASSET): string { $buffer = ''; - foreach ($assets as $id => $asset) { + foreach ($assets as $asset) { $local = true; $link = $asset->getAsset(); @@ -100,21 +100,25 @@ trait AssetUtilsTrait } // Double check last character being - if (!$css) { + if ($type === self::CSS_ASSET) { $file = rtrim($file, ' ;') . ';'; } // If this is CSS + the file is local + rewrite enabled - if ($css && $this->css_rewrite) { + if ($type === self::CSS_ASSET && $this->css_rewrite) { $file = $this->cssRewrite($file, $relative_dir, $local); } + if ($type === self::JS_MODULE_ASSET) { + $file = $this->jsRewrite($file, $relative_dir, $local); + } + $file = rtrim($file) . PHP_EOL; $buffer .= $file; } // Pull out @imports and move to top - if ($css) { + if ($type === self::CSS_ASSET) { $buffer = $this->moveImports($buffer); } From f90232e511b571e939c9cc87d40cfd8c2ce4135d Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Wed, 12 Jan 2022 12:29:43 -0700 Subject: [PATCH 67/98] typo --- system/src/Grav/Common/Assets/Pipeline.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/src/Grav/Common/Assets/Pipeline.php b/system/src/Grav/Common/Assets/Pipeline.php index 42b794976..58ef7d1d0 100644 --- a/system/src/Grav/Common/Assets/Pipeline.php +++ b/system/src/Grav/Common/Assets/Pipeline.php @@ -37,7 +37,7 @@ class Pipeline extends PropertyObject protected const CSS_URL_REGEX = '{url\(([\'\"]?)(.*?)\1\)}'; /** @const Regex to match JS imports */ - protected const JS_IMPORT_REGEX = '{import.*from\s?[\'|\"](.+?)[\'|\"]}'; + protected const JS_IMPORT_REGEX = '{import.+from\s?[\'|\"](.+?)[\'|\"]}'; /** @const Regex to match CSS sourcemap comments */ protected const CSS_SOURCEMAP_REGEX = '{\/\*# (.*?) \*\/}'; From d329df2bb0d402632187b2774ee2f2bcf1cc2765 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Wed, 12 Jan 2022 12:31:34 -0700 Subject: [PATCH 68/98] prepare for release --- CHANGELOG.md | 2 +- system/defines.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 80bc018a6..0485ea929 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ # v1.7.27 -## mm/dd/2022 +## 01/12/2022 1. [](#new) * Support for `YubiKey OTP` 2-Factor authenticator diff --git a/system/defines.php b/system/defines.php index 2bebab46c..a8ee1adb7 100644 --- a/system/defines.php +++ b/system/defines.php @@ -9,7 +9,7 @@ // Some standard defines define('GRAV', true); -define('GRAV_VERSION', '1.7.26.1'); +define('GRAV_VERSION', '1.7.27'); define('GRAV_SCHEMA', '1.7.0_2020-11-20_1'); define('GRAV_TESTING', false); From 21f76a1e349146a926378e32ba4f46bef4683822 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Wed, 12 Jan 2022 15:23:28 -0700 Subject: [PATCH 69/98] Fixed typo causing `;` to join files in CSS --- CHANGELOG.md | 6 ++++++ system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0485ea929..992889e48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# v1.7.27.1 +## 01/12/2022 + +3. [](#bugfix) + * Fixed a typo in CSS Asset pipeline that was erroneously joining files with `;` + # v1.7.27 ## 01/12/2022 diff --git a/system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php b/system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php index f04ba438f..131d978d6 100644 --- a/system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php +++ b/system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php @@ -100,7 +100,7 @@ trait AssetUtilsTrait } // Double check last character being - if ($type === self::CSS_ASSET) { + if ($type !== self::CSS_ASSET) { $file = rtrim($file, ' ;') . ';'; } From 3e784a2f15c0887dec92b7353c34966edd615b9c Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Wed, 12 Jan 2022 15:26:29 -0700 Subject: [PATCH 70/98] prepare for release --- system/defines.php | 2 +- system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/system/defines.php b/system/defines.php index a8ee1adb7..089c40e94 100644 --- a/system/defines.php +++ b/system/defines.php @@ -9,7 +9,7 @@ // Some standard defines define('GRAV', true); -define('GRAV_VERSION', '1.7.27'); +define('GRAV_VERSION', '1.7.27.1'); define('GRAV_SCHEMA', '1.7.0_2020-11-20_1'); define('GRAV_TESTING', false); diff --git a/system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php b/system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php index 131d978d6..0e3f392af 100644 --- a/system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php +++ b/system/src/Grav/Common/Assets/Traits/AssetUtilsTrait.php @@ -100,7 +100,7 @@ trait AssetUtilsTrait } // Double check last character being - if ($type !== self::CSS_ASSET) { + if ($type === self::JS_ASSET || $type === self::JS_MODULE_ASSET) { $file = rtrim($file, ' ;') . ';'; } From 707710d679a2f7d63ecf2ff67cee43c76ab5f3a9 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 13 Jan 2022 12:24:05 +0200 Subject: [PATCH 71/98] Added links and modules support to `HtmlBlock` class --- CHANGELOG.md | 8 +- .../Grav/Framework/ContentBlock/HtmlBlock.php | 103 +++++++++++++++++- .../ContentBlock/HtmlBlockInterface.php | 37 ++++++- 3 files changed, 142 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 992889e48..c830c70e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,14 @@ +# v1.7.28 +## mm/dd/2022 + +1. [](#new) + * Added links and modules support to `HtmlBlock` class + # v1.7.27.1 ## 01/12/2022 3. [](#bugfix) - * Fixed a typo in CSS Asset pipeline that was erroneously joining files with `;` + * Fixed a typo in CSS Asset pipeline that was erroneously joining files with `;` # v1.7.27 ## 01/12/2022 diff --git a/system/src/Grav/Framework/ContentBlock/HtmlBlock.php b/system/src/Grav/Framework/ContentBlock/HtmlBlock.php index 734d5077f..71cd9367f 100644 --- a/system/src/Grav/Framework/ContentBlock/HtmlBlock.php +++ b/system/src/Grav/Framework/ContentBlock/HtmlBlock.php @@ -29,6 +29,8 @@ class HtmlBlock extends ContentBlock implements HtmlBlockInterface /** @var array */ protected $scripts = []; /** @var array */ + protected $links = []; + /** @var array */ protected $html = []; /** @@ -40,6 +42,7 @@ class HtmlBlock extends ContentBlock implements HtmlBlockInterface $this->sortAssets($assets['styles']); $this->sortAssets($assets['scripts']); + $this->sortAssets($assets['links']); $this->sortAssets($assets['html']); return $assets; @@ -73,6 +76,15 @@ class HtmlBlock extends ContentBlock implements HtmlBlockInterface return $this->getAssetsInLocation('scripts', $location); } + /** + * @param string $location + * @return array + */ + public function getLinks($location = 'head') + { + return $this->getAssetsInLocation('links', $location); + } + /** * @param string $location * @return array @@ -98,6 +110,9 @@ class HtmlBlock extends ContentBlock implements HtmlBlockInterface if ($this->scripts) { $array['scripts'] = $this->scripts; } + if ($this->links) { + $array['links'] = $this->links; + } if ($this->html) { $array['html'] = $this->html; } @@ -117,6 +132,7 @@ class HtmlBlock extends ContentBlock implements HtmlBlockInterface $this->frameworks = isset($serialized['frameworks']) ? (array) $serialized['frameworks'] : []; $this->styles = isset($serialized['styles']) ? (array) $serialized['styles'] : []; $this->scripts = isset($serialized['scripts']) ? (array) $serialized['scripts'] : []; + $this->links = isset($serialized['links']) ? (array) $serialized['links'] : []; $this->html = isset($serialized['html']) ? (array) $serialized['html'] : []; } @@ -229,8 +245,9 @@ class HtmlBlock extends ContentBlock implements HtmlBlockInterface $src = $element['src']; $type = !empty($element['type']) ? (string) $element['type'] : 'text/javascript'; - $defer = isset($element['defer']); - $async = isset($element['async']); + $loading = !empty($element['loading']) ? (string) $element['loading'] : null; + $defer = !empty($element['defer']); + $async = !empty($element['async']); $handle = !empty($element['handle']) ? (string) $element['handle'] : ''; $this->scripts[$location][md5($src) . sha1($src)] = [ @@ -238,6 +255,7 @@ class HtmlBlock extends ContentBlock implements HtmlBlockInterface ':priority' => (int) $priority, 'src' => $src, 'type' => $type, + 'loading' => $loading, 'defer' => $defer, 'async' => $async, 'handle' => $handle @@ -266,12 +284,80 @@ class HtmlBlock extends ContentBlock implements HtmlBlockInterface $content = (string) $element['content']; $type = !empty($element['type']) ? (string) $element['type'] : 'text/javascript'; + $loading = !empty($element['loading']) ? (string) $element['loading'] : null; $this->scripts[$location][md5($content) . sha1($content)] = [ ':type' => 'inline', ':priority' => (int) $priority, 'content' => $content, - 'type' => $type + 'type' => $type, + 'loading' => $loading + ]; + + return true; + } + + /** + * @param string|array $element + * @param int $priority + * @param string $location + * @return bool + */ + public function addModule($element, $priority = 0, $location = 'head') + { + if (!is_array($element)) { + $element = ['src' => (string) $element]; + } + + $element['type'] = 'module'; + + return $this->addScript($element, $priority, $location); + } + + /** + * @param string|array $element + * @param int $priority + * @param string $location + * @return bool + */ + public function addInlineModule($element, $priority = 0, $location = 'head') + { + if (!is_array($element)) { + $element = ['content' => (string) $element]; + } + + $element['type'] = 'module'; + + return $this->addInlineScript($element, $priority, $location); + } + + /** + * @param array $element + * @param int $priority + * @param string $location + * @return bool + */ + public function addLink($element, $priority = 0, $location = 'head') + { + if (!is_array($element) || empty($element['rel']) || empty($element['href'])) { + return false; + } + + if (!isset($this->links[$location])) { + $this->links[$location] = []; + } + + $rel = (string) $element['rel']; + $href = (string) $element['href']; + + unset($element['rel'], $element['href']); + + $this->links[$location][md5($href) . sha1($href)] = [ + ':type' => 'file', + ':priority' => (int) $priority, + 'href' => $href, + 'rel' => $rel, + 'element' => $element, ]; return true; @@ -309,6 +395,7 @@ class HtmlBlock extends ContentBlock implements HtmlBlockInterface 'frameworks' => $this->frameworks, 'styles' => $this->styles, 'scripts' => $this->scripts, + 'links' => $this->links, 'html' => $this->html ]; @@ -333,6 +420,14 @@ class HtmlBlock extends ContentBlock implements HtmlBlockInterface } } + foreach ($blockAssets['links'] as $location => $links) { + if (!isset($assets['links'][$location])) { + $assets['links'][$location] = $links; + } elseif ($links) { + $assets['links'][$location] += $links; + } + } + foreach ($blockAssets['html'] as $location => $htmls) { if (!isset($assets['html'][$location])) { $assets['html'][$location] = $htmls; @@ -391,7 +486,7 @@ class HtmlBlock extends ContentBlock implements HtmlBlockInterface */ protected function sortAssets(array &$array) { - foreach ($array as $location => &$items) { + foreach ($array as &$items) { $this->sortAssetsInLocation($items); } } diff --git a/system/src/Grav/Framework/ContentBlock/HtmlBlockInterface.php b/system/src/Grav/Framework/ContentBlock/HtmlBlockInterface.php index 686127f45..b151d7b8a 100644 --- a/system/src/Grav/Framework/ContentBlock/HtmlBlockInterface.php +++ b/system/src/Grav/Framework/ContentBlock/HtmlBlockInterface.php @@ -37,6 +37,13 @@ interface HtmlBlockInterface extends ContentBlockInterface */ public function getScripts($location = 'head'); + + /** + * @param string $location + * @return array + */ + public function getLinks($location = 'head'); + /** * @param string $location * @return array @@ -76,7 +83,6 @@ interface HtmlBlockInterface extends ContentBlockInterface */ public function addScript($element, $priority = 0, $location = 'head'); - /** * @param string|array $element * @param int $priority @@ -85,6 +91,35 @@ interface HtmlBlockInterface extends ContentBlockInterface */ public function addInlineScript($element, $priority = 0, $location = 'head'); + + /** + * Shortcut for writing addScript(['type' => 'module', 'src' => ...]). + * + * @param string|array $element + * @param int $priority + * @param string $location + * @return bool + */ + public function addModule($element, $priority = 0, $location = 'head'); + + /** + * Shortcut for writing addInlineScript(['type' => 'module', 'content' => ...]). + * + * @param string|array $element + * @param int $priority + * @param string $location + * @return bool + */ + public function addInlineModule($element, $priority = 0, $location = 'head'); + + /** + * @param array $element + * @param int $priority + * @param string $location + * @return bool + */ + public function addLink($element, $priority = 0, $location = 'head'); + /** * @param string $html * @param int $priority From 1ab2f7083c489e6c374d4f672860e23bba4460fe Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 13 Jan 2022 12:52:23 +0200 Subject: [PATCH 72/98] Added module support for twig script tag: `{% script module 'theme://js/module.mjs' %}` --- CHANGELOG.md | 1 + .../Grav/Common/Twig/Node/TwigNodeScript.php | 11 +++++--- .../TokenParser/TwigTokenParserScript.php | 26 ++++++++++++++----- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c830c70e5..3b5a5635c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ 1. [](#new) * Added links and modules support to `HtmlBlock` class + * Added module support for twig script tag: `{% script module 'theme://js/module.mjs' %}` # v1.7.27.1 ## 01/12/2022 diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeScript.php b/system/src/Grav/Common/Twig/Node/TwigNodeScript.php index d7b4ae79f..7a665b78c 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeScript.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeScript.php @@ -27,6 +27,7 @@ class TwigNodeScript extends Node implements NodeCaptureInterface /** * TwigNodeScript constructor. * @param Node|null $body + * @param string|null $type * @param AbstractExpression|null $file * @param AbstractExpression|null $group * @param AbstractExpression|null $priority @@ -34,12 +35,12 @@ class TwigNodeScript extends Node implements NodeCaptureInterface * @param int $lineno * @param string|null $tag */ - public function __construct(?Node $body, ?AbstractExpression $file, ?AbstractExpression $group, ?AbstractExpression $priority, ?AbstractExpression $attributes, $lineno = 0, $tag = null) + public function __construct(?Node $body, ?string $type, ?AbstractExpression $file, ?AbstractExpression $group, ?AbstractExpression $priority, ?AbstractExpression $attributes, $lineno = 0, $tag = null) { $nodes = ['body' => $body, 'file' => $file, 'group' => $group, 'priority' => $priority, 'attributes' => $attributes]; $nodes = array_filter($nodes); - parent::__construct($nodes, [], $lineno, $tag); + parent::__construct($nodes, ['type' => $type], $lineno, $tag); } /** @@ -90,7 +91,8 @@ class TwigNodeScript extends Node implements NodeCaptureInterface if ($this->hasNode('file')) { $compiler - ->write('$assets->addJs(') + ->write("\$method = '{$this->getAttribute('type')}' === 'module' ? 'addJsModule' : 'addJs';\n") + ->write('$assets->{$method}(') ->subcompile($this->getNode('file')) ->raw(", \$attributes);\n"); } else { @@ -98,7 +100,8 @@ class TwigNodeScript extends Node implements NodeCaptureInterface ->write("ob_start();\n") ->subcompile($this->getNode('body')) ->write('$content = ob_get_clean();' . "\n") - ->write("\$assets->addInlineJs(\$content, \$attributes);\n"); + ->write("\$method = '{$this->getAttribute('type')}' === 'module' ? 'addInlineJsModule' : 'addInlineJs';\n") + ->write("\$assets->{\$method}(\$content, \$attributes);\n"); } } } diff --git a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserScript.php b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserScript.php index e98365b94..b943a2540 100644 --- a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserScript.php +++ b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserScript.php @@ -15,14 +15,20 @@ use Twig\Token; use Twig\TokenParser\AbstractTokenParser; /** - * Adds a script to head/bottom/custom location in the document. + * Adds a script to head/bottom/custom group location in the document. * - * {% script 'theme://js/something.js' at 'bottom' priority: 20 with { defer: true, async: true } %} + * {% script 'theme://js/something.js' at 'bottom' priority: 20 with { position: 'pipeline', loading: 'async defer' } %} + * {% script module 'theme://js/module.mjs' at 'head' %} * + * {% script 'theme://js/something.js' at 'bottom' priority: 20 with { loading: 'inline' } %} * {% script at 'bottom' priority: 20 %} - * alert('Warning!'); + * alert('Warning!'); + * {% endscript %} + * + * {% script module 'theme://js/module.mjs' at 'bottom' with { loading: 'inline' } %} + * {% script module at 'bottom' %} + * ... * {% endscript %} - */ class TwigTokenParserScript extends AbstractTokenParser { @@ -38,7 +44,7 @@ class TwigTokenParserScript extends AbstractTokenParser $lineno = $token->getLine(); $stream = $this->parser->getStream(); - [$file, $group, $priority, $attributes] = $this->parseArguments($token); + [$type, $file, $group, $priority, $attributes] = $this->parseArguments($token); $content = null; if ($file === null) { @@ -46,7 +52,7 @@ class TwigTokenParserScript extends AbstractTokenParser $stream->expect(Token::BLOCK_END_TYPE); } - return new TwigNodeScript($content, $file, $group, $priority, $attributes, $lineno, $this->getTag()); + return new TwigNodeScript($content, $type, $file, $group, $priority, $attributes, $lineno, $this->getTag()); } /** @@ -73,6 +79,12 @@ class TwigTokenParserScript extends AbstractTokenParser } while (true); } + $type = null; + if ($stream->test(Token::NAME_TYPE, 'module')) { + $type = $stream->getCurrent()->getValue(); + $stream->next(); + } + $file = null; if (!$stream->test(Token::NAME_TYPE) && !$stream->test(Token::OPERATOR_TYPE, 'in') && !$stream->test(Token::BLOCK_END_TYPE)) { $file = $this->parser->getExpressionParser()->parseExpression(); @@ -96,7 +108,7 @@ class TwigTokenParserScript extends AbstractTokenParser $stream->expect(Token::BLOCK_END_TYPE); - return [$file, $group, $priority, $attributes]; + return [$type, $file, $group, $priority, $attributes]; } /** From da6b41f8a60050908323d62467337d7bf9c0274e Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 13 Jan 2022 13:06:19 +0200 Subject: [PATCH 73/98] Added twig tag for links: `{% link icon 'theme://images/favicon.png' priority: 20 with { type: 'image/png' } %}` --- CHANGELOG.md | 1 + .../Common/Twig/Extension/GravExtension.php | 2 + .../Grav/Common/Twig/Node/TwigNodeLink.php | 98 ++++++++++++++++ .../Twig/TokenParser/TwigTokenParserLink.php | 109 ++++++++++++++++++ 4 files changed, 210 insertions(+) create mode 100644 system/src/Grav/Common/Twig/Node/TwigNodeLink.php create mode 100644 system/src/Grav/Common/Twig/TokenParser/TwigTokenParserLink.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b5a5635c..28317c9a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ 1. [](#new) * Added links and modules support to `HtmlBlock` class * Added module support for twig script tag: `{% script module 'theme://js/module.mjs' %}` + * Added twig tag for links: `{% link icon 'theme://images/favicon.png' priority: 20 with { type: 'image/png' } %}` # v1.7.27.1 ## 01/12/2022 diff --git a/system/src/Grav/Common/Twig/Extension/GravExtension.php b/system/src/Grav/Common/Twig/Extension/GravExtension.php index b6f30906b..dcff83750 100644 --- a/system/src/Grav/Common/Twig/Extension/GravExtension.php +++ b/system/src/Grav/Common/Twig/Extension/GravExtension.php @@ -22,6 +22,7 @@ use Grav\Common\Page\Media; use Grav\Common\Scheduler\Cron; use Grav\Common\Security; use Grav\Common\Twig\TokenParser\TwigTokenParserCache; +use Grav\Common\Twig\TokenParser\TwigTokenParserLink; use Grav\Common\Twig\TokenParser\TwigTokenParserRender; use Grav\Common\Twig\TokenParser\TwigTokenParserScript; use Grav\Common\Twig\TokenParser\TwigTokenParserStyle; @@ -252,6 +253,7 @@ class GravExtension extends AbstractExtension implements GlobalsInterface new TwigTokenParserTryCatch(), new TwigTokenParserScript(), new TwigTokenParserStyle(), + new TwigTokenParserLink(), new TwigTokenParserMarkdown(), new TwigTokenParserSwitch(), new TwigTokenParserCache(), diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeLink.php b/system/src/Grav/Common/Twig/Node/TwigNodeLink.php new file mode 100644 index 000000000..8fff84e00 --- /dev/null +++ b/system/src/Grav/Common/Twig/Node/TwigNodeLink.php @@ -0,0 +1,98 @@ + $file, 'group' => $group, 'priority' => $priority, 'attributes' => $attributes]; + $nodes = array_filter($nodes); + + parent::__construct($nodes, ['rel' => $rel], $lineno, $tag); + } + + /** + * Compiles the node to PHP. + * + * @param Compiler $compiler A Twig Compiler instance + * @return void + * @throws LogicException + */ + public function compile(Compiler $compiler): void + { + $compiler->addDebugInfo($this); + if (!$this->hasNode('file')) { + return; + } + + $compiler->write("\$assets = \\Grav\\Common\\Grav::instance()['assets'];\n"); + + $compiler->write('$attributes = [\'rel\' => \'' . $this->getAttribute('rel') . '\'];' . "\n"); + if ($this->hasNode('attributes')) { + $compiler + ->write('$attributes += ') + ->subcompile($this->getNode('attributes')) + ->raw(";\n") + ->write("if (!is_array(\$attributes)) {\n") + ->indent() + ->write("throw new UnexpectedValueException('{% {$this->tagName} with x %}: x is not an array');\n") + ->outdent() + ->write("}\n"); + } + + if ($this->hasNode('group')) { + $compiler + ->write("\$attributes['group'] = ") + ->subcompile($this->getNode('group')) + ->raw(";\n") + ->write("if (!is_string(\$attributes['group'])) {\n") + ->indent() + ->write("throw new UnexpectedValueException('{% {$this->tagName} in x %}: x is not a string');\n") + ->outdent() + ->write("}\n"); + } + + if ($this->hasNode('priority')) { + $compiler + ->write("\$attributes['priority'] = (int)(") + ->subcompile($this->getNode('priority')) + ->raw(");\n"); + } + + $compiler + ->write('$assets->addLink(') + ->subcompile($this->getNode('file')) + ->raw(", \$attributes);\n"); + } +} diff --git a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserLink.php b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserLink.php new file mode 100644 index 000000000..2cb0208eb --- /dev/null +++ b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserLink.php @@ -0,0 +1,109 @@ +getLine(); + + [$rel, $file, $group, $priority, $attributes] = $this->parseArguments($token); + + return new TwigNodeLink($rel, $file, $group, $priority, $attributes, $lineno, $this->getTag()); + } + + /** + * @param Token $token + * @return array + */ + protected function parseArguments(Token $token): array + { + $stream = $this->parser->getStream(); + + + $rel = null; + if ($stream->test(Token::NAME_TYPE, $this->rel)) { + $rel = $stream->getCurrent()->getValue(); + $stream->next(); + } + + $file = null; + if (!$stream->test(Token::NAME_TYPE) && !$stream->test(Token::BLOCK_END_TYPE)) { + $file = $this->parser->getExpressionParser()->parseExpression(); + } + + $group = null; + if ($stream->nextIf(Token::NAME_TYPE, 'at')) { + $group = $this->parser->getExpressionParser()->parseExpression(); + } + + $priority = null; + if ($stream->nextIf(Token::NAME_TYPE, 'priority')) { + $stream->expect(Token::PUNCTUATION_TYPE, ':'); + $priority = $this->parser->getExpressionParser()->parseExpression(); + } + + $attributes = null; + if ($stream->nextIf(Token::NAME_TYPE, 'with')) { + $attributes = $this->parser->getExpressionParser()->parseExpression(); + } + + $stream->expect(Token::BLOCK_END_TYPE); + + return [$rel, $file, $group, $priority, $attributes]; + } + + /** + * Gets the tag name associated with this token parser. + * + * @return string The tag name + */ + public function getTag(): string + { + return 'link'; + } +} From 0bb52c75ce252aa52dee0f3ef165db47f75835bc Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Thu, 13 Jan 2022 06:20:38 -0700 Subject: [PATCH 74/98] page-level override for redirect_default_route --- CHANGELOG.md | 1 + system/blueprints/pages/default.yaml | 12 ++++++++++++ .../src/Grav/Common/Service/PagesServiceProvider.php | 3 ++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28317c9a3..28d277b4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * Added links and modules support to `HtmlBlock` class * Added module support for twig script tag: `{% script module 'theme://js/module.mjs' %}` * Added twig tag for links: `{% link icon 'theme://images/favicon.png' priority: 20 with { type: 'image/png' } %}` + * Support for page-level `redirect_default_route` frontmatter header override # v1.7.27.1 ## 01/12/2022 diff --git a/system/blueprints/pages/default.yaml b/system/blueprints/pages/default.yaml index f3ef29f5e..a573a83c8 100644 --- a/system/blueprints/pages/default.yaml +++ b/system/blueprints/pages/default.yaml @@ -320,6 +320,18 @@ form: fields: + header.redirect_default_route: + type: toggle + toggleable: true + label: PLUGIN_ADMIN.REDIRECT_DEFAULT_ROUTE + help: PLUGIN_ADMIN.REDIRECT_DEFAULT_ROUTE_HELP + config-highlight@: system.pages.redirect_default_route + options: + 1: PLUGIN_ADMIN.YES + 0: PLUGIN_ADMIN.NO + validate: + type: bool + header.routes.default: type: text toggleable: true diff --git a/system/src/Grav/Common/Service/PagesServiceProvider.php b/system/src/Grav/Common/Service/PagesServiceProvider.php index bec635ac8..fa6631eee 100644 --- a/system/src/Grav/Common/Service/PagesServiceProvider.php +++ b/system/src/Grav/Common/Service/PagesServiceProvider.php @@ -99,7 +99,8 @@ class PagesServiceProvider implements ServiceProviderInterface /** @var Language $language */ $language = $grav['language']; - $redirectCode = (int)$config->get('system.pages.redirect_default_route', 0); + $redirect_default_route = $page->header()->redirect_default_route ?? $config->get('system.pages.redirect_default_route', 0); + $redirectCode = (int) $redirect_default_route; // Language-specific redirection scenarios if ($language->enabled() && ($language->isLanguageInUrl() xor $language->isIncludeDefaultLanguage())) { From b58210de1a0cac474dcd5677669867c87c508ac1 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Fri, 14 Jan 2022 11:25:21 +0200 Subject: [PATCH 75/98] Added `HtmlBlock` support for `{% style %}`, `{% script %}` and `{% link %}` tags --- CHANGELOG.md | 1 + .../Grav/Common/Twig/Node/TwigNodeLink.php | 46 +++++++---- .../Grav/Common/Twig/Node/TwigNodeScript.php | 79 +++++++++++++------ .../Grav/Common/Twig/Node/TwigNodeStyle.php | 70 +++++++++++----- 4 files changed, 139 insertions(+), 57 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28317c9a3..d2bcf38e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * Added links and modules support to `HtmlBlock` class * Added module support for twig script tag: `{% script module 'theme://js/module.mjs' %}` * Added twig tag for links: `{% link icon 'theme://images/favicon.png' priority: 20 with { type: 'image/png' } %}` + * Added `HtmlBlock` support for `{% style %}`, `{% script %}` and `{% link %}` tags # v1.7.27.1 ## 01/12/2022 diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeLink.php b/system/src/Grav/Common/Twig/Node/TwigNodeLink.php index 8fff84e00..a468633ba 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeLink.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeLink.php @@ -56,43 +56,59 @@ class TwigNodeLink extends Node implements NodeCaptureInterface return; } - $compiler->write("\$assets = \\Grav\\Common\\Grav::instance()['assets'];\n"); - $compiler->write('$attributes = [\'rel\' => \'' . $this->getAttribute('rel') . '\'];' . "\n"); if ($this->hasNode('attributes')) { $compiler ->write('$attributes += ') ->subcompile($this->getNode('attributes')) - ->raw(";\n") - ->write("if (!is_array(\$attributes)) {\n") + ->raw(';' . PHP_EOL) + ->write('if (!is_array($attributes)) {' . PHP_EOL) ->indent() - ->write("throw new UnexpectedValueException('{% {$this->tagName} with x %}: x is not an array');\n") + ->write("throw new UnexpectedValueException('{% {$this->tagName} with x %}: x is not an array');" . PHP_EOL) ->outdent() - ->write("}\n"); + ->write('}' . PHP_EOL); } if ($this->hasNode('group')) { $compiler - ->write("\$attributes['group'] = ") + ->write('$group = ') ->subcompile($this->getNode('group')) - ->raw(";\n") - ->write("if (!is_string(\$attributes['group'])) {\n") + ->raw(';' . PHP_EOL) + ->write('if (!is_string($group)) {' . PHP_EOL) ->indent() - ->write("throw new UnexpectedValueException('{% {$this->tagName} in x %}: x is not a string');\n") + ->write("throw new UnexpectedValueException('{% {$this->tagName} in x %}: x is not a string');" . PHP_EOL) ->outdent() - ->write("}\n"); + ->write('}' . PHP_EOL); + } else { + $compiler->write('$group = \'head\';' . PHP_EOL); } if ($this->hasNode('priority')) { $compiler - ->write("\$attributes['priority'] = (int)(") + ->write('$priority = (int)(') ->subcompile($this->getNode('priority')) - ->raw(");\n"); + ->raw(');' . PHP_EOL); + } else { + $compiler->write('$priority = 10;' . PHP_EOL); } + $compiler->write("\$assets = \\Grav\\Common\\Grav::instance()['assets'];" . PHP_EOL); + $compiler->write("\$block = \$context['block'] ?? null;" . PHP_EOL); + $compiler - ->write('$assets->addLink(') + ->write('$file = (string)(') ->subcompile($this->getNode('file')) - ->raw(", \$attributes);\n"); + ->raw(');' . PHP_EOL); + + // Assets support. + $compiler->write('$assets->addLink($file, [\'group\' => $group, \'priority\' => $priority] + $attributes);' . PHP_EOL); + + // HtmlBlock support. + $compiler + ->write('if ($block instanceof \Grav\Framework\ContentBlock\HtmlBlock) {' . PHP_EOL) + ->indent() + ->write('$block->addLink([\'href\'=> $file] + $attributes, $priority, $group);' . PHP_EOL) + ->outdent() + ->write('}' . PHP_EOL); } } diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeScript.php b/system/src/Grav/Common/Twig/Node/TwigNodeScript.php index 7a665b78c..03554bd09 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeScript.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeScript.php @@ -54,54 +54,89 @@ class TwigNodeScript extends Node implements NodeCaptureInterface { $compiler->addDebugInfo($this); - $compiler->write("\$assets = \\Grav\\Common\\Grav::instance()['assets'];\n"); - if ($this->hasNode('attributes')) { $compiler ->write('$attributes = ') ->subcompile($this->getNode('attributes')) - ->raw(";\n") - ->write("if (!is_array(\$attributes)) {\n") + ->raw(';' . PHP_EOL) + ->write('if (!is_array($attributes)) {' . PHP_EOL) ->indent() - ->write("throw new UnexpectedValueException('{% {$this->tagName} with x %}: x is not an array');\n") + ->write("throw new UnexpectedValueException('{% {$this->tagName} with x %}: x is not an array');" . PHP_EOL) ->outdent() - ->write("}\n"); + ->write('}' . PHP_EOL); } else { - $compiler->write('$attributes = [];' . "\n"); + $compiler->write('$attributes = [];' . PHP_EOL); } if ($this->hasNode('group')) { $compiler - ->write("\$attributes['group'] = ") + ->write('$group = ') ->subcompile($this->getNode('group')) - ->raw(";\n") - ->write("if (!is_string(\$attributes['group'])) {\n") + ->raw(';' . PHP_EOL) + ->write('if (!is_string($group)) {' . PHP_EOL) ->indent() - ->write("throw new UnexpectedValueException('{% {$this->tagName} in x %}: x is not a string');\n") + ->write("throw new UnexpectedValueException('{% {$this->tagName} in x %}: x is not a string');" . PHP_EOL) ->outdent() - ->write("}\n"); + ->write('}' . PHP_EOL); + } else { + $compiler->write('$group = \'head\';' . PHP_EOL); } if ($this->hasNode('priority')) { $compiler - ->write("\$attributes['priority'] = (int)(") + ->write('$priority = (int)(') ->subcompile($this->getNode('priority')) - ->raw(");\n"); + ->raw(');' . PHP_EOL); + } else { + $compiler->write('$priority = 10;' . PHP_EOL); } + $compiler->write("\$assets = \\Grav\\Common\\Grav::instance()['assets'];" . PHP_EOL); + $compiler->write("\$block = \$context['block'] ?? null;" . PHP_EOL); + if ($this->hasNode('file')) { + // JS file. $compiler - ->write("\$method = '{$this->getAttribute('type')}' === 'module' ? 'addJsModule' : 'addJs';\n") - ->write('$assets->{$method}(') + ->write('$file = (string)(') ->subcompile($this->getNode('file')) - ->raw(", \$attributes);\n"); - } else { + ->raw(');' . PHP_EOL); + + $method = $this->getAttribute('type') === 'module' ? 'addJsModule' : 'addJs'; + + // Assets support. + $compiler->write('$assets->' . $method . '($file, [\'group\' => $group, \'priority\' => $priority] + $attributes);' . PHP_EOL); + + $method = $this->getAttribute('type') === 'module' ? 'addModule' : 'addScript'; + + // HtmlBlock support. $compiler - ->write("ob_start();\n") + ->write('if ($block instanceof \Grav\Framework\ContentBlock\HtmlBlock) {' . PHP_EOL) + ->indent() + ->write('$block->' . $method . '([\'src\'=> $file] + $attributes, $priority, $group);' . PHP_EOL) + ->outdent() + ->write('}' . PHP_EOL); + + } else { + // Inline script. + $compiler + ->write('ob_start();' . PHP_EOL) ->subcompile($this->getNode('body')) - ->write('$content = ob_get_clean();' . "\n") - ->write("\$method = '{$this->getAttribute('type')}' === 'module' ? 'addInlineJsModule' : 'addInlineJs';\n") - ->write("\$assets->{\$method}(\$content, \$attributes);\n"); + ->write('$content = ob_get_clean();' . PHP_EOL); + + $method = $this->getAttribute('type') === 'module' ? 'addInlineJsModule' : 'addInlineJs'; + + // Assets support. + $compiler->write('$assets->' . $method . '($content, [\'group\' => $group, \'priority\' => $priority] + $attributes);' . PHP_EOL); + + $method = $this->getAttribute('type') === 'module' ? 'addInlineModule' : 'addInlineScript'; + + // HtmlBlock support. + $compiler + ->write('if ($block instanceof \Grav\Framework\ContentBlock\HtmlBlock) {' . PHP_EOL) + ->indent() + ->write('$block->' . $method . '([\'content\'=> $content] + $attributes, $priority, $group);' . PHP_EOL) + ->outdent() + ->write('}' . PHP_EOL); } } } diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeStyle.php b/system/src/Grav/Common/Twig/Node/TwigNodeStyle.php index 8710bf531..1c3568c6a 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeStyle.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeStyle.php @@ -41,6 +41,7 @@ class TwigNodeStyle extends Node implements NodeCaptureInterface parent::__construct($nodes, [], $lineno, $tag); } + /** * Compiles the node to PHP. * @@ -52,52 +53,81 @@ class TwigNodeStyle extends Node implements NodeCaptureInterface { $compiler->addDebugInfo($this); - $compiler->write("\$assets = \\Grav\\Common\\Grav::instance()['assets'];\n"); - if ($this->hasNode('attributes')) { $compiler ->write('$attributes = ') ->subcompile($this->getNode('attributes')) - ->raw(";\n") - ->write("if (!is_array(\$attributes)) {\n") + ->raw(';' . PHP_EOL) + ->write('if (!is_array($attributes)) {' . PHP_EOL) ->indent() - ->write("throw new UnexpectedValueException('{% {$this->tagName} with x %}: x is not an array');\n") + ->write("throw new UnexpectedValueException('{% {$this->tagName} with x %}: x is not an array');" . PHP_EOL) ->outdent() - ->write("}\n"); + ->write('}' . PHP_EOL); } else { - $compiler->write('$attributes = [];' . "\n"); + $compiler->write('$attributes = [];' . PHP_EOL); } if ($this->hasNode('group')) { $compiler - ->write("\$attributes['group'] = ") + ->write('$group = ') ->subcompile($this->getNode('group')) - ->raw(";\n") - ->write("if (!is_string(\$attributes['group'])) {\n") + ->raw(';' . PHP_EOL) + ->write('if (!is_string($group)) {' . PHP_EOL) ->indent() - ->write("throw new UnexpectedValueException('{% {$this->tagName} in x %}: x is not a string');\n") + ->write("throw new UnexpectedValueException('{% {$this->tagName} in x %}: x is not a string');" . PHP_EOL) ->outdent() - ->write("}\n"); + ->write('}' . PHP_EOL); + } else { + $compiler->write('$group = \'head\';' . PHP_EOL); } if ($this->hasNode('priority')) { $compiler - ->write("\$attributes['priority'] = (int)(") + ->write('$priority = (int)(') ->subcompile($this->getNode('priority')) - ->raw(");\n"); + ->raw(');' . PHP_EOL); + } else { + $compiler->write('$priority = 10;' . PHP_EOL); } + $compiler->write("\$assets = \\Grav\\Common\\Grav::instance()['assets'];" . PHP_EOL); + $compiler->write("\$block = \$context['block'] ?? null;" . PHP_EOL); + if ($this->hasNode('file')) { + // CSS file. $compiler - ->write('$assets->addCss(') + ->write('$file = (string)(') ->subcompile($this->getNode('file')) - ->raw(", \$attributes);\n"); - } else { + ->raw(');' . PHP_EOL); + + // Assets support. + $compiler->write('$assets->addCss($file, [\'group\' => $group, \'priority\' => $priority] + $attributes);' . PHP_EOL); + + // HtmlBlock support. $compiler - ->write("ob_start();\n") + ->write('if ($block instanceof \Grav\Framework\ContentBlock\HtmlBlock) {' . PHP_EOL) + ->indent() + ->write('$block->addStyle([\'href\'=> $file] + $attributes, $priority, $group);' . PHP_EOL) + ->outdent() + ->write('}' . PHP_EOL); + + } else { + // Inline style. + $compiler + ->write('ob_start();' . PHP_EOL) ->subcompile($this->getNode('body')) - ->write('$content = ob_get_clean();' . "\n") - ->write("\$assets->addInlineCss(\$content, \$attributes);\n"); + ->write('$content = ob_get_clean();' . PHP_EOL); + + // Assets support. + $compiler->write('$assets->addInlineCss($content, [\'group\' => $group, \'priority\' => $priority] + $attributes);' . PHP_EOL); + + // HtmlBlock support. + $compiler + ->write('if ($block instanceof \Grav\Framework\ContentBlock\HtmlBlock) {' . PHP_EOL) + ->indent() + ->write('$block->addInlineStyle([\'content\'=> $content] + $attributes, $priority, $group);' . PHP_EOL) + ->outdent() + ->write('}' . PHP_EOL); } } } From 61061220d72c44f09531b0a746a86386365ee61a Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 17 Jan 2022 09:37:59 +0200 Subject: [PATCH 76/98] Compoer update, fixed phpstan errors --- composer.lock | 276 ++++++++++---------- system/src/Grav/Common/Assets/BaseAsset.php | 13 + system/src/Grav/Common/Assets/Pipeline.php | 4 +- tests/phpstan/phpstan.neon | 3 + 4 files changed, 159 insertions(+), 137 deletions(-) diff --git a/composer.lock b/composer.lock index 25fad88cc..a3dbeb476 100644 --- a/composer.lock +++ b/composer.lock @@ -548,16 +548,16 @@ }, { "name": "filp/whoops", - "version": "2.14.4", + "version": "2.14.5", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "f056f1fe935d9ed86e698905a957334029899895" + "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/f056f1fe935d9ed86e698905a957334029899895", - "reference": "f056f1fe935d9ed86e698905a957334029899895", + "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", + "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", "shasum": "" }, "require": { @@ -607,7 +607,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.14.4" + "source": "https://github.com/filp/whoops/tree/2.14.5" }, "funding": [ { @@ -615,7 +615,7 @@ "type": "github" } ], - "time": "2021-10-03T12:00:00+00:00" + "time": "2022-01-07T12:00:00+00:00" }, { "name": "getgrav/cache", @@ -840,16 +840,16 @@ }, { "name": "itsgoingd/clockwork", - "version": "v5.1.2", + "version": "v5.1.3", "source": { "type": "git", "url": "https://github.com/itsgoingd/clockwork.git", - "reference": "4f46a69b123635ba2910a3ca8d100edfadc924e1" + "reference": "e03f8a7f4bcd99ec67e56428e4fc7424de4cefa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/itsgoingd/clockwork/zipball/4f46a69b123635ba2910a3ca8d100edfadc924e1", - "reference": "4f46a69b123635ba2910a3ca8d100edfadc924e1", + "url": "https://api.github.com/repos/itsgoingd/clockwork/zipball/e03f8a7f4bcd99ec67e56428e4fc7424de4cefa8", + "reference": "e03f8a7f4bcd99ec67e56428e4fc7424de4cefa8", "shasum": "" }, "require": { @@ -897,7 +897,7 @@ ], "support": { "issues": "https://github.com/itsgoingd/clockwork/issues", - "source": "https://github.com/itsgoingd/clockwork/tree/v5.1.2" + "source": "https://github.com/itsgoingd/clockwork/tree/v5.1.3" }, "funding": [ { @@ -905,7 +905,7 @@ "type": "github" } ], - "time": "2021-12-07T18:24:19+00:00" + "time": "2021-12-24T12:24:20+00:00" }, { "name": "league/climate", @@ -2191,16 +2191,16 @@ }, { "name": "symfony/console", - "version": "v4.4.34", + "version": "v4.4.36", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "329b3a75cc6b16d435ba1b1a41df54a53382a3f0" + "reference": "621379b62bb19af213b569b60013200b11dd576f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/329b3a75cc6b16d435ba1b1a41df54a53382a3f0", - "reference": "329b3a75cc6b16d435ba1b1a41df54a53382a3f0", + "url": "https://api.github.com/repos/symfony/console/zipball/621379b62bb19af213b569b60013200b11dd576f", + "reference": "621379b62bb19af213b569b60013200b11dd576f", "shasum": "" }, "require": { @@ -2261,7 +2261,7 @@ "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.34" + "source": "https://github.com/symfony/console/tree/v4.4.36" }, "funding": [ { @@ -2277,7 +2277,7 @@ "type": "tidelift" } ], - "time": "2021-11-04T12:23:33+00:00" + "time": "2021-12-15T10:33:10+00:00" }, { "name": "symfony/contracts", @@ -2459,16 +2459,16 @@ }, { "name": "symfony/http-client", - "version": "v4.4.35", + "version": "v4.4.36", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "6ed0c02fdc21a76966f19b9000de18e688d9ca68" + "reference": "35e2cd1862b9ec2b46ebf050fbb13e285944b6a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/6ed0c02fdc21a76966f19b9000de18e688d9ca68", - "reference": "6ed0c02fdc21a76966f19b9000de18e688d9ca68", + "url": "https://api.github.com/repos/symfony/http-client/zipball/35e2cd1862b9ec2b46ebf050fbb13e285944b6a3", + "reference": "35e2cd1862b9ec2b46ebf050fbb13e285944b6a3", "shasum": "" }, "require": { @@ -2520,7 +2520,7 @@ "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-client/tree/v4.4.35" + "source": "https://github.com/symfony/http-client/tree/v4.4.36" }, "funding": [ { @@ -2536,25 +2536,28 @@ "type": "tidelift" } ], - "time": "2021-11-22T21:43:45+00:00" + "time": "2021-12-29T09:28:53+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "reference": "30885182c981ab175d4d034db0f6f469898070ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-ctype": "*" + }, "suggest": { "ext-ctype": "For best performance" }, @@ -2599,7 +2602,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.24.0" }, "funding": [ { @@ -2615,25 +2618,28 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-10-20T20:35:02+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.23.0", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933" + "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/63b5bb7db83e5673936d6e3b8b3e022ff6474933", - "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f1aed619e28cb077fc83fac8c4c0383578356e40", + "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-iconv": "*" + }, "suggest": { "ext-iconv": "For best performance" }, @@ -2679,7 +2685,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.24.0" }, "funding": [ { @@ -2695,25 +2701,28 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2022-01-04T09:04:05+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-mbstring": "*" + }, "suggest": { "ext-mbstring": "For best performance" }, @@ -2759,7 +2768,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0" }, "funding": [ { @@ -2775,11 +2784,11 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2021-11-30T18:21:41+00:00" }, { "name": "symfony/polyfill-php74", - "version": "v1.23.0", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php74.git", @@ -2839,7 +2848,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php74/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php74/tree/v1.24.0" }, "funding": [ { @@ -2859,16 +2868,16 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.23.1", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" + "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", + "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", "shasum": "" }, "require": { @@ -2922,7 +2931,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.24.0" }, "funding": [ { @@ -2938,20 +2947,20 @@ "type": "tidelift" } ], - "time": "2021-07-28T13:41:28+00:00" + "time": "2021-09-13T13:58:33+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.23.0", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "e66119f3de95efc359483f810c4c3e6436279436" + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436", - "reference": "e66119f3de95efc359483f810c4c3e6436279436", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", "shasum": "" }, "require": { @@ -3001,7 +3010,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.24.0" }, "funding": [ { @@ -3017,20 +3026,20 @@ "type": "tidelift" } ], - "time": "2021-05-21T13:25:03+00:00" + "time": "2021-09-13T13:58:11+00:00" }, { "name": "symfony/process", - "version": "v4.4.35", + "version": "v4.4.36", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "c2098705326addae6e6742151dfade47ac71da1b" + "reference": "a35d6b8f82e2272504f23a267de49b8717ca0028" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/c2098705326addae6e6742151dfade47ac71da1b", - "reference": "c2098705326addae6e6742151dfade47ac71da1b", + "url": "https://api.github.com/repos/symfony/process/zipball/a35d6b8f82e2272504f23a267de49b8717ca0028", + "reference": "a35d6b8f82e2272504f23a267de49b8717ca0028", "shasum": "" }, "require": { @@ -3063,7 +3072,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v4.4.35" + "source": "https://github.com/symfony/process/tree/v4.4.36" }, "funding": [ { @@ -3079,20 +3088,20 @@ "type": "tidelift" } ], - "time": "2021-11-22T22:36:24+00:00" + "time": "2021-12-19T16:27:15+00:00" }, { "name": "symfony/var-dumper", - "version": "v4.4.34", + "version": "v4.4.36", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "2d0c056b2faaa3d785bdbd5adecc593a5be9c16e" + "reference": "02685c62fcbc4262235cc72a54fbd45ab719ce3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2d0c056b2faaa3d785bdbd5adecc593a5be9c16e", - "reference": "2d0c056b2faaa3d785bdbd5adecc593a5be9c16e", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/02685c62fcbc4262235cc72a54fbd45ab719ce3c", + "reference": "02685c62fcbc4262235cc72a54fbd45ab719ce3c", "shasum": "" }, "require": { @@ -3152,7 +3161,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v4.4.34" + "source": "https://github.com/symfony/var-dumper/tree/v4.4.36" }, "funding": [ { @@ -3168,20 +3177,20 @@ "type": "tidelift" } ], - "time": "2021-11-12T10:50:54+00:00" + "time": "2021-12-29T09:28:53+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.34", + "version": "v4.4.36", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "2c309e258adeb9970229042be39b360d34986fad" + "reference": "a19f7c44ba665fa9d9d415cc4493361381b93f9b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/2c309e258adeb9970229042be39b360d34986fad", - "reference": "2c309e258adeb9970229042be39b360d34986fad", + "url": "https://api.github.com/repos/symfony/yaml/zipball/a19f7c44ba665fa9d9d415cc4493361381b93f9b", + "reference": "a19f7c44ba665fa9d9d415cc4493361381b93f9b", "shasum": "" }, "require": { @@ -3223,7 +3232,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.34" + "source": "https://github.com/symfony/yaml/tree/v4.4.36" }, "funding": [ { @@ -3239,7 +3248,7 @@ "type": "tidelift" } ], - "time": "2021-11-18T18:49:23+00:00" + "time": "2021-11-25T16:40:00+00:00" }, { "name": "twig/twig", @@ -3442,23 +3451,23 @@ }, { "name": "codeception/codeception", - "version": "4.1.23", + "version": "4.1.28", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "27d18cd5d5a1d77d3f1b01ea776238676faf5dcc" + "reference": "e9bc22a3819f9d356068c0e372193ebcc9b06014" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/27d18cd5d5a1d77d3f1b01ea776238676faf5dcc", - "reference": "27d18cd5d5a1d77d3f1b01ea776238676faf5dcc", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/e9bc22a3819f9d356068c0e372193ebcc9b06014", + "reference": "e9bc22a3819f9d356068c0e372193ebcc9b06014", "shasum": "" }, "require": { "behat/gherkin": "^4.4.0", - "codeception/lib-asserts": "^1.0", + "codeception/lib-asserts": "^1.0 | 2.0.*@dev", "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.1.1 | ^9.0", - "codeception/stub": "^2.0 | ^3.0", + "codeception/stub": "^2.0 | ^3.0 | ^4.0", "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", @@ -3471,11 +3480,11 @@ "symfony/yaml": ">=2.7 <6.0" }, "require-dev": { - "codeception/module-asserts": "1.*@dev", - "codeception/module-cli": "1.*@dev", - "codeception/module-db": "1.*@dev", - "codeception/module-filesystem": "1.*@dev", - "codeception/module-phpbrowser": "1.*@dev", + "codeception/module-asserts": "^1.0 | 2.0.*@dev", + "codeception/module-cli": "^1.0 | 2.0.*@dev", + "codeception/module-db": "^1.0 | 2.0.*@dev", + "codeception/module-filesystem": "^1.0 | 2.0.*@dev", + "codeception/module-phpbrowser": "^1.0 | 2.0.*@dev", "codeception/specify": "~0.3", "codeception/util-universalframework": "*@dev", "monolog/monolog": "~1.8", @@ -3528,7 +3537,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/4.1.23" + "source": "https://github.com/Codeception/Codeception/tree/4.1.28" }, "funding": [ { @@ -3536,7 +3545,7 @@ "type": "open_collective" } ], - "time": "2021-12-11T18:05:26+00:00" + "time": "2022-01-05T16:41:25+00:00" }, { "name": "codeception/lib-asserts", @@ -4198,9 +4207,6 @@ "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" - }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", @@ -4518,16 +4524,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.5.1", + "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae" + "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae", - "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", + "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", "shasum": "" }, "require": { @@ -4562,9 +4568,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.1" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0" }, - "time": "2021-10-02T14:08:47+00:00" + "time": "2022-01-04T19:58:01+00:00" }, { "name": "phpspec/prophecy", @@ -4635,16 +4641,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.2.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "cbe085f9fdead5b6d62e4c022ca52dc9427a10ee" + "reference": "72b04d97b5e6e60a081f17c416fef35bd521120b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/cbe085f9fdead5b6d62e4c022ca52dc9427a10ee", - "reference": "cbe085f9fdead5b6d62e4c022ca52dc9427a10ee", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/72b04d97b5e6e60a081f17c416fef35bd521120b", + "reference": "72b04d97b5e6e60a081f17c416fef35bd521120b", "shasum": "" }, "require": { @@ -4660,7 +4666,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.4-dev" } }, "autoload": { @@ -4675,7 +4681,7 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.2.0" + "source": "https://github.com/phpstan/phpstan/tree/1.4.0" }, "funding": [ { @@ -4695,7 +4701,7 @@ "type": "tidelift" } ], - "time": "2021-11-18T14:09:01+00:00" + "time": "2022-01-14T15:58:47+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -5067,16 +5073,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.10", + "version": "9.5.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a" + "reference": "2406855036db1102126125537adb1406f7242fdd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c814a05837f2edb0d1471d6e3f4ab3501ca3899a", - "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2406855036db1102126125537adb1406f7242fdd", + "reference": "2406855036db1102126125537adb1406f7242fdd", "shasum": "" }, "require": { @@ -5154,11 +5160,11 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.10" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.11" }, "funding": [ { - "url": "https://phpunit.de/donate.html", + "url": "https://phpunit.de/sponsors.html", "type": "custom" }, { @@ -5166,7 +5172,7 @@ "type": "github" } ], - "time": "2021-09-25T07:38:51+00:00" + "time": "2021-12-25T07:07:57+00:00" }, { "name": "psr/http-client", @@ -6186,16 +6192,16 @@ }, { "name": "symfony/browser-kit", - "version": "v5.4.0", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "d250db364a35ba5d60626b2a6f10f2eaf2073bde" + "reference": "1fb93b0aab42392aa0a742db205173b49afaf80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/d250db364a35ba5d60626b2a6f10f2eaf2073bde", - "reference": "d250db364a35ba5d60626b2a6f10f2eaf2073bde", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/1fb93b0aab42392aa0a742db205173b49afaf80f", + "reference": "1fb93b0aab42392aa0a742db205173b49afaf80f", "shasum": "" }, "require": { @@ -6238,7 +6244,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.4.0" + "source": "https://github.com/symfony/browser-kit/tree/v5.4.2" }, "funding": [ { @@ -6254,20 +6260,20 @@ "type": "tidelift" } ], - "time": "2021-10-26T22:29:18+00:00" + "time": "2021-12-16T21:58:21+00:00" }, { "name": "symfony/css-selector", - "version": "v5.4.0", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "44b933f98bb4b5220d10bed9ce5662f8c2d13dcc" + "reference": "cfcbee910e159df402603502fe387e8b677c22fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/44b933f98bb4b5220d10bed9ce5662f8c2d13dcc", - "reference": "44b933f98bb4b5220d10bed9ce5662f8c2d13dcc", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/cfcbee910e159df402603502fe387e8b677c22fd", + "reference": "cfcbee910e159df402603502fe387e8b677c22fd", "shasum": "" }, "require": { @@ -6304,7 +6310,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.4.0" + "source": "https://github.com/symfony/css-selector/tree/v5.4.2" }, "funding": [ { @@ -6320,7 +6326,7 @@ "type": "tidelift" } ], - "time": "2021-09-09T08:06:01+00:00" + "time": "2021-12-16T21:58:21+00:00" }, { "name": "symfony/deprecation-contracts", @@ -6391,16 +6397,16 @@ }, { "name": "symfony/dom-crawler", - "version": "v5.4.0", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "5b06626e940a3ad54e573511d64d4e00dc8d0fd8" + "reference": "bb3bc3699779fc6d9646270789026a7e2cec7ec7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/5b06626e940a3ad54e573511d64d4e00dc8d0fd8", - "reference": "5b06626e940a3ad54e573511d64d4e00dc8d0fd8", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/bb3bc3699779fc6d9646270789026a7e2cec7ec7", + "reference": "bb3bc3699779fc6d9646270789026a7e2cec7ec7", "shasum": "" }, "require": { @@ -6446,7 +6452,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v5.4.0" + "source": "https://github.com/symfony/dom-crawler/tree/v5.4.2" }, "funding": [ { @@ -6462,20 +6468,20 @@ "type": "tidelift" } ], - "time": "2021-11-23T10:19:22+00:00" + "time": "2021-12-28T17:15:56+00:00" }, { "name": "symfony/finder", - "version": "v5.4.0", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "d2f29dac98e96a98be467627bd49c2efb1bc2590" + "reference": "e77046c252be48c48a40816187ed527703c8f76c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/d2f29dac98e96a98be467627bd49c2efb1bc2590", - "reference": "d2f29dac98e96a98be467627bd49c2efb1bc2590", + "url": "https://api.github.com/repos/symfony/finder/zipball/e77046c252be48c48a40816187ed527703c8f76c", + "reference": "e77046c252be48c48a40816187ed527703c8f76c", "shasum": "" }, "require": { @@ -6509,7 +6515,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.0" + "source": "https://github.com/symfony/finder/tree/v5.4.2" }, "funding": [ { @@ -6525,7 +6531,7 @@ "type": "tidelift" } ], - "time": "2021-11-28T15:25:38+00:00" + "time": "2021-12-15T11:06:13+00:00" }, { "name": "theseer/tokenizer", @@ -6654,5 +6660,5 @@ "platform-overrides": { "php": "7.3.6" }, - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.2.0" } diff --git a/system/src/Grav/Common/Assets/BaseAsset.php b/system/src/Grav/Common/Assets/BaseAsset.php index 4f74f55f9..d062d759b 100644 --- a/system/src/Grav/Common/Assets/BaseAsset.php +++ b/system/src/Grav/Common/Assets/BaseAsset.php @@ -267,4 +267,17 @@ abstract class BaseAsset extends PropertyObject { return ''; } + + /** + * Finds relative JS urls() and rewrites the URL with an absolute one + * + * @param string $file the css source file + * @param string $dir local relative path to the css file + * @param bool $local is this a local or remote asset + * @return string + */ + protected function jsRewrite($file, $dir, $local) + { + return ''; + } } diff --git a/system/src/Grav/Common/Assets/Pipeline.php b/system/src/Grav/Common/Assets/Pipeline.php index 58ef7d1d0..0010d7bd4 100644 --- a/system/src/Grav/Common/Assets/Pipeline.php +++ b/system/src/Grav/Common/Assets/Pipeline.php @@ -279,11 +279,11 @@ class Pipeline extends PropertyObject return $file; } - /** + /** * Finds relative JS urls() and rewrites the URL with an absolute one * * @param string $file the css source file - * @param string $dir , $local relative path to the css file + * @param string $dir local relative path to the css file * @param bool $local is this a local or remote asset * @return string */ diff --git a/tests/phpstan/phpstan.neon b/tests/phpstan/phpstan.neon index ef7a598de..7d5d7cb00 100644 --- a/tests/phpstan/phpstan.neon +++ b/tests/phpstan/phpstan.neon @@ -130,6 +130,9 @@ parameters: - message: '#Call to deprecated method getLegacyFiles\(\)#' path: '*/system/src/Grav/Common/Session.php' + - + message: '#Call to deprecated method \w+\(\) of class Grav\\Common\\Flex\\Types\\Users\\UserObject#' + path: '*/system/src/Grav/Common/Flex/Types/Users/UserObject.php' - message: '#Call to deprecated method \w+\(\) of class Grav\\Framework\\Flex\\FlexObject#' path: '*/system/src/Grav/Framework/Flex/FlexObject.php' From 6f2fa9311afb9ecd34030dec2aff7b39e9e7e735 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Tue, 18 Jan 2022 12:34:52 +0200 Subject: [PATCH 77/98] Fixed XSS check not detecting escaped `:` --- CHANGELOG.md | 2 ++ composer.lock | 12 ++++++------ system/src/Grav/Common/Security.php | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f6ef24d5..9ed78b296 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ * Added twig tag for links: `{% link icon 'theme://images/favicon.png' priority: 20 with { type: 'image/png' } %}` * Added `HtmlBlock` support for `{% style %}`, `{% script %}` and `{% link %}` tags * Support for page-level `redirect_default_route` frontmatter header override +3. [](#bugfix) + * Fixed XSS check not detecting escaped `:` # v1.7.27.1 ## 01/12/2022 diff --git a/composer.lock b/composer.lock index a3dbeb476..1ac8be0b7 100644 --- a/composer.lock +++ b/composer.lock @@ -4641,16 +4641,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "72b04d97b5e6e60a081f17c416fef35bd521120b" + "reference": "5bd02c86beb4c024dd4662b6443f5d5332a0ae12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/72b04d97b5e6e60a081f17c416fef35bd521120b", - "reference": "72b04d97b5e6e60a081f17c416fef35bd521120b", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5bd02c86beb4c024dd4662b6443f5d5332a0ae12", + "reference": "5bd02c86beb4c024dd4662b6443f5d5332a0ae12", "shasum": "" }, "require": { @@ -4681,7 +4681,7 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.4.0" + "source": "https://github.com/phpstan/phpstan/tree/1.4.1" }, "funding": [ { @@ -4701,7 +4701,7 @@ "type": "tidelift" } ], - "time": "2022-01-14T15:58:47+00:00" + "time": "2022-01-17T16:35:17+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", diff --git a/system/src/Grav/Common/Security.php b/system/src/Grav/Common/Security.php index a3ca3bb62..2d67bda5a 100644 --- a/system/src/Grav/Common/Security.php +++ b/system/src/Grav/Common/Security.php @@ -214,7 +214,7 @@ class Security 'on_events' => '#(<[^>]+[[a-z\x00-\x20\"\'\/])([\s\/]on|\sxmlns)[a-z].*=>?#iUu', // Match javascript:, livescript:, vbscript:, mocha:, feed: and data: protocols - 'invalid_protocols' => '#(' . implode('|', array_map('preg_quote', $invalid_protocols, ['#'])) . '):\S.*?#iUu', + 'invalid_protocols' => '#(' . implode('|', array_map('preg_quote', $invalid_protocols, ['#'])) . ')(:|\&\#58)\S.*?#iUu', // Match -moz-bindings 'moz_binding' => '#-moz-binding[a-z\x00-\x20]*:#u', From d126d1b656663a95c00cf330440d3a28c25c3800 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Fri, 21 Jan 2022 11:32:29 +0200 Subject: [PATCH 78/98] Composer update --- composer.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/composer.lock b/composer.lock index 1ac8be0b7..7630b5260 100644 --- a/composer.lock +++ b/composer.lock @@ -4641,16 +4641,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.4.1", + "version": "1.4.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "5bd02c86beb4c024dd4662b6443f5d5332a0ae12" + "reference": "1dd8f3e40bf7aa30031a75c65cece99220a161b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5bd02c86beb4c024dd4662b6443f5d5332a0ae12", - "reference": "5bd02c86beb4c024dd4662b6443f5d5332a0ae12", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1dd8f3e40bf7aa30031a75c65cece99220a161b8", + "reference": "1dd8f3e40bf7aa30031a75c65cece99220a161b8", "shasum": "" }, "require": { @@ -4681,7 +4681,7 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.4.1" + "source": "https://github.com/phpstan/phpstan/tree/1.4.2" }, "funding": [ { @@ -4701,7 +4701,7 @@ "type": "tidelift" } ], - "time": "2022-01-17T16:35:17+00:00" + "time": "2022-01-18T16:09:11+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -5073,16 +5073,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.11", + "version": "9.5.12", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "2406855036db1102126125537adb1406f7242fdd" + "reference": "93d4bf4c37aec6384bb9e5d390d9049a463a7256" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2406855036db1102126125537adb1406f7242fdd", - "reference": "2406855036db1102126125537adb1406f7242fdd", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/93d4bf4c37aec6384bb9e5d390d9049a463a7256", + "reference": "93d4bf4c37aec6384bb9e5d390d9049a463a7256", "shasum": "" }, "require": { @@ -5160,7 +5160,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.11" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.12" }, "funding": [ { @@ -5172,7 +5172,7 @@ "type": "github" } ], - "time": "2021-12-25T07:07:57+00:00" + "time": "2022-01-21T05:54:47+00:00" }, { "name": "psr/http-client", From 9bb6f5366e12ce1e55f0ef040fca5f8a037f35e6 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Mon, 24 Jan 2022 11:40:25 -0700 Subject: [PATCH 79/98] prepare for release --- CHANGELOG.md | 2 +- system/defines.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ed78b296..0fac5c694 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ # v1.7.28 -## mm/dd/2022 +## 01/24/2022 1. [](#new) * Added links and modules support to `HtmlBlock` class diff --git a/system/defines.php b/system/defines.php index 089c40e94..704985499 100644 --- a/system/defines.php +++ b/system/defines.php @@ -9,7 +9,7 @@ // Some standard defines define('GRAV', true); -define('GRAV_VERSION', '1.7.27.1'); +define('GRAV_VERSION', '1.7.28'); define('GRAV_SCHEMA', '1.7.0_2020-11-20_1'); define('GRAV_TESTING', false); From c3c31880b08be35fb6bcbe3da9a14dfe66777e6a Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 26 Jan 2022 11:06:05 +0200 Subject: [PATCH 80/98] Added support for registering assets from `HtmlBlock` --- CHANGELOG.md | 6 + system/src/Grav/Common/Assets/BlockAssets.php | 207 ++++++++++++++++++ .../Grav/Common/Twig/Node/TwigNodeRender.php | 1 + .../Grav/Framework/ContentBlock/HtmlBlock.php | 15 +- 4 files changed, 226 insertions(+), 3 deletions(-) create mode 100644 system/src/Grav/Common/Assets/BlockAssets.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fac5c694..e6528b81d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# v1.7.29 +## mm/dd/2022 + +1. [](#new) + * Added support for registering assets from `HtmlBlock` + # v1.7.28 ## 01/24/2022 diff --git a/system/src/Grav/Common/Assets/BlockAssets.php b/system/src/Grav/Common/Assets/BlockAssets.php new file mode 100644 index 000000000..798bdd304 --- /dev/null +++ b/system/src/Grav/Common/Assets/BlockAssets.php @@ -0,0 +1,207 @@ +getAssets(); + foreach ($types as $type => $groups) { + switch ($type) { + case 'frameworks': + static::registerFrameworks($assets, $groups); + break; + case 'styles': + static::registerStyles($assets, $groups); + break; + case 'scripts': + static::registerScripts($assets, $groups); + break; + case 'links': + static::registerLinks($assets, $groups); + break; + case 'html': + static::registerHtml($assets, $groups); + break; + } + } + } + + /** + * @param Assets $assets + * @param array $groups + * @return void + */ + protected static function registerFrameworks(Assets $assets, array $list): void + { + if ($list) { + throw new \RuntimeException('Not Implemented'); + } + } + + /** + * @param Assets $assets + * @param array $groups + * @return void + */ + protected static function registerStyles(Assets $assets, array $groups): void + { + $grav = Grav::instance(); + + /** @var Config $config */ + $config = $grav['config']; + + foreach ($groups as $group => $styles) { + foreach ($styles as $style) { + switch ($style[':type']) { + case 'file': + $options = [ + 'priority' => $style[':priority'], + 'group' => $group, + 'type' => $style['type'], + 'media' => $style['media'] + ] + $style['element']; + + $assets->addCss(static::getRelativeUrl($style['href'], $config->get('system.assets.css_pipeline')), $options); + break; + case 'inline': + $options = [ + 'priority' => $style[':priority'], + 'group' => $group, + 'type' => $style['type'], + ] + $style['element']; + + $assets->addInlineCss($style['content'], $options); + break; + } + } + } + } + + /** + * @param Assets $assets + * @param array $groups + * @return void + */ + protected static function registerScripts(Assets $assets, array $groups): void + { + $grav = Grav::instance(); + + /** @var Config $config */ + $config = $grav['config']; + + foreach ($groups as $group => $scripts) { + $group = $group === 'footer' ? 'bottom' : $group; + + foreach ($scripts as $script) { + switch ($script[':type']) { + case 'file': + $options = [ + 'group' => $group, + 'priority' => $script[':priority'], + 'src' => $script['src'], + 'type' => $script['type'], + 'loading' => $script['loading'], + 'defer' => $script['defer'], + 'async' => $script['async'], + 'handle' => $script['handle'] + ] + $script['element']; + + $assets->addJs(static::getRelativeUrl($script['src'], $config->get('system.assets.js_pipeline')), $options); + break; + case 'inline': + $options = [ + 'priority' => $script[':priority'], + 'group' => $group, + 'type' => $script['type'], + 'loading' => $script['loading'] + ] + $script['element']; + + $assets->addInlineJs($script['content'], $options); + break; + } + } + } + } + + /** + * @param Assets $assets + * @param array $groups + * @return void + */ + protected static function registerLinks(Assets $assets, array $groups): void + { + foreach ($groups as $group => $links) { + foreach ($links as $link) { + $href = $link['href']; + $options = [ + 'group' => $group, + 'priority' => $link[':priority'], + 'rel' => $link['rel'], + ] + $link['element']; + + $assets->addLink($href, $options); + } + } + } + + /** + * @param Assets $assets + * @param array $groups + * @return void + */ + protected static function registerHtml(Assets $assets, array $groups): void + { + if ($groups) { + throw new \RuntimeException('Not Implemented'); + } + } + + /** + * @param string $url + * @param bool $pipeline + * @return string + */ + protected static function getRelativeUrl($url, $pipeline) + { + $grav = Grav::instance(); + + $base = rtrim($grav['base_url'], '/') ?: '/'; + + if (strpos($url, $base) === 0) { + if ($pipeline) { + // Remove file timestamp if CSS pipeline has been enabled. + $url = preg_replace('|[?#].*|', '', $url); + } + + return substr($url, strlen($base) - 1); + } + return $url; + } +} diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeRender.php b/system/src/Grav/Common/Twig/Node/TwigNodeRender.php index 1aeb616b1..dbce3c66f 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeRender.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeRender.php @@ -75,6 +75,7 @@ class TwigNodeRender extends Node implements NodeCaptureInterface ->outdent() ->write('} else {' . PHP_EOL) ->indent() + ->write('\Grav\Common\Assets\BlockAssets::registerAssets($html);' . PHP_EOL) ->write('echo (string)$html;' . PHP_EOL) ->outdent() ->write('}' . PHP_EOL) diff --git a/system/src/Grav/Framework/ContentBlock/HtmlBlock.php b/system/src/Grav/Framework/ContentBlock/HtmlBlock.php index 71cd9367f..69d417ca0 100644 --- a/system/src/Grav/Framework/ContentBlock/HtmlBlock.php +++ b/system/src/Grav/Framework/ContentBlock/HtmlBlock.php @@ -215,11 +215,14 @@ class HtmlBlock extends ContentBlock implements HtmlBlockInterface $content = (string) $element['content']; $type = !empty($element['type']) ? (string) $element['type'] : 'text/css'; + unset($element['content'], $element['type']); + $this->styles[$location][md5($content) . sha1($content)] = [ ':type' => 'inline', ':priority' => (int) $priority, 'content' => $content, - 'type' => $type + 'type' => $type, + 'element' => $element ]; return true; @@ -250,6 +253,8 @@ class HtmlBlock extends ContentBlock implements HtmlBlockInterface $async = !empty($element['async']); $handle = !empty($element['handle']) ? (string) $element['handle'] : ''; + unset($element['src'], $element['type'], $element['loading'], $element['defer'], $element['async'], $element['handle']); + $this->scripts[$location][md5($src) . sha1($src)] = [ ':type' => 'file', ':priority' => (int) $priority, @@ -258,7 +263,8 @@ class HtmlBlock extends ContentBlock implements HtmlBlockInterface 'loading' => $loading, 'defer' => $defer, 'async' => $async, - 'handle' => $handle + 'handle' => $handle, + 'element' => $element ]; return true; @@ -286,12 +292,15 @@ class HtmlBlock extends ContentBlock implements HtmlBlockInterface $type = !empty($element['type']) ? (string) $element['type'] : 'text/javascript'; $loading = !empty($element['loading']) ? (string) $element['loading'] : null; + unset($element['content'], $element['type'], $element['loading']); + $this->scripts[$location][md5($content) . sha1($content)] = [ ':type' => 'inline', ':priority' => (int) $priority, 'content' => $content, 'type' => $type, - 'loading' => $loading + 'loading' => $loading, + 'element' => $element ]; return true; From 3b89377570a3b6edb57f1e69b81ca0b676f8e467 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 26 Jan 2022 13:16:06 +0200 Subject: [PATCH 81/98] Improved `Filesystem::basename()` and `Filesystem::pathinfo()` to be UTF-8 safe --- CHANGELOG.md | 2 ++ .../Grav/Framework/Filesystem/Filesystem.php | 20 +++++++++++++++---- .../Interfaces/FilesystemInterface.php | 6 +++--- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e6528b81d..d63cb2d2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ 1. [](#new) * Added support for registering assets from `HtmlBlock` +2. [](#improved) + * Improved `Filesystem::basename()` and `Filesystem::pathinfo()` to be UTF-8 safe # v1.7.28 ## 01/24/2022 diff --git a/system/src/Grav/Framework/Filesystem/Filesystem.php b/system/src/Grav/Framework/Filesystem/Filesystem.php index 5000b6996..ddbbab04d 100644 --- a/system/src/Grav/Framework/Filesystem/Filesystem.php +++ b/system/src/Grav/Framework/Filesystem/Filesystem.php @@ -15,6 +15,7 @@ use Grav\Framework\Filesystem\Interfaces\FilesystemInterface; use RuntimeException; use function count; use function dirname; +use function is_array; use function pathinfo; /** @@ -150,7 +151,10 @@ class Filesystem implements FilesystemInterface */ public function basename(string $path, ?string $suffix = null): string { - return $suffix ? basename($path, $suffix) : basename($path); + // Escape path. + $path = str_replace(['%2F', '%5C'], '/', rawurlencode($path)); + + return rawurldecode($suffix ? basename($path, $suffix) : basename($path)); } /** @@ -231,11 +235,19 @@ class Filesystem implements FilesystemInterface */ protected function pathinfoInternal(?string $scheme, string $path, ?int $options = null) { - if ($options) { - return pathinfo($path, $options); + $path = str_replace(['%2F', '%5C'], ['/', '\\'], rawurlencode($path)); + + if (null === $options) { + $info = pathinfo($path); + } else { + $info = pathinfo($path, $options); } - $info = pathinfo($path); + if (!is_array($info)) { + return rawurldecode($info); + } + + $info = array_map('rawurldecode', $info); if (null !== $scheme) { $info['scheme'] = $scheme; diff --git a/system/src/Grav/Framework/Filesystem/Interfaces/FilesystemInterface.php b/system/src/Grav/Framework/Filesystem/Interfaces/FilesystemInterface.php index fa1000941..4006c8f77 100644 --- a/system/src/Grav/Framework/Filesystem/Interfaces/FilesystemInterface.php +++ b/system/src/Grav/Framework/Filesystem/Interfaces/FilesystemInterface.php @@ -47,7 +47,7 @@ interface FilesystemInterface public function normalize(string $path): string; /** - * Returns filename component of path. + * Unicode-safe and stream-safe `\basename()` replacement. * * @param string $path A filename or path, does not need to exist as a file. * @param string|null $suffix If the filename ends in suffix this will also be cut off. @@ -57,7 +57,7 @@ interface FilesystemInterface public function basename(string $path, ?string $suffix = null): string; /** - * Stream-safe `\dirname()` replacement. + * Unicode-safe and stream-safe `\dirname()` replacement. * * @see http://php.net/manual/en/function.dirname.php * @@ -71,7 +71,7 @@ interface FilesystemInterface public function dirname(string $path, int $levels = 1): string; /** - * Stream-safe `\pathinfo()` replacement. + * Unicode-safe and stream-safe `\pathinfo()` replacement. * * @see http://php.net/manual/en/function.pathinfo.php * From 84a1ab6ca56be494b31f973227053f631803df93 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 26 Jan 2022 13:54:33 +0200 Subject: [PATCH 82/98] Added unicode-safe `Utils::basename()` and `Utils::pathinfo()` methods and use them everywhere --- CHANGELOG.md | 4 +- system/src/Grav/Common/Assets.php | 2 +- system/src/Grav/Common/Backup/Backups.php | 2 +- system/src/Grav/Common/Cache.php | 2 +- system/src/Grav/Common/Config/Setup.php | 2 +- system/src/Grav/Common/File/CompiledFile.php | 3 +- .../Flex/Types/Pages/PageCollection.php | 2 +- .../Common/Flex/Types/Pages/PageIndex.php | 4 +- .../Flex/Types/Pages/Storage/PageStorage.php | 8 +-- .../Common/Flex/Types/Users/UserObject.php | 5 +- system/src/Grav/Common/Form/FormFlash.php | 5 +- system/src/Grav/Common/GPM/GPM.php | 8 +-- system/src/Grav/Common/GPM/Installer.php | 3 +- system/src/Grav/Common/Grav.php | 2 +- system/src/Grav/Common/Helpers/YamlLinter.php | 3 +- .../Common/Media/Traits/MediaObjectTrait.php | 2 +- .../Common/Media/Traits/MediaUploadTrait.php | 4 +- .../Grav/Common/Page/Markdown/Excerpts.php | 2 +- .../Grav/Common/Page/Medium/GlobalMedia.php | 3 +- .../Grav/Common/Page/Medium/MediumFactory.php | 5 +- system/src/Grav/Common/Page/Page.php | 10 ++-- system/src/Grav/Common/Page/Pages.php | 2 +- system/src/Grav/Common/Page/Types.php | 3 +- .../Common/Processors/RequestProcessor.php | 3 +- system/src/Grav/Common/Security.php | 2 +- .../Twig/Extension/FilesystemExtension.php | 6 +-- system/src/Grav/Common/Uri.php | 10 ++-- system/src/Grav/Common/User/DataUser/User.php | 3 +- .../Common/User/DataUser/UserCollection.php | 2 +- system/src/Grav/Common/Utils.php | 50 +++++++++++++++++-- .../src/Grav/Console/Cli/SandboxCommand.php | 3 +- .../src/Grav/Console/Gpm/InstallCommand.php | 2 +- .../Traits/ControllerResponseTrait.php | 4 +- .../Flex/Pages/Traits/PageLegacyTrait.php | 6 +-- .../Flex/Pages/Traits/PageRoutableTrait.php | 4 +- .../Framework/Flex/Storage/FileStorage.php | 3 +- .../Framework/Flex/Storage/FolderStorage.php | 4 +- .../Framework/Flex/Storage/SimpleStorage.php | 7 +-- .../Framework/Flex/Traits/FlexMediaTrait.php | 4 +- system/src/Grav/Framework/Form/FormFlash.php | 2 +- system/src/Grav/Installer/VersionUpdate.php | 3 +- system/src/Grav/Installer/YamlUpdater.php | 3 +- 42 files changed, 130 insertions(+), 77 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d63cb2d2a..11c8b497e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,8 +3,10 @@ 1. [](#new) * Added support for registering assets from `HtmlBlock` + * Added unicode-safe `Utils::basename()` and `Utils::pathinfo()` methods 2. [](#improved) - * Improved `Filesystem::basename()` and `Filesystem::pathinfo()` to be UTF-8 safe + * Improved `Filesystem::basename()` and `Filesystem::pathinfo()` to be unicode-safe + * Made path handling unicode-safe, use new `Utils::basename()` and `Utils::pathinfo()` everywhere # v1.7.28 ## 01/24/2022 diff --git a/system/src/Grav/Common/Assets.php b/system/src/Grav/Common/Assets.php index 953bbc88e..134c62fba 100644 --- a/system/src/Grav/Common/Assets.php +++ b/system/src/Grav/Common/Assets.php @@ -198,7 +198,7 @@ class Assets extends PropertyObject call_user_func_array([$this, 'add'], $args); } else { // Get extension - $extension = pathinfo(parse_url($asset, PHP_URL_PATH), PATHINFO_EXTENSION); + $extension = Utils::pathinfo(parse_url($asset, PHP_URL_PATH), PATHINFO_EXTENSION); // JavaScript or CSS if ($extension !== '') { diff --git a/system/src/Grav/Common/Backup/Backups.php b/system/src/Grav/Common/Backup/Backups.php index 0465fe705..9c23908c4 100644 --- a/system/src/Grav/Common/Backup/Backups.php +++ b/system/src/Grav/Common/Backup/Backups.php @@ -105,7 +105,7 @@ class Backups public function getBackupDownloadUrl($backup, $base_url) { $param_sep = $param_sep = Grav::instance()['config']->get('system.param_sep', ':'); - $download = urlencode(base64_encode(basename($backup))); + $download = urlencode(base64_encode(Utils::basename($backup))); $url = rtrim(Grav::instance()['uri']->rootUrl(true), '/') . '/' . trim( $base_url, '/' diff --git a/system/src/Grav/Common/Cache.php b/system/src/Grav/Common/Cache.php index c7b550cb9..ed40a085f 100644 --- a/system/src/Grav/Common/Cache.php +++ b/system/src/Grav/Common/Cache.php @@ -177,7 +177,7 @@ class Cache extends Getters public function purgeOldCache() { $cache_dir = dirname($this->cache_dir); - $current = basename($this->cache_dir); + $current = Utils::basename($this->cache_dir); $count = 0; foreach (new DirectoryIterator($cache_dir) as $file) { diff --git a/system/src/Grav/Common/Config/Setup.php b/system/src/Grav/Common/Config/Setup.php index 8ffd63762..f8ce94394 100644 --- a/system/src/Grav/Common/Config/Setup.php +++ b/system/src/Grav/Common/Config/Setup.php @@ -401,7 +401,7 @@ class Setup extends Data } // Create security.yaml salt if it doesn't exist into existing configuration environment if possible. - $securityFile = basename(static::$securityFile); + $securityFile = Utils::basename(static::$securityFile); $securityFolder = substr(static::$securityFile, 0, -\strlen($securityFile)); $securityFolder = $locator->findResource($securityFolder, true) ?: $locator->findResource($securityFolder, true, true); $filename = "{$securityFolder}/{$securityFile}"; diff --git a/system/src/Grav/Common/File/CompiledFile.php b/system/src/Grav/Common/File/CompiledFile.php index e55a4a5d8..222842278 100644 --- a/system/src/Grav/Common/File/CompiledFile.php +++ b/system/src/Grav/Common/File/CompiledFile.php @@ -10,6 +10,7 @@ namespace Grav\Common\File; use Exception; +use Grav\Common\Utils; use RocketTheme\Toolbox\File\PhpFile; use RuntimeException; use Throwable; @@ -88,7 +89,7 @@ trait CompiledFile $this->content = $cache['data']; } } catch (Exception $e) { - throw new RuntimeException(sprintf('Failed to read %s: %s', basename($this->filename), $e->getMessage()), 500, $e); + throw new RuntimeException(sprintf('Failed to read %s: %s', Utils::basename($this->filename), $e->getMessage()), 500, $e); } return parent::content($var); diff --git a/system/src/Grav/Common/Flex/Types/Pages/PageCollection.php b/system/src/Grav/Common/Flex/Types/Pages/PageCollection.php index c23a6e954..b6c5230d8 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/PageCollection.php +++ b/system/src/Grav/Common/Flex/Types/Pages/PageCollection.php @@ -335,7 +335,7 @@ class PageCollection extends FlexPageCollection implements PageCollectionInterfa $list[$key] = $child->slug(); break; case 'basename': - $list[$key] = basename($key); + $list[$key] = Utils::basename($key); break; case 'folder': $list[$key] = $child->folder(); diff --git a/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php b/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php index 25440a96a..c0ca5c405 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php +++ b/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php @@ -637,7 +637,7 @@ class PageIndex extends FlexPageIndex implements PageCollectionInterface $payload = [ 'name' => $child->menu(), 'value' => $child->rawRoute(), - 'item-key' => basename($child->rawRoute() ?? ''), + 'item-key' => Utils::basename($child->rawRoute() ?? ''), 'filename' => $child->folder(), 'extension' => $child->extension(), 'type' => 'dir', @@ -692,7 +692,7 @@ class PageIndex extends FlexPageIndex implements PageCollectionInterface $route = $child->getRoute(); $route = $route ? ($route->toString(false) ?: '/') : ''; $payload = [ - 'item-key' => htmlspecialchars(basename($child->rawRoute() ?? $child->getKey())), + 'item-key' => htmlspecialchars(Utils::basename($child->rawRoute() ?? $child->getKey())), 'icon' => $icon, 'title' => htmlspecialchars($child->menu()), 'route' => [ 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 613b1ec73..f590e3661 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/Storage/PageStorage.php +++ b/system/src/Grav/Common/Flex/Types/Pages/Storage/PageStorage.php @@ -16,13 +16,13 @@ use Grav\Common\Debugger; use Grav\Common\Flex\Types\Pages\PageIndex; use Grav\Common\Grav; use Grav\Common\Language\Language; +use Grav\Common\Utils; use Grav\Framework\Filesystem\Filesystem; use Grav\Framework\Flex\Storage\FolderStorage; use RocketTheme\Toolbox\File\MarkdownFile; use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator; use RuntimeException; use SplFileInfo; -use function assert; use function in_array; use function is_string; @@ -277,7 +277,7 @@ class PageStorage extends FolderStorage } else { $params = $template = $language = ''; } - $objectKey = basename($key); + $objectKey = Utils::basename($key); if (preg_match('|^(\d+)\.(.+)$|', $objectKey, $matches)) { [, $order, $folder] = $matches; } else { @@ -584,7 +584,7 @@ class PageStorage extends FolderStorage $mark = $matches[2] ?? ''; $ext = $matches[1] ?? ''; $ext .= $this->dataExt; - $markdown[$mark][basename($k, $ext)] = $timestamp; + $markdown[$mark][Utils::basename($k, $ext)] = $timestamp; } $modified = max($modified, $timestamp); @@ -675,7 +675,7 @@ class PageStorage extends FolderStorage /** @phpstan-var array{'storage_key': string, 'storage_timestamp': int, 'children': array} $parent */ $parent = &$list[$parentKey]; - $basename = basename($storage_key); + $basename = Utils::basename($storage_key); if (isset($parent['children'][$basename])) { $timestamp = $meta['storage_timestamp']; diff --git a/system/src/Grav/Common/Flex/Types/Users/UserObject.php b/system/src/Grav/Common/Flex/Types/Users/UserObject.php index d78687137..d9217917d 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserObject.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserObject.php @@ -30,6 +30,7 @@ use Grav\Common\Flex\Types\UserGroups\UserGroupCollection; use Grav\Common\Flex\Types\UserGroups\UserGroupIndex; use Grav\Common\User\Interfaces\UserInterface; use Grav\Common\User\Traits\UserTrait; +use Grav\Common\Utils; use Grav\Framework\File\Formatter\JsonFormatter; use Grav\Framework\File\Formatter\YamlFormatter; use Grav\Framework\Filesystem\Filesystem; @@ -645,7 +646,7 @@ class UserObject extends FlexObject implements UserInterface, Countable $medium = MediumFactory::fromFile($path); if ($medium) { $media->add($path, $medium); - $name = basename($path); + $name = Utils::basename($path); if ($name !== $path) { $media->add($name, $medium); } @@ -814,7 +815,7 @@ class UserObject extends FlexObject implements UserInterface, Countable } // Calculate path without the retina scaling factor. - $realpath = $filesystem->pathname($filepath) . str_replace(['@3x', '@2x'], '', basename($filepath)); + $realpath = $filesystem->pathname($filepath) . str_replace(['@3x', '@2x'], '', Utils::basename($filepath)); $list[$filename] = [$file, $settings]; diff --git a/system/src/Grav/Common/Form/FormFlash.php b/system/src/Grav/Common/Form/FormFlash.php index b2c619e1c..7acaf7fdc 100644 --- a/system/src/Grav/Common/Form/FormFlash.php +++ b/system/src/Grav/Common/Form/FormFlash.php @@ -10,6 +10,7 @@ namespace Grav\Common\Form; use Grav\Common\Filesystem\Folder; +use Grav\Common\Utils; use Grav\Framework\Form\FormFlash as FrameworkFormFlash; use function is_array; @@ -58,7 +59,7 @@ class FormFlash extends FrameworkFormFlash Folder::create($tmp_dir); $tmp_file = $upload['file']['tmp_name']; - $basename = basename($tmp_file); + $basename = Utils::basename($tmp_file); if (!move_uploaded_file($tmp_file, $tmp_dir . '/' . $basename)) { return false; @@ -90,7 +91,7 @@ class FormFlash extends FrameworkFormFlash Folder::create($tmp_dir); $tmp_file = $upload['file']['tmp_name']; - $basename = basename($tmp_file); + $basename = Utils::basename($tmp_file); if (!move_uploaded_file($tmp_file, $tmp_dir . '/' . $basename)) { return false; diff --git a/system/src/Grav/Common/GPM/GPM.php b/system/src/Grav/Common/GPM/GPM.php index 2b18255fa..7031945b2 100644 --- a/system/src/Grav/Common/GPM/GPM.php +++ b/system/src/Grav/Common/GPM/GPM.php @@ -631,7 +631,7 @@ class GPM extends Iterator throw new \RuntimeException("Malformed GPM URL: {$package_file}"); } - $filename = basename($package['path'] ?? ''); + $filename = Utils::basename($package['path'] ?? ''); if (Grav::instance()['config']->get('system.gpm.official_gpm_only') && ($package['host'] ?? null) !== 'getgrav.org') { throw new RuntimeException('Only official GPM URLs are allowed. You can modify this behavior in the System configuration.'); @@ -660,7 +660,7 @@ class GPM extends Iterator $package_file = realpath($package_file); if ($package_file && file_exists($package_file)) { - $filename = basename($package_file); + $filename = Utils::basename($package_file); Folder::create($tmp); copy($package_file, $tmp . DS . $filename); return $tmp . DS . $filename; @@ -692,7 +692,7 @@ class GPM extends Iterator } // either theme or plugin - $name = basename($source); + $name = Utils::basename($source); if (Utils::contains($name, 'theme')) { return 'theme'; } @@ -730,7 +730,7 @@ class GPM extends Iterator $glob = glob($source . '*.yaml') ?: []; foreach ($glob as $filename) { - $name = strtolower(basename($filename, '.yaml')); + $name = strtolower(Utils::basename($filename, '.yaml')); if (in_array($name, $ignore_yaml_files)) { continue; } diff --git a/system/src/Grav/Common/GPM/Installer.php b/system/src/Grav/Common/GPM/Installer.php index 1eed5b4de..8a1a5303e 100644 --- a/system/src/Grav/Common/GPM/Installer.php +++ b/system/src/Grav/Common/GPM/Installer.php @@ -12,6 +12,7 @@ namespace Grav\Common\GPM; use DirectoryIterator; use Grav\Common\Filesystem\Folder; use Grav\Common\Grav; +use Grav\Common\Utils; use RuntimeException; use ZipArchive; use function count; @@ -192,7 +193,7 @@ class Installer $package_folder_name = $zip->getNameIndex(0); if ($package_folder_name === false) { - throw new \RuntimeException('Bad package file: ' . basename($zip_file)); + throw new \RuntimeException('Bad package file: ' . Utils::basename($zip_file)); } $package_folder_name = preg_replace('#\./$#', '', $package_folder_name); $zip->close(); diff --git a/system/src/Grav/Common/Grav.php b/system/src/Grav/Common/Grav.php index 5519175e2..18d490295 100644 --- a/system/src/Grav/Common/Grav.php +++ b/system/src/Grav/Common/Grav.php @@ -735,7 +735,7 @@ class Grav extends Container /** @var Config $config */ $config = $this['config']; - $path_parts = pathinfo($path); + $path_parts = Utils::pathinfo($path); /** @var Pages $pages */ $pages = $this['pages']; diff --git a/system/src/Grav/Common/Helpers/YamlLinter.php b/system/src/Grav/Common/Helpers/YamlLinter.php index 71f0e873c..b31180f0e 100644 --- a/system/src/Grav/Common/Helpers/YamlLinter.php +++ b/system/src/Grav/Common/Helpers/YamlLinter.php @@ -11,6 +11,7 @@ namespace Grav\Common\Helpers; use Exception; use Grav\Common\Grav; +use Grav\Common\Utils; use RecursiveDirectoryIterator; use RecursiveIteratorIterator; use RegexIterator; @@ -108,7 +109,7 @@ class YamlLinter */ protected static function extractYaml($path) { - $extension = pathinfo($path, PATHINFO_EXTENSION); + $extension = Utils::pathinfo($path, PATHINFO_EXTENSION); if ($extension === 'md') { $file = MarkdownFile::instance($path); $contents = $file->frontmatter(); diff --git a/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php b/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php index 0949f1d50..edabbdeb6 100644 --- a/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php +++ b/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php @@ -141,7 +141,7 @@ trait MediaObjectTrait { $alternatives = []; foreach ($this->alternatives + [$this->get('width', 0) => $this] as $size => $alternative) { - if ($withDerived || $alternative->filename === basename($alternative->filepath)) { + if ($withDerived || $alternative->filename === Utils::basename($alternative->filepath)) { $alternatives[$size] = $alternative; } } diff --git a/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php b/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php index 98885e06c..2bddf9752 100644 --- a/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php +++ b/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php @@ -132,9 +132,9 @@ trait MediaUploadTrait if ($folder === '.') { $folder = ''; } - $filename = basename($filename); + $filename = Utils::basename($filename); } - $extension = pathinfo($filename, PATHINFO_EXTENSION); + $extension = Utils::pathinfo($filename, PATHINFO_EXTENSION); // Decide which filename to use. if ($settings['random_name']) { diff --git a/system/src/Grav/Common/Page/Markdown/Excerpts.php b/system/src/Grav/Common/Page/Markdown/Excerpts.php index f500f4abe..17f9cbff5 100644 --- a/system/src/Grav/Common/Page/Markdown/Excerpts.php +++ b/system/src/Grav/Common/Page/Markdown/Excerpts.php @@ -206,7 +206,7 @@ class Excerpts && (empty($url_parts['host']) || $url_parts['host'] === $grav['uri']->host()); if ($local_file) { - $filename = basename($url_parts['path']); + $filename = Utils::basename($url_parts['path']); $folder = dirname($url_parts['path']); // Get the local path to page media if possible. diff --git a/system/src/Grav/Common/Page/Medium/GlobalMedia.php b/system/src/Grav/Common/Page/Medium/GlobalMedia.php index af8ee841e..20f63ad56 100644 --- a/system/src/Grav/Common/Page/Medium/GlobalMedia.php +++ b/system/src/Grav/Common/Page/Medium/GlobalMedia.php @@ -11,6 +11,7 @@ namespace Grav\Common\Page\Medium; use Grav\Common\Grav; use Grav\Common\Media\Interfaces\MediaObjectInterface; +use Grav\Common\Utils; use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator; use function dirname; @@ -89,7 +90,7 @@ class GlobalMedia extends AbstractMedia } $path = dirname($filename); - [$basename, $ext,, $extra] = $this->getFileParts(basename($filename)); + [$basename, $ext,, $extra] = $this->getFileParts(Utils::basename($filename)); $medium = MediumFactory::fromFile($filename); if (null === $medium) { diff --git a/system/src/Grav/Common/Page/Medium/MediumFactory.php b/system/src/Grav/Common/Page/Medium/MediumFactory.php index 6e9f820eb..620446b70 100644 --- a/system/src/Grav/Common/Page/Medium/MediumFactory.php +++ b/system/src/Grav/Common/Page/Medium/MediumFactory.php @@ -13,6 +13,7 @@ use Grav\Common\Grav; use Grav\Common\Data\Blueprint; use Grav\Common\Media\Interfaces\ImageMediaInterface; use Grav\Common\Media\Interfaces\MediaObjectInterface; +use Grav\Common\Utils; use Grav\Framework\Form\FormFlashFile; use Psr\Http\Message\UploadedFileInterface; use function dirname; @@ -37,7 +38,7 @@ class MediumFactory return null; } - $parts = pathinfo($file); + $parts = Utils::pathinfo($file); $path = $parts['dirname']; $filename = $parts['basename']; $ext = $parts['extension'] ?? ''; @@ -101,7 +102,7 @@ class MediumFactory return null; } - $parts = pathinfo($clientName); + $parts = Utils::pathinfo($clientName); $filename = $parts['basename']; $ext = $parts['extension'] ?? ''; $basename = $parts['filename']; diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index abda49bfe..25f8ff6b6 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -196,7 +196,7 @@ class Page implements PageInterface } // extract page language from page extension - $language = trim(basename($this->extension(), 'md'), '.') ?: null; + $language = trim(Utils::basename($this->extension(), 'md'), '.') ?: null; $this->language($language); $this->hide_home_route = $config->get('system.home.hide_in_urls', false); @@ -1465,7 +1465,7 @@ class Page implements PageInterface $this->extension = $var; } if (empty($this->extension)) { - $this->extension = '.' . pathinfo($this->name(), PATHINFO_EXTENSION); + $this->extension = '.' . Utils::pathinfo($this->name(), PATHINFO_EXTENSION); } return $this->extension; @@ -2109,9 +2109,9 @@ class Page implements PageInterface { if ($var !== null) { // Filename of the page. - $this->name = basename($var); + $this->name = Utils::basename($var); // Folder of the page. - $this->folder = basename(dirname($var)); + $this->folder = Utils::basename(dirname($var)); // Path to the page. $this->path = dirname($var, 2); } @@ -2150,7 +2150,7 @@ class Page implements PageInterface { if ($var !== null) { // Folder of the page. - $this->folder = basename($var); + $this->folder = Utils::basename($var); // Path to the page. $this->path = dirname($var); } diff --git a/system/src/Grav/Common/Page/Pages.php b/system/src/Grav/Common/Page/Pages.php index c4029fe9f..8ad2ccd8f 100644 --- a/system/src/Grav/Common/Page/Pages.php +++ b/system/src/Grav/Common/Page/Pages.php @@ -2065,7 +2065,7 @@ class Pages $list[$key] = $child->slug(); break; case 'basename': - $list[$key] = basename($key); + $list[$key] = Utils::basename($key); break; case 'folder': $list[$key] = $child->folder(); diff --git a/system/src/Grav/Common/Page/Types.php b/system/src/Grav/Common/Page/Types.php index 43fe0fb64..420c58860 100644 --- a/system/src/Grav/Common/Page/Types.php +++ b/system/src/Grav/Common/Page/Types.php @@ -12,6 +12,7 @@ namespace Grav\Common\Page; use Grav\Common\Data\Blueprint; use Grav\Common\Filesystem\Folder; use Grav\Common\Grav; +use Grav\Common\Utils; use InvalidArgumentException; use RocketTheme\Toolbox\ArrayTraits\ArrayAccess; use RocketTheme\Toolbox\ArrayTraits\Constructor; @@ -144,7 +145,7 @@ class Types implements \ArrayAccess, \Iterator, \Countable if (strpos($name, 'modular/') !== 0) { continue; } - $list[$name] = ucfirst(trim(str_replace('_', ' ', basename($name)))); + $list[$name] = ucfirst(trim(str_replace('_', ' ', Utils::basename($name)))); } ksort($list); diff --git a/system/src/Grav/Common/Processors/RequestProcessor.php b/system/src/Grav/Common/Processors/RequestProcessor.php index 358e81b42..bad410c11 100644 --- a/system/src/Grav/Common/Processors/RequestProcessor.php +++ b/system/src/Grav/Common/Processors/RequestProcessor.php @@ -11,6 +11,7 @@ namespace Grav\Common\Processors; use Grav\Common\Processors\Events\RequestHandlerEvent; use Grav\Common\Uri; +use Grav\Common\Utils; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -42,7 +43,7 @@ class RequestProcessor extends ProcessorBase } $uri = $request->getUri(); - $ext = mb_strtolower(pathinfo($uri->getPath(), PATHINFO_EXTENSION)); + $ext = mb_strtolower(Utils::pathinfo($uri->getPath(), PATHINFO_EXTENSION)); $request = $request ->withAttribute('grav', $this->container) diff --git a/system/src/Grav/Common/Security.php b/system/src/Grav/Common/Security.php index 2d67bda5a..017720ca8 100644 --- a/system/src/Grav/Common/Security.php +++ b/system/src/Grav/Common/Security.php @@ -61,7 +61,7 @@ class Security if ($clean_svg !== false ) { file_put_contents($file, $clean_svg); } else { - $quarantine_file = basename($file); + $quarantine_file = Utils::basename($file); $quarantine_dir = 'log://quarantine'; Folder::mkdir($quarantine_dir); file_put_contents("$quarantine_dir/$quarantine_file", $original_svg); diff --git a/system/src/Grav/Common/Twig/Extension/FilesystemExtension.php b/system/src/Grav/Common/Twig/Extension/FilesystemExtension.php index f60fa12c2..9b9085558 100644 --- a/system/src/Grav/Common/Twig/Extension/FilesystemExtension.php +++ b/system/src/Grav/Common/Twig/Extension/FilesystemExtension.php @@ -373,11 +373,7 @@ class FilesystemExtension extends AbstractExtension */ public function pathinfo($path, $flags = null) { - if (null !== $flags) { - return pathinfo($path, (int)$flags); - } - - return pathinfo($path); + return Utils::pathinfo($path, $flags); } /** diff --git a/system/src/Grav/Common/Uri.php b/system/src/Grav/Common/Uri.php index cd339d3d6..76d9a9926 100644 --- a/system/src/Grav/Common/Uri.php +++ b/system/src/Grav/Common/Uri.php @@ -217,7 +217,7 @@ class Uri $path = $bits['path'] ?? '/'; // remove the extension if there is one set - $parts = pathinfo($path); + $parts = Utils::pathinfo($path); // set the original basename $this->basename = $parts['basename']; @@ -854,7 +854,7 @@ class Uri } if ($full_path) { - $path_info = pathinfo($full_path); + $path_info = Utils::pathinfo($full_path); $page_path = $path_info['dirname']; $filename = ''; @@ -899,7 +899,7 @@ class Uri $routes = $pages->routes(); // if this is an image, get the proper path - $url_bits = pathinfo($url_path); + $url_bits = Utils::pathinfo($url_path); if (isset($url_bits['extension'])) { $target_path = $url_bits['dirname']; } else { @@ -1046,7 +1046,7 @@ class Uri $base_url = rtrim($base . $grav['pages']->base(), '/') . $language_append; // if absolute and starts with a base_url move on - if (pathinfo($markdown_url, PATHINFO_DIRNAME) === '.' && $page->url() === '/') { + if (Utils::pathinfo($markdown_url, PATHINFO_DIRNAME) === '.' && $page->url() === '/') { return '/' . $markdown_url; } // no path to convert @@ -1085,7 +1085,7 @@ class Uri return $normalized_url; } - $path_info = pathinfo($full_path); + $path_info = Utils::pathinfo($full_path); $page_path = $path_info['dirname']; $filename = ''; diff --git a/system/src/Grav/Common/User/DataUser/User.php b/system/src/Grav/Common/User/DataUser/User.php index b442cc3e5..71e7f9b35 100644 --- a/system/src/Grav/Common/User/DataUser/User.php +++ b/system/src/Grav/Common/User/DataUser/User.php @@ -21,6 +21,7 @@ use Grav\Common\Page\Medium\MediumFactory; use Grav\Common\User\Authentication; use Grav\Common\User\Interfaces\UserInterface; use Grav\Common\User\Traits\UserTrait; +use Grav\Common\Utils; use Grav\Framework\Flex\Flex; use function is_array; @@ -177,7 +178,7 @@ class User extends Data implements UserInterface if ($path && is_file($path)) { $medium = MediumFactory::fromFile($path); if ($medium) { - $media->add(basename($path), $medium); + $media->add(Utils::basename($path), $medium); } } diff --git a/system/src/Grav/Common/User/DataUser/UserCollection.php b/system/src/Grav/Common/User/DataUser/UserCollection.php index 9f35e37e6..d0ada09c9 100644 --- a/system/src/Grav/Common/User/DataUser/UserCollection.php +++ b/system/src/Grav/Common/User/DataUser/UserCollection.php @@ -114,7 +114,7 @@ class UserCollection implements UserCollectionInterface if (!$user->exists()) { foreach ($files as $file) { if (Utils::endsWith($file, YAML_EXT)) { - $find_user = $this->load(trim(pathinfo($file, PATHINFO_FILENAME))); + $find_user = $this->load(trim(Utils::pathinfo($file, PATHINFO_FILENAME))); foreach ($fields as $field) { if (isset($find_user[$field]) && $find_user[$field] === $query) { return $find_user; diff --git a/system/src/Grav/Common/Utils.php b/system/src/Grav/Common/Utils.php index 9d76e1dd6..64c81a927 100644 --- a/system/src/Grav/Common/Utils.php +++ b/system/src/Grav/Common/Utils.php @@ -662,7 +662,7 @@ abstract class Utils // fire download event Grav::instance()->fireEvent('onBeforeDownload', new Event(['file' => $file, 'options' => &$options])); - $file_parts = pathinfo($file); + $file_parts = static::pathinfo($file); $mimetype = $options['mime'] ?? static::getMimeByExtension($file_parts['extension']); $size = filesize($file); // File size @@ -926,7 +926,7 @@ abstract class Utils */ public static function getMimeByFilename($filename, $default = 'application/octet-stream') { - return static::getMimeByExtension(pathinfo($filename, PATHINFO_EXTENSION), $default); + return static::getMimeByExtension(static::pathinfo($filename, PATHINFO_EXTENSION), $default); } /** @@ -971,7 +971,7 @@ abstract class Utils public static function checkFilename($filename) { $dangerous_extensions = Grav::instance()['config']->get('security.uploads_dangerous_extensions', []); - $extension = pathinfo($filename, PATHINFO_EXTENSION); + $extension = static::pathinfo($filename, PATHINFO_EXTENSION); return !( // Empty filenames are not allowed. @@ -985,6 +985,46 @@ abstract class Utils ); } + /** + * Unicode-safe version of PHP’s pathinfo() function. + * + * @link https://www.php.net/manual/en/function.pathinfo.php + * + * @param string $path + * @param int|null $flags + * @return array|string + */ + public static function pathinfo(string $path, int $flags = null) + { + $path = str_replace(['%2F', '%5C'], ['/', '\\'], rawurlencode($path)); + + if (null === $flags) { + $info = pathinfo($path); + } else { + $info = pathinfo($path, $flags); + } + + if (is_array($info)) { + return array_map('rawurldecode', $info); + } + + return rawurldecode($info); + } + + /** + * Unicode-safe version of the PHP basename() function. + * + * @link https://www.php.net/manual/en/function.basename.php + * + * @param string $path + * @param string $suffix + * @return string + */ + public static function basename(string $path, string $suffix = ''): string + { + return rawurldecode(basename(str_replace(['%2F', '%5C'], '/', rawurlencode($path)), $suffix)); + } + /** * Normalize path by processing relative `.` and `..` syntax and merging path * @@ -1620,8 +1660,8 @@ abstract class Utils $route = '/' . $matches[2]; // Exclude filename from the page lookup. - if (pathinfo($route, PATHINFO_EXTENSION)) { - $basename = '/' . basename($route); + if (static::pathinfo($route, PATHINFO_EXTENSION)) { + $basename = '/' . static::basename($route); $route = \dirname($route); } else { $basename = ''; diff --git a/system/src/Grav/Console/Cli/SandboxCommand.php b/system/src/Grav/Console/Cli/SandboxCommand.php index 2ba562542..0ba2850de 100644 --- a/system/src/Grav/Console/Cli/SandboxCommand.php +++ b/system/src/Grav/Console/Cli/SandboxCommand.php @@ -10,6 +10,7 @@ namespace Grav\Console\Cli; use Grav\Common\Filesystem\Folder; +use Grav\Common\Utils; use Grav\Console\GravCommand; use RuntimeException; use Symfony\Component\Console\Input\InputArgument; @@ -301,7 +302,7 @@ class SandboxCommand extends GravCommand foreach ($binaries as $bin) { chmod($bin, $dir_perms); - $io->writeln(' bin/' . basename($bin) . ' permissions reset to ' . decoct($dir_perms)); + $io->writeln(' bin/' . Utils::basename($bin) . ' permissions reset to ' . decoct($dir_perms)); } $io->newLine(); diff --git a/system/src/Grav/Console/Gpm/InstallCommand.php b/system/src/Grav/Console/Gpm/InstallCommand.php index 1df7803f6..d25ebe3c5 100644 --- a/system/src/Grav/Console/Gpm/InstallCommand.php +++ b/system/src/Grav/Console/Gpm/InstallCommand.php @@ -579,7 +579,7 @@ class InstallCommand extends GpmCommand $tmp_dir = Grav::instance()['locator']->findResource('tmp://', true, true); $this->tmp = $tmp_dir . '/Grav-' . uniqid(); - $filename = $package->slug . basename($package->zipball_url); + $filename = $package->slug . Utils::basename($package->zipball_url); $filename = preg_replace('/[\\\\\/:"*?&<>|]+/m', '-', $filename); $query = ''; diff --git a/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php b/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php index efd9c7dbd..24e1fc2b3 100644 --- a/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php +++ b/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php @@ -97,7 +97,7 @@ trait ControllerResponseTrait $headers = $headers ?? []; $options = $options ?? ['force_download' => true]; - $file_parts = pathinfo($filename); + $file_parts = Utils::pathinfo($filename); if (!isset($headers['Content-Type'])) { $mimetype = Utils::getMimeByExtension($file_parts['extension']); @@ -140,7 +140,7 @@ trait ControllerResponseTrait $code = (int)$this->getConfig()->get('system.pages.redirect_default_code', 302); } - $ext = pathinfo($url, PATHINFO_EXTENSION); + $ext = Utils::pathinfo($url, PATHINFO_EXTENSION); $accept = $this->getAccept(['application/json', 'text/html']); if ($ext === 'json' || $accept === 'application/json') { return $this->createJsonResponse(['code' => $code, 'status' => 'redirect', 'redirect' => $url]); diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php index 539b84c99..d75380373 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php @@ -324,7 +324,7 @@ trait PageLegacyTrait $key = preg_replace(static::PAGE_ORDER_PREFIX_REGEX, '', $key); \assert(is_string($key)); } else { - $key = trim($parentKey . '/' . basename($this->getKey()), '/'); + $key = trim($parentKey . '/' . Utils::basename($this->getKey()), '/'); } if ($index->containsKey($key)) { @@ -336,7 +336,7 @@ trait PageLegacyTrait } while ($index->containsKey($test)); $key = $test; } - $folder = basename($key); + $folder = Utils::basename($key); // Get the folder name. $order = $this->getProperty('order'); @@ -539,7 +539,7 @@ trait PageLegacyTrait if ($language) { $language = '.' . $language; } - $format = '.' . ($this->getProperty('format') ?? pathinfo($this->name(), PATHINFO_EXTENSION)); + $format = '.' . ($this->getProperty('format') ?? Utils::pathinfo($this->name(), PATHINFO_EXTENSION)); return $language . $format; } diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php index 421cbec8c..c4c8cd7fb 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php @@ -15,10 +15,10 @@ use Grav\Common\Page\Interfaces\PageCollectionInterface; use Grav\Common\Page\Interfaces\PageInterface; use Grav\Common\Page\Pages; use Grav\Common\Uri; +use Grav\Common\Utils; use Grav\Framework\Filesystem\Filesystem; use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator; use RuntimeException; -use function dirname; use function is_string; /** @@ -375,7 +375,7 @@ trait PageRoutableTrait $value = $this->getMasterKey() ?: $this->getKey(); } - return basename($value) ?: null; + return Utils::basename($value) ?: null; } ); } diff --git a/system/src/Grav/Framework/Flex/Storage/FileStorage.php b/system/src/Grav/Framework/Flex/Storage/FileStorage.php index 7a1764692..1864439cb 100644 --- a/system/src/Grav/Framework/Flex/Storage/FileStorage.php +++ b/system/src/Grav/Framework/Flex/Storage/FileStorage.php @@ -12,6 +12,7 @@ declare(strict_types=1); namespace Grav\Framework\Flex\Storage; use FilesystemIterator; +use Grav\Common\Utils; use Grav\Framework\Flex\Interfaces\FlexStorageInterface; use RuntimeException; use SplFileInfo; @@ -125,7 +126,7 @@ class FileStorage extends FolderStorage */ protected function getKeyFromPath(string $path): string { - return basename($path, $this->dataFormatter->getDefaultFileExtension()); + return Utils::basename($path, $this->dataFormatter->getDefaultFileExtension()); } /** diff --git a/system/src/Grav/Framework/Flex/Storage/FolderStorage.php b/system/src/Grav/Framework/Flex/Storage/FolderStorage.php index 4da59d73c..600e98947 100644 --- a/system/src/Grav/Framework/Flex/Storage/FolderStorage.php +++ b/system/src/Grav/Framework/Flex/Storage/FolderStorage.php @@ -352,7 +352,7 @@ class FolderStorage extends AbstractFilesystemStorage */ protected function getKeyFromPath(string $path): string { - return basename($path); + return Utils::basename($path); } /** @@ -688,7 +688,7 @@ class FolderStorage extends AbstractFilesystemStorage $pattern .= '/{FILE}{EXT}'; } else { $filesystem = Filesystem::getInstance(true); - $this->dataFile = basename($pattern, $extension); + $this->dataFile = Utils::basename($pattern, $extension); $pattern = $filesystem->dirname($pattern) . '/{FILE}{EXT}'; } } diff --git a/system/src/Grav/Framework/Flex/Storage/SimpleStorage.php b/system/src/Grav/Framework/Flex/Storage/SimpleStorage.php index 30da11e19..73e2b065d 100644 --- a/system/src/Grav/Framework/Flex/Storage/SimpleStorage.php +++ b/system/src/Grav/Framework/Flex/Storage/SimpleStorage.php @@ -13,6 +13,7 @@ namespace Grav\Framework\Flex\Storage; use Grav\Common\Data\Data; use Grav\Common\Filesystem\Folder; +use Grav\Common\Utils; use Grav\Framework\Filesystem\Filesystem; use InvalidArgumentException; use LogicException; @@ -53,9 +54,9 @@ class SimpleStorage extends AbstractFilesystemStorage $filesystem = Filesystem::getInstance(true); $extension = $this->dataFormatter->getDefaultFileExtension(); - $pattern = basename($options['folder']); + $pattern = Utils::basename($options['folder']); - $this->dataPattern = basename($pattern, $extension) . $extension; + $this->dataPattern = Utils::basename($pattern, $extension) . $extension; $this->dataFolder = $filesystem->dirname($options['folder']); $this->keyField = $options['key'] ?? 'storage_key'; $this->keyLen = (int)($options['key_len'] ?? 32); @@ -432,7 +433,7 @@ class SimpleStorage extends AbstractFilesystemStorage */ protected function getKeyFromPath(string $path): string { - return basename($path); + return Utils::basename($path); } /** diff --git a/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php b/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php index 05e3a4433..ad437ebe4 100644 --- a/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php +++ b/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php @@ -346,7 +346,7 @@ trait FlexMediaTrait } // Calculate path without the retina scaling factor. - $realpath = $filesystem->pathname($filepath) . str_replace(['@3x', '@2x'], '', basename($filepath)); + $realpath = $filesystem->pathname($filepath) . str_replace(['@3x', '@2x'], '', Utils::basename($filepath)); $list[$filename] = [$file, $settings]; @@ -508,7 +508,7 @@ trait FlexMediaTrait user_error(__METHOD__ . '() is deprecated since Grav 1.7, use Media class that implements MediaUploadInterface instead', E_USER_DEPRECATED); // Check the file extension. - $extension = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); + $extension = strtolower(Utils::pathinfo($filename, PATHINFO_EXTENSION)); $grav = Grav::instance(); diff --git a/system/src/Grav/Framework/Form/FormFlash.php b/system/src/Grav/Framework/Form/FormFlash.php index 06cc2eeea..863eb4af6 100644 --- a/system/src/Grav/Framework/Form/FormFlash.php +++ b/system/src/Grav/Framework/Form/FormFlash.php @@ -343,7 +343,7 @@ class FormFlash implements FormFlashInterface // Prepare upload data for later save $data = [ - 'name' => basename($filename), + 'name' => Utils::basename($filename), 'type' => Utils::getMimeByLocalFile($filename), 'size' => filesize($filename), ]; diff --git a/system/src/Grav/Installer/VersionUpdate.php b/system/src/Grav/Installer/VersionUpdate.php index 3efca1f31..c0658acc8 100644 --- a/system/src/Grav/Installer/VersionUpdate.php +++ b/system/src/Grav/Installer/VersionUpdate.php @@ -3,6 +3,7 @@ namespace Grav\Installer; use Closure; +use Grav\Common\Utils; /** * Class VersionUpdate @@ -25,7 +26,7 @@ final class VersionUpdate public function __construct(string $file, VersionUpdater $updater) { - $name = basename($file, '.php'); + $name = Utils::basename($file, '.php'); $this->revision = $name; [$this->version, $this->date, $this->patch] = explode('_', $name); diff --git a/system/src/Grav/Installer/YamlUpdater.php b/system/src/Grav/Installer/YamlUpdater.php index ac562495f..e842a6902 100644 --- a/system/src/Grav/Installer/YamlUpdater.php +++ b/system/src/Grav/Installer/YamlUpdater.php @@ -9,6 +9,7 @@ namespace Grav\Installer; +use Grav\Common\Utils; use Symfony\Component\Yaml\Yaml; use function assert; use function count; @@ -69,7 +70,7 @@ final class YamlUpdater file_put_contents($this->filename, $yaml); } catch (\Exception $e) { - throw new \RuntimeException('Failed to update ' . basename($this->filename) . ': ' . $e->getMessage()); + throw new \RuntimeException('Failed to update ' . Utils::basename($this->filename) . ': ' . $e->getMessage()); } return true; From b9db2f33220495435607814948483285299a4f43 Mon Sep 17 00:00:00 2001 From: Djamil Legato Date: Thu, 27 Jan 2022 16:24:50 -0800 Subject: [PATCH 83/98] Fixed MimeType for `gzip` (`application/x-gzip`) --- CHANGELOG.md | 1 + system/config/media.yaml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11c8b497e..5f3684109 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ 2. [](#improved) * Improved `Filesystem::basename()` and `Filesystem::pathinfo()` to be unicode-safe * Made path handling unicode-safe, use new `Utils::basename()` and `Utils::pathinfo()` everywhere + * Fixed MimeType for `gzip` (`application/x-gzip`) # v1.7.28 ## 01/24/2022 diff --git a/system/config/media.yaml b/system/config/media.yaml index b118a210e..fad5e0dcb 100644 --- a/system/config/media.yaml +++ b/system/config/media.yaml @@ -199,7 +199,7 @@ types: gz: type: file thumb: media/thumb-gz.png - mime: application/gzip + mime: application/x-gzip tar: type: file thumb: media/thumb-tar.png From 7666651324a80139fb2a9317979e59b3d19c0b37 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Fri, 28 Jan 2022 05:10:18 +0200 Subject: [PATCH 84/98] Fixed error on thumbnail image creation --- CHANGELOG.md | 2 ++ system/src/Grav/Common/Media/Traits/MediaObjectTrait.php | 9 +++++---- system/src/Grav/Common/Page/Medium/Medium.php | 1 + 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f3684109..4858eccf1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ 2. [](#improved) * Improved `Filesystem::basename()` and `Filesystem::pathinfo()` to be unicode-safe * Made path handling unicode-safe, use new `Utils::basename()` and `Utils::pathinfo()` everywhere +3. [](#bugfix) + * Fixed error on thumbnail image creation * Fixed MimeType for `gzip` (`application/x-gzip`) # v1.7.28 diff --git a/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php b/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php index edabbdeb6..85ed6d224 100644 --- a/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php +++ b/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php @@ -574,11 +574,12 @@ trait MediaObjectTrait foreach ($types as $type) { $thumb = $this->get("thumbnails.{$type}", false); - if ($thumb) { - $thumb = $thumb instanceof ThumbnailImageMedium ? $thumb : $this->createThumbnail($thumb); - $thumb->parent = $this; - $this->_thumbnail = $thumb; + $image = $thumb instanceof ThumbnailImageMedium ? $thumb : $this->createThumbnail($thumb); + if($image) { + $image->parent = $this; + $this->_thumbnail = $image; + } break; } } diff --git a/system/src/Grav/Common/Page/Medium/Medium.php b/system/src/Grav/Common/Page/Medium/Medium.php index b65f7d0fa..0891c0c46 100644 --- a/system/src/Grav/Common/Page/Medium/Medium.php +++ b/system/src/Grav/Common/Page/Medium/Medium.php @@ -106,6 +106,7 @@ class Medium extends Data implements RenderableInterface, MediaFileInterface /** * @param string $thumb + * @return Medium|null */ protected function createThumbnail($thumb) { From 96df7deaf4014242edd49e791eb96637c68375e9 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Fri, 28 Jan 2022 13:08:36 -0700 Subject: [PATCH 85/98] prepare for release --- CHANGELOG.md | 2 +- system/defines.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4858eccf1..dd2fd70f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ # v1.7.29 -## mm/dd/2022 +## 01/28/2022 1. [](#new) * Added support for registering assets from `HtmlBlock` diff --git a/system/defines.php b/system/defines.php index 704985499..b7c963033 100644 --- a/system/defines.php +++ b/system/defines.php @@ -9,7 +9,7 @@ // Some standard defines define('GRAV', true); -define('GRAV_VERSION', '1.7.28'); +define('GRAV_VERSION', '1.7.29'); define('GRAV_SCHEMA', '1.7.0_2020-11-20_1'); define('GRAV_TESTING', false); From 389ffe1c7a472b30db4105c295bfbcfb901494f2 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 31 Jan 2022 11:20:09 +0200 Subject: [PATCH 86/98] Composer update --- composer.lock | 204 +++++++++++++++++++++++++------------------------- 1 file changed, 102 insertions(+), 102 deletions(-) diff --git a/composer.lock b/composer.lock index 7630b5260..ce9ff368c 100644 --- a/composer.lock +++ b/composer.lock @@ -840,16 +840,16 @@ }, { "name": "itsgoingd/clockwork", - "version": "v5.1.3", + "version": "v5.1.4", "source": { "type": "git", "url": "https://github.com/itsgoingd/clockwork.git", - "reference": "e03f8a7f4bcd99ec67e56428e4fc7424de4cefa8" + "reference": "7252aa771b77ac8678b44290fd7ec7577435cce6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/itsgoingd/clockwork/zipball/e03f8a7f4bcd99ec67e56428e4fc7424de4cefa8", - "reference": "e03f8a7f4bcd99ec67e56428e4fc7424de4cefa8", + "url": "https://api.github.com/repos/itsgoingd/clockwork/zipball/7252aa771b77ac8678b44290fd7ec7577435cce6", + "reference": "7252aa771b77ac8678b44290fd7ec7577435cce6", "shasum": "" }, "require": { @@ -897,7 +897,7 @@ ], "support": { "issues": "https://github.com/itsgoingd/clockwork/issues", - "source": "https://github.com/itsgoingd/clockwork/tree/v5.1.3" + "source": "https://github.com/itsgoingd/clockwork/tree/v5.1.4" }, "funding": [ { @@ -905,20 +905,20 @@ "type": "github" } ], - "time": "2021-12-24T12:24:20+00:00" + "time": "2022-01-30T12:36:18+00:00" }, { "name": "league/climate", - "version": "3.7.0", + "version": "3.8.1", "source": { "type": "git", "url": "https://github.com/thephpleague/climate.git", - "reference": "5c717c3032c5118be7ad2395dbe0813d9894e8c7" + "reference": "22243322c6f049240e0fa6ad6c3873343b6f6055" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/climate/zipball/5c717c3032c5118be7ad2395dbe0813d9894e8c7", - "reference": "5c717c3032c5118be7ad2395dbe0813d9894e8c7", + "url": "https://api.github.com/repos/thephpleague/climate/zipball/22243322c6f049240e0fa6ad6c3873343b6f6055", + "reference": "22243322c6f049240e0fa6ad6c3873343b6f6055", "shasum": "" }, "require": { @@ -968,9 +968,9 @@ ], "support": { "issues": "https://github.com/thephpleague/climate/issues", - "source": "https://github.com/thephpleague/climate/tree/3.7.0" + "source": "https://github.com/thephpleague/climate/tree/3.8.1" }, - "time": "2021-01-10T20:18:52+00:00" + "time": "2022-01-23T14:38:49+00:00" }, { "name": "matthiasmullie/minify", @@ -2191,16 +2191,16 @@ }, { "name": "symfony/console", - "version": "v4.4.36", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "621379b62bb19af213b569b60013200b11dd576f" + "reference": "0259f01dbf9d77badddbbf4c2abb681f24c9cac6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/621379b62bb19af213b569b60013200b11dd576f", - "reference": "621379b62bb19af213b569b60013200b11dd576f", + "url": "https://api.github.com/repos/symfony/console/zipball/0259f01dbf9d77badddbbf4c2abb681f24c9cac6", + "reference": "0259f01dbf9d77badddbbf4c2abb681f24c9cac6", "shasum": "" }, "require": { @@ -2261,7 +2261,7 @@ "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.36" + "source": "https://github.com/symfony/console/tree/v4.4.37" }, "funding": [ { @@ -2277,7 +2277,7 @@ "type": "tidelift" } ], - "time": "2021-12-15T10:33:10+00:00" + "time": "2022-01-26T16:15:26+00:00" }, { "name": "symfony/contracts", @@ -2375,16 +2375,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v4.4.34", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8" + "reference": "3ccfcfb96ecce1217d7b0875a0736976bc6e63dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8", - "reference": "1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/3ccfcfb96ecce1217d7b0875a0736976bc6e63dc", + "reference": "3ccfcfb96ecce1217d7b0875a0736976bc6e63dc", "shasum": "" }, "require": { @@ -2439,7 +2439,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.34" + "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.37" }, "funding": [ { @@ -2455,20 +2455,20 @@ "type": "tidelift" } ], - "time": "2021-11-15T14:42:25+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { "name": "symfony/http-client", - "version": "v4.4.36", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "35e2cd1862b9ec2b46ebf050fbb13e285944b6a3" + "reference": "8129ccd6233338e1d495b7734c003053766cb262" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/35e2cd1862b9ec2b46ebf050fbb13e285944b6a3", - "reference": "35e2cd1862b9ec2b46ebf050fbb13e285944b6a3", + "url": "https://api.github.com/repos/symfony/http-client/zipball/8129ccd6233338e1d495b7734c003053766cb262", + "reference": "8129ccd6233338e1d495b7734c003053766cb262", "shasum": "" }, "require": { @@ -2520,7 +2520,7 @@ "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-client/tree/v4.4.36" + "source": "https://github.com/symfony/http-client/tree/v4.4.37" }, "funding": [ { @@ -2536,7 +2536,7 @@ "type": "tidelift" } ], - "time": "2021-12-29T09:28:53+00:00" + "time": "2022-01-19T13:29:07+00:00" }, { "name": "symfony/polyfill-ctype", @@ -3030,16 +3030,16 @@ }, { "name": "symfony/process", - "version": "v4.4.36", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "a35d6b8f82e2272504f23a267de49b8717ca0028" + "reference": "b2d924e5a4cb284f293d5092b1dbf0d364cb8b67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/a35d6b8f82e2272504f23a267de49b8717ca0028", - "reference": "a35d6b8f82e2272504f23a267de49b8717ca0028", + "url": "https://api.github.com/repos/symfony/process/zipball/b2d924e5a4cb284f293d5092b1dbf0d364cb8b67", + "reference": "b2d924e5a4cb284f293d5092b1dbf0d364cb8b67", "shasum": "" }, "require": { @@ -3072,7 +3072,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v4.4.36" + "source": "https://github.com/symfony/process/tree/v4.4.37" }, "funding": [ { @@ -3088,20 +3088,20 @@ "type": "tidelift" } ], - "time": "2021-12-19T16:27:15+00:00" + "time": "2022-01-27T17:14:04+00:00" }, { "name": "symfony/var-dumper", - "version": "v4.4.36", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "02685c62fcbc4262235cc72a54fbd45ab719ce3c" + "reference": "e74eee4ec02de71db3d60151aa5b203c990556df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/02685c62fcbc4262235cc72a54fbd45ab719ce3c", - "reference": "02685c62fcbc4262235cc72a54fbd45ab719ce3c", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/e74eee4ec02de71db3d60151aa5b203c990556df", + "reference": "e74eee4ec02de71db3d60151aa5b203c990556df", "shasum": "" }, "require": { @@ -3161,7 +3161,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v4.4.36" + "source": "https://github.com/symfony/var-dumper/tree/v4.4.37" }, "funding": [ { @@ -3177,20 +3177,20 @@ "type": "tidelift" } ], - "time": "2021-12-29T09:28:53+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.36", + "version": "v4.4.37", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "a19f7c44ba665fa9d9d415cc4493361381b93f9b" + "reference": "d7f637cc0f0cc14beb0984f2bb50da560b271311" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/a19f7c44ba665fa9d9d415cc4493361381b93f9b", - "reference": "a19f7c44ba665fa9d9d415cc4493361381b93f9b", + "url": "https://api.github.com/repos/symfony/yaml/zipball/d7f637cc0f0cc14beb0984f2bb50da560b271311", + "reference": "d7f637cc0f0cc14beb0984f2bb50da560b271311", "shasum": "" }, "require": { @@ -3232,7 +3232,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.36" + "source": "https://github.com/symfony/yaml/tree/v4.4.37" }, "funding": [ { @@ -3248,7 +3248,7 @@ "type": "tidelift" } ], - "time": "2021-11-25T16:40:00+00:00" + "time": "2022-01-24T20:11:01+00:00" }, { "name": "twig/twig", @@ -3330,16 +3330,16 @@ }, { "name": "willdurand/negotiation", - "version": "3.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/willdurand/Negotiation.git", - "reference": "04e14f38d4edfcc974114a07d2777d90c98f3d9c" + "reference": "68e9ea0553ef6e2ee8db5c1d98829f111e623ec2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/04e14f38d4edfcc974114a07d2777d90c98f3d9c", - "reference": "04e14f38d4edfcc974114a07d2777d90c98f3d9c", + "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/68e9ea0553ef6e2ee8db5c1d98829f111e623ec2", + "reference": "68e9ea0553ef6e2ee8db5c1d98829f111e623ec2", "shasum": "" }, "require": { @@ -3380,9 +3380,9 @@ ], "support": { "issues": "https://github.com/willdurand/Negotiation/issues", - "source": "https://github.com/willdurand/Negotiation/tree/3.0.0" + "source": "https://github.com/willdurand/Negotiation/tree/3.1.0" }, - "time": "2020-09-25T08:01:41+00:00" + "time": "2022-01-30T20:08:53+00:00" } ], "packages-dev": [ @@ -3451,16 +3451,16 @@ }, { "name": "codeception/codeception", - "version": "4.1.28", + "version": "4.1.29", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "e9bc22a3819f9d356068c0e372193ebcc9b06014" + "reference": "f8dec8f2bf5347cc596aaf141753f4fb2504c17c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/e9bc22a3819f9d356068c0e372193ebcc9b06014", - "reference": "e9bc22a3819f9d356068c0e372193ebcc9b06014", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/f8dec8f2bf5347cc596aaf141753f4fb2504c17c", + "reference": "f8dec8f2bf5347cc596aaf141753f4fb2504c17c", "shasum": "" }, "require": { @@ -3537,7 +3537,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/4.1.28" + "source": "https://github.com/Codeception/Codeception/tree/4.1.29" }, "funding": [ { @@ -3545,7 +3545,7 @@ "type": "open_collective" } ], - "time": "2022-01-05T16:41:25+00:00" + "time": "2022-01-29T16:56:03+00:00" }, { "name": "codeception/lib-asserts", @@ -3780,16 +3780,16 @@ }, { "name": "codeception/phpunit-wrapper", - "version": "9.0.6", + "version": "9.0.7", "source": { "type": "git", "url": "https://github.com/Codeception/phpunit-wrapper.git", - "reference": "b0c06abb3181eedca690170f7ed0fd26a70bfacc" + "reference": "7d6b1a5ea4ed28d010e5d36b993db813eb49710b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/b0c06abb3181eedca690170f7ed0fd26a70bfacc", - "reference": "b0c06abb3181eedca690170f7ed0fd26a70bfacc", + "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/7d6b1a5ea4ed28d010e5d36b993db813eb49710b", + "reference": "7d6b1a5ea4ed28d010e5d36b993db813eb49710b", "shasum": "" }, "require": { @@ -3823,9 +3823,9 @@ "description": "PHPUnit classes used by Codeception", "support": { "issues": "https://github.com/Codeception/phpunit-wrapper/issues", - "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.6" + "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.7" }, - "time": "2020-12-28T13:59:47+00:00" + "time": "2022-01-26T14:43:10+00:00" }, { "name": "codeception/stub", @@ -4641,16 +4641,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.4.2", + "version": "1.4.3", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "1dd8f3e40bf7aa30031a75c65cece99220a161b8" + "reference": "89d10839dbfc95eeb7da656578b4a899ad2b59b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1dd8f3e40bf7aa30031a75c65cece99220a161b8", - "reference": "1dd8f3e40bf7aa30031a75c65cece99220a161b8", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/89d10839dbfc95eeb7da656578b4a899ad2b59b1", + "reference": "89d10839dbfc95eeb7da656578b4a899ad2b59b1", "shasum": "" }, "require": { @@ -4681,7 +4681,7 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.4.2" + "source": "https://github.com/phpstan/phpstan/tree/1.4.3" }, "funding": [ { @@ -4701,7 +4701,7 @@ "type": "tidelift" } ], - "time": "2022-01-18T16:09:11+00:00" + "time": "2022-01-28T16:27:17+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -5073,16 +5073,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.12", + "version": "9.5.13", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "93d4bf4c37aec6384bb9e5d390d9049a463a7256" + "reference": "597cb647654ede35e43b137926dfdfef0fb11743" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/93d4bf4c37aec6384bb9e5d390d9049a463a7256", - "reference": "93d4bf4c37aec6384bb9e5d390d9049a463a7256", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743", + "reference": "597cb647654ede35e43b137926dfdfef0fb11743", "shasum": "" }, "require": { @@ -5160,7 +5160,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.12" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13" }, "funding": [ { @@ -5172,7 +5172,7 @@ "type": "github" } ], - "time": "2022-01-21T05:54:47+00:00" + "time": "2022-01-24T07:33:35+00:00" }, { "name": "psr/http-client", @@ -6192,16 +6192,16 @@ }, { "name": "symfony/browser-kit", - "version": "v5.4.2", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "1fb93b0aab42392aa0a742db205173b49afaf80f" + "reference": "18e73179c6a33d520de1b644941eba108dd811ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/1fb93b0aab42392aa0a742db205173b49afaf80f", - "reference": "1fb93b0aab42392aa0a742db205173b49afaf80f", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/18e73179c6a33d520de1b644941eba108dd811ad", + "reference": "18e73179c6a33d520de1b644941eba108dd811ad", "shasum": "" }, "require": { @@ -6244,7 +6244,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.4.2" + "source": "https://github.com/symfony/browser-kit/tree/v5.4.3" }, "funding": [ { @@ -6260,20 +6260,20 @@ "type": "tidelift" } ], - "time": "2021-12-16T21:58:21+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/css-selector", - "version": "v5.4.2", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "cfcbee910e159df402603502fe387e8b677c22fd" + "reference": "b0a190285cd95cb019237851205b8140ef6e368e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/cfcbee910e159df402603502fe387e8b677c22fd", - "reference": "cfcbee910e159df402603502fe387e8b677c22fd", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/b0a190285cd95cb019237851205b8140ef6e368e", + "reference": "b0a190285cd95cb019237851205b8140ef6e368e", "shasum": "" }, "require": { @@ -6310,7 +6310,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.4.2" + "source": "https://github.com/symfony/css-selector/tree/v5.4.3" }, "funding": [ { @@ -6326,7 +6326,7 @@ "type": "tidelift" } ], - "time": "2021-12-16T21:58:21+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/deprecation-contracts", @@ -6397,16 +6397,16 @@ }, { "name": "symfony/dom-crawler", - "version": "v5.4.2", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "bb3bc3699779fc6d9646270789026a7e2cec7ec7" + "reference": "2634381fdf27a2a0a8ac8eb404025eb656c65d0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/bb3bc3699779fc6d9646270789026a7e2cec7ec7", - "reference": "bb3bc3699779fc6d9646270789026a7e2cec7ec7", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/2634381fdf27a2a0a8ac8eb404025eb656c65d0c", + "reference": "2634381fdf27a2a0a8ac8eb404025eb656c65d0c", "shasum": "" }, "require": { @@ -6452,7 +6452,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v5.4.2" + "source": "https://github.com/symfony/dom-crawler/tree/v5.4.3" }, "funding": [ { @@ -6468,20 +6468,20 @@ "type": "tidelift" } ], - "time": "2021-12-28T17:15:56+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/finder", - "version": "v5.4.2", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "e77046c252be48c48a40816187ed527703c8f76c" + "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/e77046c252be48c48a40816187ed527703c8f76c", - "reference": "e77046c252be48c48a40816187ed527703c8f76c", + "url": "https://api.github.com/repos/symfony/finder/zipball/231313534dded84c7ecaa79d14bc5da4ccb69b7d", + "reference": "231313534dded84c7ecaa79d14bc5da4ccb69b7d", "shasum": "" }, "require": { @@ -6515,7 +6515,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.2" + "source": "https://github.com/symfony/finder/tree/v5.4.3" }, "funding": [ { @@ -6531,7 +6531,7 @@ "type": "tidelift" } ], - "time": "2021-12-15T11:06:13+00:00" + "time": "2022-01-26T16:34:36+00:00" }, { "name": "theseer/tokenizer", From 5b9a0fb23730b773b6d69ab27097f5a51cda23f3 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 31 Jan 2022 11:26:35 +0200 Subject: [PATCH 87/98] Fixed `Call to undefined method` error when upgrading from Grav 1.6 [#3523] --- CHANGELOG.md | 6 ++++++ system/src/Grav/Installer/VersionUpdate.php | 2 +- system/src/Grav/Installer/YamlUpdater.php | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dd2fd70f6..919204d49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# v1.7.30 +## mm/dd/2022 + +3. [](#bugfix) + * Fixed `Call to undefined method` error when upgrading from Grav 1.6 [#3523](https://github.com/getgrav/grav/issues/3523) + # v1.7.29 ## 01/28/2022 diff --git a/system/src/Grav/Installer/VersionUpdate.php b/system/src/Grav/Installer/VersionUpdate.php index c0658acc8..1fde78307 100644 --- a/system/src/Grav/Installer/VersionUpdate.php +++ b/system/src/Grav/Installer/VersionUpdate.php @@ -26,7 +26,7 @@ final class VersionUpdate public function __construct(string $file, VersionUpdater $updater) { - $name = Utils::basename($file, '.php'); + $name = basename($file, '.php'); $this->revision = $name; [$this->version, $this->date, $this->patch] = explode('_', $name); diff --git a/system/src/Grav/Installer/YamlUpdater.php b/system/src/Grav/Installer/YamlUpdater.php index e842a6902..fe1c7f1ac 100644 --- a/system/src/Grav/Installer/YamlUpdater.php +++ b/system/src/Grav/Installer/YamlUpdater.php @@ -70,7 +70,7 @@ final class YamlUpdater file_put_contents($this->filename, $yaml); } catch (\Exception $e) { - throw new \RuntimeException('Failed to update ' . Utils::basename($this->filename) . ': ' . $e->getMessage()); + throw new \RuntimeException('Failed to update ' . basename($this->filename) . ': ' . $e->getMessage()); } return true; From 5248519c37405e7c515b791652763567b86caaa4 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Mon, 31 Jan 2022 11:52:12 -0700 Subject: [PATCH 88/98] prepare for release --- CHANGELOG.md | 4 ++-- system/defines.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 919204d49..3b1de77f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ -# v1.7.30 -## mm/dd/2022 +# v1.7.29.1 +## 01/31/2022 3. [](#bugfix) * Fixed `Call to undefined method` error when upgrading from Grav 1.6 [#3523](https://github.com/getgrav/grav/issues/3523) diff --git a/system/defines.php b/system/defines.php index b7c963033..6520711f3 100644 --- a/system/defines.php +++ b/system/defines.php @@ -9,7 +9,7 @@ // Some standard defines define('GRAV', true); -define('GRAV_VERSION', '1.7.29'); +define('GRAV_VERSION', '1.7.29.1'); define('GRAV_SCHEMA', '1.7.0_2020-11-20_1'); define('GRAV_TESTING', false); From 840441bc9bfc9c9dcd136b564091302fcec37b8c Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 3 Feb 2022 19:50:02 +0200 Subject: [PATCH 89/98] Composer update --- composer.lock | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/composer.lock b/composer.lock index ce9ff368c..27632ac38 100644 --- a/composer.lock +++ b/composer.lock @@ -764,12 +764,12 @@ } }, "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1316,16 +1316,16 @@ }, { "name": "nyholm/psr7", - "version": "1.4.1", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/Nyholm/psr7.git", - "reference": "2212385b47153ea71b1c1b1374f8cb5e4f7892ec" + "reference": "1461e07a0f2a975a52082ca3b769ca912b816226" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Nyholm/psr7/zipball/2212385b47153ea71b1c1b1374f8cb5e4f7892ec", - "reference": "2212385b47153ea71b1c1b1374f8cb5e4f7892ec", + "url": "https://api.github.com/repos/Nyholm/psr7/zipball/1461e07a0f2a975a52082ca3b769ca912b816226", + "reference": "1461e07a0f2a975a52082ca3b769ca912b816226", "shasum": "" }, "require": { @@ -1377,7 +1377,7 @@ ], "support": { "issues": "https://github.com/Nyholm/psr7/issues", - "source": "https://github.com/Nyholm/psr7/tree/1.4.1" + "source": "https://github.com/Nyholm/psr7/tree/1.5.0" }, "funding": [ { @@ -1389,7 +1389,7 @@ "type": "github" } ], - "time": "2021-07-02T08:32:20+00:00" + "time": "2022-02-02T18:37:57+00:00" }, { "name": "nyholm/psr7-server", @@ -4214,12 +4214,12 @@ }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4641,16 +4641,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.4.3", + "version": "1.4.5", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "89d10839dbfc95eeb7da656578b4a899ad2b59b1" + "reference": "150d1fbd82fb71ff76b3bd7f6ea6006d89c5f0c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/89d10839dbfc95eeb7da656578b4a899ad2b59b1", - "reference": "89d10839dbfc95eeb7da656578b4a899ad2b59b1", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/150d1fbd82fb71ff76b3bd7f6ea6006d89c5f0c3", + "reference": "150d1fbd82fb71ff76b3bd7f6ea6006d89c5f0c3", "shasum": "" }, "require": { @@ -4681,7 +4681,7 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.4.3" + "source": "https://github.com/phpstan/phpstan/tree/1.4.5" }, "funding": [ { @@ -4701,7 +4701,7 @@ "type": "tidelift" } ], - "time": "2022-01-28T16:27:17+00:00" + "time": "2022-02-02T19:35:10+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From c82a35cea034095fe5d339ce535de83f95a14716 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 3 Feb 2022 19:51:46 +0200 Subject: [PATCH 90/98] Added twig filter `|field_parent` to get parent field name --- CHANGELOG.md | 6 ++++++ .../Common/Twig/Extension/GravExtension.php | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3b1de77f6..dffa83d76 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# v1.7.30 +## mm/dd/2022 + +3. [](#new) + * Added twig filter `|field_parent` to get parent field name + # v1.7.29.1 ## 01/31/2022 diff --git a/system/src/Grav/Common/Twig/Extension/GravExtension.php b/system/src/Grav/Common/Twig/Extension/GravExtension.php index dcff83750..52e2a1841 100644 --- a/system/src/Grav/Common/Twig/Extension/GravExtension.php +++ b/system/src/Grav/Common/Twig/Extension/GravExtension.php @@ -116,6 +116,7 @@ class GravExtension extends AbstractExtension implements GlobalsInterface new TwigFilter('defined', [$this, 'definedDefaultFilter']), new TwigFilter('ends_with', [$this, 'endsWithFilter']), new TwigFilter('fieldName', [$this, 'fieldNameFilter']), + new TwigFilter('parent_field', [$this, 'fieldParentFilter']), new TwigFilter('ksort', [$this, 'ksortFilter']), new TwigFilter('ltrim', [$this, 'ltrimFilter']), new TwigFilter('markdown', [$this, 'markdownFunction'], ['needs_context' => true, 'is_safe' => ['html']]), @@ -260,6 +261,10 @@ class GravExtension extends AbstractExtension implements GlobalsInterface ]; } + /** + * @param mixed $var + * @return string + */ public function print_r($var) { return print_r($var, true); @@ -278,6 +283,20 @@ class GravExtension extends AbstractExtension implements GlobalsInterface return array_shift($path) . ($path ? '[' . implode('][', $path) . ']' : ''); } + /** + * Filters field name by changing dot notation into array notation. + * + * @param string $str + * @return string + */ + public function fieldParentFilter($str) + { + $path = explode('.', rtrim($str, '.')); + array_pop($path); + + return implode('.', $path); + } + /** * Protects email address. * From 67ef9b221aebba67f248b5eacf11162e16d14c2b Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Fri, 4 Feb 2022 19:58:23 +0200 Subject: [PATCH 91/98] Fixed error while deleting retina image in admin --- CHANGELOG.md | 6 ++++-- system/src/Grav/Common/Media/Traits/MediaUploadTrait.php | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dffa83d76..74df68fd4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,15 @@ # v1.7.30 ## mm/dd/2022 -3. [](#new) +1. [](#new) * Added twig filter `|field_parent` to get parent field name +2. [](#bugfix) + * Fixed error while deleting retina image in admin # v1.7.29.1 ## 01/31/2022 -3. [](#bugfix) +1. [](#bugfix) * Fixed `Call to undefined method` error when upgrading from Grav 1.6 [#3523](https://github.com/getgrav/grav/issues/3523) # v1.7.29 diff --git a/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php b/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php index 2bddf9752..36a4503f1 100644 --- a/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php +++ b/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php @@ -573,6 +573,8 @@ trait MediaUploadTrait } } } + + $this->hide($filename); } /** From 5eefc917819f89e341941b80e89a879598ff39ee Mon Sep 17 00:00:00 2001 From: Djamil Legato Date: Fri, 4 Feb 2022 11:23:09 -0800 Subject: [PATCH 92/98] Fixed "Page Authors" field in Security tab, wrongly loading and saving the value (fixes #3525) --- CHANGELOG.md | 1 + system/blueprints/pages/partials/security.yaml | 10 +++------- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 74df68fd4..c8d4b3b54 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * Added twig filter `|field_parent` to get parent field name 2. [](#bugfix) * Fixed error while deleting retina image in admin + * Fixed "Page Authors" field in Security tab, wrongly loading and saving the value [#3525](https://github.com/getgrav/grav/issues/3525) # v1.7.29.1 ## 01/31/2022 diff --git a/system/blueprints/pages/partials/security.yaml b/system/blueprints/pages/partials/security.yaml index d7619b975..26d8c7dcb 100644 --- a/system/blueprints/pages/partials/security.yaml +++ b/system/blueprints/pages/partials/security.yaml @@ -51,17 +51,13 @@ form: type: bool header.permissions.authors: - type: list + type: array toggleable: true + value_only: true + placeholder_value: PLUGIN_ADMIN.USERNAME label: PLUGIN_ADMIN.PAGE_AUTHORS help: PLUGIN_ADMIN.PAGE_AUTHORS_HELP - fields: - value: - type: text - placeholder: PLUGIN_ADMIN.USERNAME - style: vertical - header.permissions.groups: ignore@: true type: acl_picker From 88219fbf0eac852249446f5ae32374a620ece2d6 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 7 Feb 2022 10:07:00 +0200 Subject: [PATCH 93/98] Fixed accounts filter only matches against email address [getgrav/grav-plugin-admin#2224] --- CHANGELOG.md | 1 + system/blueprints/flex/user-accounts.yaml | 2 ++ 2 files changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8d4b3b54..d2fa1f4c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ 2. [](#bugfix) * Fixed error while deleting retina image in admin * Fixed "Page Authors" field in Security tab, wrongly loading and saving the value [#3525](https://github.com/getgrav/grav/issues/3525) + * Fixed accounts filter only matches against email address [getgrav/grav-plugin-admin#2224](https://github.com/getgrav/grav-plugin-admin/issues/2224) # v1.7.29.1 ## 01/31/2022 diff --git a/system/blueprints/flex/user-accounts.yaml b/system/blueprints/flex/user-accounts.yaml index 384bf97c0..8d336f993 100644 --- a/system/blueprints/flex/user-accounts.yaml +++ b/system/blueprints/flex/user-accounts.yaml @@ -122,6 +122,8 @@ config: fields: - key - email + - username + - fullname blueprints: configure: From 3ca58e9ae141c6e0da15cc181bd919688167e444 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 7 Feb 2022 10:11:45 +0200 Subject: [PATCH 94/98] Composer update --- composer.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/composer.lock b/composer.lock index 27632ac38..215309419 100644 --- a/composer.lock +++ b/composer.lock @@ -2654,12 +2654,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2814,12 +2814,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php74\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Php74\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2894,12 +2894,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -2977,12 +2977,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, "files": [ "bootstrap.php" ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, "classmap": [ "Resources/stubs" ] @@ -3507,13 +3507,13 @@ "branch-alias": [] }, "autoload": { + "files": [ + "functions.php" + ], "psr-4": { "Codeception\\": "src/Codeception", "Codeception\\Extension\\": "ext" - }, - "files": [ - "functions.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4641,16 +4641,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.4.5", + "version": "1.4.6", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "150d1fbd82fb71ff76b3bd7f6ea6006d89c5f0c3" + "reference": "8a7761f1c520e0dad6e04d862fdc697445457cfe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/150d1fbd82fb71ff76b3bd7f6ea6006d89c5f0c3", - "reference": "150d1fbd82fb71ff76b3bd7f6ea6006d89c5f0c3", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/8a7761f1c520e0dad6e04d862fdc697445457cfe", + "reference": "8a7761f1c520e0dad6e04d862fdc697445457cfe", "shasum": "" }, "require": { @@ -4681,7 +4681,7 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.4.5" + "source": "https://github.com/phpstan/phpstan/tree/1.4.6" }, "funding": [ { @@ -4701,7 +4701,7 @@ "type": "tidelift" } ], - "time": "2022-02-02T19:35:10+00:00" + "time": "2022-02-06T12:56:13+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From 7306f164e904ade660d9a142f0557b5bde62e445 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 7 Feb 2022 10:30:25 +0200 Subject: [PATCH 95/98] Fixed groups filter not matching against readableName [getgrav/grav-plugin-admin#2224] --- system/blueprints/flex/user-groups.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/system/blueprints/flex/user-groups.yaml b/system/blueprints/flex/user-groups.yaml index 05ba87b73..a5d348b5a 100644 --- a/system/blueprints/flex/user-groups.yaml +++ b/system/blueprints/flex/user-groups.yaml @@ -113,6 +113,7 @@ config: fields: - key - groupname + - readableName - description blueprints: From d275532cf8bafec0fb765a010a1a6d73a2c69d18 Mon Sep 17 00:00:00 2001 From: Rotzbua Date: Sat, 25 Dec 2021 23:08:31 +0100 Subject: [PATCH 96/98] Fix documentation of return type --- system/src/Grav/Common/Twig/Extension/FilesystemExtension.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/src/Grav/Common/Twig/Extension/FilesystemExtension.php b/system/src/Grav/Common/Twig/Extension/FilesystemExtension.php index 9b9085558..6e5434c4e 100644 --- a/system/src/Grav/Common/Twig/Extension/FilesystemExtension.php +++ b/system/src/Grav/Common/Twig/Extension/FilesystemExtension.php @@ -283,7 +283,7 @@ class FilesystemExtension extends AbstractExtension /** * @param string $filename - * @return string|false + * @return int|false */ public function exif_imagetype($filename) { From 0323a898cb95948344ab329eedcccb251ae45ec1 Mon Sep 17 00:00:00 2001 From: Rotzbua Date: Sat, 25 Dec 2021 23:08:52 +0100 Subject: [PATCH 97/98] Normalize variable names --- .../Twig/Extension/FilesystemExtension.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/system/src/Grav/Common/Twig/Extension/FilesystemExtension.php b/system/src/Grav/Common/Twig/Extension/FilesystemExtension.php index 6e5434c4e..0ae793e62 100644 --- a/system/src/Grav/Common/Twig/Extension/FilesystemExtension.php +++ b/system/src/Grav/Common/Twig/Extension/FilesystemExtension.php @@ -266,19 +266,19 @@ class FilesystemExtension extends AbstractExtension } /** - * @param string $file + * @param string $filename * @param string|null $required_sections * @param bool $as_arrays * @param bool $read_thumbnail * @return array|false */ - public function exif_read_data($file, ?string $required_sections, bool $as_arrays = false, bool $read_thumbnail = false) + public function exif_read_data($filename, ?string $required_sections, bool $as_arrays = false, bool $read_thumbnail = false) { - if (!Utils::functionExists('exif_read_data') || !$this->checkFilename($file)) { + if (!Utils::functionExists('exif_read_data') || !$this->checkFilename($filename)) { return false; } - return exif_read_data($file, $required_sections, $as_arrays, $read_thumbnail); + return exif_read_data($filename, $required_sections, $as_arrays, $read_thumbnail); } /** @@ -311,18 +311,18 @@ class FilesystemExtension extends AbstractExtension /** * @param string $algo - * @param string $data + * @param string $filename * @param string $key * @param bool $binary * @return string|false */ - public function hash_hmac_file(string $algo, string $data, string $key, bool $binary = false) + public function hash_hmac_file(string $algo, string $filename, string $key, bool $binary = false) { - if (!$this->checkFilename($data)) { + if (!$this->checkFilename($filename)) { return false; } - return hash_hmac_file($algo, $data, $key, $binary); + return hash_hmac_file($algo, $filename, $key, $binary); } /** From 5d842349e59947622a7d4fd5eecb9298d2fe4bd2 Mon Sep 17 00:00:00 2001 From: Rotzbua Date: Sat, 25 Dec 2021 23:03:15 +0100 Subject: [PATCH 98/98] add composer suggestion for exif extension --- composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 2c82dd72d..511690104 100644 --- a/composer.json +++ b/composer.json @@ -82,7 +82,8 @@ "ext-intl": "Recommended for multi-language sites", "ext-memcache": "Needed to support Memcache servers", "ext-memcached": "Needed to support Memcached servers", - "ext-redis": "Needed to support Redis servers" + "ext-redis": "Needed to support Redis servers", + "ext-exif": "Needed to use exif data from images." }, "config": { "apcu-autoloader": true,