From 490662152af2df163816a0582ccda67c6f6c43f3 Mon Sep 17 00:00:00 2001 From: thex Date: Wed, 8 Jan 2020 12:19:22 +0100 Subject: [PATCH 01/66] added twig extension for preg_match and preg_split --- system/src/Grav/Common/Twig/TwigExtension.php | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/system/src/Grav/Common/Twig/TwigExtension.php b/system/src/Grav/Common/Twig/TwigExtension.php index f84923ebd..cc2af14ec 100644 --- a/system/src/Grav/Common/Twig/TwigExtension.php +++ b/system/src/Grav/Common/Twig/TwigExtension.php @@ -157,6 +157,8 @@ class TwigExtension extends \Twig_Extension implements \Twig_Extension_GlobalsIn new \Twig_SimpleFunction('repeat', [$this, 'repeatFunc']), new \Twig_SimpleFunction('regex_replace', [$this, 'regexReplace']), new \Twig_SimpleFunction('regex_filter', [$this, 'regexFilter']), + new \Twig_SimpleFunction('preg_match', [$this, 'pregMatch']), + new \Twig_SimpleFunction('preg_split', [$this, 'pregSplit']), new \Twig_SimpleFunction('string', [$this, 'stringFunc']), new \Twig_SimpleFunction('url', [$this, 'urlFunc']), new \Twig_SimpleFunction('json_decode', [$this, 'jsonDecodeFilter']), @@ -1098,6 +1100,34 @@ class TwigExtension extends \Twig_Extension implements \Twig_Extension_GlobalsIn return preg_grep($regex, $array, $flags); } + /** + * Twig wrapper for PHP's preg_match method + * + * @param string $pattern the regex pattern to use for match + * @param string $subject the content to perform the match on + * @param array &$matches if given, the parameter is filled with the match results. The first array elements contains the text which matches the complete search pattern. The second element contains the text which matches the first bracketed subpattern and so on. + * @return mixed returns the matches if there is at least one match in the subject for a given pattern or false if not. + */ + public function pregMatch($pattern, $subject, &$matches = []) + { + preg_match($pattern, $subject, $matches); + + return $matches ?: false; + } + + /** + * Twig wrapper for PHP's preg_split method + * + * @param string $pattern the regex pattern to use for split + * @param string $subject the content to perform the split on + * @param int $limit the maximum possible splits for the given pattern + * @return array the resulting array after performing the split operation + */ + public function pregSplit($pattern, $subject, $limit = -1) + { + return preg_split($pattern, $subject, $limit); + } + /** * redirect browser from twig * From a809fb8c417fd3525a28473a2f39a9905e6fbc13 Mon Sep 17 00:00:00 2001 From: NicoHood Date: Sun, 3 Jan 2021 13:42:26 +0100 Subject: [PATCH 02/66] Fix #2781 asset manager pipeline order. Patch taken from @pamtbaau --- system/src/Grav/Common/Assets.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/system/src/Grav/Common/Assets.php b/system/src/Grav/Common/Assets.php index 74ba296d0..4e275f084 100644 --- a/system/src/Grav/Common/Assets.php +++ b/system/src/Grav/Common/Assets.php @@ -59,6 +59,8 @@ class Assets extends PropertyObject protected $collections; protected $timestamp; + /** @var array to contain next 'order' value per asset 'type', 'group' and 'position' combination */ + protected $order = []; /** * Initialization called in the Grav lifecycle to initialize the Assets with appropriate configuration @@ -190,7 +192,14 @@ class Assets extends PropertyObject $options['timestamp'] = $this->timestamp; // Set order - $options['order'] = \count($this->$collection); + $group = $options['group'] ?? 'head'; + $position = $options['position'] ?? 'pipeline'; + + if (!isset($this->order[$type][$group][$position])) { + $this->order[$type][$group][$position] = 0; + } + + $options['order'] = $this->order[$type][$group][$position]++; // Create asset of correct type $asset_class = "\\Grav\\Common\\Assets\\{$type}"; From f8972f812afbd3aeedf19d878660bae7323270fa Mon Sep 17 00:00:00 2001 From: NicoHood Date: Sat, 9 Jan 2021 22:02:01 +0100 Subject: [PATCH 03/66] Fix asset unit test --- system/src/Grav/Common/Assets/Traits/TestingAssetsTrait.php | 1 + 1 file changed, 1 insertion(+) diff --git a/system/src/Grav/Common/Assets/Traits/TestingAssetsTrait.php b/system/src/Grav/Common/Assets/Traits/TestingAssetsTrait.php index 84b83e304..d2a05087b 100644 --- a/system/src/Grav/Common/Assets/Traits/TestingAssetsTrait.php +++ b/system/src/Grav/Common/Assets/Traits/TestingAssetsTrait.php @@ -188,6 +188,7 @@ trait TestingAssetsTrait $this->resetJs(); $this->setCssPipeline(false); $this->setJsPipeline(false); + $this->order = []; return $this; } From 42daf75124d554dfc9bfe2ecf5e8c31425bef321 Mon Sep 17 00:00:00 2001 From: NicoHood Date: Fri, 15 Jan 2021 15:04:10 +0100 Subject: [PATCH 04/66] Fix documentation for asset array variable --- system/src/Grav/Common/Assets.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/src/Grav/Common/Assets.php b/system/src/Grav/Common/Assets.php index 4e275f084..f951c03d6 100644 --- a/system/src/Grav/Common/Assets.php +++ b/system/src/Grav/Common/Assets.php @@ -59,7 +59,7 @@ class Assets extends PropertyObject protected $collections; protected $timestamp; - /** @var array to contain next 'order' value per asset 'type', 'group' and 'position' combination */ + /** @var array Array to contain next 'order' value per asset 'type', 'group' and 'position' combination */ protected $order = []; /** From cb2c9616d7d19aecdad9a64c581068bdc0ac8e2a Mon Sep 17 00:00:00 2001 From: Pierre Joye Date: Fri, 29 Jan 2021 14:48:20 +0700 Subject: [PATCH 05/66] Initialize route and raw_route, fix empty route as values --- system/src/Grav/Common/Page/Page.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index 344a7ba60..30b656562 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -271,7 +271,8 @@ class Page implements PageInterface if ($exists) { $aPage = new Page(); $aPage->init(new SplFileInfo($path), $languageExtension); - + $aPage->route($this->route()); + $aPage->rawRoute($this->rawRoute()); $route = $aPage->header()->routes['default'] ?? $aPage->rawRoute(); if (!$route) { $route = $aPage->route(); From ee379a512ae624481e256646f6928be176558811 Mon Sep 17 00:00:00 2001 From: Jeremy Gonyea Date: Fri, 29 Jan 2021 23:06:20 -0500 Subject: [PATCH 06/66] Added ability to filter enabled or disabled with bin/gpm index --- system/src/Grav/Common/GPM/GPM.php | 51 ++++++++++++++- system/src/Grav/Console/Gpm/IndexCommand.php | 66 +++++++++++++++++++- 2 files changed, 112 insertions(+), 5 deletions(-) diff --git a/system/src/Grav/Common/GPM/GPM.php b/system/src/Grav/Common/GPM/GPM.php index 80fea081a..ec4cbf87a 100644 --- a/system/src/Grav/Common/GPM/GPM.php +++ b/system/src/Grav/Common/GPM/GPM.php @@ -139,6 +139,32 @@ class GPM extends Iterator return $this->installed['plugins']; } + + /** + * Returns the plugin's enabled state + * + * @param string $slug + * @return bool True if the Plugin is Enabled. False if manually set to enable:false. Null otherwise. + */ + public function isPluginEnabled($slug) + { + $result = null; + $grav = new Grav(); + $config = $grav::instance()['config']['plugins']; + $installed = $this->isPluginInstalled($slug); + + $enabled = isset($config[$slug]) && ((bool)$config[$slug]['enabled'] == true); + $disabled = isset($config[$slug]['enabled']) && ((bool)$config[$slug]['enabled'] === false); + + if ($enabled) { + $result = true; + } + if ($disabled) { + $result = false; + } + return $result; + } + /** * Checks if a Plugin is installed * @@ -182,6 +208,28 @@ class GPM extends Iterator return $this->installed['themes']; } + /** + * Checks if a Theme is enabled + * + * @param string $slug The slug of the Theme + * @return bool + * True if the Theme has been set to the default theme. False if installed, but not enabled. Null otherwise. + */ + public function isThemeEnabled($slug) + { + $grav = new Grav(); + $result = null; + $current_theme = $grav::instance()['config']['system']['pages']['theme']; + $theme_installed = $this->isThemeInstalled($slug); + + if ($current_theme == $slug) { + $result = true; + } elseif ($theme_installed) { + $result = false; + } + return $result; + } + /** * Checks if a Theme is installed * @@ -1023,7 +1071,6 @@ class GPM extends Iterator //Factor in the package dependencies too $dependencies = $this->calculateMergedDependenciesOfPackage($dependencyName, $dependencies); - } elseif ($dependencyVersion !== '*') { // Dependency already added by another package // If this package requires a version higher than the currently stored one, store this requirement instead @@ -1059,7 +1106,7 @@ class GPM extends Iterator $dependencies[$dependencyName] = $dependencyVersion; } } else { - $compatible = $this->checkNextSignificantReleasesAreCompatible($currently_stored_version_number,$current_package_version_number); + $compatible = $this->checkNextSignificantReleasesAreCompatible($currently_stored_version_number, $current_package_version_number); if (!$compatible) { throw new RuntimeException("Dependency {$dependencyName} is required in two incompatible versions", 2); } diff --git a/system/src/Grav/Console/Gpm/IndexCommand.php b/system/src/Grav/Console/Gpm/IndexCommand.php index 9f4634410..163afb48b 100644 --- a/system/src/Grav/Console/Gpm/IndexCommand.php +++ b/system/src/Grav/Console/Gpm/IndexCommand.php @@ -90,6 +90,18 @@ class IndexCommand extends GpmCommand InputOption::VALUE_NONE, 'Reverses the order of the output.' ) + ->addOption( + 'enabled', + 'e', + InputOption::VALUE_NONE, + 'Filters the results to only enabled Themes and Plugins.' + ) + ->addOption( + 'disabled', + 'd', + InputOption::VALUE_NONE, + 'Filters the results to only disabled Themes and Plugins.' + ) ->setDescription('Lists the plugins and themes available for installation') ->setHelp('The index command lists the plugins and themes available for installation') ; @@ -129,7 +141,7 @@ class IndexCommand extends GpmCommand if (!empty($packages)) { $io->section('Packages table'); $table = new Table($io); - $table->setHeaders(['Count', 'Name', 'Slug', 'Version', 'Installed']); + $table->setHeaders(['Count', 'Name', 'Slug', 'Version', 'Installed', 'Enabled']); $index = 0; foreach ($packages as $slug => $package) { @@ -138,7 +150,8 @@ class IndexCommand extends GpmCommand 'Name' => '' . Utils::truncate($package->name, 20, false, ' ', '...') . ' ', 'Slug' => $slug, 'Version'=> $this->version($package), - 'Installed' => $this->installed($package) + 'Installed' => $this->installed($package), + 'Enabled' => $this->enabled($package), ]; $table->addRow($row); @@ -195,6 +208,28 @@ class IndexCommand extends GpmCommand return !$installed ? 'not installed' : 'installed'; } + /** + * @param Package $package + * @return string + */ + private function enabled(Package $package): string + { + $package = $list[$package->slug] ?? $package; + $type = ucfirst(preg_replace('/s$/', '', $package->package_type)); + $method = 'is' . $type . 'Enabled'; + $enabled = $this->gpm->{$method}($package->slug); + + if ($enabled === null) { + $result = ''; + } elseif ($enabled === true) { + $result = 'enabled'; + } elseif ($enabled === false) { + $result = 'disabled'; + } + + return $result; + } + /** * @param Packages $data * @return Packages @@ -210,10 +245,12 @@ class IndexCommand extends GpmCommand } $filter = [ + $this->options['desc'], + $this->options['disabled'], + $this->options['enabled'], $this->options['filter'], $this->options['installed-only'], $this->options['updates-only'], - $this->options['desc'] ]; if (count(array_filter($filter))) { @@ -240,6 +277,29 @@ class IndexCommand extends GpmCommand $filter = $this->gpm->{$function}($package->slug); } + // Filtering enabled only + if ($filter && $this->options['enabled']) { + $method = ucfirst(preg_replace('/s$/', '', $package->package_type)); + + // Check if packaged is enabled. + $function = 'is' . $method . 'Enabled'; + $filter = $this->gpm->{$function}($package->slug); + } + + // Filtering disabled only + if ($filter && $this->options['disabled']) { + $method = ucfirst(preg_replace('/s$/', '', $package->package_type)); + + // Check if package is disabled. + $function = 'is' . $method . 'Enabled'; + $enabled_filter = $this->gpm->{$function}($package->slug); + + // Apply filtering results. + if (!( $enabled_filter === false)) { + $filter = false; + } + } + if (!$filter) { unset($data[$type][$slug]); } From ea758e9dcafb2c75f78238f3494c81a5451c1bbf Mon Sep 17 00:00:00 2001 From: Pierre Joye Date: Sat, 30 Jan 2021 20:50:20 +0700 Subject: [PATCH 07/66] Add test for this translatedLanguages --- tests/_bootstrap.php | 4 ++++ tests/unit/Grav/Common/Page/PagesTest.php | 13 +++++++++++++ 2 files changed, 17 insertions(+) diff --git a/tests/_bootstrap.php b/tests/_bootstrap.php index 03677dd84..c83c3d8bf 100644 --- a/tests/_bootstrap.php +++ b/tests/_bootstrap.php @@ -12,6 +12,10 @@ $grav = function () { $grav = Grav::instance(); $grav['config']->init(); + // This must be set first before the other init + $grav['config']->set('system.languages.supported', ['en', 'fr', 'vi']); + $grav['config']->set('system.languages.default_lang', 'en'); + foreach (array_keys($grav['setup']->getStreams()) as $stream) { @stream_wrapper_unregister($stream); } diff --git a/tests/unit/Grav/Common/Page/PagesTest.php b/tests/unit/Grav/Common/Page/PagesTest.php index b53ca8414..2aa385cc9 100644 --- a/tests/unit/Grav/Common/Page/PagesTest.php +++ b/tests/unit/Grav/Common/Page/PagesTest.php @@ -236,6 +236,19 @@ class PagesTest extends \Codeception\TestCase\Test $this->assertSame('—-▸ Blog', $list['/blog']); } + public function testTranslatedLanguages() + { + /** @var UniformResourceLocator $locator */ + $locator = $this->grav['locator']; + $folder = $locator->findResource('tests://'); + + $page = $this->pages->get($folder . '/fake/simple-site/user/pages/04.page-translated'); + $this->assertInstanceOf(PageInterface::class, $page); + $translatedLanguages = $page->translatedLanguages(); + $this->assertIsArray($translatedLanguages); + $this->assertSame(["en" => "/page-translated", "fr" => "/page-translated"], $translatedLanguages); + } + public function testGetTypes() { } From 711d7b122df9f7718216d423342f12090a5b91d3 Mon Sep 17 00:00:00 2001 From: Pierre Joye Date: Sat, 30 Jan 2021 21:22:39 +0700 Subject: [PATCH 08/66] Add fixture for translatedLanguages --- system/src/Grav/Common/Utils.php | 1 - .../user/pages/01.simple-page/default.en.md | 0 .../user/pages/01.simple-page/default.fr.md | 5 +++++ tests/unit/Grav/Common/UtilsTest.php | 4 +++- 4 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 tests/fake/single-page-translated/user/pages/01.simple-page/default.en.md create mode 100644 tests/fake/single-page-translated/user/pages/01.simple-page/default.fr.md diff --git a/system/src/Grav/Common/Utils.php b/system/src/Grav/Common/Utils.php index 4e02d5712..013d814fe 100644 --- a/system/src/Grav/Common/Utils.php +++ b/system/src/Grav/Common/Utils.php @@ -1196,7 +1196,6 @@ abstract class Utils if (count($parts) > 0 && in_array($parts[0], $languages_enabled)) { return $parts[0]; } - return false; } diff --git a/tests/fake/single-page-translated/user/pages/01.simple-page/default.en.md b/tests/fake/single-page-translated/user/pages/01.simple-page/default.en.md new file mode 100644 index 000000000..e69de29bb diff --git a/tests/fake/single-page-translated/user/pages/01.simple-page/default.fr.md b/tests/fake/single-page-translated/user/pages/01.simple-page/default.fr.md new file mode 100644 index 000000000..97156cc5e --- /dev/null +++ b/tests/fake/single-page-translated/user/pages/01.simple-page/default.fr.md @@ -0,0 +1,5 @@ +--- +title: Simple Page avec traduction +--- + +Simple Page Content in English \ No newline at end of file diff --git a/tests/unit/Grav/Common/UtilsTest.php b/tests/unit/Grav/Common/UtilsTest.php index adce03edd..98c7d65a6 100644 --- a/tests/unit/Grav/Common/UtilsTest.php +++ b/tests/unit/Grav/Common/UtilsTest.php @@ -297,7 +297,9 @@ class UtilsTest extends \Codeception\TestCase\Test $arrayOfLanguages = ['en', 'de', 'it', 'es', 'dk', 'el']; $languagesNotEnabled = array_diff($arrayOfLanguages, $languagesEnabled); $oneLanguageNotEnabled = reset($languagesNotEnabled); - +dump($oneLanguageNotEnabled); +dump($languagesNotEnabled); +dump($languagesEnabled); if (count($languagesEnabled)) { $this->assertTrue(Utils::pathPrefixedByLangCode('/' . $languagesEnabled[0] . '/test')); } From 10be5d5a7cf4fb1f7e01c2e683c118857d1f00d3 Mon Sep 17 00:00:00 2001 From: Pierre Joye Date: Sun, 31 Jan 2021 07:14:33 +0700 Subject: [PATCH 09/66] fix text if language is found and is part as enabled languages --- tests/unit/Grav/Common/UtilsTest.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/unit/Grav/Common/UtilsTest.php b/tests/unit/Grav/Common/UtilsTest.php index 98c7d65a6..d27cdf64b 100644 --- a/tests/unit/Grav/Common/UtilsTest.php +++ b/tests/unit/Grav/Common/UtilsTest.php @@ -297,11 +297,11 @@ class UtilsTest extends \Codeception\TestCase\Test $arrayOfLanguages = ['en', 'de', 'it', 'es', 'dk', 'el']; $languagesNotEnabled = array_diff($arrayOfLanguages, $languagesEnabled); $oneLanguageNotEnabled = reset($languagesNotEnabled); -dump($oneLanguageNotEnabled); -dump($languagesNotEnabled); -dump($languagesEnabled); + if (count($languagesEnabled)) { - $this->assertTrue(Utils::pathPrefixedByLangCode('/' . $languagesEnabled[0] . '/test')); + $languageCodePathPrefix = Utils::pathPrefixedByLangCode('/' . $languagesEnabled[0] . '/test'); + $this->assertIsString($languageCodePathPrefix); + $this->assertTrue(in_array($languageCodePathPrefix, $languagesEnabled)); } $this->assertFalse(Utils::pathPrefixedByLangCode('/' . $oneLanguageNotEnabled . '/test')); From 4ce3ff52bf6b95c98cd74e56d9a0bf230a5775d2 Mon Sep 17 00:00:00 2001 From: Pierre Joye Date: Sun, 31 Jan 2021 07:21:44 +0700 Subject: [PATCH 10/66] Add the test translated pages --- .../simple-site/user/pages/04.page-translated/default.en.md | 0 .../simple-site/user/pages/04.page-translated/default.fr.md | 5 +++++ 2 files changed, 5 insertions(+) create mode 100644 tests/fake/simple-site/user/pages/04.page-translated/default.en.md create mode 100644 tests/fake/simple-site/user/pages/04.page-translated/default.fr.md diff --git a/tests/fake/simple-site/user/pages/04.page-translated/default.en.md b/tests/fake/simple-site/user/pages/04.page-translated/default.en.md new file mode 100644 index 000000000..e69de29bb diff --git a/tests/fake/simple-site/user/pages/04.page-translated/default.fr.md b/tests/fake/simple-site/user/pages/04.page-translated/default.fr.md new file mode 100644 index 000000000..97156cc5e --- /dev/null +++ b/tests/fake/simple-site/user/pages/04.page-translated/default.fr.md @@ -0,0 +1,5 @@ +--- +title: Simple Page avec traduction +--- + +Simple Page Content in English \ No newline at end of file From 2044a649ba68a6423b89421aa41a6c6756268289 Mon Sep 17 00:00:00 2001 From: Pierre Joye Date: Tue, 2 Feb 2021 07:25:58 +0700 Subject: [PATCH 11/66] add another test with subfolder --- .../user/pages/05.translatedlong/part2/default.en.md | 0 .../user/pages/05.translatedlong/part2/default.fr.md | 5 +++++ 2 files changed, 5 insertions(+) create mode 100644 tests/fake/simple-site/user/pages/05.translatedlong/part2/default.en.md create mode 100644 tests/fake/simple-site/user/pages/05.translatedlong/part2/default.fr.md diff --git a/tests/fake/simple-site/user/pages/05.translatedlong/part2/default.en.md b/tests/fake/simple-site/user/pages/05.translatedlong/part2/default.en.md new file mode 100644 index 000000000..e69de29bb diff --git a/tests/fake/simple-site/user/pages/05.translatedlong/part2/default.fr.md b/tests/fake/simple-site/user/pages/05.translatedlong/part2/default.fr.md new file mode 100644 index 000000000..715706234 --- /dev/null +++ b/tests/fake/simple-site/user/pages/05.translatedlong/part2/default.fr.md @@ -0,0 +1,5 @@ +--- +title: Simple Page avec traduction +--- + +Page Simple FR \ No newline at end of file From caf431d22e46919bd9eb21b336d8507a7b98b826 Mon Sep 17 00:00:00 2001 From: Pierre Joye Date: Tue, 2 Feb 2021 07:27:21 +0700 Subject: [PATCH 12/66] add faker for multiple parts with folder --- .../user/pages/01.simple-page/default.fr.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/fake/single-page-translated/user/pages/01.simple-page/default.fr.md b/tests/fake/single-page-translated/user/pages/01.simple-page/default.fr.md index 97156cc5e..715706234 100644 --- a/tests/fake/single-page-translated/user/pages/01.simple-page/default.fr.md +++ b/tests/fake/single-page-translated/user/pages/01.simple-page/default.fr.md @@ -2,4 +2,4 @@ title: Simple Page avec traduction --- -Simple Page Content in English \ No newline at end of file +Page Simple FR \ No newline at end of file From 6c3c068485cda5e85cd34e9346091affb084048e Mon Sep 17 00:00:00 2001 From: Pierre Joye Date: Tue, 2 Feb 2021 07:27:54 +0700 Subject: [PATCH 13/66] add test for multiple parts using folder --- tests/unit/Grav/Common/Page/PagesTest.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/unit/Grav/Common/Page/PagesTest.php b/tests/unit/Grav/Common/Page/PagesTest.php index 887bf4af2..edff75bc8 100644 --- a/tests/unit/Grav/Common/Page/PagesTest.php +++ b/tests/unit/Grav/Common/Page/PagesTest.php @@ -249,6 +249,18 @@ class PagesTest extends \Codeception\TestCase\Test $this->assertSame(["en" => "/page-translated", "fr" => "/page-translated"], $translatedLanguages); } + public function testLongPathTranslatedLanguages(): void + { + /** @var UniformResourceLocator $locator */ + $locator = $this->grav['locator']; + $folder = $locator->findResource('tests://'); + $page = $this->pages->get($folder . '/fake/simple-site/user/pages/05.translatedlong/part2'); + $this->assertInstanceOf(PageInterface::class, $page); + $translatedLanguages = $page->translatedLanguages(); + $this->assertIsArray($translatedLanguages); + $this->assertSame(["en" => "/translatedlong/part2", "fr" => "/translatedlong/part2"], $translatedLanguages); + } + public function testGetTypes(): void { } From 16f610bfdf7fddc2a0672753ec1a55bb2c128408 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Tue, 2 Feb 2021 07:54:16 +0200 Subject: [PATCH 14/66] Working fix for page save failing because of uploaded images [#3191] --- CHANGELOG.md | 6 ++++++ .../src/Grav/Framework/Flex/Pages/FlexPageObject.php | 10 ++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0677df5dc..27f56628e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# v1.7.6 +## mm/dd/2021 + +1. [](#bugfix) + * Fixed page save failing because of uploaded images [#3191](https://github.com/getgrav/grav/issues/3191) + # v1.7.5 ## 02/01/2021 diff --git a/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php b/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php index af4141599..d98ad8859 100644 --- a/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php +++ b/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php @@ -354,8 +354,9 @@ class FlexPageObject extends FlexObject implements PageInterface, FlexTranslateI */ public function setNestedProperty($property, $value, $separator = null) { - if (strpos($property, 'header.') === 0) { - $this->getProperty('header')->set(str_replace('header.', '', $property), $value, $separator); + $separator = $separator ?: '.'; + if (strpos($property, 'header' . $separator) === 0) { + $this->getProperty('header')->set(str_replace('header' . $separator, '', $property), $value, $separator); return $this; } @@ -372,8 +373,9 @@ class FlexPageObject extends FlexObject implements PageInterface, FlexTranslateI */ public function unsetNestedProperty($property, $separator = null) { - if (strpos($property, 'header.') === 0) { - $this->getProperty('header')->undef(str_replace('header.', '', $property), $separator); + $separator = $separator ?: '.'; + if (strpos($property, 'header' . $separator) === 0) { + $this->getProperty('header')->undef(str_replace('header' . $separator, '', $property), $separator); return $this; } From a376c37a916606f762f85321308177bc64c1c569 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Tue, 2 Feb 2021 14:36:48 -0700 Subject: [PATCH 15/66] backup + security CLI commands not styling colors Fixes #3198 --- CHANGELOG.md | 7 +++++++ system/src/Grav/Console/Cli/BackupCommand.php | 4 ++-- system/src/Grav/Console/Cli/SecurityCommand.php | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0677df5dc..bfe1bb422 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# v1.7.6 +## 02/dd/2021 + +1. [](#bugfix) + * Fixed CLI progressbar in `backup` and `security` commands to use styled output [#3198](https://github.com/getgrav/grav/issues/3198) + + # v1.7.5 ## 02/01/2021 diff --git a/system/src/Grav/Console/Cli/BackupCommand.php b/system/src/Grav/Console/Cli/BackupCommand.php index 8dbf5b6af..148e0fe88 100644 --- a/system/src/Grav/Console/Cli/BackupCommand.php +++ b/system/src/Grav/Console/Cli/BackupCommand.php @@ -66,9 +66,9 @@ class BackupCommand extends GravCommand ProgressBar::setFormatDefinition('zip', 'Archiving %current% files [%bar%] %percent:3s%% %elapsed:6s% %message%'); - $this->progress = $io->createProgressBar(); + $this->progress = new ProgressBar($this->output, 100); $this->progress->setFormat('zip'); - $this->progress->setBarWidth(100); + /** @var Backups $backups */ $backups = Grav::instance()['backups']; diff --git a/system/src/Grav/Console/Cli/SecurityCommand.php b/system/src/Grav/Console/Cli/SecurityCommand.php index fcf200a7b..6c68a6a05 100644 --- a/system/src/Grav/Console/Cli/SecurityCommand.php +++ b/system/src/Grav/Console/Cli/SecurityCommand.php @@ -46,7 +46,7 @@ class SecurityCommand extends GravCommand /** @var Grav $grav */ $grav = Grav::instance(); - $this->progress = $io->createProgressBar(count($grav['pages']->routes()) - 1); + $this->progress = new ProgressBar($this->output, count($grav['pages']->routes()) - 1); $this->progress->setFormat('Scanning %current% pages [%bar%] %percent:3s%% %elapsed:6s%'); $this->progress->setBarWidth(100); From ef00b0d14d374227340aeafb14d5b2032b42dd5f Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 4 Feb 2021 13:13:20 +0200 Subject: [PATCH 16/66] Added abstract `FlexObject`, `FlexCollection` and `FlexIndex` classes to `\Grav\Common\Flex` namespace --- CHANGELOG.md | 2 ++ .../src/Grav/Common/Flex/FlexCollection.php | 29 ++++++++++++++++++ system/src/Grav/Common/Flex/FlexIndex.php | 30 +++++++++++++++++++ system/src/Grav/Common/Flex/FlexObject.php | 28 +++++++++++++++++ .../Flex/Types/Generic/GenericCollection.php | 8 ++--- .../Flex/Types/Generic/GenericIndex.php | 9 ++---- .../Flex/Types/Generic/GenericObject.php | 8 +---- .../Common/Flex/Types/Pages/PageIndex.php | 1 - .../Common/Flex/Types/Pages/PageObject.php | 2 -- .../Types/UserGroups/UserGroupCollection.php | 7 +---- .../Flex/Types/UserGroups/UserGroupIndex.php | 7 +---- .../Flex/Types/UserGroups/UserGroupObject.php | 9 +----- .../Flex/Types/Users/UserCollection.php | 7 +---- .../Common/Flex/Types/Users/UserIndex.php | 8 +---- .../Common/Flex/Types/Users/UserObject.php | 3 +- system/src/Grav/Framework/Flex/FlexIndex.php | 1 + 16 files changed, 101 insertions(+), 58 deletions(-) create mode 100644 system/src/Grav/Common/Flex/FlexCollection.php create mode 100644 system/src/Grav/Common/Flex/FlexIndex.php create mode 100644 system/src/Grav/Common/Flex/FlexObject.php diff --git a/CHANGELOG.md b/CHANGELOG.md index ae27a47f2..cedfd4d66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # v1.7.6 ## mm/dd/2021 +1. [](#improved) + * Added abstract `FlexObject`, `FlexCollection` and `FlexIndex` classes to `\Grav\Common\Flex` namespace (extend those instead of Framework or Generic classes) 1. [](#bugfix) * Fixed CLI progressbar in `backup` and `security` commands to use styled output [#3198](https://github.com/getgrav/grav/issues/3198) * Fixed page save failing because of uploaded images [#3191](https://github.com/getgrav/grav/issues/3191) diff --git a/system/src/Grav/Common/Flex/FlexCollection.php b/system/src/Grav/Common/Flex/FlexCollection.php new file mode 100644 index 000000000..13c267544 --- /dev/null +++ b/system/src/Grav/Common/Flex/FlexCollection.php @@ -0,0 +1,29 @@ + + */ +abstract class FlexCollection extends \Grav\Framework\Flex\FlexCollection +{ + use FlexGravTrait; + use FlexCollectionTrait; +} diff --git a/system/src/Grav/Common/Flex/FlexIndex.php b/system/src/Grav/Common/Flex/FlexIndex.php new file mode 100644 index 000000000..846cd6dfb --- /dev/null +++ b/system/src/Grav/Common/Flex/FlexIndex.php @@ -0,0 +1,30 @@ + + */ +abstract class FlexIndex extends \Grav\Framework\Flex\FlexIndex +{ + use FlexGravTrait; + use FlexIndexTrait; +} diff --git a/system/src/Grav/Common/Flex/FlexObject.php b/system/src/Grav/Common/Flex/FlexObject.php new file mode 100644 index 000000000..ef604195c --- /dev/null +++ b/system/src/Grav/Common/Flex/FlexObject.php @@ -0,0 +1,28 @@ + + * @extends FlexCollection */ class GenericCollection extends FlexCollection { - use FlexGravTrait; - use FlexCollectionTrait; } diff --git a/system/src/Grav/Common/Flex/Types/Generic/GenericIndex.php b/system/src/Grav/Common/Flex/Types/Generic/GenericIndex.php index 56c824461..82fa97edd 100644 --- a/system/src/Grav/Common/Flex/Types/Generic/GenericIndex.php +++ b/system/src/Grav/Common/Flex/Types/Generic/GenericIndex.php @@ -11,19 +11,14 @@ declare(strict_types=1); namespace Grav\Common\Flex\Types\Generic; -use Grav\Common\Flex\Traits\FlexGravTrait; -use Grav\Common\Flex\Traits\FlexIndexTrait; -use Grav\Framework\Flex\FlexIndex; +use Grav\Common\Flex\FlexIndex; /** * Class GenericIndex * @package Grav\Common\Flex\Generic * - * @extends FLexIndex - * @mixin GenericCollection + * @extends FlexIndex */ class GenericIndex extends FlexIndex { - use FlexGravTrait; - use FlexIndexTrait; } diff --git a/system/src/Grav/Common/Flex/Types/Generic/GenericObject.php b/system/src/Grav/Common/Flex/Types/Generic/GenericObject.php index e7dccf2ea..370780379 100644 --- a/system/src/Grav/Common/Flex/Types/Generic/GenericObject.php +++ b/system/src/Grav/Common/Flex/Types/Generic/GenericObject.php @@ -11,10 +11,7 @@ declare(strict_types=1); namespace Grav\Common\Flex\Types\Generic; -use Grav\Common\Flex\Traits\FlexGravTrait; -use Grav\Common\Flex\Traits\FlexObjectTrait; -use Grav\Framework\Flex\FlexObject; -use Grav\Framework\Flex\Traits\FlexMediaTrait; +use Grav\Common\Flex\FlexObject; /** * Class GenericObject @@ -22,7 +19,4 @@ use Grav\Framework\Flex\Traits\FlexMediaTrait; */ class GenericObject extends FlexObject { - use FlexGravTrait; - use FlexObjectTrait; - use FlexMediaTrait; } diff --git a/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php b/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php index 12d7f9f7a..d38c6865f 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php +++ b/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php @@ -36,7 +36,6 @@ use function is_string; * @package Grav\Plugin\FlexObjects\Types\GravPages * * @extends FlexPageIndex - * @mixin PageCollection * * @method PageIndex withModules(bool $bool = true) * @method PageIndex withPages(bool $bool = true) diff --git a/system/src/Grav/Common/Flex/Types/Pages/PageObject.php b/system/src/Grav/Common/Flex/Types/Pages/PageObject.php index 1d4f9b981..c1df616a9 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/PageObject.php +++ b/system/src/Grav/Common/Flex/Types/Pages/PageObject.php @@ -25,7 +25,6 @@ use Grav\Common\Page\Pages; use Grav\Common\Utils; use Grav\Framework\Filesystem\Filesystem; use Grav\Framework\Flex\FlexObject; -use Grav\Framework\Flex\Interfaces\FlexCollectionInterface; use Grav\Framework\Flex\Interfaces\FlexObjectInterface; use Grav\Framework\Flex\Pages\FlexPageObject; use Grav\Framework\Route\Route; @@ -35,7 +34,6 @@ use RocketTheme\Toolbox\Event\Event; use RuntimeException; use stdClass; use function array_key_exists; -use function assert; use function count; use function func_get_args; use function in_array; diff --git a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupCollection.php b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupCollection.php index 20dea64fb..c7752b815 100644 --- a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupCollection.php +++ b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupCollection.php @@ -11,9 +11,7 @@ declare(strict_types=1); namespace Grav\Common\Flex\Types\UserGroups; -use Grav\Common\Flex\Traits\FlexCollectionTrait; -use Grav\Common\Flex\Traits\FlexGravTrait; -use Grav\Framework\Flex\FlexCollection; +use Grav\Common\Flex\FlexCollection; /** * Class UserGroupCollection @@ -23,9 +21,6 @@ use Grav\Framework\Flex\FlexCollection; */ class UserGroupCollection extends FlexCollection { - use FlexGravTrait; - use FlexCollectionTrait; - /** * @return array */ diff --git a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupIndex.php b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupIndex.php index 211296fb0..67b3f6a4f 100644 --- a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupIndex.php +++ b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupIndex.php @@ -11,19 +11,14 @@ declare(strict_types=1); namespace Grav\Common\Flex\Types\UserGroups; -use Grav\Common\Flex\Traits\FlexGravTrait; -use Grav\Common\Flex\Traits\FlexIndexTrait; -use Grav\Framework\Flex\FlexIndex; +use Grav\Common\Flex\FlexIndex; /** * Class GroupIndex * @package Grav\Common\User\FlexUser * * @extends FlexIndex - * @mixin UserGroupCollection */ class UserGroupIndex extends FlexIndex { - use FlexGravTrait; - use FlexIndexTrait; } diff --git a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupObject.php b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupObject.php index 76652833a..f49906a3a 100644 --- a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupObject.php +++ b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupObject.php @@ -11,12 +11,9 @@ declare(strict_types=1); namespace Grav\Common\Flex\Types\UserGroups; -use Grav\Common\Flex\Traits\FlexGravTrait; -use Grav\Common\Flex\Traits\FlexObjectTrait; +use Grav\Common\Flex\FlexObject; use Grav\Common\User\Access; use Grav\Common\User\Interfaces\UserGroupInterface; -use Grav\Framework\Flex\FlexObject; -use Grav\Framework\Flex\Traits\FlexMediaTrait; use function is_bool; /** @@ -29,10 +26,6 @@ use function is_bool; */ class UserGroupObject extends FlexObject implements UserGroupInterface { - use FlexGravTrait; - use FlexObjectTrait; - use FlexMediaTrait; - /** @var Access */ protected $_access; /** @var array|null */ diff --git a/system/src/Grav/Common/Flex/Types/Users/UserCollection.php b/system/src/Grav/Common/Flex/Types/Users/UserCollection.php index f07be1cd9..540d5ebf7 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserCollection.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserCollection.php @@ -11,11 +11,9 @@ declare(strict_types=1); namespace Grav\Common\Flex\Types\Users; -use Grav\Common\Flex\Traits\FlexCollectionTrait; -use Grav\Common\Flex\Traits\FlexGravTrait; +use Grav\Common\Flex\FlexCollection; use Grav\Common\User\Interfaces\UserCollectionInterface; use Grav\Common\User\Interfaces\UserInterface; -use Grav\Framework\Flex\FlexCollection; use function is_string; /** @@ -26,9 +24,6 @@ use function is_string; */ class UserCollection extends FlexCollection implements UserCollectionInterface { - use FlexGravTrait; - use FlexCollectionTrait; - /** * @return array */ diff --git a/system/src/Grav/Common/Flex/Types/Users/UserIndex.php b/system/src/Grav/Common/Flex/Types/Users/UserIndex.php index eaa13385b..0371d37c3 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserIndex.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserIndex.php @@ -13,11 +13,9 @@ namespace Grav\Common\Flex\Types\Users; use Grav\Common\Debugger; use Grav\Common\File\CompiledYamlFile; -use Grav\Common\Flex\Traits\FlexGravTrait; -use Grav\Common\Flex\Traits\FlexIndexTrait; +use Grav\Common\Flex\FlexIndex; use Grav\Common\Grav; use Grav\Common\User\Interfaces\UserInterface; -use Grav\Framework\Flex\FlexIndex; use Grav\Framework\Flex\Interfaces\FlexStorageInterface; use Monolog\Logger; use function count; @@ -29,15 +27,11 @@ use function method_exists; * @package Grav\Common\Flex\Types\Users * * @extends FlexIndex - * @mixin UserCollection */ class UserIndex extends FlexIndex { public const VERSION = parent::VERSION . '.1'; - use FlexGravTrait; - use FlexIndexTrait; - /** * @param FlexStorageInterface $storage * @return array diff --git a/system/src/Grav/Common/Flex/Types/Users/UserObject.php b/system/src/Grav/Common/Flex/Types/Users/UserObject.php index a89782053..d51083492 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserObject.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserObject.php @@ -14,6 +14,7 @@ namespace Grav\Common\Flex\Types\Users; use Countable; use Grav\Common\Config\Config; use Grav\Common\Data\Blueprint; +use Grav\Common\Flex\FlexObject; use Grav\Common\Flex\Traits\FlexGravTrait; use Grav\Common\Flex\Traits\FlexObjectTrait; use Grav\Common\Flex\Types\Users\Traits\UserObjectLegacyTrait; @@ -33,7 +34,6 @@ use Grav\Framework\File\Formatter\JsonFormatter; use Grav\Framework\File\Formatter\YamlFormatter; use Grav\Framework\Flex\Flex; use Grav\Framework\Flex\FlexDirectory; -use Grav\Framework\Flex\FlexObject; use Grav\Framework\Flex\Storage\FileStorage; use Grav\Framework\Flex\Traits\FlexMediaTrait; use Grav\Framework\Form\FormFlashFile; @@ -42,7 +42,6 @@ use RocketTheme\Toolbox\Event\Event; use RocketTheme\Toolbox\File\FileInterface; use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator; use RuntimeException; -use function assert; use function is_array; use function is_bool; use function is_object; diff --git a/system/src/Grav/Framework/Flex/FlexIndex.php b/system/src/Grav/Framework/Flex/FlexIndex.php index d3e800a65..f88defdc3 100644 --- a/system/src/Grav/Framework/Flex/FlexIndex.php +++ b/system/src/Grav/Framework/Flex/FlexIndex.php @@ -38,6 +38,7 @@ use function in_array; * @template C of FlexCollectionInterface * @extends ObjectIndex * @implements FlexIndexInterface + * @mixin C */ class FlexIndex extends ObjectIndex implements FlexCollectionInterface, FlexIndexInterface { From 100babc11bfb2ec45df7e949049bf46cd39a7463 Mon Sep 17 00:00:00 2001 From: Djamil Legato Date: Thu, 4 Feb 2021 20:42:23 -0800 Subject: [PATCH 17/66] Updated bundled `composer.phar` binary to latest version `2.0.9` --- CHANGELOG.md | 1 + bin/composer.phar | Bin 2177123 -> 2205196 bytes 2 files changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cedfd4d66..073b9b3be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ 1. [](#improved) * Added abstract `FlexObject`, `FlexCollection` and `FlexIndex` classes to `\Grav\Common\Flex` namespace (extend those instead of Framework or Generic classes) + * Updated bundled `composer.phar` binary to latest version `2.0.9` 1. [](#bugfix) * Fixed CLI progressbar in `backup` and `security` commands to use styled output [#3198](https://github.com/getgrav/grav/issues/3198) * Fixed page save failing because of uploaded images [#3191](https://github.com/getgrav/grav/issues/3191) diff --git a/bin/composer.phar b/bin/composer.phar index c8fa35f71d88f89ae50d2e22849c374f4102aa0b..3791ce36ed26e033e485226ed288050ead25032b 100755 GIT binary patch delta 68120 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

S7#wbcCX=;> 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 Date: Thu, 4 Feb 2021 20:46:32 -0800 Subject: [PATCH 18/66] Updated COC to Contributor Covenant COC v2 --- CODE_OF_CONDUCT.md | 129 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 108 insertions(+), 21 deletions(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 42ef22d36..99ab478bc 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,46 +1,133 @@ + # Contributor Covenant Code of Conduct ## Our Pledge -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. ## Our Standards -Examples of behavior that contributes to creating a positive environment include: +Examples of behavior that contributes to a positive environment for our +community include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community -Examples of unacceptable behavior by participants include: +Examples of unacceptable behavior include: -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks * Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting -## Our Responsibilities +## Enforcement Responsibilities -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. ## Scope -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. ## Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at contact@getgrav.org. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +[INSERT CONTACT METHOD]. +All complaints will be reviewed and investigated promptly and fairly. -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. ## Attribution -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0]. -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available +at [https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations From 25f8b787b657fa5e20b0822944a6ef1256f70724 Mon Sep 17 00:00:00 2001 From: Djamil Legato Date: Thu, 4 Feb 2021 21:09:42 -0800 Subject: [PATCH 19/66] =?UTF-8?q?Oh,=20don=E2=80=99t=20mind=20me=E2=80=A6?= =?UTF-8?q?=20just=20bringing=20Grav=20to=202021!=20=F0=9F=8E=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 2 +- assets/.gitkeep | 1 + backup/.gitkeep | 1 + bin/gpm | 5 +++++ bin/grav | 5 +++++ bin/plugin | 5 +++++ cache/.gitkeep | 1 + images/.gitkeep | 1 + index.php | 2 +- logs/.gitkeep | 1 + 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 +- .../Grav/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 +- .../src/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 +- .../src/Grav/Common/Flex/Types/Pages/Storage/PageStorage.php | 2 +- .../Grav/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 +- .../src/Grav/Common/Flex/Types/UserGroups/UserGroupIndex.php | 2 +- .../Grav/Common/Flex/Types/UserGroups/UserGroupObject.php | 2 +- .../Grav/Common/Flex/Types/Users/Storage/UserFileStorage.php | 2 +- .../Common/Flex/Types/Users/Storage/UserFolderStorage.php | 2 +- .../Common/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 +- .../src/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 +- .../src/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/Response.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/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 | 2 +- system/src/Grav/Common/Markdown/Parsedown.php | 2 +- system/src/Grav/Common/Markdown/ParsedownExtra.php | 2 +- system/src/Grav/Common/Markdown/ParsedownGravTrait.php | 2 +- .../src/Grav/Common/Media/Interfaces/AudioMediaInterface.php | 2 +- .../Common/Media/Interfaces/ImageManipulateInterface.php | 2 +- .../src/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 +- .../src/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 +- .../src/Grav/Common/Page/Interfaces/PageContentInterface.php | 2 +- system/src/Grav/Common/Page/Interfaces/PageInterface.php | 2 +- .../src/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 +- system/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/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 +- .../Grav/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 +- .../Grav/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 +- system/src/Grav/Framework/Cache/Exception/CacheException.php | 2 +- .../Framework/Cache/Exception/InvalidArgumentException.php | 2 +- .../src/Grav/Framework/Collection/AbstractFileCollection.php | 2 +- .../Grav/Framework/Collection/AbstractIndexCollection.php | 2 +- .../src/Grav/Framework/Collection/AbstractLazyCollection.php | 2 +- system/src/Grav/Framework/Collection/ArrayCollection.php | 2 +- system/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 +- .../src/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 +- .../Framework/Flex/Interfaces/FlexDirectoryFormInterface.php | 2 +- .../Framework/Flex/Interfaces/FlexDirectoryInterface.php | 2 +- .../src/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 +- .../src/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 +- system/src/Grav/Framework/Flex/Traits/FlexAuthorizeTrait.php | 2 +- system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php | 2 +- .../Grav/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 +- .../Framework/Media/Interfaces/MediaCollectionInterface.php | 2 +- .../src/Grav/Framework/Media/Interfaces/MediaInterface.php | 2 +- .../Media/Interfaces/MediaManipulationInterface.php | 2 +- .../Grav/Framework/Media/Interfaces/MediaObjectInterface.php | 2 +- system/src/Grav/Framework/Object/Access/ArrayAccessTrait.php | 2 +- .../Grav/Framework/Object/Access/NestedArrayAccessTrait.php | 2 +- .../Object/Access/NestedPropertyCollectionTrait.php | 2 +- .../src/Grav/Framework/Object/Access/NestedPropertyTrait.php | 2 +- .../Grav/Framework/Object/Access/OverloadedPropertyTrait.php | 2 +- system/src/Grav/Framework/Object/ArrayObject.php | 2 +- .../src/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 +- .../src/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 +- .../src/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 +- .../src/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 +- .../src/Grav/Framework/Psr7/Traits/MessageDecoratorTrait.php | 2 +- .../src/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 +- system/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 +- .../Framework/RequestHandler/Exception/NotFoundException.php | 2 +- .../RequestHandler/Exception/NotHandledException.php | 2 +- .../RequestHandler/Exception/PageExpiredException.php | 2 +- .../Framework/RequestHandler/Exception/RequestException.php | 2 +- .../Grav/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 | 1 + user/accounts/.gitkeep | 1 + user/data/.gitkeep | 1 + user/plugins/.gitkeep | 1 + user/themes/.gitkeep | 1 + 443 files changed, 455 insertions(+), 430 deletions(-) diff --git a/.editorconfig b/.editorconfig index da1477309..8d06361b3 100644 --- a/.editorconfig +++ b/.editorconfig @@ -7,10 +7,10 @@ root = true [*] charset = utf-8 end_of_line = lf -trim_trailing_whitespace = true insert_final_newline = true indent_style = space indent_size = 4 +trim_trailing_whitespace = true # 2 space indentation [*.{yaml,yml}] diff --git a/assets/.gitkeep b/assets/.gitkeep index e69de29bb..33a9aed71 100644 --- a/assets/.gitkeep +++ b/assets/.gitkeep @@ -0,0 +1 @@ +/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ diff --git a/backup/.gitkeep b/backup/.gitkeep index e69de29bb..33a9aed71 100644 --- a/backup/.gitkeep +++ b/backup/.gitkeep @@ -0,0 +1 @@ +/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ diff --git a/bin/gpm b/bin/gpm index f65190998..a2eebc68c 100755 --- a/bin/gpm +++ b/bin/gpm @@ -1,6 +1,11 @@ #!/usr/bin/env php modified for Grav integration - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Scheduler/IntervalTrait.php b/system/src/Grav/Common/Scheduler/IntervalTrait.php index 369222422..cc5c1654c 100644 --- a/system/src/Grav/Common/Scheduler/IntervalTrait.php +++ b/system/src/Grav/Common/Scheduler/IntervalTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Scheduler * @author Originally based on peppeocchi/php-cron-scheduler modified for Grav integration - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Scheduler/Job.php b/system/src/Grav/Common/Scheduler/Job.php index 0a6fd9f39..f21c26def 100644 --- a/system/src/Grav/Common/Scheduler/Job.php +++ b/system/src/Grav/Common/Scheduler/Job.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Scheduler * @author Originally based on peppeocchi/php-cron-scheduler modified for Grav integration - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Scheduler/Scheduler.php b/system/src/Grav/Common/Scheduler/Scheduler.php index c22d00e6c..73a071225 100644 --- a/system/src/Grav/Common/Scheduler/Scheduler.php +++ b/system/src/Grav/Common/Scheduler/Scheduler.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Scheduler * @author Originally based on peppeocchi/php-cron-scheduler modified for Grav integration - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Security.php b/system/src/Grav/Common/Security.php index ede8741ab..21d059e23 100644 --- a/system/src/Grav/Common/Security.php +++ b/system/src/Grav/Common/Security.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/AccountsServiceProvider.php b/system/src/Grav/Common/Service/AccountsServiceProvider.php index d39925eea..8b158c93c 100644 --- a/system/src/Grav/Common/Service/AccountsServiceProvider.php +++ b/system/src/Grav/Common/Service/AccountsServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/AssetsServiceProvider.php b/system/src/Grav/Common/Service/AssetsServiceProvider.php index d5b39b1a6..1e4e647ca 100644 --- a/system/src/Grav/Common/Service/AssetsServiceProvider.php +++ b/system/src/Grav/Common/Service/AssetsServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/BackupsServiceProvider.php b/system/src/Grav/Common/Service/BackupsServiceProvider.php index fb09d8cc5..00fa9631a 100644 --- a/system/src/Grav/Common/Service/BackupsServiceProvider.php +++ b/system/src/Grav/Common/Service/BackupsServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/ConfigServiceProvider.php b/system/src/Grav/Common/Service/ConfigServiceProvider.php index 38d933cfc..a423f6e1d 100644 --- a/system/src/Grav/Common/Service/ConfigServiceProvider.php +++ b/system/src/Grav/Common/Service/ConfigServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/ErrorServiceProvider.php b/system/src/Grav/Common/Service/ErrorServiceProvider.php index 1a1944596..322736584 100644 --- a/system/src/Grav/Common/Service/ErrorServiceProvider.php +++ b/system/src/Grav/Common/Service/ErrorServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/FilesystemServiceProvider.php b/system/src/Grav/Common/Service/FilesystemServiceProvider.php index 38914e187..62dad5d81 100644 --- a/system/src/Grav/Common/Service/FilesystemServiceProvider.php +++ b/system/src/Grav/Common/Service/FilesystemServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/FlexServiceProvider.php b/system/src/Grav/Common/Service/FlexServiceProvider.php index 4aebf121e..9c8cd49b1 100644 --- a/system/src/Grav/Common/Service/FlexServiceProvider.php +++ b/system/src/Grav/Common/Service/FlexServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/InflectorServiceProvider.php b/system/src/Grav/Common/Service/InflectorServiceProvider.php index 77870c9c1..861a69e04 100644 --- a/system/src/Grav/Common/Service/InflectorServiceProvider.php +++ b/system/src/Grav/Common/Service/InflectorServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/LoggerServiceProvider.php b/system/src/Grav/Common/Service/LoggerServiceProvider.php index 7890d5c3a..5043cfbd0 100644 --- a/system/src/Grav/Common/Service/LoggerServiceProvider.php +++ b/system/src/Grav/Common/Service/LoggerServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/OutputServiceProvider.php b/system/src/Grav/Common/Service/OutputServiceProvider.php index 19072bd77..9a49185a8 100644 --- a/system/src/Grav/Common/Service/OutputServiceProvider.php +++ b/system/src/Grav/Common/Service/OutputServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/PagesServiceProvider.php b/system/src/Grav/Common/Service/PagesServiceProvider.php index 836598cfe..4acf37088 100644 --- a/system/src/Grav/Common/Service/PagesServiceProvider.php +++ b/system/src/Grav/Common/Service/PagesServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/RequestServiceProvider.php b/system/src/Grav/Common/Service/RequestServiceProvider.php index 69bd1c93f..1cc03ed18 100644 --- a/system/src/Grav/Common/Service/RequestServiceProvider.php +++ b/system/src/Grav/Common/Service/RequestServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/SchedulerServiceProvider.php b/system/src/Grav/Common/Service/SchedulerServiceProvider.php index 016cc8ea3..a95272544 100644 --- a/system/src/Grav/Common/Service/SchedulerServiceProvider.php +++ b/system/src/Grav/Common/Service/SchedulerServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/SessionServiceProvider.php b/system/src/Grav/Common/Service/SessionServiceProvider.php index e5b725703..20c56a4f2 100644 --- a/system/src/Grav/Common/Service/SessionServiceProvider.php +++ b/system/src/Grav/Common/Service/SessionServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/StreamsServiceProvider.php b/system/src/Grav/Common/Service/StreamsServiceProvider.php index e0f9a200a..2099d06d1 100644 --- a/system/src/Grav/Common/Service/StreamsServiceProvider.php +++ b/system/src/Grav/Common/Service/StreamsServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Service/TaskServiceProvider.php b/system/src/Grav/Common/Service/TaskServiceProvider.php index 03362534a..9afab59a4 100644 --- a/system/src/Grav/Common/Service/TaskServiceProvider.php +++ b/system/src/Grav/Common/Service/TaskServiceProvider.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Service * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Session.php b/system/src/Grav/Common/Session.php index ee86080cb..6ff080a11 100644 --- a/system/src/Grav/Common/Session.php +++ b/system/src/Grav/Common/Session.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Taxonomy.php b/system/src/Grav/Common/Taxonomy.php index b21c82fa5..de3c4526c 100644 --- a/system/src/Grav/Common/Taxonomy.php +++ b/system/src/Grav/Common/Taxonomy.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Theme.php b/system/src/Grav/Common/Theme.php index d08ab3b67..2b807b611 100644 --- a/system/src/Grav/Common/Theme.php +++ b/system/src/Grav/Common/Theme.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Themes.php b/system/src/Grav/Common/Themes.php index 687ae4232..45bea5e4b 100644 --- a/system/src/Grav/Common/Themes.php +++ b/system/src/Grav/Common/Themes.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeCache.php b/system/src/Grav/Common/Twig/Node/TwigNodeCache.php index 930e597c1..0ed1fff0c 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeCache.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeCache.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeMarkdown.php b/system/src/Grav/Common/Twig/Node/TwigNodeMarkdown.php index 93504c7b5..38194e669 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeMarkdown.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeMarkdown.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeRender.php b/system/src/Grav/Common/Twig/Node/TwigNodeRender.php index 38f67e446..798c6baa6 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeRender.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeRender.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeScript.php b/system/src/Grav/Common/Twig/Node/TwigNodeScript.php index 60bb3cf21..46a08703b 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeScript.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeScript.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeStyle.php b/system/src/Grav/Common/Twig/Node/TwigNodeStyle.php index 87c80dde9..05355f904 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeStyle.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeStyle.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeSwitch.php b/system/src/Grav/Common/Twig/Node/TwigNodeSwitch.php index 535d01cdc..43ae56f18 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeSwitch.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeSwitch.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeThrow.php b/system/src/Grav/Common/Twig/Node/TwigNodeThrow.php index 669af514c..1a32a91a3 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeThrow.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeThrow.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeTryCatch.php b/system/src/Grav/Common/Twig/Node/TwigNodeTryCatch.php index f31a07ce8..da95a1d98 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeTryCatch.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeTryCatch.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserCache.php b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserCache.php index bf00ce86d..371e89ae6 100644 --- a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserCache.php +++ b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserCache.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserMarkdown.php b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserMarkdown.php index 8533e87d3..9dab4ae5c 100644 --- a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserMarkdown.php +++ b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserMarkdown.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserRender.php b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserRender.php index b65126b7c..ab2bdde0f 100644 --- a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserRender.php +++ b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserRender.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserScript.php b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserScript.php index 42c78fb21..b86063165 100644 --- a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserScript.php +++ b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserScript.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserStyle.php b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserStyle.php index 0134491dd..c8d9544ce 100644 --- a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserStyle.php +++ b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserStyle.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserSwitch.php b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserSwitch.php index 24e555e36..4540bbf7e 100644 --- a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserSwitch.php +++ b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserSwitch.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. * @origin https://gist.github.com/maxgalbu/9409182 */ diff --git a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserThrow.php b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserThrow.php index 02fb7c8e2..bd4adab97 100644 --- a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserThrow.php +++ b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserThrow.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserTryCatch.php b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserTryCatch.php index 4cfab55b7..46af1767a 100644 --- a/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserTryCatch.php +++ b/system/src/Grav/Common/Twig/TokenParser/TwigTokenParserTryCatch.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/Twig.php b/system/src/Grav/Common/Twig/Twig.php index 7284fb686..9fa236e5e 100644 --- a/system/src/Grav/Common/Twig/Twig.php +++ b/system/src/Grav/Common/Twig/Twig.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TwigClockworkDataSource.php b/system/src/Grav/Common/Twig/TwigClockworkDataSource.php index b8eb0eea1..11127b87c 100644 --- a/system/src/Grav/Common/Twig/TwigClockworkDataSource.php +++ b/system/src/Grav/Common/Twig/TwigClockworkDataSource.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TwigClockworkDumper.php b/system/src/Grav/Common/Twig/TwigClockworkDumper.php index a63cba81b..2c1f4be02 100644 --- a/system/src/Grav/Common/Twig/TwigClockworkDumper.php +++ b/system/src/Grav/Common/Twig/TwigClockworkDumper.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TwigEnvironment.php b/system/src/Grav/Common/Twig/TwigEnvironment.php index ef4b31e2c..bebbdf16e 100644 --- a/system/src/Grav/Common/Twig/TwigEnvironment.php +++ b/system/src/Grav/Common/Twig/TwigEnvironment.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/TwigExtension.php b/system/src/Grav/Common/Twig/TwigExtension.php index 9996618f9..acea8b648 100644 --- a/system/src/Grav/Common/Twig/TwigExtension.php +++ b/system/src/Grav/Common/Twig/TwigExtension.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Twig/WriteCacheFileTrait.php b/system/src/Grav/Common/Twig/WriteCacheFileTrait.php index 1b7e4797a..edab8e5b8 100644 --- a/system/src/Grav/Common/Twig/WriteCacheFileTrait.php +++ b/system/src/Grav/Common/Twig/WriteCacheFileTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Twig * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Uri.php b/system/src/Grav/Common/Uri.php index ec842b504..dd98b1670 100644 --- a/system/src/Grav/Common/Uri.php +++ b/system/src/Grav/Common/Uri.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/Access.php b/system/src/Grav/Common/User/Access.php index 34766f4a4..6503c891f 100644 --- a/system/src/Grav/Common/User/Access.php +++ b/system/src/Grav/Common/User/Access.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/Authentication.php b/system/src/Grav/Common/User/Authentication.php index db89e9bdf..6ff95e7bf 100644 --- a/system/src/Grav/Common/User/Authentication.php +++ b/system/src/Grav/Common/User/Authentication.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/DataUser/User.php b/system/src/Grav/Common/User/DataUser/User.php index 917e30e3e..6448361d3 100644 --- a/system/src/Grav/Common/User/DataUser/User.php +++ b/system/src/Grav/Common/User/DataUser/User.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/DataUser/UserCollection.php b/system/src/Grav/Common/User/DataUser/UserCollection.php index 5be500155..3da7e2dde 100644 --- a/system/src/Grav/Common/User/DataUser/UserCollection.php +++ b/system/src/Grav/Common/User/DataUser/UserCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/Group.php b/system/src/Grav/Common/User/Group.php index 404385762..5be53869e 100644 --- a/system/src/Grav/Common/User/Group.php +++ b/system/src/Grav/Common/User/Group.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/Interfaces/AuthorizeInterface.php b/system/src/Grav/Common/User/Interfaces/AuthorizeInterface.php index 8f530beac..3ad8d2cc5 100644 --- a/system/src/Grav/Common/User/Interfaces/AuthorizeInterface.php +++ b/system/src/Grav/Common/User/Interfaces/AuthorizeInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/Interfaces/UserCollectionInterface.php b/system/src/Grav/Common/User/Interfaces/UserCollectionInterface.php index e9b99d578..d892e820f 100644 --- a/system/src/Grav/Common/User/Interfaces/UserCollectionInterface.php +++ b/system/src/Grav/Common/User/Interfaces/UserCollectionInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/Interfaces/UserGroupInterface.php b/system/src/Grav/Common/User/Interfaces/UserGroupInterface.php index 56f0f8ae0..c345c4b38 100644 --- a/system/src/Grav/Common/User/Interfaces/UserGroupInterface.php +++ b/system/src/Grav/Common/User/Interfaces/UserGroupInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/Interfaces/UserInterface.php b/system/src/Grav/Common/User/Interfaces/UserInterface.php index c6af3b11d..02827e37c 100644 --- a/system/src/Grav/Common/User/Interfaces/UserInterface.php +++ b/system/src/Grav/Common/User/Interfaces/UserInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/Traits/UserTrait.php b/system/src/Grav/Common/User/Traits/UserTrait.php index 0c71d268a..5a6b74938 100644 --- a/system/src/Grav/Common/User/Traits/UserTrait.php +++ b/system/src/Grav/Common/User/Traits/UserTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/User/User.php b/system/src/Grav/Common/User/User.php index 58d1f7dcf..4b2319fc5 100644 --- a/system/src/Grav/Common/User/User.php +++ b/system/src/Grav/Common/User/User.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\User * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Utils.php b/system/src/Grav/Common/Utils.php index 4e02d5712..592484a12 100644 --- a/system/src/Grav/Common/Utils.php +++ b/system/src/Grav/Common/Utils.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Common/Yaml.php b/system/src/Grav/Common/Yaml.php index f9dde79cb..5adbd0c10 100644 --- a/system/src/Grav/Common/Yaml.php +++ b/system/src/Grav/Common/Yaml.php @@ -3,7 +3,7 @@ /** * @package Grav\Common * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Application/Application.php b/system/src/Grav/Console/Application/Application.php index be4e3c8cd..21cea8730 100644 --- a/system/src/Grav/Console/Application/Application.php +++ b/system/src/Grav/Console/Application/Application.php @@ -3,7 +3,7 @@ /** * @package Grav\Console * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Application/CommandLoader/PluginCommandLoader.php b/system/src/Grav/Console/Application/CommandLoader/PluginCommandLoader.php index bff1e9812..9b7b568d9 100644 --- a/system/src/Grav/Console/Application/CommandLoader/PluginCommandLoader.php +++ b/system/src/Grav/Console/Application/CommandLoader/PluginCommandLoader.php @@ -3,7 +3,7 @@ /** * @package Grav\Console * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Application/GpmApplication.php b/system/src/Grav/Console/Application/GpmApplication.php index 69bb2344f..df383f2d2 100644 --- a/system/src/Grav/Console/Application/GpmApplication.php +++ b/system/src/Grav/Console/Application/GpmApplication.php @@ -3,7 +3,7 @@ /** * @package Grav\Console * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Application/GravApplication.php b/system/src/Grav/Console/Application/GravApplication.php index 45c8b13eb..739ca396b 100644 --- a/system/src/Grav/Console/Application/GravApplication.php +++ b/system/src/Grav/Console/Application/GravApplication.php @@ -3,7 +3,7 @@ /** * @package Grav\Console * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Application/PluginApplication.php b/system/src/Grav/Console/Application/PluginApplication.php index dd23d9301..75e9eb704 100644 --- a/system/src/Grav/Console/Application/PluginApplication.php +++ b/system/src/Grav/Console/Application/PluginApplication.php @@ -3,7 +3,7 @@ /** * @package Grav\Console * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/BackupCommand.php b/system/src/Grav/Console/Cli/BackupCommand.php index 148e0fe88..a8a025d2a 100644 --- a/system/src/Grav/Console/Cli/BackupCommand.php +++ b/system/src/Grav/Console/Cli/BackupCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/CleanCommand.php b/system/src/Grav/Console/Cli/CleanCommand.php index fd4bbdbb2..8aa019ccb 100644 --- a/system/src/Grav/Console/Cli/CleanCommand.php +++ b/system/src/Grav/Console/Cli/CleanCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/ClearCacheCommand.php b/system/src/Grav/Console/Cli/ClearCacheCommand.php index 9a61b0454..daed2a533 100644 --- a/system/src/Grav/Console/Cli/ClearCacheCommand.php +++ b/system/src/Grav/Console/Cli/ClearCacheCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/ComposerCommand.php b/system/src/Grav/Console/Cli/ComposerCommand.php index 99fdf3592..5075d1d0f 100644 --- a/system/src/Grav/Console/Cli/ComposerCommand.php +++ b/system/src/Grav/Console/Cli/ComposerCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/InstallCommand.php b/system/src/Grav/Console/Cli/InstallCommand.php index b75a47fcd..08bc7144e 100644 --- a/system/src/Grav/Console/Cli/InstallCommand.php +++ b/system/src/Grav/Console/Cli/InstallCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/LogViewerCommand.php b/system/src/Grav/Console/Cli/LogViewerCommand.php index 7eecbc20c..d3924f88c 100644 --- a/system/src/Grav/Console/Cli/LogViewerCommand.php +++ b/system/src/Grav/Console/Cli/LogViewerCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/NewProjectCommand.php b/system/src/Grav/Console/Cli/NewProjectCommand.php index d8ba08ce4..d67cb1c8d 100644 --- a/system/src/Grav/Console/Cli/NewProjectCommand.php +++ b/system/src/Grav/Console/Cli/NewProjectCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/PageSystemValidatorCommand.php b/system/src/Grav/Console/Cli/PageSystemValidatorCommand.php index 06abbbdf3..4d234d75d 100644 --- a/system/src/Grav/Console/Cli/PageSystemValidatorCommand.php +++ b/system/src/Grav/Console/Cli/PageSystemValidatorCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/SandboxCommand.php b/system/src/Grav/Console/Cli/SandboxCommand.php index 356e3dc05..d865b4ae7 100644 --- a/system/src/Grav/Console/Cli/SandboxCommand.php +++ b/system/src/Grav/Console/Cli/SandboxCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/SchedulerCommand.php b/system/src/Grav/Console/Cli/SchedulerCommand.php index 87834076f..c5385aad2 100644 --- a/system/src/Grav/Console/Cli/SchedulerCommand.php +++ b/system/src/Grav/Console/Cli/SchedulerCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/SecurityCommand.php b/system/src/Grav/Console/Cli/SecurityCommand.php index 6c68a6a05..7f728b69f 100644 --- a/system/src/Grav/Console/Cli/SecurityCommand.php +++ b/system/src/Grav/Console/Cli/SecurityCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/ServerCommand.php b/system/src/Grav/Console/Cli/ServerCommand.php index 80bbe2a8b..77bce8b1d 100644 --- a/system/src/Grav/Console/Cli/ServerCommand.php +++ b/system/src/Grav/Console/Cli/ServerCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Cli/YamlLinterCommand.php b/system/src/Grav/Console/Cli/YamlLinterCommand.php index db6e573ed..a9628cdd1 100644 --- a/system/src/Grav/Console/Cli/YamlLinterCommand.php +++ b/system/src/Grav/Console/Cli/YamlLinterCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Cli * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/ConsoleCommand.php b/system/src/Grav/Console/ConsoleCommand.php index 6c796321c..044f1b0ff 100644 --- a/system/src/Grav/Console/ConsoleCommand.php +++ b/system/src/Grav/Console/ConsoleCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/ConsoleTrait.php b/system/src/Grav/Console/ConsoleTrait.php index 4c239e912..feb10d32e 100644 --- a/system/src/Grav/Console/ConsoleTrait.php +++ b/system/src/Grav/Console/ConsoleTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Console * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Gpm/DirectInstallCommand.php b/system/src/Grav/Console/Gpm/DirectInstallCommand.php index a79bd6a44..e5c662bcc 100644 --- a/system/src/Grav/Console/Gpm/DirectInstallCommand.php +++ b/system/src/Grav/Console/Gpm/DirectInstallCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Gpm * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Gpm/IndexCommand.php b/system/src/Grav/Console/Gpm/IndexCommand.php index 9f4634410..569b5f7a4 100644 --- a/system/src/Grav/Console/Gpm/IndexCommand.php +++ b/system/src/Grav/Console/Gpm/IndexCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Gpm * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Gpm/InfoCommand.php b/system/src/Grav/Console/Gpm/InfoCommand.php index d7b9e9419..5dddd32b5 100644 --- a/system/src/Grav/Console/Gpm/InfoCommand.php +++ b/system/src/Grav/Console/Gpm/InfoCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Gpm * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Gpm/InstallCommand.php b/system/src/Grav/Console/Gpm/InstallCommand.php index 706013ea5..202427cff 100644 --- a/system/src/Grav/Console/Gpm/InstallCommand.php +++ b/system/src/Grav/Console/Gpm/InstallCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Gpm * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Gpm/SelfupgradeCommand.php b/system/src/Grav/Console/Gpm/SelfupgradeCommand.php index ac8d4d9b6..b84001698 100644 --- a/system/src/Grav/Console/Gpm/SelfupgradeCommand.php +++ b/system/src/Grav/Console/Gpm/SelfupgradeCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Gpm * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Gpm/UninstallCommand.php b/system/src/Grav/Console/Gpm/UninstallCommand.php index 850c28a5b..3470f67dd 100644 --- a/system/src/Grav/Console/Gpm/UninstallCommand.php +++ b/system/src/Grav/Console/Gpm/UninstallCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Gpm * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Gpm/UpdateCommand.php b/system/src/Grav/Console/Gpm/UpdateCommand.php index d5e90a8ee..300fe61d8 100644 --- a/system/src/Grav/Console/Gpm/UpdateCommand.php +++ b/system/src/Grav/Console/Gpm/UpdateCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Gpm * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Gpm/VersionCommand.php b/system/src/Grav/Console/Gpm/VersionCommand.php index 0880dddb8..124aad3c0 100644 --- a/system/src/Grav/Console/Gpm/VersionCommand.php +++ b/system/src/Grav/Console/Gpm/VersionCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Gpm * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/GpmCommand.php b/system/src/Grav/Console/GpmCommand.php index 685049e0d..816e87223 100644 --- a/system/src/Grav/Console/GpmCommand.php +++ b/system/src/Grav/Console/GpmCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/GravCommand.php b/system/src/Grav/Console/GravCommand.php index 4634a1fdb..0249f1427 100644 --- a/system/src/Grav/Console/GravCommand.php +++ b/system/src/Grav/Console/GravCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/Plugin/PluginListCommand.php b/system/src/Grav/Console/Plugin/PluginListCommand.php index df8301e63..81041c0e5 100644 --- a/system/src/Grav/Console/Plugin/PluginListCommand.php +++ b/system/src/Grav/Console/Plugin/PluginListCommand.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\Plugin * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Console/TerminalObjects/Table.php b/system/src/Grav/Console/TerminalObjects/Table.php index bf0ac5280..a71d7c0c8 100644 --- a/system/src/Grav/Console/TerminalObjects/Table.php +++ b/system/src/Grav/Console/TerminalObjects/Table.php @@ -3,7 +3,7 @@ /** * @package Grav\Console\TerminalObjects * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Events/FlexRegisterEvent.php b/system/src/Grav/Events/FlexRegisterEvent.php index ae2c930b6..13aebf386 100644 --- a/system/src/Grav/Events/FlexRegisterEvent.php +++ b/system/src/Grav/Events/FlexRegisterEvent.php @@ -3,7 +3,7 @@ /** * @package Grav\Events * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Events/PermissionsRegisterEvent.php b/system/src/Grav/Events/PermissionsRegisterEvent.php index 5fa1dbcfa..5e63c85ab 100644 --- a/system/src/Grav/Events/PermissionsRegisterEvent.php +++ b/system/src/Grav/Events/PermissionsRegisterEvent.php @@ -3,7 +3,7 @@ /** * @package Grav\Events * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Events/PluginsLoadedEvent.php b/system/src/Grav/Events/PluginsLoadedEvent.php index bd9d70898..9dfd18b4a 100644 --- a/system/src/Grav/Events/PluginsLoadedEvent.php +++ b/system/src/Grav/Events/PluginsLoadedEvent.php @@ -3,7 +3,7 @@ /** * @package Grav\Events * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Events/SessionStartEvent.php b/system/src/Grav/Events/SessionStartEvent.php index aeca40bc7..e724a0922 100644 --- a/system/src/Grav/Events/SessionStartEvent.php +++ b/system/src/Grav/Events/SessionStartEvent.php @@ -3,7 +3,7 @@ /** * @package Grav\Events * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Acl/Access.php b/system/src/Grav/Framework/Acl/Access.php index 1717daa18..ccc22cf1f 100644 --- a/system/src/Grav/Framework/Acl/Access.php +++ b/system/src/Grav/Framework/Acl/Access.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Acl * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Acl/Action.php b/system/src/Grav/Framework/Acl/Action.php index 4bce7c582..1f883a054 100644 --- a/system/src/Grav/Framework/Acl/Action.php +++ b/system/src/Grav/Framework/Acl/Action.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Acl * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Acl/Permissions.php b/system/src/Grav/Framework/Acl/Permissions.php index b9aa5e118..037571675 100644 --- a/system/src/Grav/Framework/Acl/Permissions.php +++ b/system/src/Grav/Framework/Acl/Permissions.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Acl * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Acl/PermissionsReader.php b/system/src/Grav/Framework/Acl/PermissionsReader.php index 8de6df906..2c38afbea 100644 --- a/system/src/Grav/Framework/Acl/PermissionsReader.php +++ b/system/src/Grav/Framework/Acl/PermissionsReader.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Acl * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Acl/RecursiveActionIterator.php b/system/src/Grav/Framework/Acl/RecursiveActionIterator.php index 05574db5b..ac219da38 100644 --- a/system/src/Grav/Framework/Acl/RecursiveActionIterator.php +++ b/system/src/Grav/Framework/Acl/RecursiveActionIterator.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Acl * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/AbstractCache.php b/system/src/Grav/Framework/Cache/AbstractCache.php index 177db0b36..bfb5125ec 100644 --- a/system/src/Grav/Framework/Cache/AbstractCache.php +++ b/system/src/Grav/Framework/Cache/AbstractCache.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/Adapter/ChainCache.php b/system/src/Grav/Framework/Cache/Adapter/ChainCache.php index 0c995f2ab..76f518541 100644 --- a/system/src/Grav/Framework/Cache/Adapter/ChainCache.php +++ b/system/src/Grav/Framework/Cache/Adapter/ChainCache.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/Adapter/DoctrineCache.php b/system/src/Grav/Framework/Cache/Adapter/DoctrineCache.php index b6fcd357f..29e9e3b52 100644 --- a/system/src/Grav/Framework/Cache/Adapter/DoctrineCache.php +++ b/system/src/Grav/Framework/Cache/Adapter/DoctrineCache.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/Adapter/FileCache.php b/system/src/Grav/Framework/Cache/Adapter/FileCache.php index 597f4341e..1995e159d 100644 --- a/system/src/Grav/Framework/Cache/Adapter/FileCache.php +++ b/system/src/Grav/Framework/Cache/Adapter/FileCache.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/Adapter/MemoryCache.php b/system/src/Grav/Framework/Cache/Adapter/MemoryCache.php index f8bb9bdc4..c043bf9e6 100644 --- a/system/src/Grav/Framework/Cache/Adapter/MemoryCache.php +++ b/system/src/Grav/Framework/Cache/Adapter/MemoryCache.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/Adapter/SessionCache.php b/system/src/Grav/Framework/Cache/Adapter/SessionCache.php index 96ceab5b6..e189e3e7e 100644 --- a/system/src/Grav/Framework/Cache/Adapter/SessionCache.php +++ b/system/src/Grav/Framework/Cache/Adapter/SessionCache.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/CacheInterface.php b/system/src/Grav/Framework/Cache/CacheInterface.php index 8b1936674..efd9d3122 100644 --- a/system/src/Grav/Framework/Cache/CacheInterface.php +++ b/system/src/Grav/Framework/Cache/CacheInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/CacheTrait.php b/system/src/Grav/Framework/Cache/CacheTrait.php index dc00712b3..287f92462 100644 --- a/system/src/Grav/Framework/Cache/CacheTrait.php +++ b/system/src/Grav/Framework/Cache/CacheTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/Exception/CacheException.php b/system/src/Grav/Framework/Cache/Exception/CacheException.php index 6a8ab2abe..1db325694 100644 --- a/system/src/Grav/Framework/Cache/Exception/CacheException.php +++ b/system/src/Grav/Framework/Cache/Exception/CacheException.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Cache/Exception/InvalidArgumentException.php b/system/src/Grav/Framework/Cache/Exception/InvalidArgumentException.php index 657f7262c..08a343504 100644 --- a/system/src/Grav/Framework/Cache/Exception/InvalidArgumentException.php +++ b/system/src/Grav/Framework/Cache/Exception/InvalidArgumentException.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Cache * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Collection/AbstractFileCollection.php b/system/src/Grav/Framework/Collection/AbstractFileCollection.php index 82a5c2038..50e90515d 100644 --- a/system/src/Grav/Framework/Collection/AbstractFileCollection.php +++ b/system/src/Grav/Framework/Collection/AbstractFileCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Collection * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Collection/AbstractIndexCollection.php b/system/src/Grav/Framework/Collection/AbstractIndexCollection.php index e3900a5da..190f42279 100644 --- a/system/src/Grav/Framework/Collection/AbstractIndexCollection.php +++ b/system/src/Grav/Framework/Collection/AbstractIndexCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Collection * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Collection/AbstractLazyCollection.php b/system/src/Grav/Framework/Collection/AbstractLazyCollection.php index 90b5048c9..af7ffe182 100644 --- a/system/src/Grav/Framework/Collection/AbstractLazyCollection.php +++ b/system/src/Grav/Framework/Collection/AbstractLazyCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Collection * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Collection/ArrayCollection.php b/system/src/Grav/Framework/Collection/ArrayCollection.php index 78e0dd5ec..474a3fba5 100644 --- a/system/src/Grav/Framework/Collection/ArrayCollection.php +++ b/system/src/Grav/Framework/Collection/ArrayCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Collection * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Collection/CollectionInterface.php b/system/src/Grav/Framework/Collection/CollectionInterface.php index 8273ce718..e024366a4 100644 --- a/system/src/Grav/Framework/Collection/CollectionInterface.php +++ b/system/src/Grav/Framework/Collection/CollectionInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Collection * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Collection/FileCollection.php b/system/src/Grav/Framework/Collection/FileCollection.php index 41ffacfed..5dd8d55b0 100644 --- a/system/src/Grav/Framework/Collection/FileCollection.php +++ b/system/src/Grav/Framework/Collection/FileCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Collection * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Collection/FileCollectionInterface.php b/system/src/Grav/Framework/Collection/FileCollectionInterface.php index b25904982..ce6e18f25 100644 --- a/system/src/Grav/Framework/Collection/FileCollectionInterface.php +++ b/system/src/Grav/Framework/Collection/FileCollectionInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Collection * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Compat/Serializable.php b/system/src/Grav/Framework/Compat/Serializable.php index 35bbfbe59..3c9bf6a08 100644 --- a/system/src/Grav/Framework/Compat/Serializable.php +++ b/system/src/Grav/Framework/Compat/Serializable.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Compat * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/ContentBlock/ContentBlock.php b/system/src/Grav/Framework/ContentBlock/ContentBlock.php index bd6a2484b..efcd5f3fd 100644 --- a/system/src/Grav/Framework/ContentBlock/ContentBlock.php +++ b/system/src/Grav/Framework/ContentBlock/ContentBlock.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\ContentBlock * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/ContentBlock/ContentBlockInterface.php b/system/src/Grav/Framework/ContentBlock/ContentBlockInterface.php index 6af9aa23b..fb445a398 100644 --- a/system/src/Grav/Framework/ContentBlock/ContentBlockInterface.php +++ b/system/src/Grav/Framework/ContentBlock/ContentBlockInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\ContentBlock * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/ContentBlock/HtmlBlock.php b/system/src/Grav/Framework/ContentBlock/HtmlBlock.php index 1853e7c7e..5c5eb4342 100644 --- a/system/src/Grav/Framework/ContentBlock/HtmlBlock.php +++ b/system/src/Grav/Framework/ContentBlock/HtmlBlock.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\ContentBlock * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/ContentBlock/HtmlBlockInterface.php b/system/src/Grav/Framework/ContentBlock/HtmlBlockInterface.php index d9fd16111..616e4a2cc 100644 --- a/system/src/Grav/Framework/ContentBlock/HtmlBlockInterface.php +++ b/system/src/Grav/Framework/ContentBlock/HtmlBlockInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\ContentBlock * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php b/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php index 551301c90..1c9181b6d 100644 --- a/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php +++ b/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Controller * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/DI/Container.php b/system/src/Grav/Framework/DI/Container.php index bd0c336a3..76434a36a 100644 --- a/system/src/Grav/Framework/DI/Container.php +++ b/system/src/Grav/Framework/DI/Container.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\DI * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/AbstractFile.php b/system/src/Grav/Framework/File/AbstractFile.php index 6b53d12c5..b82bb33d2 100644 --- a/system/src/Grav/Framework/File/AbstractFile.php +++ b/system/src/Grav/Framework/File/AbstractFile.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/CsvFile.php b/system/src/Grav/Framework/File/CsvFile.php index 25c0c028b..999f88a52 100644 --- a/system/src/Grav/Framework/File/CsvFile.php +++ b/system/src/Grav/Framework/File/CsvFile.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/DataFile.php b/system/src/Grav/Framework/File/DataFile.php index 8bf4ad500..114146f94 100644 --- a/system/src/Grav/Framework/File/DataFile.php +++ b/system/src/Grav/Framework/File/DataFile.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/File.php b/system/src/Grav/Framework/File/File.php index ce431c41c..1d4055aec 100644 --- a/system/src/Grav/Framework/File/File.php +++ b/system/src/Grav/Framework/File/File.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/Formatter/AbstractFormatter.php b/system/src/Grav/Framework/File/Formatter/AbstractFormatter.php index 49ec9bb92..f5ff3f24a 100644 --- a/system/src/Grav/Framework/File/Formatter/AbstractFormatter.php +++ b/system/src/Grav/Framework/File/Formatter/AbstractFormatter.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File\Formatter * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/Formatter/CsvFormatter.php b/system/src/Grav/Framework/File/Formatter/CsvFormatter.php index 1f7158abb..9d0a9a882 100644 --- a/system/src/Grav/Framework/File/Formatter/CsvFormatter.php +++ b/system/src/Grav/Framework/File/Formatter/CsvFormatter.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File\Formatter * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/Formatter/IniFormatter.php b/system/src/Grav/Framework/File/Formatter/IniFormatter.php index 81b4f84e9..ec169598e 100644 --- a/system/src/Grav/Framework/File/Formatter/IniFormatter.php +++ b/system/src/Grav/Framework/File/Formatter/IniFormatter.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File\Formatter * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/Formatter/JsonFormatter.php b/system/src/Grav/Framework/File/Formatter/JsonFormatter.php index 88899fe07..6b19690c3 100644 --- a/system/src/Grav/Framework/File/Formatter/JsonFormatter.php +++ b/system/src/Grav/Framework/File/Formatter/JsonFormatter.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File\Formatter * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/Formatter/MarkdownFormatter.php b/system/src/Grav/Framework/File/Formatter/MarkdownFormatter.php index 1ab36a277..8a624df55 100644 --- a/system/src/Grav/Framework/File/Formatter/MarkdownFormatter.php +++ b/system/src/Grav/Framework/File/Formatter/MarkdownFormatter.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File\Formatter * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/Formatter/SerializeFormatter.php b/system/src/Grav/Framework/File/Formatter/SerializeFormatter.php index f22eed442..f045d71e3 100644 --- a/system/src/Grav/Framework/File/Formatter/SerializeFormatter.php +++ b/system/src/Grav/Framework/File/Formatter/SerializeFormatter.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File\Formatter * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/Formatter/YamlFormatter.php b/system/src/Grav/Framework/File/Formatter/YamlFormatter.php index 316e7c44e..32d4d296a 100644 --- a/system/src/Grav/Framework/File/Formatter/YamlFormatter.php +++ b/system/src/Grav/Framework/File/Formatter/YamlFormatter.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File\Formatter * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/IniFile.php b/system/src/Grav/Framework/File/IniFile.php index 34c2bd9b5..6cda6096c 100644 --- a/system/src/Grav/Framework/File/IniFile.php +++ b/system/src/Grav/Framework/File/IniFile.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/Interfaces/FileFormatterInterface.php b/system/src/Grav/Framework/File/Interfaces/FileFormatterInterface.php index cce51b288..49eda4f1d 100644 --- a/system/src/Grav/Framework/File/Interfaces/FileFormatterInterface.php +++ b/system/src/Grav/Framework/File/Interfaces/FileFormatterInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/Interfaces/FileInterface.php b/system/src/Grav/Framework/File/Interfaces/FileInterface.php index fb63cee04..015b1ada2 100644 --- a/system/src/Grav/Framework/File/Interfaces/FileInterface.php +++ b/system/src/Grav/Framework/File/Interfaces/FileInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/JsonFile.php b/system/src/Grav/Framework/File/JsonFile.php index 604ce7bc2..f3b0902c8 100644 --- a/system/src/Grav/Framework/File/JsonFile.php +++ b/system/src/Grav/Framework/File/JsonFile.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/MarkdownFile.php b/system/src/Grav/Framework/File/MarkdownFile.php index ddfd8c2ec..4ae3aa0de 100644 --- a/system/src/Grav/Framework/File/MarkdownFile.php +++ b/system/src/Grav/Framework/File/MarkdownFile.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/File/YamlFile.php b/system/src/Grav/Framework/File/YamlFile.php index a10dd8189..29224ce78 100644 --- a/system/src/Grav/Framework/File/YamlFile.php +++ b/system/src/Grav/Framework/File/YamlFile.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\File * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Filesystem/Filesystem.php b/system/src/Grav/Framework/Filesystem/Filesystem.php index ca826390c..9b077d780 100644 --- a/system/src/Grav/Framework/Filesystem/Filesystem.php +++ b/system/src/Grav/Framework/Filesystem/Filesystem.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Filesystem * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Filesystem/Interfaces/FilesystemInterface.php b/system/src/Grav/Framework/Filesystem/Interfaces/FilesystemInterface.php index 130f69628..0e280a837 100644 --- a/system/src/Grav/Framework/Filesystem/Interfaces/FilesystemInterface.php +++ b/system/src/Grav/Framework/Filesystem/Interfaces/FilesystemInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Filesystem * - * @copyright Copyright (C) 2015 - 2018 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Flex.php b/system/src/Grav/Framework/Flex/Flex.php index b1ca46a7a..87392823d 100644 --- a/system/src/Grav/Framework/Flex/Flex.php +++ b/system/src/Grav/Framework/Flex/Flex.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/FlexCollection.php b/system/src/Grav/Framework/Flex/FlexCollection.php index 3c956794c..ee56ba410 100644 --- a/system/src/Grav/Framework/Flex/FlexCollection.php +++ b/system/src/Grav/Framework/Flex/FlexCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/FlexDirectory.php b/system/src/Grav/Framework/Flex/FlexDirectory.php index c8efd2472..093074806 100644 --- a/system/src/Grav/Framework/Flex/FlexDirectory.php +++ b/system/src/Grav/Framework/Flex/FlexDirectory.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/FlexDirectoryForm.php b/system/src/Grav/Framework/Flex/FlexDirectoryForm.php index 4339124e2..ba26b6319 100644 --- a/system/src/Grav/Framework/Flex/FlexDirectoryForm.php +++ b/system/src/Grav/Framework/Flex/FlexDirectoryForm.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/FlexForm.php b/system/src/Grav/Framework/Flex/FlexForm.php index 34fe2dc12..5455abb9a 100644 --- a/system/src/Grav/Framework/Flex/FlexForm.php +++ b/system/src/Grav/Framework/Flex/FlexForm.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/FlexFormFlash.php b/system/src/Grav/Framework/Flex/FlexFormFlash.php index 94c26de3e..feb7a9ee9 100644 --- a/system/src/Grav/Framework/Flex/FlexFormFlash.php +++ b/system/src/Grav/Framework/Flex/FlexFormFlash.php @@ -3,7 +3,7 @@ /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/FlexIndex.php b/system/src/Grav/Framework/Flex/FlexIndex.php index f88defdc3..98f6c8bbb 100644 --- a/system/src/Grav/Framework/Flex/FlexIndex.php +++ b/system/src/Grav/Framework/Flex/FlexIndex.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/FlexObject.php b/system/src/Grav/Framework/Flex/FlexObject.php index f8abb7387..9011745ad 100644 --- a/system/src/Grav/Framework/Flex/FlexObject.php +++ b/system/src/Grav/Framework/Flex/FlexObject.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexAuthorizeInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexAuthorizeInterface.php index 27ab7752c..102dbf4a7 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexAuthorizeInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexAuthorizeInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexCollectionInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexCollectionInterface.php index ff36d0dd2..6fd81feb7 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexCollectionInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexCollectionInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexCommonInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexCommonInterface.php index 333f35a35..ed045e25f 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexCommonInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexCommonInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryFormInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryFormInterface.php index 0e666bbf5..df6f7d6a6 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryFormInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryFormInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php index 47203d90b..752324133 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexFormInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexFormInterface.php index 45d5b3349..9539a154c 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexFormInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexFormInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexIndexInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexIndexInterface.php index ed1c69120..91bf14893 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexIndexInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexIndexInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexInterface.php index b87bf0854..3c5a103d2 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexObjectFormInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexObjectFormInterface.php index eece60ead..044ee612d 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexObjectFormInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexObjectFormInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexObjectInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexObjectInterface.php index 74fb4e165..a1e3e3b92 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexObjectInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexObjectInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexStorageInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexStorageInterface.php index 0dca5ee85..08c433596 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexStorageInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexStorageInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexTranslateInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexTranslateInterface.php index f3652ef29..28e488860 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexTranslateInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexTranslateInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Pages/FlexPageCollection.php b/system/src/Grav/Framework/Flex/Pages/FlexPageCollection.php index 326e8292d..d5532084f 100644 --- a/system/src/Grav/Framework/Flex/Pages/FlexPageCollection.php +++ b/system/src/Grav/Framework/Flex/Pages/FlexPageCollection.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Pages/FlexPageIndex.php b/system/src/Grav/Framework/Flex/Pages/FlexPageIndex.php index 08e6335d5..47a5e066d 100644 --- a/system/src/Grav/Framework/Flex/Pages/FlexPageIndex.php +++ b/system/src/Grav/Framework/Flex/Pages/FlexPageIndex.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php b/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php index d98ad8859..09f9e60ae 100644 --- a/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php +++ b/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageAuthorsTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageAuthorsTrait.php index b775edb4f..d7af40fa9 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageAuthorsTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageAuthorsTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php index f17f27626..fd01d1974 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php index c6a9475d2..bc43a0429 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php index 26b3b607c..75a926046 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageTranslateTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageTranslateTrait.php index a1aa05410..877fec10e 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageTranslateTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageTranslateTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Storage/AbstractFilesystemStorage.php b/system/src/Grav/Framework/Flex/Storage/AbstractFilesystemStorage.php index 45b9a9e46..8f20a45e3 100644 --- a/system/src/Grav/Framework/Flex/Storage/AbstractFilesystemStorage.php +++ b/system/src/Grav/Framework/Flex/Storage/AbstractFilesystemStorage.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Storage/FileStorage.php b/system/src/Grav/Framework/Flex/Storage/FileStorage.php index b854555eb..cecaa5319 100644 --- a/system/src/Grav/Framework/Flex/Storage/FileStorage.php +++ b/system/src/Grav/Framework/Flex/Storage/FileStorage.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Storage/FolderStorage.php b/system/src/Grav/Framework/Flex/Storage/FolderStorage.php index f6da141db..514eeea80 100644 --- a/system/src/Grav/Framework/Flex/Storage/FolderStorage.php +++ b/system/src/Grav/Framework/Flex/Storage/FolderStorage.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Storage/SimpleStorage.php b/system/src/Grav/Framework/Flex/Storage/SimpleStorage.php index ee4393f39..df889ce6d 100644 --- a/system/src/Grav/Framework/Flex/Storage/SimpleStorage.php +++ b/system/src/Grav/Framework/Flex/Storage/SimpleStorage.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Traits/FlexAuthorizeTrait.php b/system/src/Grav/Framework/Flex/Traits/FlexAuthorizeTrait.php index 0e6351b10..8cbd1d542 100644 --- a/system/src/Grav/Framework/Flex/Traits/FlexAuthorizeTrait.php +++ b/system/src/Grav/Framework/Flex/Traits/FlexAuthorizeTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php b/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php index 4277471ab..27ad3f814 100644 --- a/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php +++ b/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php @@ -5,7 +5,7 @@ namespace Grav\Framework\Flex\Traits; /** * @package Grav\Framework\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Flex/Traits/FlexRelatedDirectoryTrait.php b/system/src/Grav/Framework/Flex/Traits/FlexRelatedDirectoryTrait.php index 0adfff75b..9f7380c03 100644 --- a/system/src/Grav/Framework/Flex/Traits/FlexRelatedDirectoryTrait.php +++ b/system/src/Grav/Framework/Flex/Traits/FlexRelatedDirectoryTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Common\Flex * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Form/FormFlash.php b/system/src/Grav/Framework/Form/FormFlash.php index def7e5eaf..00aab2893 100644 --- a/system/src/Grav/Framework/Form/FormFlash.php +++ b/system/src/Grav/Framework/Form/FormFlash.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Form * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Form/FormFlashFile.php b/system/src/Grav/Framework/Form/FormFlashFile.php index 108852c89..dc510e28f 100644 --- a/system/src/Grav/Framework/Form/FormFlashFile.php +++ b/system/src/Grav/Framework/Form/FormFlashFile.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Form * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Form/Interfaces/FormFactoryInterface.php b/system/src/Grav/Framework/Form/Interfaces/FormFactoryInterface.php index edf8e36cc..d21d4aa05 100644 --- a/system/src/Grav/Framework/Form/Interfaces/FormFactoryInterface.php +++ b/system/src/Grav/Framework/Form/Interfaces/FormFactoryInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Form * - * @copyright Copyright (C) 2015 - 2018 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Form/Interfaces/FormFlashInterface.php b/system/src/Grav/Framework/Form/Interfaces/FormFlashInterface.php index 61fd290ac..d51bd8d9e 100644 --- a/system/src/Grav/Framework/Form/Interfaces/FormFlashInterface.php +++ b/system/src/Grav/Framework/Form/Interfaces/FormFlashInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Form * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Form/Interfaces/FormInterface.php b/system/src/Grav/Framework/Form/Interfaces/FormInterface.php index f2d799201..98156469d 100644 --- a/system/src/Grav/Framework/Form/Interfaces/FormInterface.php +++ b/system/src/Grav/Framework/Form/Interfaces/FormInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Form * - * @copyright Copyright (C) 2015 - 2018 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Form/Traits/FormTrait.php b/system/src/Grav/Framework/Form/Traits/FormTrait.php index b5256f8e1..8dfed1983 100644 --- a/system/src/Grav/Framework/Form/Traits/FormTrait.php +++ b/system/src/Grav/Framework/Form/Traits/FormTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Form * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Interfaces/RenderInterface.php b/system/src/Grav/Framework/Interfaces/RenderInterface.php index af3efb543..7a7d9d367 100644 --- a/system/src/Grav/Framework/Interfaces/RenderInterface.php +++ b/system/src/Grav/Framework/Interfaces/RenderInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Interfaces * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Media/Interfaces/MediaCollectionInterface.php b/system/src/Grav/Framework/Media/Interfaces/MediaCollectionInterface.php index 846e368be..a3587d8cb 100644 --- a/system/src/Grav/Framework/Media/Interfaces/MediaCollectionInterface.php +++ b/system/src/Grav/Framework/Media/Interfaces/MediaCollectionInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Media/Interfaces/MediaInterface.php b/system/src/Grav/Framework/Media/Interfaces/MediaInterface.php index 20ecb3efa..2c5a4b374 100644 --- a/system/src/Grav/Framework/Media/Interfaces/MediaInterface.php +++ b/system/src/Grav/Framework/Media/Interfaces/MediaInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Media/Interfaces/MediaManipulationInterface.php b/system/src/Grav/Framework/Media/Interfaces/MediaManipulationInterface.php index 56994ac49..fef475f8b 100644 --- a/system/src/Grav/Framework/Media/Interfaces/MediaManipulationInterface.php +++ b/system/src/Grav/Framework/Media/Interfaces/MediaManipulationInterface.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Media/Interfaces/MediaObjectInterface.php b/system/src/Grav/Framework/Media/Interfaces/MediaObjectInterface.php index e22f2466b..dc7f1481d 100644 --- a/system/src/Grav/Framework/Media/Interfaces/MediaObjectInterface.php +++ b/system/src/Grav/Framework/Media/Interfaces/MediaObjectInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Media * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Access/ArrayAccessTrait.php b/system/src/Grav/Framework/Object/Access/ArrayAccessTrait.php index a76dcc21a..de5cc7aeb 100644 --- a/system/src/Grav/Framework/Object/Access/ArrayAccessTrait.php +++ b/system/src/Grav/Framework/Object/Access/ArrayAccessTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Access/NestedArrayAccessTrait.php b/system/src/Grav/Framework/Object/Access/NestedArrayAccessTrait.php index c8056787c..e0485655c 100644 --- a/system/src/Grav/Framework/Object/Access/NestedArrayAccessTrait.php +++ b/system/src/Grav/Framework/Object/Access/NestedArrayAccessTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Access/NestedPropertyCollectionTrait.php b/system/src/Grav/Framework/Object/Access/NestedPropertyCollectionTrait.php index 96b2811bc..120c1a49d 100644 --- a/system/src/Grav/Framework/Object/Access/NestedPropertyCollectionTrait.php +++ b/system/src/Grav/Framework/Object/Access/NestedPropertyCollectionTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Access/NestedPropertyTrait.php b/system/src/Grav/Framework/Object/Access/NestedPropertyTrait.php index 707359a92..7409f4c9e 100644 --- a/system/src/Grav/Framework/Object/Access/NestedPropertyTrait.php +++ b/system/src/Grav/Framework/Object/Access/NestedPropertyTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Access/OverloadedPropertyTrait.php b/system/src/Grav/Framework/Object/Access/OverloadedPropertyTrait.php index c88591ef1..0f0f89f00 100644 --- a/system/src/Grav/Framework/Object/Access/OverloadedPropertyTrait.php +++ b/system/src/Grav/Framework/Object/Access/OverloadedPropertyTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/ArrayObject.php b/system/src/Grav/Framework/Object/ArrayObject.php index 216421f92..2bbe93781 100644 --- a/system/src/Grav/Framework/Object/ArrayObject.php +++ b/system/src/Grav/Framework/Object/ArrayObject.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Base/ObjectCollectionTrait.php b/system/src/Grav/Framework/Object/Base/ObjectCollectionTrait.php index 81a3a259e..fa0920b88 100644 --- a/system/src/Grav/Framework/Object/Base/ObjectCollectionTrait.php +++ b/system/src/Grav/Framework/Object/Base/ObjectCollectionTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Base/ObjectTrait.php b/system/src/Grav/Framework/Object/Base/ObjectTrait.php index be2957992..d4e324b46 100644 --- a/system/src/Grav/Framework/Object/Base/ObjectTrait.php +++ b/system/src/Grav/Framework/Object/Base/ObjectTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Collection/ObjectExpressionVisitor.php b/system/src/Grav/Framework/Object/Collection/ObjectExpressionVisitor.php index be733b290..d8f152431 100644 --- a/system/src/Grav/Framework/Object/Collection/ObjectExpressionVisitor.php +++ b/system/src/Grav/Framework/Object/Collection/ObjectExpressionVisitor.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Interfaces/NestedObjectCollectionInterface.php b/system/src/Grav/Framework/Object/Interfaces/NestedObjectCollectionInterface.php index 3071d8e51..0e2373eb6 100644 --- a/system/src/Grav/Framework/Object/Interfaces/NestedObjectCollectionInterface.php +++ b/system/src/Grav/Framework/Object/Interfaces/NestedObjectCollectionInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Interfaces/NestedObjectInterface.php b/system/src/Grav/Framework/Object/Interfaces/NestedObjectInterface.php index bc008a2f6..4d7a880be 100644 --- a/system/src/Grav/Framework/Object/Interfaces/NestedObjectInterface.php +++ b/system/src/Grav/Framework/Object/Interfaces/NestedObjectInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Interfaces/ObjectCollectionInterface.php b/system/src/Grav/Framework/Object/Interfaces/ObjectCollectionInterface.php index 8768826eb..3a43981b1 100644 --- a/system/src/Grav/Framework/Object/Interfaces/ObjectCollectionInterface.php +++ b/system/src/Grav/Framework/Object/Interfaces/ObjectCollectionInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Interfaces/ObjectInterface.php b/system/src/Grav/Framework/Object/Interfaces/ObjectInterface.php index be8173169..e8ec2c1e7 100644 --- a/system/src/Grav/Framework/Object/Interfaces/ObjectInterface.php +++ b/system/src/Grav/Framework/Object/Interfaces/ObjectInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/LazyObject.php b/system/src/Grav/Framework/Object/LazyObject.php index 47a105a47..309c0d6f6 100644 --- a/system/src/Grav/Framework/Object/LazyObject.php +++ b/system/src/Grav/Framework/Object/LazyObject.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/ObjectCollection.php b/system/src/Grav/Framework/Object/ObjectCollection.php index 5e3468402..0d82434a1 100644 --- a/system/src/Grav/Framework/Object/ObjectCollection.php +++ b/system/src/Grav/Framework/Object/ObjectCollection.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/ObjectIndex.php b/system/src/Grav/Framework/Object/ObjectIndex.php index 3d4423900..2c13765bc 100644 --- a/system/src/Grav/Framework/Object/ObjectIndex.php +++ b/system/src/Grav/Framework/Object/ObjectIndex.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Property/ArrayPropertyTrait.php b/system/src/Grav/Framework/Object/Property/ArrayPropertyTrait.php index df8e3c713..fa3fed1d3 100644 --- a/system/src/Grav/Framework/Object/Property/ArrayPropertyTrait.php +++ b/system/src/Grav/Framework/Object/Property/ArrayPropertyTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Property/LazyPropertyTrait.php b/system/src/Grav/Framework/Object/Property/LazyPropertyTrait.php index 7d5b90cd9..d5baddbee 100644 --- a/system/src/Grav/Framework/Object/Property/LazyPropertyTrait.php +++ b/system/src/Grav/Framework/Object/Property/LazyPropertyTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Property/MixedPropertyTrait.php b/system/src/Grav/Framework/Object/Property/MixedPropertyTrait.php index eb2e791c5..584e812f3 100644 --- a/system/src/Grav/Framework/Object/Property/MixedPropertyTrait.php +++ b/system/src/Grav/Framework/Object/Property/MixedPropertyTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/Property/ObjectPropertyTrait.php b/system/src/Grav/Framework/Object/Property/ObjectPropertyTrait.php index a397392e0..435220a19 100644 --- a/system/src/Grav/Framework/Object/Property/ObjectPropertyTrait.php +++ b/system/src/Grav/Framework/Object/Property/ObjectPropertyTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Object/PropertyObject.php b/system/src/Grav/Framework/Object/PropertyObject.php index c05414dac..dbeb5c432 100644 --- a/system/src/Grav/Framework/Object/PropertyObject.php +++ b/system/src/Grav/Framework/Object/PropertyObject.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Object * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Pagination/AbstractPagination.php b/system/src/Grav/Framework/Pagination/AbstractPagination.php index e98027ecd..49e7fe455 100644 --- a/system/src/Grav/Framework/Pagination/AbstractPagination.php +++ b/system/src/Grav/Framework/Pagination/AbstractPagination.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Pagination * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Pagination/AbstractPaginationPage.php b/system/src/Grav/Framework/Pagination/AbstractPaginationPage.php index e66cf8576..95ff8af35 100644 --- a/system/src/Grav/Framework/Pagination/AbstractPaginationPage.php +++ b/system/src/Grav/Framework/Pagination/AbstractPaginationPage.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Pagination * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Pagination/Interfaces/PaginationInterface.php b/system/src/Grav/Framework/Pagination/Interfaces/PaginationInterface.php index 184ec4b7f..56d336195 100644 --- a/system/src/Grav/Framework/Pagination/Interfaces/PaginationInterface.php +++ b/system/src/Grav/Framework/Pagination/Interfaces/PaginationInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Pagination * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Pagination/Interfaces/PaginationPageInterface.php b/system/src/Grav/Framework/Pagination/Interfaces/PaginationPageInterface.php index ca9014315..b90594d71 100644 --- a/system/src/Grav/Framework/Pagination/Interfaces/PaginationPageInterface.php +++ b/system/src/Grav/Framework/Pagination/Interfaces/PaginationPageInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Pagination * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Pagination/Pagination.php b/system/src/Grav/Framework/Pagination/Pagination.php index e58527725..e602872d1 100644 --- a/system/src/Grav/Framework/Pagination/Pagination.php +++ b/system/src/Grav/Framework/Pagination/Pagination.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Pagination * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Pagination/PaginationPage.php b/system/src/Grav/Framework/Pagination/PaginationPage.php index 27fadd2ac..63ceb5f63 100644 --- a/system/src/Grav/Framework/Pagination/PaginationPage.php +++ b/system/src/Grav/Framework/Pagination/PaginationPage.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Pagination * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/AbstractUri.php b/system/src/Grav/Framework/Psr7/AbstractUri.php index 5e8797c61..85d802f64 100644 --- a/system/src/Grav/Framework/Psr7/AbstractUri.php +++ b/system/src/Grav/Framework/Psr7/AbstractUri.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Request.php b/system/src/Grav/Framework/Psr7/Request.php index b92c0d434..cd65fd98f 100644 --- a/system/src/Grav/Framework/Psr7/Request.php +++ b/system/src/Grav/Framework/Psr7/Request.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Response.php b/system/src/Grav/Framework/Psr7/Response.php index 737fe788c..6cb67e0e8 100644 --- a/system/src/Grav/Framework/Psr7/Response.php +++ b/system/src/Grav/Framework/Psr7/Response.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/ServerRequest.php b/system/src/Grav/Framework/Psr7/ServerRequest.php index de29a150c..40848345b 100644 --- a/system/src/Grav/Framework/Psr7/ServerRequest.php +++ b/system/src/Grav/Framework/Psr7/ServerRequest.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Stream.php b/system/src/Grav/Framework/Psr7/Stream.php index c27191d4e..a5a104363 100644 --- a/system/src/Grav/Framework/Psr7/Stream.php +++ b/system/src/Grav/Framework/Psr7/Stream.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Traits/MessageDecoratorTrait.php b/system/src/Grav/Framework/Psr7/Traits/MessageDecoratorTrait.php index 17310b92e..39e3818ce 100644 --- a/system/src/Grav/Framework/Psr7/Traits/MessageDecoratorTrait.php +++ b/system/src/Grav/Framework/Psr7/Traits/MessageDecoratorTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Traits/RequestDecoratorTrait.php b/system/src/Grav/Framework/Psr7/Traits/RequestDecoratorTrait.php index b8425509d..13f4c6fd8 100644 --- a/system/src/Grav/Framework/Psr7/Traits/RequestDecoratorTrait.php +++ b/system/src/Grav/Framework/Psr7/Traits/RequestDecoratorTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Traits/ResponseDecoratorTrait.php b/system/src/Grav/Framework/Psr7/Traits/ResponseDecoratorTrait.php index 5a8e1d133..7b62c3c05 100644 --- a/system/src/Grav/Framework/Psr7/Traits/ResponseDecoratorTrait.php +++ b/system/src/Grav/Framework/Psr7/Traits/ResponseDecoratorTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Traits/ServerRequestDecoratorTrait.php b/system/src/Grav/Framework/Psr7/Traits/ServerRequestDecoratorTrait.php index 1d92ce9a4..33c26e0c7 100644 --- a/system/src/Grav/Framework/Psr7/Traits/ServerRequestDecoratorTrait.php +++ b/system/src/Grav/Framework/Psr7/Traits/ServerRequestDecoratorTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Traits/StreamDecoratorTrait.php b/system/src/Grav/Framework/Psr7/Traits/StreamDecoratorTrait.php index d08375924..db1e746d4 100644 --- a/system/src/Grav/Framework/Psr7/Traits/StreamDecoratorTrait.php +++ b/system/src/Grav/Framework/Psr7/Traits/StreamDecoratorTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Traits/UploadedFileDecoratorTrait.php b/system/src/Grav/Framework/Psr7/Traits/UploadedFileDecoratorTrait.php index acb6aa66e..e0c65bddd 100644 --- a/system/src/Grav/Framework/Psr7/Traits/UploadedFileDecoratorTrait.php +++ b/system/src/Grav/Framework/Psr7/Traits/UploadedFileDecoratorTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Traits/UriDecorationTrait.php b/system/src/Grav/Framework/Psr7/Traits/UriDecorationTrait.php index 6f61fb338..607d7571f 100644 --- a/system/src/Grav/Framework/Psr7/Traits/UriDecorationTrait.php +++ b/system/src/Grav/Framework/Psr7/Traits/UriDecorationTrait.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/UploadedFile.php b/system/src/Grav/Framework/Psr7/UploadedFile.php index d058f9a72..f13674228 100644 --- a/system/src/Grav/Framework/Psr7/UploadedFile.php +++ b/system/src/Grav/Framework/Psr7/UploadedFile.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Psr7/Uri.php b/system/src/Grav/Framework/Psr7/Uri.php index 95cafc751..c920b3373 100644 --- a/system/src/Grav/Framework/Psr7/Uri.php +++ b/system/src/Grav/Framework/Psr7/Uri.php @@ -5,7 +5,7 @@ declare(strict_types=1); /** * @package Grav\Framework\Psr7 * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/RequestHandler/Exception/InvalidArgumentException.php b/system/src/Grav/Framework/RequestHandler/Exception/InvalidArgumentException.php index 3ff8f2eed..451e58642 100644 --- a/system/src/Grav/Framework/RequestHandler/Exception/InvalidArgumentException.php +++ b/system/src/Grav/Framework/RequestHandler/Exception/InvalidArgumentException.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\RequestHandler * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/RequestHandler/Exception/NotFoundException.php b/system/src/Grav/Framework/RequestHandler/Exception/NotFoundException.php index 42eaa0ed1..28a226a4e 100644 --- a/system/src/Grav/Framework/RequestHandler/Exception/NotFoundException.php +++ b/system/src/Grav/Framework/RequestHandler/Exception/NotFoundException.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\RequestHandler * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/RequestHandler/Exception/NotHandledException.php b/system/src/Grav/Framework/RequestHandler/Exception/NotHandledException.php index 8817ce594..1b18473f5 100644 --- a/system/src/Grav/Framework/RequestHandler/Exception/NotHandledException.php +++ b/system/src/Grav/Framework/RequestHandler/Exception/NotHandledException.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\RequestHandler * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/RequestHandler/Exception/PageExpiredException.php b/system/src/Grav/Framework/RequestHandler/Exception/PageExpiredException.php index ab56ba1b7..747c0ca5a 100644 --- a/system/src/Grav/Framework/RequestHandler/Exception/PageExpiredException.php +++ b/system/src/Grav/Framework/RequestHandler/Exception/PageExpiredException.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\RequestHandler * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/RequestHandler/Exception/RequestException.php b/system/src/Grav/Framework/RequestHandler/Exception/RequestException.php index 2ae31010f..60799644f 100644 --- a/system/src/Grav/Framework/RequestHandler/Exception/RequestException.php +++ b/system/src/Grav/Framework/RequestHandler/Exception/RequestException.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\RequestHandler * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/RequestHandler/Middlewares/Exceptions.php b/system/src/Grav/Framework/RequestHandler/Middlewares/Exceptions.php index dba0b4315..a9935eeb0 100644 --- a/system/src/Grav/Framework/RequestHandler/Middlewares/Exceptions.php +++ b/system/src/Grav/Framework/RequestHandler/Middlewares/Exceptions.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\RequestHandler * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/RequestHandler/RequestHandler.php b/system/src/Grav/Framework/RequestHandler/RequestHandler.php index 97d5c0c89..5b0380583 100644 --- a/system/src/Grav/Framework/RequestHandler/RequestHandler.php +++ b/system/src/Grav/Framework/RequestHandler/RequestHandler.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\RequestHandler * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/RequestHandler/Traits/RequestHandlerTrait.php b/system/src/Grav/Framework/RequestHandler/Traits/RequestHandlerTrait.php index e8905859e..1b5a79e8d 100644 --- a/system/src/Grav/Framework/RequestHandler/Traits/RequestHandlerTrait.php +++ b/system/src/Grav/Framework/RequestHandler/Traits/RequestHandlerTrait.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\RequestHandler * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Route/Route.php b/system/src/Grav/Framework/Route/Route.php index d7554b73e..f9a7fa722 100644 --- a/system/src/Grav/Framework/Route/Route.php +++ b/system/src/Grav/Framework/Route/Route.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Route * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Route/RouteFactory.php b/system/src/Grav/Framework/Route/RouteFactory.php index 9d8213c77..68baf55b6 100644 --- a/system/src/Grav/Framework/Route/RouteFactory.php +++ b/system/src/Grav/Framework/Route/RouteFactory.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Route * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Session/Exceptions/SessionException.php b/system/src/Grav/Framework/Session/Exceptions/SessionException.php index f24df0a79..5ad948b67 100644 --- a/system/src/Grav/Framework/Session/Exceptions/SessionException.php +++ b/system/src/Grav/Framework/Session/Exceptions/SessionException.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Session * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Session/Messages.php b/system/src/Grav/Framework/Session/Messages.php index 83d8c8f18..5d854a218 100644 --- a/system/src/Grav/Framework/Session/Messages.php +++ b/system/src/Grav/Framework/Session/Messages.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Session * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Session/Session.php b/system/src/Grav/Framework/Session/Session.php index 5b656e9ce..8ddba0f8a 100644 --- a/system/src/Grav/Framework/Session/Session.php +++ b/system/src/Grav/Framework/Session/Session.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Session * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Session/SessionInterface.php b/system/src/Grav/Framework/Session/SessionInterface.php index 91ca9ce28..43ca40fd9 100644 --- a/system/src/Grav/Framework/Session/SessionInterface.php +++ b/system/src/Grav/Framework/Session/SessionInterface.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Session * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Uri/Uri.php b/system/src/Grav/Framework/Uri/Uri.php index 1ec86c6f1..c43496ea9 100644 --- a/system/src/Grav/Framework/Uri/Uri.php +++ b/system/src/Grav/Framework/Uri/Uri.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Uri * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Uri/UriFactory.php b/system/src/Grav/Framework/Uri/UriFactory.php index 237aa0aa6..f7724b78d 100644 --- a/system/src/Grav/Framework/Uri/UriFactory.php +++ b/system/src/Grav/Framework/Uri/UriFactory.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Uri * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Framework/Uri/UriPartsFilter.php b/system/src/Grav/Framework/Uri/UriPartsFilter.php index 4761f2da7..71a5135d6 100644 --- a/system/src/Grav/Framework/Uri/UriPartsFilter.php +++ b/system/src/Grav/Framework/Uri/UriPartsFilter.php @@ -3,7 +3,7 @@ /** * @package Grav\Framework\Uri * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Installer/Install.php b/system/src/Grav/Installer/Install.php index d10427489..def3446dc 100644 --- a/system/src/Grav/Installer/Install.php +++ b/system/src/Grav/Installer/Install.php @@ -3,7 +3,7 @@ /** * @package Grav\Installer * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Installer/InstallException.php b/system/src/Grav/Installer/InstallException.php index 4471107d9..145b7c9cc 100644 --- a/system/src/Grav/Installer/InstallException.php +++ b/system/src/Grav/Installer/InstallException.php @@ -3,7 +3,7 @@ /** * @package Grav\Installer * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Installer/Versions.php b/system/src/Grav/Installer/Versions.php index c66b344f8..cc2687504 100644 --- a/system/src/Grav/Installer/Versions.php +++ b/system/src/Grav/Installer/Versions.php @@ -3,7 +3,7 @@ /** * @package Grav\Installer * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/system/src/Grav/Installer/YamlUpdater.php b/system/src/Grav/Installer/YamlUpdater.php index 0747854d2..9af20558f 100644 --- a/system/src/Grav/Installer/YamlUpdater.php +++ b/system/src/Grav/Installer/YamlUpdater.php @@ -3,7 +3,7 @@ /** * @package Grav\Installer * - * @copyright Copyright (C) 2015 - 2020 Trilby Media, LLC. All rights reserved. + * @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. * @license MIT License; see LICENSE file for details. */ diff --git a/tmp/.gitkeep b/tmp/.gitkeep index e69de29bb..33a9aed71 100644 --- a/tmp/.gitkeep +++ b/tmp/.gitkeep @@ -0,0 +1 @@ +/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ diff --git a/user/accounts/.gitkeep b/user/accounts/.gitkeep index e69de29bb..33a9aed71 100644 --- a/user/accounts/.gitkeep +++ b/user/accounts/.gitkeep @@ -0,0 +1 @@ +/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ diff --git a/user/data/.gitkeep b/user/data/.gitkeep index e69de29bb..33a9aed71 100644 --- a/user/data/.gitkeep +++ b/user/data/.gitkeep @@ -0,0 +1 @@ +/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ diff --git a/user/plugins/.gitkeep b/user/plugins/.gitkeep index e69de29bb..33a9aed71 100644 --- a/user/plugins/.gitkeep +++ b/user/plugins/.gitkeep @@ -0,0 +1 @@ +/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ diff --git a/user/themes/.gitkeep b/user/themes/.gitkeep index e69de29bb..33a9aed71 100644 --- a/user/themes/.gitkeep +++ b/user/themes/.gitkeep @@ -0,0 +1 @@ +/* @copyright Copyright (c) 2015 - 2021 Trilby Media, LLC. All rights reserved. */ From 830fa40bb7d03ae1880db4dbb248dac4047530be Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Fri, 5 Feb 2021 15:19:47 +0200 Subject: [PATCH 20/66] Fixed `Flex Pages` using only default language in frontend --- CHANGELOG.md | 1 + system/src/Grav/Common/Page/Pages.php | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 073b9b3be..aa75e25ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ 1. [](#bugfix) * Fixed CLI progressbar in `backup` and `security` commands to use styled output [#3198](https://github.com/getgrav/grav/issues/3198) * Fixed page save failing because of uploaded images [#3191](https://github.com/getgrav/grav/issues/3191) + * Fixed `Flex Pages` using only default language in frontend [#106](https://github.com/trilbymedia/grav-plugin-flex-objects/issues/106) # v1.7.5 ## 02/01/2021 diff --git a/system/src/Grav/Common/Page/Pages.php b/system/src/Grav/Common/Page/Pages.php index 8b409d76d..dadaf7144 100644 --- a/system/src/Grav/Common/Page/Pages.php +++ b/system/src/Grav/Common/Page/Pages.php @@ -759,6 +759,12 @@ class Pages $instance = $this->index[$path] ?? null; if (is_string($instance)) { + /** @var Language $language */ + $language = $this->grav['language']; + $lang = $language->getActive(); + if ($lang) { + $instance .= ':' . $lang; + } $instance = $this->directory ? $this->directory->getObject($instance, 'flex_key') : null; if ($instance) { if ($this->fire_events && method_exists($instance, 'initialize')) { From 1292f40710ef862d3088a23bbe878caf26becede Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Fri, 5 Feb 2021 19:44:05 +0200 Subject: [PATCH 21/66] Improved session fixation handling in PHP 7.4+ (cannot fix it in PHP 7.3 due to PHP bug) --- CHANGELOG.md | 1 + system/src/Grav/Framework/Session/Session.php | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa75e25ac..a7bc3e517 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ 1. [](#improved) * Added abstract `FlexObject`, `FlexCollection` and `FlexIndex` classes to `\Grav\Common\Flex` namespace (extend those instead of Framework or Generic classes) * Updated bundled `composer.phar` binary to latest version `2.0.9` + * Improved session fixation handling in PHP 7.4+ (cannot fix it in PHP 7.3 due to PHP bug) 1. [](#bugfix) * Fixed CLI progressbar in `backup` and `security` commands to use styled output [#3198](https://github.com/getgrav/grav/issues/3198) * Fixed page save failing because of uploaded images [#3191](https://github.com/getgrav/grav/issues/3191) diff --git a/system/src/Grav/Framework/Session/Session.php b/system/src/Grav/Framework/Session/Session.php index 8ddba0f8a..0bec753ff 100644 --- a/system/src/Grav/Framework/Session/Session.php +++ b/system/src/Grav/Framework/Session/Session.php @@ -281,16 +281,22 @@ class Session implements SessionInterface return $this; } - // TODO: session_create_id() segfaults in PHP 7.3 (PHP bug #73461), remove phpstan rule when fixing this one. - $newId = 0; // session_create_id(); + // TODO: session_create_id() segfaults in PHP 7.3 (PHP bug #73461), remove phpstan rule when removing this one. + if (PHP_VERSION_ID < 70400) { + $newId = 0; + } else { + $newId = session_create_id(); + } // Set destroyed timestamp for the old session as well as pointer to the new id. $this->__set('session_destroyed', time()); $this->__set('session_new_id', $newId); // Keep the old session alive to avoid lost sessions by unstable network. - // TODO: remove session_regenerate_id() and use session_create_id() from above when not in PHP 7.3 (PHP bug #73461). - session_regenerate_id(false); + // TODO: remove check when PHP 7.3 isn't supported anymore (the same PHP bug #73461). + if (PHP_VERSION_ID < 70400) { + session_regenerate_id(false); + } session_write_close(); // Start session with new session id. From 7d6ed94e2dd6cbd5c41ac08e1f0f50fc4f835a18 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Fri, 5 Feb 2021 20:07:23 +0200 Subject: [PATCH 22/66] Improved session fixation handling in PHP 7.4+ (better version) --- system/src/Grav/Framework/Session/Session.php | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/system/src/Grav/Framework/Session/Session.php b/system/src/Grav/Framework/Session/Session.php index 0bec753ff..21e4d6378 100644 --- a/system/src/Grav/Framework/Session/Session.php +++ b/system/src/Grav/Framework/Session/Session.php @@ -216,7 +216,7 @@ class Session implements SessionInterface // Should not happen usually. This could be attack or due to unstable network. Destroy this session. $this->invalidate(); - throw new RuntimeException('Your session was destroyed.', 500); + throw new RuntimeException('Obsolete session access.', 500); } // Not fully expired yet. Could be lost cookie by unstable network. Start session with new session id. @@ -293,14 +293,12 @@ class Session implements SessionInterface $this->__set('session_new_id', $newId); // Keep the old session alive to avoid lost sessions by unstable network. - // TODO: remove check when PHP 7.3 isn't supported anymore (the same PHP bug #73461). - if (PHP_VERSION_ID < 70400) { + if (!$newId) { session_regenerate_id(false); - } - session_write_close(); + } else { + session_write_close(); - // Start session with new session id. - if ($newId) { + // Start session with new session id. $useStrictMode = $this->options['use_strict_mode'] ?? 0; if ($useStrictMode) { ini_set('session.use_strict_mode', '0'); @@ -309,8 +307,9 @@ class Session implements SessionInterface if ($useStrictMode) { ini_set('session.use_strict_mode', '1'); } + + session_start(); } - session_start(); // New session does not have these. $this->__unset('session_destroyed'); From 09f5c0ffc1fbe4c9f8770eef47023135b0dc7382 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Fri, 5 Feb 2021 20:12:51 +0200 Subject: [PATCH 23/66] Improved session fixation handling in PHP 7.4+ (handle unsupported id change) --- system/src/Grav/Framework/Session/Session.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/system/src/Grav/Framework/Session/Session.php b/system/src/Grav/Framework/Session/Session.php index 21e4d6378..e848fc05f 100644 --- a/system/src/Grav/Framework/Session/Session.php +++ b/system/src/Grav/Framework/Session/Session.php @@ -11,6 +11,8 @@ namespace Grav\Framework\Session; use ArrayIterator; use Exception; +use Grav\Common\Debugger; +use Grav\Common\Grav; use Grav\Common\User\Interfaces\UserInterface; use Grav\Framework\Session\Exceptions\SessionException; use RuntimeException; @@ -285,7 +287,8 @@ class Session implements SessionInterface if (PHP_VERSION_ID < 70400) { $newId = 0; } else { - $newId = session_create_id(); + // Session id creation may fail with some session storages. + $newId = @session_create_id() ?: 0; } // Set destroyed timestamp for the old session as well as pointer to the new id. @@ -294,6 +297,10 @@ class Session implements SessionInterface // Keep the old session alive to avoid lost sessions by unstable network. if (!$newId) { + /** @var Debugger $debugger */ + $debugger = Grav::instance()['debugger']; + $debugger->addMessage('Session fixation lost session detection is turned of due to server limitations.', 'warning'); + session_regenerate_id(false); } else { session_write_close(); From 322d3108432f43178730b2e5a8220d1565bdf8da Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Fri, 5 Feb 2021 21:28:52 +0200 Subject: [PATCH 24/66] Improved session fixation handling in PHP 7.4+ (use only one cookie) --- system/src/Grav/Framework/Session/Session.php | 95 +++++++++++++++---- 1 file changed, 78 insertions(+), 17 deletions(-) diff --git a/system/src/Grav/Framework/Session/Session.php b/system/src/Grav/Framework/Session/Session.php index e848fc05f..132e305e2 100644 --- a/system/src/Grav/Framework/Session/Session.php +++ b/system/src/Grav/Framework/Session/Session.php @@ -30,6 +30,7 @@ class Session implements SessionInterface protected $options = []; /** @var bool */ protected $started = false; + /** @var Session */ protected static $instance; @@ -223,7 +224,17 @@ class Session implements SessionInterface // Not fully expired yet. Could be lost cookie by unstable network. Start session with new session id. session_write_close(); + + // Start session with new session id. + $useStrictMode = $options['use_strict_mode'] ?? 0; + if ($useStrictMode) { + ini_set('session.use_strict_mode', '0'); + } session_id($newId); + if ($useStrictMode) { + ini_set('session.use_strict_mode', '1'); + } + $success = @session_start($options); if (!$success) { $last = error_get_last(); @@ -248,22 +259,7 @@ class Session implements SessionInterface // Extend the lifetime of the session. if ($sessionExists) { - $params = session_get_cookie_params(); - - $cookie_options = array ( - 'expires' => time() + $params['lifetime'], - 'path' => $params['path'], - 'domain' => $params['domain'], - 'secure' => $params['secure'], - 'httponly' => $params['httponly'], - 'samesite' => $params['samesite'] - ); - - setcookie( - $sessionName, - session_id(), - $cookie_options - ); + $this->setCookie(); } return $this; @@ -315,7 +311,17 @@ class Session implements SessionInterface ini_set('session.use_strict_mode', '1'); } - session_start(); + $this->removeCookie(); + + $success = @session_start($this->options); + if (!$success) { + $last = error_get_last(); + $error = $last ? $last['message'] : 'Unknown error'; + + throw new RuntimeException($error); + } + + $this->onSessionStart(); } // New session does not have these. @@ -454,6 +460,61 @@ class Session implements SessionInterface { } + /** + * @return void + */ + protected function setCookie(): void + { + $params = session_get_cookie_params(); + + $cookie_options = array ( + 'expires' => time() + $params['lifetime'], + 'path' => $params['path'], + 'domain' => $params['domain'], + 'secure' => $params['secure'], + 'httponly' => $params['httponly'], + 'samesite' => $params['samesite'] + ); + + $this->removeCookie(); + + setcookie( + session_name(), + session_id(), + $cookie_options + ); + } + + protected function removeCookie(): void + { + $search = " {$this->getName()}="; + $cookies = []; + $found = false; + + foreach (headers_list() as $header) { + // Identify cookie headers + if (strpos($header, 'Set-Cookie:') === 0) { + // Add all but session cookie(s). + if (!str_contains($header, $search)) { + $cookies[] = $header; + } else { + $found = true; + } + } + } + + // Nothing to do. + if (false === $found) { + return; + } + + // Remove all cookies and put back all but session cookie. + header_remove('Set-Cookie'); + foreach($cookies as $cookie) { + header($cookie, false); + } + } + /** * @param string $key * @param mixed $value From c3ebd529c10cd3e4f07cd22f84d399dd36edac84 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Fri, 5 Feb 2021 21:38:11 +0200 Subject: [PATCH 25/66] Improved session fixation handling in PHP 7.4+ (cookie fix for invalidate) --- system/src/Grav/Framework/Session/Session.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/system/src/Grav/Framework/Session/Session.php b/system/src/Grav/Framework/Session/Session.php index 132e305e2..ddab08d75 100644 --- a/system/src/Grav/Framework/Session/Session.php +++ b/system/src/Grav/Framework/Session/Session.php @@ -349,6 +349,8 @@ class Session implements SessionInterface 'samesite' => $params['samesite'] ); + $this->removeCookie(); + setcookie( session_name(), '', From 51cc9cd13e309b5e21e53675d4def2057f33a4bf Mon Sep 17 00:00:00 2001 From: travis00001 <78240096+travis00001@users.noreply.github.com> Date: Sat, 6 Feb 2021 15:35:50 -0500 Subject: [PATCH 26/66] Support selecting Redis database ID (#3208) --- system/src/Grav/Common/Cache.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/system/src/Grav/Common/Cache.php b/system/src/Grav/Common/Cache.php index dea370ff6..24f1d4010 100644 --- a/system/src/Grav/Common/Cache.php +++ b/system/src/Grav/Common/Cache.php @@ -296,6 +296,7 @@ class Cache extends Getters $redis = new \Redis(); $socket = $this->config->get('system.cache.redis.socket', false); $password = $this->config->get('system.cache.redis.password', false); + $databaseId = $this->config->get('system.cache.redis.database', 0); if ($socket) { $redis->connect($socket); @@ -310,6 +311,11 @@ class Cache extends Getters if ($password && !$redis->auth($password)) { throw new \RedisException('Redis authentication failed'); } + + // Select alternate ( !=0 ) database ID if set + if ($databaseId && !$redis->select($databaseId)) { + throw new \RedisException('Could not select alternate Redis database ID'); + } $driver = new DoctrineCache\RedisCache(); $driver->setRedis($redis); From aa8778a0fbfebbab07ee35a23ee043b9a6ef9222 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Sat, 6 Feb 2021 14:39:21 -0700 Subject: [PATCH 27/66] added optional password/database attributes --- CHANGELOG.md | 1 + system/config/system.yaml | 2 ++ 2 files changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a7bc3e517..cde9a0700 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * Added abstract `FlexObject`, `FlexCollection` and `FlexIndex` classes to `\Grav\Common\Flex` namespace (extend those instead of Framework or Generic classes) * Updated bundled `composer.phar` binary to latest version `2.0.9` * Improved session fixation handling in PHP 7.4+ (cannot fix it in PHP 7.3 due to PHP bug) + * Added optional password/database attributes for redis in `system.yaml` 1. [](#bugfix) * Fixed CLI progressbar in `backup` and `security` commands to use styled output [#3198](https://github.com/getgrav/grav/issues/3198) * Fixed page save failing because of uploaded images [#3191](https://github.com/getgrav/grav/issues/3191) diff --git a/system/config/system.yaml b/system/config/system.yaml index 46398e1a0..99e74ca68 100644 --- a/system/config/system.yaml +++ b/system/config/system.yaml @@ -103,6 +103,8 @@ cache: allow_webserver_gzip: false # If true, `content-encoding: identity` but connection isn't closed before `onShutDown()` event redis: socket: false # Path to redis unix socket (e.g. /var/run/redis/redis.sock), false = use server and port to connect + password: # Optional password + database: # Optional database ID twig: cache: true # Set to true to enable Twig caching From 3d73e9205865c7db3955ba6d9e24cdc5c08d34b4 Mon Sep 17 00:00:00 2001 From: travis00001 <78240096+travis00001@users.noreply.github.com> Date: Sun, 7 Feb 2021 12:34:10 -0500 Subject: [PATCH 28/66] update system blueprint to include Redis Database ID (#3209) --- system/blueprints/config/system.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/system/blueprints/config/system.yaml b/system/blueprints/config/system.yaml index 9fa9f0194..2fb45a136 100644 --- a/system/blueprints/config/system.yaml +++ b/system/blueprints/config/system.yaml @@ -741,6 +741,16 @@ form: size: small label: PLUGIN_ADMIN.REDIS_PASSWORD + cache.redis.database: + type: text + size: medium + label: PLUGIN_ADMIN.REDIS_DATABASE + help: PLUGIN_ADMIN.REDIS_DATABASE_HELP + placeholder: "0" + validate: + type: number + min: 0 + flex_caching: type: section title: PLUGIN_ADMIN.FLEX_CACHING From d91e91128c3ed30fe60d66b60c0fc02264c2c0aa Mon Sep 17 00:00:00 2001 From: Djamil Legato Date: Sun, 7 Feb 2021 17:31:58 -0800 Subject: [PATCH 29/66] Removed Travis tests badge in favor of GitHub Actions --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 962cb36d1..562349f91 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![PHPStan](https://img.shields.io/badge/PHPStan-enabled-brightgreen.svg?style=flat)](https://github.com/phpstan/phpstan) [![SensioLabsInsight](https://insight.sensiolabs.com/projects/cfd20465-d0f8-4a0a-8444-467f5b5f16ad/mini.png)](https://insight.sensiolabs.com/projects/cfd20465-d0f8-4a0a-8444-467f5b5f16ad) [![Discord](https://img.shields.io/discord/501836936584101899.svg?logo=discord&colorB=728ADA&label=Discord%20Chat)](https://chat.getgrav.org) - [![Build Status](https://travis-ci.org/getgrav/grav.svg?branch=develop)](https://travis-ci.org/getgrav/grav) [![OpenCollective](https://opencollective.com/grav/backers/badge.svg)](#backers) [![OpenCollective](https://opencollective.com/grav/sponsors/badge.svg)](#sponsors) + [![PHP Tests](https://github.com/getgrav/grav/workflows/PHP%20Tests/badge.svg?branch=develop)](https://github.com/getgrav/grav/actions?query=workflow%3A%22PHP+Tests%22) [![OpenCollective](https://opencollective.com/grav/backers/badge.svg)](#backers) [![OpenCollective](https://opencollective.com/grav/sponsors/badge.svg)](#sponsors) Grav is a **Fast**, **Simple**, and **Flexible**, file-based Web-platform. There is **Zero** installation required. Just extract the ZIP archive, and you are already up and running. It follows similar principles to other flat-file CMS platforms, but has a different design philosophy than most. Grav comes with a powerful **Package Management System** to allow for simple installation and upgrading of plugins and themes, as well as simple updating of Grav itself. From 7d95fb716965038ce037ca09ae52e4bee5d23309 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 8 Feb 2021 12:43:04 +0200 Subject: [PATCH 30/66] Changelog update --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cde9a0700..8dd745c5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ * Fixed CLI progressbar in `backup` and `security` commands to use styled output [#3198](https://github.com/getgrav/grav/issues/3198) * Fixed page save failing because of uploaded images [#3191](https://github.com/getgrav/grav/issues/3191) * Fixed `Flex Pages` using only default language in frontend [#106](https://github.com/trilbymedia/grav-plugin-flex-objects/issues/106) + * Fixed empty `route()` and `raw_route()` when getting translated pages [#3184](https://github.com/getgrav/grav/pull/3184) # v1.7.5 ## 02/01/2021 From 1347c76594d200a5e5c865ebca7779cbdc165429 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 8 Feb 2021 12:51:55 +0200 Subject: [PATCH 31/66] Fixed error on `bin/gpm plugin uninstall` [#3207] --- CHANGELOG.md | 1 + .../src/Grav/Console/Gpm/UninstallCommand.php | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8dd745c5c..d9cb70326 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ * Fixed page save failing because of uploaded images [#3191](https://github.com/getgrav/grav/issues/3191) * Fixed `Flex Pages` using only default language in frontend [#106](https://github.com/trilbymedia/grav-plugin-flex-objects/issues/106) * Fixed empty `route()` and `raw_route()` when getting translated pages [#3184](https://github.com/getgrav/grav/pull/3184) + * Fixed error on `bin/gpm plugin uninstall` [#3207](https://github.com/getgrav/grav/issues/3207) # v1.7.5 ## 02/01/2021 diff --git a/system/src/Grav/Console/Gpm/UninstallCommand.php b/system/src/Grav/Console/Gpm/UninstallCommand.php index 3470f67dd..ff917191e 100644 --- a/system/src/Grav/Console/Gpm/UninstallCommand.php +++ b/system/src/Grav/Console/Gpm/UninstallCommand.php @@ -11,12 +11,14 @@ namespace Grav\Console\Gpm; use Grav\Common\GPM\GPM; use Grav\Common\GPM\Installer; -use Grav\Common\GPM\Local\Package; +use Grav\Common\GPM\Local; +use Grav\Common\GPM\Remote; use Grav\Common\Grav; use Grav\Console\GpmCommand; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Question\ConfirmationQuestion; +use Throwable; use function count; use function in_array; use function is_array; @@ -113,7 +115,7 @@ class UninstallCommand extends GpmCommand // Plugins need to be initialized in order to make clear-cache to work. try { $this->initializePlugins(); - } catch (\Throwable $e) { + } catch (Throwable $e) { $io->writeln("Some plugins failed to initialize: {$e->getMessage()}"); } @@ -148,11 +150,11 @@ class UninstallCommand extends GpmCommand /** * @param string $slug - * @param Package $package + * @param Local\Package|Remote\Package $package * @param bool $is_dependency * @return bool */ - private function uninstallPackage($slug, Package $package, $is_dependency = false): bool + private function uninstallPackage($slug, $package, $is_dependency = false): bool { $io = $this->getIO(); @@ -255,10 +257,10 @@ class UninstallCommand extends GpmCommand /** * @param string $slug - * @param Package $package + * @param Local\Package|Remote\Package $package * @return bool */ - private function checkDestination(string $slug, Package $package): bool + private function checkDestination(string $slug, $package): bool { $io = $this->getIO(); @@ -297,10 +299,10 @@ class UninstallCommand extends GpmCommand * Check if package exists * * @param string $slug - * @param Package $package + * @param Local\Package|Remote\Package $package * @return int */ - private function packageExists(string $slug, Package $package): int + private function packageExists(string $slug, $package): int { $path = Grav::instance()['locator']->findResource($package->package_type . '://' . $slug); Installer::isValidDestination($path); From 8ea4216672448e1d89ff247d9aeaf5aa99d4a2c2 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 8 Feb 2021 13:40:39 +0200 Subject: [PATCH 32/66] Added ability to filter enabled or disabled with bin/gpm index [#3187] --- CHANGELOG.md | 1 + system/src/Grav/Common/GPM/GPM.php | 41 ++++++-------------- system/src/Grav/Console/Gpm/IndexCommand.php | 20 ++++++---- 3 files changed, 24 insertions(+), 38 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9cb70326..21d206ff9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ * Updated bundled `composer.phar` binary to latest version `2.0.9` * Improved session fixation handling in PHP 7.4+ (cannot fix it in PHP 7.3 due to PHP bug) * Added optional password/database attributes for redis in `system.yaml` + * Added ability to filter enabled or disabled with bin/gpm index [#3187](https://github.com/getgrav/grav/pull/3187) 1. [](#bugfix) * Fixed CLI progressbar in `backup` and `security` commands to use styled output [#3198](https://github.com/getgrav/grav/issues/3198) * Fixed page save failing because of uploaded images [#3191](https://github.com/getgrav/grav/issues/3191) diff --git a/system/src/Grav/Common/GPM/GPM.php b/system/src/Grav/Common/GPM/GPM.php index 56c4ebbd7..1b15e5de8 100644 --- a/system/src/Grav/Common/GPM/GPM.php +++ b/system/src/Grav/Common/GPM/GPM.php @@ -146,23 +146,11 @@ class GPM extends Iterator * @param string $slug * @return bool True if the Plugin is Enabled. False if manually set to enable:false. Null otherwise. */ - public function isPluginEnabled($slug) + public function isPluginEnabled($slug): bool { - $result = null; - $grav = new Grav(); - $config = $grav::instance()['config']['plugins']; - $installed = $this->isPluginInstalled($slug); + $grav = Grav::instance(); - $enabled = isset($config[$slug]) && ((bool)$config[$slug]['enabled'] == true); - $disabled = isset($config[$slug]['enabled']) && ((bool)$config[$slug]['enabled'] === false); - - if ($enabled) { - $result = true; - } - if ($disabled) { - $result = false; - } - return $result; + return ($grav['config']['plugins'][$slug]['enabled'] ?? false) === true; } /** @@ -171,7 +159,7 @@ class GPM extends Iterator * @param string $slug The slug of the Plugin * @return bool True if the Plugin has been installed. False otherwise */ - public function isPluginInstalled($slug) + public function isPluginInstalled($slug): bool { return isset($this->installed['plugins'][$slug]); } @@ -212,22 +200,15 @@ class GPM extends Iterator * Checks if a Theme is enabled * * @param string $slug The slug of the Theme - * @return bool - * True if the Theme has been set to the default theme. False if installed, but not enabled. Null otherwise. + * @return bool True if the Theme has been set to the default theme. False if installed, but not enabled. Null otherwise. */ - public function isThemeEnabled($slug) + public function isThemeEnabled($slug): bool { - $grav = new Grav(); - $result = null; - $current_theme = $grav::instance()['config']['system']['pages']['theme']; - $theme_installed = $this->isThemeInstalled($slug); + $grav = Grav::instance(); - if ($current_theme == $slug) { - $result = true; - } elseif ($theme_installed) { - $result = false; - } - return $result; + $current_theme = $grav['config']['system']['pages']['theme'] ?? null; + + return $current_theme === $slug; } /** @@ -236,7 +217,7 @@ class GPM extends Iterator * @param string $slug The slug of the Theme * @return bool True if the Theme has been installed. False otherwise */ - public function isThemeInstalled($slug) + public function isThemeInstalled($slug): bool { return isset($this->installed['themes'][$slug]); } diff --git a/system/src/Grav/Console/Gpm/IndexCommand.php b/system/src/Grav/Console/Gpm/IndexCommand.php index 33e1b28ab..97a71bdf8 100644 --- a/system/src/Grav/Console/Gpm/IndexCommand.php +++ b/system/src/Grav/Console/Gpm/IndexCommand.php @@ -216,15 +216,19 @@ class IndexCommand extends GpmCommand { $package = $list[$package->slug] ?? $package; $type = ucfirst(preg_replace('/s$/', '', $package->package_type)); - $method = 'is' . $type . 'Enabled'; - $enabled = $this->gpm->{$method}($package->slug); + $method = 'is' . $type . 'Installed'; + $installed = $this->gpm->{$method}($package->slug); - if ($enabled === null) { + if ($installed) { + $method = 'is' . $type . 'Enabled'; + $enabled = $this->gpm->{$method}($package->slug); + if ($enabled === true) { + $result = 'enabled'; + } elseif ($enabled === false) { + $result = 'disabled'; + } + } else { $result = ''; - } elseif ($enabled === true) { - $result = 'enabled'; - } elseif ($enabled === false) { - $result = 'disabled'; } return $result; @@ -264,7 +268,7 @@ class IndexCommand extends GpmCommand } // Filtering updatables only - if ($filter && $this->options['installed-only']) { + if ($filter && ($this->options['installed-only'] || $this->options['enabled'] || $this->options['disabled'])) { $method = ucfirst(preg_replace('/s$/', '', $package->package_type)); $function = 'is' . $method . 'Installed'; $filter = $this->gpm->{$function}($package->slug); From c7dcb9144c0aed147c32dfa124f38bb2e1204e6c Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 8 Feb 2021 13:47:23 +0200 Subject: [PATCH 33/66] Added `$grav->getVersion()` or `grav.version` in twig to get the current Grav version [#3142] --- CHANGELOG.md | 1 + system/src/Grav/Common/Grav.php | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 21d206ff9..7ee604c90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ * Improved session fixation handling in PHP 7.4+ (cannot fix it in PHP 7.3 due to PHP bug) * Added optional password/database attributes for redis in `system.yaml` * Added ability to filter enabled or disabled with bin/gpm index [#3187](https://github.com/getgrav/grav/pull/3187) + * Added `$grav->getVersion()` or `grav.version` in twig to get the current Grav version [#3142](https://github.com/getgrav/grav/issues/3142) 1. [](#bugfix) * Fixed CLI progressbar in `backup` and `security` commands to use styled output [#3198](https://github.com/getgrav/grav/issues/3198) * Fixed page save failing because of uploaded images [#3191](https://github.com/getgrav/grav/issues/3191) diff --git a/system/src/Grav/Common/Grav.php b/system/src/Grav/Common/Grav.php index db8316a9e..048f7d40b 100644 --- a/system/src/Grav/Common/Grav.php +++ b/system/src/Grav/Common/Grav.php @@ -162,6 +162,19 @@ class Grav extends Container return self::$instance; } + /** + * Get Grav version. + * + * @return string + */ + public function getVersion(): string + { + return GRAV_VERSION; + } + + /** + * @return bool + */ public function isSetup(): bool { return isset($this->initialized['setup']); From 11d0103f0d828352b5144ecbbd15673255050dcb Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 8 Feb 2021 14:21:10 +0200 Subject: [PATCH 34/66] Fixed lowering uppercase characters in usernames when saving from frontend [#2565] --- CHANGELOG.md | 1 + system/src/Grav/Common/Flex/Types/Users/UserObject.php | 2 +- system/src/Grav/Common/User/DataUser/User.php | 7 +++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ee604c90..2189c34ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ * Fixed `Flex Pages` using only default language in frontend [#106](https://github.com/trilbymedia/grav-plugin-flex-objects/issues/106) * Fixed empty `route()` and `raw_route()` when getting translated pages [#3184](https://github.com/getgrav/grav/pull/3184) * Fixed error on `bin/gpm plugin uninstall` [#3207](https://github.com/getgrav/grav/issues/3207) + * Fixed lowering uppercase characters in usernames when saving from frontend [#2565](https://github.com/getgrav/grav/pull/2565) # v1.7.5 ## 02/01/2021 diff --git a/system/src/Grav/Common/Flex/Types/Users/UserObject.php b/system/src/Grav/Common/Flex/Types/Users/UserObject.php index 2abefce32..b589dd5ed 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserObject.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserObject.php @@ -535,7 +535,7 @@ class UserObject extends FlexObject implements UserInterface, Countable } /** - * Save user without the username + * Save user * * @return static */ diff --git a/system/src/Grav/Common/User/DataUser/User.php b/system/src/Grav/Common/User/DataUser/User.php index 6448361d3..d81381777 100644 --- a/system/src/Grav/Common/User/DataUser/User.php +++ b/system/src/Grav/Common/User/DataUser/User.php @@ -110,7 +110,7 @@ class User extends Data implements UserInterface } /** - * Save user without the username + * Save user * * @return void */ @@ -138,7 +138,10 @@ class User extends Data implements UserInterface } $data = $this->items; - unset($data['username'], $data['authenticated'], $data['authorized']); + if ($username === $data['username']) { + unset($data['username']); + } + unset($data['authenticated'], $data['authorized']); $file->save($data); From 96aac79eb2036a501c2e2828d7e7e56f44add069 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 8 Feb 2021 14:40:51 +0200 Subject: [PATCH 35/66] Fixed broken min/max validation for field `type: int` --- CHANGELOG.md | 1 + system/src/Grav/Common/Data/Validation.php | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2189c34ef..75ac95d3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ * Fixed empty `route()` and `raw_route()` when getting translated pages [#3184](https://github.com/getgrav/grav/pull/3184) * Fixed error on `bin/gpm plugin uninstall` [#3207](https://github.com/getgrav/grav/issues/3207) * Fixed lowering uppercase characters in usernames when saving from frontend [#2565](https://github.com/getgrav/grav/pull/2565) + * Fixed broken min/max validation for field `type: int` # v1.7.5 ## 02/01/2021 diff --git a/system/src/Grav/Common/Data/Validation.php b/system/src/Grav/Common/Data/Validation.php index 17d5ee641..3e0ba32f1 100644 --- a/system/src/Grav/Common/Data/Validation.php +++ b/system/src/Grav/Common/Data/Validation.php @@ -1116,6 +1116,21 @@ class Validation return ctype_xdigit($value); } + /** + * Custom input: int + * + * @param mixed $value Value to be validated. + * @param array $params Validation parameters. + * @param array $field Blueprint for the field. + * @return bool True if validation succeeded. + */ + public static function typeInt($value, array $params, array $field) + { + $params['step'] = max(1, (int)($params['step'] ?? 0)); + + return self::typeNumber($value, $params, $field); + } + /** * @param mixed $value * @param mixed $params From e520cf949a0dd3980599ce654e9cdbd45a51b293 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 8 Feb 2021 16:46:30 +0200 Subject: [PATCH 36/66] Fixed save error when editing accounts that have been created with capital letters in their username [#3211] --- CHANGELOG.md | 1 + .../Types/Users/Storage/UserFileStorage.php | 27 -------- .../Types/Users/Storage/UserFolderStorage.php | 27 -------- .../Common/Flex/Types/Users/UserIndex.php | 6 +- .../Common/Flex/Types/Users/UserObject.php | 19 ++++-- .../Storage/AbstractFilesystemStorage.php | 18 ++++- .../Framework/Flex/Storage/FileStorage.php | 68 +++++++++++++++++++ .../Framework/Flex/Storage/FolderStorage.php | 11 ++- 8 files changed, 110 insertions(+), 67 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75ac95d3e..9739c8f2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ * Fixed error on `bin/gpm plugin uninstall` [#3207](https://github.com/getgrav/grav/issues/3207) * Fixed lowering uppercase characters in usernames when saving from frontend [#2565](https://github.com/getgrav/grav/pull/2565) * Fixed broken min/max validation for field `type: int` + * Fixed save error when editing accounts that have been created with capital letters in their username [#3211](https://github.com/getgrav/grav/issues/3211) # v1.7.5 ## 02/01/2021 diff --git a/system/src/Grav/Common/Flex/Types/Users/Storage/UserFileStorage.php b/system/src/Grav/Common/Flex/Types/Users/Storage/UserFileStorage.php index 4ac561e62..f565c9f17 100644 --- a/system/src/Grav/Common/Flex/Types/Users/Storage/UserFileStorage.php +++ b/system/src/Grav/Common/Flex/Types/Users/Storage/UserFileStorage.php @@ -19,22 +19,6 @@ use Grav\Framework\Flex\Storage\FileStorage; */ class UserFileStorage extends FileStorage { - /** @var bool */ - public $caseSensitive; - - /** - * @param string $key - * @return string - */ - public function normalizeKey(string $key): string - { - if ($this->caseSensitive === true) { - return $key; - } - - return mb_strtolower($key); - } - /** * {@inheritdoc} * @see FlexStorageInterface::getMediaPath() @@ -60,15 +44,4 @@ class UserFileStorage extends FileStorage $row['access'] = $access; } } - - /** - * @param array $options - * @return void - */ - protected function initOptions(array $options): void - { - parent::initOptions($options); - - $this->caseSensitive = $options['case_sensitive'] ?? false; - } } diff --git a/system/src/Grav/Common/Flex/Types/Users/Storage/UserFolderStorage.php b/system/src/Grav/Common/Flex/Types/Users/Storage/UserFolderStorage.php index d1b36a745..7d9924e0d 100644 --- a/system/src/Grav/Common/Flex/Types/Users/Storage/UserFolderStorage.php +++ b/system/src/Grav/Common/Flex/Types/Users/Storage/UserFolderStorage.php @@ -19,22 +19,6 @@ use Grav\Framework\Flex\Storage\FolderStorage; */ class UserFolderStorage extends FolderStorage { - /** @var bool */ - public $caseSensitive; - - /** - * @param string $key - * @return string - */ - public function normalizeKey(string $key): string - { - if ($this->caseSensitive === true) { - return $key; - } - - return mb_strtolower($key); - } - /** * Prepares the row for saving and returns the storage key for the record. * @@ -50,15 +34,4 @@ class UserFolderStorage extends FolderStorage $row['access'] = $access; } } - - /** - * @param array $options - * @return void - */ - protected function initOptions(array $options): void - { - parent::initOptions($options); - - $this->caseSensitive = $options['case_sensitive'] ?? false; - } } diff --git a/system/src/Grav/Common/Flex/Types/Users/UserIndex.php b/system/src/Grav/Common/Flex/Types/Users/UserIndex.php index 9e44236e4..4735c933e 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserIndex.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserIndex.php @@ -146,11 +146,7 @@ class UserIndex extends FlexIndex */ protected static function filterUsername(string $key, FlexStorageInterface $storage): string { - if (method_exists($storage, 'normalizeKey')) { - return $storage->normalizeKey($key); - } - - return mb_strtolower($key); + return $storage->normalizeKey($key); } /** diff --git a/system/src/Grav/Common/Flex/Types/Users/UserObject.php b/system/src/Grav/Common/Flex/Types/Users/UserObject.php index b589dd5ed..1d803bd6a 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserObject.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserObject.php @@ -120,11 +120,22 @@ class UserObject extends FlexObject implements UserInterface, Countable // User can only be authenticated via login. unset($elements['authenticated'], $elements['authorized']); - parent::__construct($elements, $key, $directory, $validate); + // Define username if it's not set. + if (!isset($elements['username'])) { + $storageKey = $elements['__META']['storage_key'] ?? null; + if (null !== $storageKey && $key === $directory->getStorage()->normalizeKey($storageKey)) { + $elements['username'] = $storageKey; + } else { + $elements['username'] = $key; + } + } - // Define username and state if they aren't set. - $this->defProperty('username', $key); - $this->defProperty('state', 'enabled'); + // Define state if it isn't set. + if (!isset($elements['state'])) { + $elements['state'] = 'enabled'; + } + + parent::__construct($elements, $key, $directory, $validate); } /** diff --git a/system/src/Grav/Framework/Flex/Storage/AbstractFilesystemStorage.php b/system/src/Grav/Framework/Flex/Storage/AbstractFilesystemStorage.php index 8f20a45e3..97384abce 100644 --- a/system/src/Grav/Framework/Flex/Storage/AbstractFilesystemStorage.php +++ b/system/src/Grav/Framework/Flex/Storage/AbstractFilesystemStorage.php @@ -20,7 +20,6 @@ use Grav\Framework\File\Formatter\MarkdownFormatter; use Grav\Framework\File\Formatter\YamlFormatter; use Grav\Framework\File\Interfaces\FileFormatterInterface; use Grav\Framework\Flex\Interfaces\FlexStorageInterface; -use RocketTheme\Toolbox\File\File; use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator; use RuntimeException; use function is_array; @@ -37,6 +36,8 @@ abstract class AbstractFilesystemStorage implements FlexStorageInterface protected $keyField = 'storage_key'; /** @var int */ protected $keyLen = 32; + /** @var bool */ + protected $caseSensitive = true; /** * @return bool @@ -98,7 +99,7 @@ abstract class AbstractFilesystemStorage implements FlexStorageInterface public function extractKeysFromRow(array $row): array { return [ - 'key' => $row[$this->keyField] ?? '' + 'key' => $this->normalizeKey($row[$this->keyField] ?? '') ]; } @@ -201,6 +202,19 @@ abstract class AbstractFilesystemStorage implements FlexStorageInterface return substr(hash('sha256', random_bytes($this->keyLen)), 0, $this->keyLen); } + /** + * @param string $key + * @return string + */ + public function normalizeKey(string $key): string + { + if ($this->caseSensitive === true) { + return $key; + } + + return mb_strtolower($key); + } + /** * Checks if a key is valid. * diff --git a/system/src/Grav/Framework/Flex/Storage/FileStorage.php b/system/src/Grav/Framework/Flex/Storage/FileStorage.php index cecaa5319..2dc0757a9 100644 --- a/system/src/Grav/Framework/Flex/Storage/FileStorage.php +++ b/system/src/Grav/Framework/Flex/Storage/FileStorage.php @@ -13,6 +13,7 @@ namespace Grav\Framework\Flex\Storage; use FilesystemIterator; use Grav\Framework\Flex\Interfaces\FlexStorageInterface; +use RuntimeException; use SplFileInfo; /** @@ -50,6 +51,73 @@ class FileStorage extends FolderStorage return $key ? "{$path}/{$key}" : $path; } + /** + * @param string $src + * @param string $dst + * @return bool + */ + public function copyRow(string $src, string $dst): bool + { + if ($this->hasKey($dst)) { + throw new RuntimeException("Cannot copy object: key '{$dst}' is already taken"); + } + + if (!$this->hasKey($src)) { + return false; + } + + return true; + } + + /** + * {@inheritdoc} + * @see FlexStorageInterface::renameRow() + */ + public function renameRow(string $src, string $dst): bool + { + if (!$this->hasKey($src)) { + return false; + } + + // Remove old file. + $path = $this->getPathFromKey($src); + $file = $this->getFile($path); + $file->delete(); + + return true; + } + + /** + * @param string $src + * @param string $dst + * @return bool + */ + protected function copyFolder(string $src, string $dst): bool + { + // Nothing to copy. + return true; + } + + /** + * @param string $src + * @param string $dst + * @return bool + */ + protected function moveFolder(string $src, string $dst): bool + { + // Nothing to move. + return true; + } + + /** + * @param string $key + * @return bool + */ + protected function canDeleteFolder(string $key): bool + { + return false; + } + /** * {@inheritdoc} */ diff --git a/system/src/Grav/Framework/Flex/Storage/FolderStorage.php b/system/src/Grav/Framework/Flex/Storage/FolderStorage.php index 514eeea80..acdab7816 100644 --- a/system/src/Grav/Framework/Flex/Storage/FolderStorage.php +++ b/system/src/Grav/Framework/Flex/Storage/FolderStorage.php @@ -242,7 +242,6 @@ class FolderStorage extends AbstractFilesystemStorage return $this->copyFolder($srcPath, $dstPath); } - /** * {@inheritdoc} * @see FlexStorageInterface::renameRow() @@ -360,7 +359,12 @@ class FolderStorage extends AbstractFilesystemStorage */ protected function prepareRow(array &$row): void { - unset($row[$this->keyField]); + if (array_key_exists($this->keyField, $row)) { + $key = $row[$this->keyField]; + if ($key === $this->normalizeKey($key)) { + unset($row[$this->keyField]); + } + } } /** @@ -401,6 +405,8 @@ class FolderStorage extends AbstractFilesystemStorage $key = $this->getNewKey(); } + $key = $this->normalizeKey($key); + // Check if the row already exists and if the key has been changed. $oldKey = $row['__META']['storage_key'] ?? null; if (is_string($oldKey) && $oldKey !== $key) { @@ -679,6 +685,7 @@ class FolderStorage extends AbstractFilesystemStorage $this->indexed = (bool)($options['indexed'] ?? false); $this->keyField = $options['key'] ?? 'storage_key'; $this->keyLen = (int)($options['key_len'] ?? 32); + $this->caseSensitive = (bool)($options['case_sensitive'] ?? true); $variables = ['FOLDER' => '%1$s', 'KEY' => '%2$s', 'KEY:2' => '%3$s', 'FILE' => '%4$s', 'EXT' => '%5$s']; $pattern = Utils::simpleTemplate($pattern, $variables); From 99c870c5cca7470959831881536067ebcc994feb Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 8 Feb 2021 16:54:56 +0200 Subject: [PATCH 37/66] Changelog update --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9739c8f2e..d86c023ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,9 +14,10 @@ * Fixed `Flex Pages` using only default language in frontend [#106](https://github.com/trilbymedia/grav-plugin-flex-objects/issues/106) * Fixed empty `route()` and `raw_route()` when getting translated pages [#3184](https://github.com/getgrav/grav/pull/3184) * Fixed error on `bin/gpm plugin uninstall` [#3207](https://github.com/getgrav/grav/issues/3207) - * Fixed lowering uppercase characters in usernames when saving from frontend [#2565](https://github.com/getgrav/grav/pull/2565) * Fixed broken min/max validation for field `type: int` + * Fixed lowering uppercase characters in usernames when saving from frontend [#2565](https://github.com/getgrav/grav/pull/2565) * Fixed save error when editing accounts that have been created with capital letters in their username [#3211](https://github.com/getgrav/grav/issues/3211) + * Fixed renaming flex objects key when using file storage # v1.7.5 ## 02/01/2021 From 6b25a9f00cd37693b264be07e4666bdaa8a11591 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 8 Feb 2021 18:46:47 +0200 Subject: [PATCH 38/66] Fixed wrong values in Admin pages list [#3214] --- CHANGELOG.md | 1 + system/src/Grav/Common/Flex/Types/Pages/PageIndex.php | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d86c023ec..4e257c9a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ * Fixed lowering uppercase characters in usernames when saving from frontend [#2565](https://github.com/getgrav/grav/pull/2565) * Fixed save error when editing accounts that have been created with capital letters in their username [#3211](https://github.com/getgrav/grav/issues/3211) * Fixed renaming flex objects key when using file storage + * Fixed wrong values in Admin pages list [#3214](https://github.com/getgrav/grav/issues/3214) # v1.7.5 ## 02/01/2021 diff --git a/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php b/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php index f5da89203..fbf0df4c1 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php +++ b/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php @@ -448,6 +448,10 @@ class PageIndex extends FlexPageIndex implements PageCollectionInterface 'has-children' => $child_count > 0 ]; } else { + $lang = $child->findTranslation($language) ?? 'n/a'; + /** @var PageObject $child */ + $child = $child->getTranslation($language) ?? $child; + // TODO: all these features are independent from each other, we cannot just have one icon/color to catch all. // TODO: maybe icon by home/modular/page/folder (or even from blueprints) and color by visibility etc.. if ($child->home()) { @@ -467,9 +471,6 @@ class PageIndex extends FlexPageIndex implements PageCollectionInterface $child->visible() ? 'visible' : 'non-visible', $child->routable() ? 'routable' : 'non-routable' ]; - $lang = $child->findTranslation($language) ?? 'n/a'; - /** @var PageObject $child */ - $child = $child->getTranslation($language) ?? $child; $extras = [ 'template' => $child->template(), 'lang' => $lang ?: null, From 9964285cae4ca2eb860fc187142a115a40edde19 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Mon, 8 Feb 2021 11:45:22 -0700 Subject: [PATCH 39/66] Fixed issue with `content-security-policy` not being properly supported with `http-equiv` + support single quotes --- CHANGELOG.md | 1 + system/src/Grav/Common/Page/Page.php | 10 +++++----- .../Framework/Flex/Pages/Traits/PageLegacyTrait.php | 4 ++-- system/templates/partials/metadata.html.twig | 4 ++-- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cde9a0700..b22141a1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ * Improved session fixation handling in PHP 7.4+ (cannot fix it in PHP 7.3 due to PHP bug) * Added optional password/database attributes for redis in `system.yaml` 1. [](#bugfix) + * Fixed issue with `content-security-policy` not being properly supported with `http-equiv` + support single quotes * Fixed CLI progressbar in `backup` and `security` commands to use styled output [#3198](https://github.com/getgrav/grav/issues/3198) * Fixed page save failing because of uploaded images [#3191](https://github.com/getgrav/grav/issues/3191) * Fixed `Flex Pages` using only default language in frontend [#106](https://github.com/trilbymedia/grav-plugin-flex-objects/issues/106) diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index 59ea1ee2c..d749c75b3 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -1665,7 +1665,7 @@ class Page implements PageInterface // if not metadata yet, process it. if (null === $this->metadata) { - $header_tag_http_equivs = ['content-type', 'default-style', 'refresh', 'x-ua-compatible']; + $header_tag_http_equivs = ['content-type', 'default-style', 'refresh', 'x-ua-compatible', 'content-security-policy']; $this->metadata = []; @@ -1698,7 +1698,7 @@ class Page implements PageInterface $this->metadata[$prop_key] = [ 'name' => $prop_key, 'property' => $prop_key, - 'content' => $escape ? htmlspecialchars($prop_value, ENT_QUOTES, 'UTF-8') : $prop_value + 'content' => $escape ? htmlspecialchars($prop_value, ENT_QUOTES | ENT_HTML5, 'UTF-8') : $prop_value ]; } } else { @@ -1707,16 +1707,16 @@ class Page implements PageInterface if (in_array($key, $header_tag_http_equivs, true)) { $this->metadata[$key] = [ 'http_equiv' => $key, - 'content' => $escape ? htmlspecialchars($value, ENT_QUOTES, 'UTF-8') : $value + 'content' => $escape ? htmlspecialchars($value, ENT_COMPAT, 'UTF-8') : $value ]; } elseif ($key === 'charset') { - $this->metadata[$key] = ['charset' => $escape ? htmlspecialchars($value, ENT_QUOTES, 'UTF-8') : $value]; + $this->metadata[$key] = ['charset' => $escape ? htmlspecialchars($value, ENT_QUOTES | ENT_HTML5, 'UTF-8') : $value]; } else { // if it's a social metadata with separator, render as property $separator = strpos($key, ':'); $hasSeparator = $separator && $separator < strlen($key) - 1; $entry = [ - 'content' => $escape ? htmlspecialchars($value, ENT_QUOTES, 'UTF-8') : $value + 'content' => $escape ? htmlspecialchars($value, ENT_QUOTES | ENT_HTML5, 'UTF-8') : $value ]; if ($hasSeparator && !Utils::startsWith($key, 'twitter')) { diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php index bc43a0429..ba81d8f29 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php @@ -619,7 +619,7 @@ trait PageLegacyTrait // Get initial metadata for the page $metadata = array_merge($defaultMetadata, $siteMetadata, $headerMetadata); - $header_tag_http_equivs = ['content-type', 'default-style', 'refresh', 'x-ua-compatible']; + $header_tag_http_equivs = ['content-type', 'default-style', 'refresh', 'x-ua-compatible', 'content-security-policy']; $escape = !$config->get('system.strict_mode.twig_compat', false) || $config->get('system.twig.autoescape', true); // Build an array of meta objects.. @@ -643,7 +643,7 @@ trait PageLegacyTrait if (in_array($key, $header_tag_http_equivs, true)) { $this->_metadata[$key] = [ 'http_equiv' => $key, - 'content' => $escape ? htmlspecialchars($value, ENT_QUOTES | ENT_HTML5, 'UTF-8') : $value + 'content' => $escape ? htmlspecialchars($value, ENT_COMPAT, 'UTF-8') : $value ]; } elseif ($key === 'charset') { $this->_metadata[$key] = ['charset' => $escape ? htmlspecialchars($value, ENT_QUOTES | ENT_HTML5, 'UTF-8') : $value]; diff --git a/system/templates/partials/metadata.html.twig b/system/templates/partials/metadata.html.twig index bf323e7ab..fcf121773 100644 --- a/system/templates/partials/metadata.html.twig +++ b/system/templates/partials/metadata.html.twig @@ -1,3 +1,3 @@ {% for meta in page.metadata %} - -{% endfor %} \ No newline at end of file + +{% endfor %} From 3ee9e65f2d0b9c31d2fcbc6f82e7511583acbba6 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 8 Feb 2021 21:27:47 +0200 Subject: [PATCH 40/66] Added second parameter to `$blueprint->flattenData()` to include every field, including those which have no data --- CHANGELOG.md | 1 + system/src/Grav/Common/Data/Blueprint.php | 5 +++-- system/src/Grav/Common/Data/BlueprintSchema.php | 16 ++++++++++++++-- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e257c9a1..759174a4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ * Added optional password/database attributes for redis in `system.yaml` * Added ability to filter enabled or disabled with bin/gpm index [#3187](https://github.com/getgrav/grav/pull/3187) * Added `$grav->getVersion()` or `grav.version` in twig to get the current Grav version [#3142](https://github.com/getgrav/grav/issues/3142) + * Added second parameter to `$blueprint->flattenData()` to include every field, including those which have no data 1. [](#bugfix) * Fixed CLI progressbar in `backup` and `security` commands to use styled output [#3198](https://github.com/getgrav/grav/issues/3198) * Fixed page save failing because of uploaded images [#3191](https://github.com/getgrav/grav/issues/3191) diff --git a/system/src/Grav/Common/Data/Blueprint.php b/system/src/Grav/Common/Data/Blueprint.php index 57351a7bd..25c4266e9 100644 --- a/system/src/Grav/Common/Data/Blueprint.php +++ b/system/src/Grav/Common/Data/Blueprint.php @@ -294,13 +294,14 @@ class Blueprint extends BlueprintForm * Flatten data by using blueprints. * * @param array $data + * @param bool $includeAll * @return array */ - public function flattenData(array $data) + public function flattenData(array $data, bool $includeAll = false) { $this->initInternals(); - return $this->blueprintSchema->flattenData($data); + return $this->blueprintSchema->flattenData($data, $includeAll); } diff --git a/system/src/Grav/Common/Data/BlueprintSchema.php b/system/src/Grav/Common/Data/BlueprintSchema.php index 544d42025..f082f9e0b 100644 --- a/system/src/Grav/Common/Data/BlueprintSchema.php +++ b/system/src/Grav/Common/Data/BlueprintSchema.php @@ -107,11 +107,22 @@ class BlueprintSchema extends BlueprintSchemaBase implements ExportInterface * Flatten data by using blueprints. * * @param array $data Data to be flattened. + * @param bool $includeAll * @return array */ - public function flattenData(array $data) + public function flattenData(array $data, bool $includeAll = false) { - return $this->flattenArray($data, $this->nested, ''); + $list = []; + if ($includeAll) { + foreach ($this->items as $key => $rules) { + $type = $rules['type'] ?? ''; + if (!str_starts_with($type, '_')) { + $list[$key] = null; + } + } + } + + return array_replace($list, $this->flattenArray($data, $this->nested, '')); } /** @@ -139,6 +150,7 @@ class BlueprintSchema extends BlueprintSchemaBase implements ExportInterface $array[$prefix.$key] = $field; } } + return $array; } From 92fdaed81b3a30f7d30eab5494b8d954513229c0 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Tue, 9 Feb 2021 20:35:53 +0200 Subject: [PATCH 41/66] Fix for `$blueprint->flattenData()` on list properties --- system/src/Grav/Common/Data/BlueprintSchema.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/src/Grav/Common/Data/BlueprintSchema.php b/system/src/Grav/Common/Data/BlueprintSchema.php index f082f9e0b..a50bf2310 100644 --- a/system/src/Grav/Common/Data/BlueprintSchema.php +++ b/system/src/Grav/Common/Data/BlueprintSchema.php @@ -116,7 +116,7 @@ class BlueprintSchema extends BlueprintSchemaBase implements ExportInterface if ($includeAll) { foreach ($this->items as $key => $rules) { $type = $rules['type'] ?? ''; - if (!str_starts_with($type, '_')) { + if (!str_starts_with($type, '_') && !str_contains($key, '*')) { $list[$key] = null; } } From 5a9477a4025f4fb22608fd4945e71d45f7314d82 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Tue, 9 Feb 2021 21:23:23 +0200 Subject: [PATCH 42/66] Only redirect GET/HEAD if `system.pages.redirect_trailing_slash` is true and request has a trailing slash --- CHANGELOG.md | 1 + system/src/Grav/Common/Processors/InitializeProcessor.php | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17120547d..c46c090fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ * Fixed renaming flex objects key when using file storage * Fixed wrong values in Admin pages list [#3214](https://github.com/getgrav/grav/issues/3214) * Fixed pipelined asset using different hash when extra asset is added to before/after position [#2781](https://github.com/getgrav/grav/issues/2781) + * Only redirect GET/HEAD if `system.pages.redirect_trailing_slash` is true and request has a trailing slash # v1.7.5 ## 02/01/2021 diff --git a/system/src/Grav/Common/Processors/InitializeProcessor.php b/system/src/Grav/Common/Processors/InitializeProcessor.php index efdde5c8d..924dc29ca 100644 --- a/system/src/Grav/Common/Processors/InitializeProcessor.php +++ b/system/src/Grav/Common/Processors/InitializeProcessor.php @@ -30,6 +30,7 @@ use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; use function defined; +use function in_array; /** * Class InitializeProcessor @@ -414,6 +415,10 @@ class InitializeProcessor extends ProcessorBase protected function handleRedirectRequest(RequestInterface $request): ?ResponseInterface { + if (!in_array($request->getMethod(), ['GET', 'HEAD'])) { + return null; + } + // Redirect pages with trailing slash if configured to do so. $uri = $request->getUri(); $path = $uri->getPath() ?: '/'; From 87a01bbe0a5105fc385ffba93de1f5bf2a401c52 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Tue, 9 Feb 2021 21:36:54 +0200 Subject: [PATCH 43/66] Fixed trailing slash redirect to use 301 status code [#3127] --- CHANGELOG.md | 2 +- system/src/Grav/Common/Processors/InitializeProcessor.php | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c46c090fc..efbe64f68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,7 +22,7 @@ * Fixed renaming flex objects key when using file storage * Fixed wrong values in Admin pages list [#3214](https://github.com/getgrav/grav/issues/3214) * Fixed pipelined asset using different hash when extra asset is added to before/after position [#2781](https://github.com/getgrav/grav/issues/2781) - * Only redirect GET/HEAD if `system.pages.redirect_trailing_slash` is true and request has a trailing slash + * Fixed trailing slash redirect to only apply to GET/HEAD requests and use 301 status code [#3127](https://github.com/getgrav/grav/issues/3127) # v1.7.5 ## 02/01/2021 diff --git a/system/src/Grav/Common/Processors/InitializeProcessor.php b/system/src/Grav/Common/Processors/InitializeProcessor.php index 924dc29ca..a6a606cc6 100644 --- a/system/src/Grav/Common/Processors/InitializeProcessor.php +++ b/system/src/Grav/Common/Processors/InitializeProcessor.php @@ -425,7 +425,8 @@ class InitializeProcessor extends ProcessorBase $root = $this->container['uri']->rootUrl(); if ($path !== $root && $path !== $root . '/' && Utils::endsWith($path, '/')) { - return $this->container->getRedirectResponse((string)$uri->withPath(rtrim($path, '/'))); + // Use permanent redirect for SEO reasons. + return $this->container->getRedirectResponse((string)$uri->withPath(rtrim($path, '/')), 301); } return null; From 1cfcf1ded029c6022f74634016d72c9ede74db0e Mon Sep 17 00:00:00 2001 From: Tina Burschka Date: Fri, 18 Sep 2020 02:20:00 +0200 Subject: [PATCH 44/66] Flattr requires name instead property. --- system/src/Grav/Common/Page/Page.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index 27f1b4d9b..e7880a97f 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -1720,7 +1720,7 @@ class Page implements PageInterface 'content' => $escape ? htmlspecialchars($value, ENT_QUOTES | ENT_HTML5, 'UTF-8') : $value ]; - if ($hasSeparator && !Utils::startsWith($key, 'twitter')) { + if ($hasSeparator && !Utils::startsWith($key, ['twitter', 'flattr'])) { $entry['property'] = $key; } else { $entry['name'] = $key; From b534fbb364a067d19e44970c8e9e1b527f08164e Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Tue, 9 Feb 2021 21:44:20 +0200 Subject: [PATCH 45/66] Changelog update --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index efbe64f68..d0eac5b02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ * Fixed wrong values in Admin pages list [#3214](https://github.com/getgrav/grav/issues/3214) * Fixed pipelined asset using different hash when extra asset is added to before/after position [#2781](https://github.com/getgrav/grav/issues/2781) * Fixed trailing slash redirect to only apply to GET/HEAD requests and use 301 status code [#3127](https://github.com/getgrav/grav/issues/3127) + * Fixed `` to use name instead property [#3010](https://github.com/getgrav/grav/pull/3010) # v1.7.5 ## 02/01/2021 From 6ed28c5fb84088b14bd3503d89c06251da4a671d Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Tue, 9 Feb 2021 21:56:08 +0200 Subject: [PATCH 46/66] Composer update with phpstan fix --- composer.lock | 69 ++++++++++---------- system/src/Grav/Common/Assets.php | 2 +- system/src/Grav/Console/Gpm/IndexCommand.php | 3 +- 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/composer.lock b/composer.lock index b97f10a30..b604ef8cc 100644 --- a/composer.lock +++ b/composer.lock @@ -3343,25 +3343,26 @@ "packages-dev": [ { "name": "behat/gherkin", - "version": "v4.7.1", + "version": "v4.8.0", "source": { "type": "git", "url": "https://github.com/Behat/Gherkin.git", - "reference": "987bcdc3d29ba433e6bd4b1db4ae59737ba3dacd" + "reference": "2391482cd003dfdc36b679b27e9f5326bd656acd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/987bcdc3d29ba433e6bd4b1db4ae59737ba3dacd", - "reference": "987bcdc3d29ba433e6bd4b1db4ae59737ba3dacd", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/2391482cd003dfdc36b679b27e9f5326bd656acd", + "reference": "2391482cd003dfdc36b679b27e9f5326bd656acd", "shasum": "" }, "require": { - "php": ">=5.6" + "php": "~7.2|~8.0" }, "require-dev": { - "phpunit/phpunit": "~5.7|~6|~7", - "symfony/phpunit-bridge": "~2.7|~3|~4", - "symfony/yaml": "~2.3|~3|~4" + "cucumber/cucumber": "dev-gherkin-16.0.0", + "phpunit/phpunit": "~8|~9", + "symfony/phpunit-bridge": "~3|~4|~5", + "symfony/yaml": "~3|~4|~5" }, "suggest": { "symfony/yaml": "If you want to parse features, represented in YAML files" @@ -3400,9 +3401,9 @@ ], "support": { "issues": "https://github.com/Behat/Gherkin/issues", - "source": "https://github.com/Behat/Gherkin/tree/v4.7.1" + "source": "https://github.com/Behat/Gherkin/tree/v4.8.0" }, - "time": "2021-01-26T16:24:32+00:00" + "time": "2021-02-04T12:44:21+00:00" }, { "name": "codeception/codeception", @@ -4491,16 +4492,16 @@ }, { "name": "phpstan/phpstan", - "version": "0.12.70", + "version": "0.12.74", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "07f0ef37f5f876e8cee44cc8ea0ec3fe80d499ee" + "reference": "bc5f9483c8f461c86653dcbd040cf0d2778c91a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/07f0ef37f5f876e8cee44cc8ea0ec3fe80d499ee", - "reference": "07f0ef37f5f876e8cee44cc8ea0ec3fe80d499ee", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/bc5f9483c8f461c86653dcbd040cf0d2778c91a2", + "reference": "bc5f9483c8f461c86653dcbd040cf0d2778c91a2", "shasum": "" }, "require": { @@ -4531,7 +4532,7 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.70" + "source": "https://github.com/phpstan/phpstan/tree/0.12.74" }, "funding": [ { @@ -4547,7 +4548,7 @@ "type": "tidelift" } ], - "time": "2021-01-27T17:06:47+00:00" + "time": "2021-02-08T15:00:25+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -4920,16 +4921,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.1", + "version": "9.5.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "e7bdf4085de85a825f4424eae52c99a1cec2f360" + "reference": "f661659747f2f87f9e72095bb207bceb0f151cb4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e7bdf4085de85a825f4424eae52c99a1cec2f360", - "reference": "e7bdf4085de85a825f4424eae52c99a1cec2f360", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f661659747f2f87f9e72095bb207bceb0f151cb4", + "reference": "f661659747f2f87f9e72095bb207bceb0f151cb4", "shasum": "" }, "require": { @@ -5007,7 +5008,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.1" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.2" }, "funding": [ { @@ -5019,7 +5020,7 @@ "type": "github" } ], - "time": "2021-01-17T07:42:25+00:00" + "time": "2021-02-02T14:45:58+00:00" }, { "name": "psr/http-client", @@ -6039,7 +6040,7 @@ }, { "name": "symfony/browser-kit", - "version": "v5.2.2", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", @@ -6090,7 +6091,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v5.2.2" + "source": "https://github.com/symfony/browser-kit/tree/v5.2.3" }, "funding": [ { @@ -6110,7 +6111,7 @@ }, { "name": "symfony/css-selector", - "version": "v5.2.2", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", @@ -6155,7 +6156,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.2.2" + "source": "https://github.com/symfony/css-selector/tree/v5.2.3" }, "funding": [ { @@ -6175,7 +6176,7 @@ }, { "name": "symfony/dom-crawler", - "version": "v5.2.2", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", @@ -6229,7 +6230,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v5.2.2" + "source": "https://github.com/symfony/dom-crawler/tree/v5.2.3" }, "funding": [ { @@ -6249,16 +6250,16 @@ }, { "name": "symfony/finder", - "version": "v5.2.2", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "196f45723b5e618bf0e23b97e96d11652696ea9e" + "reference": "4adc8d172d602008c204c2e16956f99257248e03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/196f45723b5e618bf0e23b97e96d11652696ea9e", - "reference": "196f45723b5e618bf0e23b97e96d11652696ea9e", + "url": "https://api.github.com/repos/symfony/finder/zipball/4adc8d172d602008c204c2e16956f99257248e03", + "reference": "4adc8d172d602008c204c2e16956f99257248e03", "shasum": "" }, "require": { @@ -6290,7 +6291,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.2.2" + "source": "https://github.com/symfony/finder/tree/v5.2.3" }, "funding": [ { @@ -6306,7 +6307,7 @@ "type": "tidelift" } ], - "time": "2021-01-27T10:01:46+00:00" + "time": "2021-01-28T22:06:19+00:00" }, { "name": "theseer/tokenizer", diff --git a/system/src/Grav/Common/Assets.php b/system/src/Grav/Common/Assets.php index 7b51973fe..51a2531e4 100644 --- a/system/src/Grav/Common/Assets.php +++ b/system/src/Grav/Common/Assets.php @@ -242,7 +242,7 @@ class Assets extends PropertyObject $this->order[$orderKey] = 0; } - $options['order'] = ++$this->order[$orderKey]; + $options['order'] = $this->order[$orderKey]++; // Create asset of correct type $asset_object = new $type(); diff --git a/system/src/Grav/Console/Gpm/IndexCommand.php b/system/src/Grav/Console/Gpm/IndexCommand.php index 97a71bdf8..64d359781 100644 --- a/system/src/Grav/Console/Gpm/IndexCommand.php +++ b/system/src/Grav/Console/Gpm/IndexCommand.php @@ -219,6 +219,7 @@ class IndexCommand extends GpmCommand $method = 'is' . $type . 'Installed'; $installed = $this->gpm->{$method}($package->slug); + $result = ''; if ($installed) { $method = 'is' . $type . 'Enabled'; $enabled = $this->gpm->{$method}($package->slug); @@ -227,8 +228,6 @@ class IndexCommand extends GpmCommand } elseif ($enabled === false) { $result = 'disabled'; } - } else { - $result = ''; } return $result; From 13f8b65e080f17116cbf916db1dbd11a14f46bd9 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Tue, 9 Feb 2021 13:09:31 -0700 Subject: [PATCH 47/66] manually merged new `attribute()` method #3065 --- CHANGELOG.md | 2 ++ .../Media/Interfaces/MediaObjectInterface.php | 9 +++++++++ .../Grav/Common/Media/Traits/MediaObjectTrait.php | 15 +++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0eac5b02..c335f90e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ # v1.7.6 ## mm/dd/2021 +1. [](#new) + * Added `Medium::attribute()` to pass arbitrary attributes [#3065](https://github.com/getgrav/grav/pull/3065) 1. [](#improved) * Added abstract `FlexObject`, `FlexCollection` and `FlexIndex` classes to `\Grav\Common\Flex` namespace (extend those instead of Framework or Generic classes) * Updated bundled `composer.phar` binary to latest version `2.0.9` diff --git a/system/src/Grav/Common/Media/Interfaces/MediaObjectInterface.php b/system/src/Grav/Common/Media/Interfaces/MediaObjectInterface.php index 026c6b5a1..64388817a 100644 --- a/system/src/Grav/Common/Media/Interfaces/MediaObjectInterface.php +++ b/system/src/Grav/Common/Media/Interfaces/MediaObjectInterface.php @@ -115,6 +115,15 @@ interface MediaObjectInterface extends \Grav\Framework\Media\Interfaces\MediaObj */ public function reset(); + /** + * Add custom attribute to medium. + * + * @param string $attribute + * @param string $value + * @return $this + */ + public function attribute($attribute = null, $value = ''); + /** * Switch display mode. * diff --git a/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php b/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php index 51920db43..3c2a38baf 100644 --- a/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php +++ b/system/src/Grav/Common/Media/Traits/MediaObjectTrait.php @@ -303,6 +303,21 @@ trait MediaObjectTrait return $this; } + /** + * Add custom attribute to medium. + * + * @param string $attribute + * @param string $value + * @return $this + */ + public function attribute($attribute = null, $value = '') + { + if (!empty($attribute)) { + $this->attributes[$attribute] = $value; + } + return $this; + } + /** * Switch display mode. * From 45cea4fc4bfa1cbd2d88612ccd5cecb7c16982dc Mon Sep 17 00:00:00 2001 From: Czcibor Bohusz-Dobosz Date: Wed, 10 Feb 2021 03:58:38 +0100 Subject: [PATCH 48/66] Fixed removing inclusive filters in getCollection --- system/src/Grav/Common/Page/Pages.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/system/src/Grav/Common/Page/Pages.php b/system/src/Grav/Common/Page/Pages.php index dadaf7144..c4e6cf724 100644 --- a/system/src/Grav/Common/Page/Pages.php +++ b/system/src/Grav/Common/Page/Pages.php @@ -449,7 +449,6 @@ class Pages } } - // Remove any inclusive sets from filter. $filters = $params['filter'] ?? []; // Assume published=true if not set. @@ -457,6 +456,15 @@ class Pages $filters['published'] = true; } + // Remove any inclusive sets from filter. + $sets = ['published', 'visible', 'modular', 'routable']; + foreach ($sets as $type) { + $var = "non-{$type}"; + if (isset($filters[$type], $filters[$var]) && $filters[$type] && $filters[$var]) { + unset($filters[$type], $filters[$var]); + } + } + // Filter the collection foreach ($filters as $type => $filter) { // Convert non-type to type. From 8c00a0bc00f1921e55fd2e320feed2654a817111 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 10 Feb 2021 10:58:17 +0200 Subject: [PATCH 49/66] Fixed behavior of opposite filters in `Pages::getCollection()` to match Grav 1.6 [#3216] --- CHANGELOG.md | 1 + system/src/Grav/Common/Page/Pages.php | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c335f90e6..ff2241839 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ * Fixed pipelined asset using different hash when extra asset is added to before/after position [#2781](https://github.com/getgrav/grav/issues/2781) * Fixed trailing slash redirect to only apply to GET/HEAD requests and use 301 status code [#3127](https://github.com/getgrav/grav/issues/3127) * Fixed `` to use name instead property [#3010](https://github.com/getgrav/grav/pull/3010) + * Fixed behavior of opposite filters in `Pages::getCollection()` to match Grav 1.6 [#3216](https://github.com/getgrav/grav/pull/3216) # v1.7.5 ## 02/01/2021 diff --git a/system/src/Grav/Common/Page/Pages.php b/system/src/Grav/Common/Page/Pages.php index c4e6cf724..0c430fd5d 100644 --- a/system/src/Grav/Common/Page/Pages.php +++ b/system/src/Grav/Common/Page/Pages.php @@ -459,14 +459,24 @@ class Pages // Remove any inclusive sets from filter. $sets = ['published', 'visible', 'modular', 'routable']; foreach ($sets as $type) { - $var = "non-{$type}"; - if (isset($filters[$type], $filters[$var]) && $filters[$type] && $filters[$var]) { - unset($filters[$type], $filters[$var]); + $nonType = "non-{$type}"; + if (isset($filters[$type], $filters[$nonType]) && $filters[$type] === $filters[$nonType]) { + if (!$filters[$type]) { + // Both options are false, return empty collection as nothing can match the filters. + return new Collection(); + } + + // Both options are true, remove opposite filters as all pages will match the filters. + unset($filters[$type], $filters[$nonType]); } } // Filter the collection foreach ($filters as $type => $filter) { + if (null === $filter) { + continue; + } + // Convert non-type to type. if (str_starts_with($type, 'non-')) { $type = substr($type, 4); From 49fca0da2b6155a634b39856ddc6c6f70f273ff2 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 10 Feb 2021 18:46:43 +0200 Subject: [PATCH 50/66] Added support for setting session domain [#2040] --- CHANGELOG.md | 1 + system/blueprints/config/system.yaml | 6 ++++++ system/config/system.yaml | 3 ++- .../Grav/Common/Service/SessionServiceProvider.php | 14 +++++++++----- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff2241839..7003239b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ * Added ability to filter enabled or disabled with bin/gpm index [#3187](https://github.com/getgrav/grav/pull/3187) * Added `$grav->getVersion()` or `grav.version` in twig to get the current Grav version [#3142](https://github.com/getgrav/grav/issues/3142) * Added second parameter to `$blueprint->flattenData()` to include every field, including those which have no data + * Added support for setting session domain [#2040](https://github.com/getgrav/grav/pull/2040) 1. [](#bugfix) * Fixed issue with `content-security-policy` not being properly supported with `http-equiv` + support single quotes * Fixed CLI progressbar in `backup` and `security` commands to use styled output [#3198](https://github.com/getgrav/grav/issues/3198) diff --git a/system/blueprints/config/system.yaml b/system/blueprints/config/system.yaml index 2fb45a136..538fd08f5 100644 --- a/system/blueprints/config/system.yaml +++ b/system/blueprints/config/system.yaml @@ -1348,6 +1348,12 @@ form: validate: type: bool + session.domain: + type: text + size: small + label: PLUGIN_ADMIN.SESSION_DOMAIN + help: PLUGIN_ADMIN.SESSION_DOMAIN_HELP + session.path: type: text size: small diff --git a/system/config/system.yaml b/system/config/system.yaml index 99e74ca68..5c29a7869 100644 --- a/system/config/system.yaml +++ b/system/config/system.yaml @@ -172,7 +172,8 @@ session: httponly: true # Set session HTTP only. If true, indicates that cookies should be used only over HTTP, and JavaScript modification is not allowed. samesite: Lax # Set session SameSite. Possible values are Lax, Strict and None. See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite split: true # Sessions should be independent between site and plugins (such as admin) - path: + domain: # Domain used by sessions. + path: # Path used by sessions. gpm: releases: stable # Set to either 'stable' or 'testing' diff --git a/system/src/Grav/Common/Service/SessionServiceProvider.php b/system/src/Grav/Common/Service/SessionServiceProvider.php index 20c56a4f2..88c833f26 100644 --- a/system/src/Grav/Common/Service/SessionServiceProvider.php +++ b/system/src/Grav/Common/Service/SessionServiceProvider.php @@ -43,19 +43,23 @@ class SessionServiceProvider implements ServiceProviderInterface $cookie_secure = (bool)$config->get('system.session.secure', false); $cookie_httponly = (bool)$config->get('system.session.httponly', true); $cookie_lifetime = (int)$config->get('system.session.timeout', 1800); + $cookie_domain = $config->get('system.session.domain'); $cookie_path = $config->get('system.session.path'); $cookie_samesite = $config->get('system.session.samesite', 'Lax'); + + if (null === $cookie_domain) { + $cookie_domain = $uri->host(); + if ($cookie_domain === 'localhost') { + $cookie_domain = ''; + } + } + if (null === $cookie_path) { $cookie_path = '/' . trim(Uri::filterPath($uri->rootUrl(false)), '/'); } // Session cookie path requires trailing slash. $cookie_path = rtrim($cookie_path, '/') . '/'; - $cookie_domain = $uri->host(); - if ($cookie_domain === 'localhost') { - $cookie_domain = ''; - } - // Activate admin if we're inside the admin path. $is_admin = false; if ($config->get('plugins.admin.enabled')) { From 129fd7fdad6db094a0313ed69d19c9ecd7a9bf7e Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 11 Feb 2021 10:10:50 +0200 Subject: [PATCH 51/66] Added `Plugins::getPlugins()` and `Plugins::getPlugin($name)` to make it easier to access plugin instances [#2277] --- CHANGELOG.md | 1 + system/src/Grav/Common/Plugins.php | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7003239b3..5781f9313 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ 1. [](#new) * Added `Medium::attribute()` to pass arbitrary attributes [#3065](https://github.com/getgrav/grav/pull/3065) + * Added `Plugins::getPlugins()` and `Plugins::getPlugin($name)` to make it easier to access plugin instances [#2277](https://github.com/getgrav/grav/pull/2277) 1. [](#improved) * Added abstract `FlexObject`, `FlexCollection` and `FlexIndex` classes to `\Grav\Common\Flex` namespace (extend those instead of Framework or Generic classes) * Updated bundled `composer.phar` binary to latest version `2.0.9` diff --git a/system/src/Grav/Common/Plugins.php b/system/src/Grav/Common/Plugins.php index 5c80dfb9c..f1d7b8e66 100644 --- a/system/src/Grav/Common/Plugins.php +++ b/system/src/Grav/Common/Plugins.php @@ -170,6 +170,33 @@ class Plugins extends Iterator return $array; } + /** + * @return Plugin[] Index of all plugins by plugin name. + */ + public static function getPlugins(): array + { + $grav = Grav::instance(); + $plugins = $grav['plugins']; + + $list = []; + foreach ($plugins as $instance) { + $list[$instance->name] = $instance; + } + + return $list; + } + + /** + * @param string $name Plugin name + * @return Plugin|null Plugin object or null if plugin cannot be found. + */ + public static function getPlugin(string $name) + { + $list = static::getPlugins(); + + return $list[$name] ?? null; + } + /** * Return list of all plugin data with their blueprints. * From c626b1599eadc1ad4f8707be43e529ed454e22fb Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 11 Feb 2021 10:46:13 +0200 Subject: [PATCH 52/66] Fixed root page to always contain trailing slash [#3127] --- CHANGELOG.md | 1 + system/src/Grav/Common/Page/Page.php | 5 ----- .../Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php | 5 ----- 3 files changed, 1 insertion(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5781f9313..319f8771a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ * Fixed wrong values in Admin pages list [#3214](https://github.com/getgrav/grav/issues/3214) * Fixed pipelined asset using different hash when extra asset is added to before/after position [#2781](https://github.com/getgrav/grav/issues/2781) * Fixed trailing slash redirect to only apply to GET/HEAD requests and use 301 status code [#3127](https://github.com/getgrav/grav/issues/3127) + * Fixed root page to always contain trailing slash [#3127](https://github.com/getgrav/grav/issues/3127) * Fixed `` to use name instead property [#3010](https://github.com/getgrav/grav/pull/3010) * Fixed behavior of opposite filters in `Pages::getCollection()` to match Grav 1.6 [#3216](https://github.com/getgrav/grav/pull/3216) diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index e7880a97f..2f98fc146 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -1859,11 +1859,6 @@ class Page implements PageInterface $uri = $grav['uri']; $url = $uri->rootUrl($include_host) . '/' . trim($route, '/') . $this->urlExtension(); - // trim trailing / if not root - if ($url !== '/') { - $url = rtrim($url, '/'); - } - return Uri::filterPath($url); } diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php index 75a926046..002973982 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php @@ -150,11 +150,6 @@ trait PageRoutableTrait $uri = $grav['uri']; $url = $uri->rootUrl($include_host) . '/' . trim($route, '/') . $this->urlExtension(); - // trim trailing / if not root - if ($url !== '/') { - $url = rtrim($url, '/'); - } - return Uri::filterPath($url); } From c4296121b135c60bdc55531d6c0901741e1800d8 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 11 Feb 2021 11:24:30 +0200 Subject: [PATCH 53/66] Reverse subject <-> pattern parameter order in new twig methods --- system/src/Grav/Common/Twig/TwigExtension.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/system/src/Grav/Common/Twig/TwigExtension.php b/system/src/Grav/Common/Twig/TwigExtension.php index 966424294..4c6fa9e00 100644 --- a/system/src/Grav/Common/Twig/TwigExtension.php +++ b/system/src/Grav/Common/Twig/TwigExtension.php @@ -1162,13 +1162,13 @@ class TwigExtension extends AbstractExtension implements GlobalsInterface /** * Twig wrapper for PHP's preg_match method * - * @param string $pattern the regex pattern to use for match * @param string $subject the content to perform the match on + * @param string $pattern the regex pattern to use for match * @param int $flags * @param int $offset * @return array|false returns the matches if there is at least one match in the subject for a given pattern or null if not. */ - public function regexMatch($pattern, $subject, $flags = 0, $offset = 0) + public function regexMatch($subject, $pattern, $flags = 0, $offset = 0) { if (preg_match($pattern, $subject, $matches, $flags, $offset) === false) { return false; @@ -1180,13 +1180,13 @@ class TwigExtension extends AbstractExtension implements GlobalsInterface /** * Twig wrapper for PHP's preg_split method * - * @param string $pattern the regex pattern to use for split * @param string $subject the content to perform the split on + * @param string $pattern the regex pattern to use for split * @param int $limit the maximum possible splits for the given pattern * @param int $flags * @return array|false the resulting array after performing the split operation */ - public function regexSplit($pattern, $subject, $limit = -1, $flags = 0) + public function regexSplit($subject, $pattern, $limit = -1, $flags = 0) { return preg_split($pattern, $subject, $limit, $flags); } From 2195bf230732efbaa5b9e83755969de1da870fe7 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Thu, 11 Feb 2021 13:43:23 +0200 Subject: [PATCH 54/66] Fixed modular content with missing template file ending up using non-modular template [#3218] --- CHANGELOG.md | 1 + system/src/Grav/Common/Page/Page.php | 3 +++ system/src/Grav/Common/Twig/Twig.php | 33 ++++++++++++---------------- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1850c84b6..a729ebaf4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ * Fixed root page to always contain trailing slash [#3127](https://github.com/getgrav/grav/issues/3127) * Fixed `` to use name instead property [#3010](https://github.com/getgrav/grav/pull/3010) * Fixed behavior of opposite filters in `Pages::getCollection()` to match Grav 1.6 [#3216](https://github.com/getgrav/grav/pull/3216) + * Fixed modular content with missing template file ending up using non-modular template [#3218](https://github.com/getgrav/grav/issues/3218) # v1.7.5 ## 02/01/2021 diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index 2f98fc146..14bdd0abf 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -24,6 +24,7 @@ use Grav\Common\Page\Interfaces\PageInterface; use Grav\Common\Media\Traits\MediaTrait; use Grav\Common\Page\Markdown\Excerpts; use Grav\Common\Page\Traits\PageFormTrait; +use Grav\Common\Twig\Twig; use Grav\Common\Uri; use Grav\Common\Utils; use Grav\Common\Yaml; @@ -938,6 +939,7 @@ class Page implements PageInterface */ private function processTwig() { + /** @var Twig $twig */ $twig = Grav::instance()['twig']; $this->content = $twig->processPage($this, $this->content); } @@ -949,6 +951,7 @@ class Page implements PageInterface */ public function cachePageContent() { + /** @var Cache $cache */ $cache = Grav::instance()['cache']; $cache_id = md5('page' . $this->getCacheKey()); $cache->save($cache_id, ['content' => $this->content, 'content_meta' => $this->content_meta]); diff --git a/system/src/Grav/Common/Twig/Twig.php b/system/src/Grav/Common/Twig/Twig.php index 9fa236e5e..d4f710be3 100644 --- a/system/src/Grav/Common/Twig/Twig.php +++ b/system/src/Grav/Common/Twig/Twig.php @@ -289,8 +289,7 @@ class Twig $output = ''; try { - // Process Modular Twig - if ($item->modularTwig()) { + if ($item->isModule()) { $twig_vars['content'] = $content; $template = $this->getPageTwigTemplate($item); $output = $content = $local_twig->render($template, $twig_vars); @@ -452,6 +451,7 @@ class Twig public function getPageTwigTemplate($page, &$format = null) { $template = $page->template(); + $default = $page->isModule() ? 'modular/default' : 'default'; $extension = $format ?: $page->templateFormat(); $twig_extension = $extension ? '.'. $extension .TWIG_EXT : TEMPLATE_EXT; $template_file = $this->template($page->template() . $twig_extension); @@ -459,26 +459,21 @@ class Twig $page_template = null; $loader = $this->twig->getLoader(); - if ($loader instanceof ExistsLoaderInterface ) { - + if ($loader instanceof ExistsLoaderInterface) { if ($loader->exists($template_file)) { + // template.xxx.twig $page_template = $template_file; + } elseif ($twig_extension !== TEMPLATE_EXT && $loader->exists($template . TEMPLATE_EXT)) { + // template.html.twig + $page_template = $template . TEMPLATE_EXT; + $format = 'html'; + } elseif ($loader->exists($default . $twig_extension)) { + // default.xxx.twig + $page_template = $default . $twig_extension; } else { - // Try with template + html.twig - if ($twig_extension !== TEMPLATE_EXT && $loader->exists($template . TEMPLATE_EXT)) { - $page_template = $template . TEMPLATE_EXT; - $format = 'html'; - // Try with default and original extension - } elseif ($loader->exists('default' . $twig_extension)) { - $page_template = 'default' . $twig_extension; - // Else try default + default extension - } elseif (!$page->isModule() && $loader->exists('default' . TEMPLATE_EXT)) { - $page_template = 'default' . TEMPLATE_EXT; - $format = 'html'; - } else { - $page_template = 'modular/default' . TEMPLATE_EXT; - $format = 'html'; - } + // default.html.twig + $page_template = $default . TEMPLATE_EXT; + $format = 'html'; } } From a1306d9eb404f27b706bbe1489c4cdd87f265eec Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Tue, 16 Feb 2021 12:44:30 +0200 Subject: [PATCH 55/66] Fixed broken attachment image in Flex Objects Admin when `destination: self@` used [#3225] --- CHANGELOG.md | 1 + system/src/Grav/Common/Flex/FlexObject.php | 45 +++++++++++++++ .../Common/Flex/Types/Users/UserObject.php | 26 --------- .../Framework/Flex/Traits/FlexMediaTrait.php | 55 +++++++++++++++++++ 4 files changed, 101 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a729ebaf4..2a6511b44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ * Fixed `` to use name instead property [#3010](https://github.com/getgrav/grav/pull/3010) * Fixed behavior of opposite filters in `Pages::getCollection()` to match Grav 1.6 [#3216](https://github.com/getgrav/grav/pull/3216) * Fixed modular content with missing template file ending up using non-modular template [#3218](https://github.com/getgrav/grav/issues/3218) + * Fixed broken attachment image in Flex Objects Admin when `destination: self@` used [#3225](https://github.com/getgrav/grav/issues/3225) # v1.7.5 ## 02/01/2021 diff --git a/system/src/Grav/Common/Flex/FlexObject.php b/system/src/Grav/Common/Flex/FlexObject.php index bb62d4104..2a43eaa44 100644 --- a/system/src/Grav/Common/Flex/FlexObject.php +++ b/system/src/Grav/Common/Flex/FlexObject.php @@ -14,6 +14,7 @@ namespace Grav\Common\Flex; use Grav\Common\Flex\Traits\FlexGravTrait; use Grav\Common\Flex\Traits\FlexObjectTrait; use Grav\Framework\Flex\Traits\FlexMediaTrait; +use function is_array; /** * Class FlexObject @@ -25,4 +26,48 @@ abstract class FlexObject extends \Grav\Framework\Flex\FlexObject use FlexGravTrait; use FlexObjectTrait; use FlexMediaTrait; + + /** + * {@inheritdoc} + * @see FlexObjectInterface::getFormValue() + */ + public function getFormValue(string $name, $default = null, string $separator = null) + { + $value = $this->getNestedProperty($name, null, $separator); + + // Handle media order field. + if (null === $value && $name === 'media_order') { + return implode(',', $this->getMediaOrder()); + } + + // Handle media fields. + $settings = $this->getFieldSettings($name); + if ($settings['media_field'] ?? false === true) { + return $this->parseFileProperty($value, $settings); + } + + return $value ?? $default; + } + + /** + * {@inheritdoc} + * @see FlexObjectInterface::prepareStorage() + */ + public function prepareStorage(): array + { + // Remove extra content from media fields. + $fields = $this->getMediaFields(); + foreach ($fields as $field) { + $data = $this->getNestedProperty($field); + if (is_array($data)) { + foreach ($data as $name => &$image) { + unset($image['image_url'], $image['thumb_url']); + } + unset($image); + $this->setNestedProperty($field, $data); + } + } + + return parent::prepareStorage(); + } } diff --git a/system/src/Grav/Common/Flex/Types/Users/UserObject.php b/system/src/Grav/Common/Flex/Types/Users/UserObject.php index 1d803bd6a..4b87824b6 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserObject.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserObject.php @@ -280,32 +280,6 @@ class UserObject extends FlexObject implements UserInterface, Countable return $this->getGroups()->authorize($action, $scope); } - /** - * Get value from a page variable (used mostly for creating edit forms). - * - * @param string $name Variable name. - * @param mixed $default - * @param string|null $separator - * @return mixed - */ - public function getFormValue(string $name, $default = null, string $separator = null) - { - $value = parent::getFormValue($name, null, $separator); - - $settings = $this->getFieldSettings($name); - if ($settings['media_field'] ?? false === true) { - return $this->parseFileProperty($value); - } - - if (null === $value) { - if ($name === 'media_order') { - return implode(',', $this->getMediaOrder()); - } - } - - return $value ?? $default; - } - /** * @param string $property * @param mixed $default diff --git a/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php b/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php index 27ad3f814..6db2eecfe 100644 --- a/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php +++ b/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php @@ -73,6 +73,10 @@ trait FlexMediaTrait return $media; } + /** + * @param string $field + * @return array|null + */ protected function getFieldSettings(string $field): ?array { if ($field === '') { @@ -109,6 +113,57 @@ trait FlexMediaTrait return $settings + ['accept' => '*', 'limit' => 1000, 'self' => true]; } + + protected function getMediaFields(): array + { + // Load settings for the field. + $schema = $this->getBlueprint()->schema(); + + $list = []; + foreach ($schema->getState()['items'] as $field => $settings) { + if (isset($settings['type']) && (in_array($settings['type'], ['avatar', 'file', 'pagemedia']) || !empty($settings['destination']))) { + $list[] = $field; + } + } + + return $list; + } + + /** + * @param array|mixed $value + * @param array $settings + * @return array|mixed + */ + protected function parseFileProperty($value, array $settings = []) + { + if (!is_array($value)) { + return $value; + } + + $media = $this->getMedia(); + + $list = []; + foreach ($value as $filename => $info) { + if (!is_array($info)) { + continue; + } + + /** @var Medium|null $thumbFile */ + $imageFile = $media[$filename]; + $url = $imageFile ? $imageFile->url() : null; + $list[$filename] = [ + 'name' => $info['name'] ?? null, + 'type' => $info['type'] ?? null, + 'size' => $info['size'] ?? null, + 'path' => $filename, + 'image_url' => $url, + 'thumb_url' => $url + ]; + } + + return $list; + } + /** * @param UploadedFileInterface $uploadedFile * @param string|null $filename From 5f596fb4fd49239418d2f175563e45361e1a7050 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Tue, 16 Feb 2021 21:22:04 +0200 Subject: [PATCH 56/66] Fixed UserObject after interface change --- system/src/Grav/Common/Flex/Types/Users/UserObject.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/system/src/Grav/Common/Flex/Types/Users/UserObject.php b/system/src/Grav/Common/Flex/Types/Users/UserObject.php index 4b87824b6..900c01035 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserObject.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserObject.php @@ -810,9 +810,10 @@ class UserObject extends FlexObject implements UserInterface, Countable /** * @param array|mixed $value + * @param array $settings * @return array|mixed */ - protected function parseFileProperty($value) + protected function parseFileProperty($value, array $settings = []) { if (!is_array($value)) { return $value; From 66c653b6f5fe94a409899f6b2d83ae54a624139f Mon Sep 17 00:00:00 2001 From: Stephan Strate Date: Tue, 16 Feb 2021 20:50:51 +0100 Subject: [PATCH 57/66] read all language files from theme stream (#3226) --- system/src/Grav/Common/Themes.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/system/src/Grav/Common/Themes.php b/system/src/Grav/Common/Themes.php index 45bea5e4b..6adeea09e 100644 --- a/system/src/Grav/Common/Themes.php +++ b/system/src/Grav/Common/Themes.php @@ -318,6 +318,7 @@ class Themes extends Iterator /** * Load theme languages. + * Reads ALL language files from theme stream and merges them. * * @param Config $config Configuration class * @return void @@ -328,13 +329,13 @@ class Themes extends Iterator $locator = $this->grav['locator']; if ($config->get('system.languages.translations', true)) { - $language_file = $locator->findResource('theme://languages' . YAML_EXT); - if ($language_file) { + $language_files = array_reverse($locator->findResources('theme://languages' . YAML_EXT)); + foreach ($language_files as $language_file) { $language = CompiledYamlFile::instance($language_file)->content(); $this->grav['languages']->mergeRecursive($language); } - $languages_folder = $locator->findResource('theme://languages'); - if (file_exists($languages_folder)) { + $languages_folders = array_reverse($locator->findResources('theme://languages')); + foreach ($languages_folders as $languages_folder) { $languages = []; $iterator = new DirectoryIterator($languages_folder); foreach ($iterator as $file) { From f4180584d616f7fdd63735c75acbd232a38dde4f Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Tue, 16 Feb 2021 12:53:33 -0700 Subject: [PATCH 58/66] updated changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a6511b44..bd9b5ced6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ * Added `$grav->getVersion()` or `grav.version` in twig to get the current Grav version [#3142](https://github.com/getgrav/grav/issues/3142) * Added second parameter to `$blueprint->flattenData()` to include every field, including those which have no data * Added support for setting session domain [#2040](https://github.com/getgrav/grav/pull/2040) + * Better support inheriting languages when using child themes [#3226](https://github.com/getgrav/grav/pull/3226) 1. [](#bugfix) * Fixed issue with `content-security-policy` not being properly supported with `http-equiv` + support single quotes * Fixed CLI progressbar in `backup` and `security` commands to use styled output [#3198](https://github.com/getgrav/grav/issues/3198) From bf895820b31bcea070762240a1410980782205f8 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Tue, 16 Feb 2021 14:39:23 -0700 Subject: [PATCH 59/66] minor composer update --- composer.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/composer.lock b/composer.lock index b604ef8cc..eafebfcee 100644 --- a/composer.lock +++ b/composer.lock @@ -2584,7 +2584,7 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.22.0", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", @@ -2643,7 +2643,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.1" }, "funding": [ { @@ -2663,16 +2663,16 @@ }, { "name": "symfony/polyfill-iconv", - "version": "v1.22.0", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "b34bfb8c4c22650ac080d2662ae3502e5f2f4ae6" + "reference": "06fb361659649bcfd6a208a0f1fcaf4e827ad342" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/b34bfb8c4c22650ac080d2662ae3502e5f2f4ae6", - "reference": "b34bfb8c4c22650ac080d2662ae3502e5f2f4ae6", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/06fb361659649bcfd6a208a0f1fcaf4e827ad342", + "reference": "06fb361659649bcfd6a208a0f1fcaf4e827ad342", "shasum": "" }, "require": { @@ -2723,7 +2723,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.22.1" }, "funding": [ { @@ -2739,20 +2739,20 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.22.0", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13" + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", - "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/5232de97ee3b75b0360528dae24e73db49566ab1", + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1", "shasum": "" }, "require": { @@ -2803,7 +2803,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.1" }, "funding": [ { @@ -2819,11 +2819,11 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { "name": "symfony/polyfill-php74", - "version": "v1.22.0", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php74.git", @@ -2883,7 +2883,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php74/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-php74/tree/v1.22.1" }, "funding": [ { @@ -2903,7 +2903,7 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.22.0", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", @@ -2966,7 +2966,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.1" }, "funding": [ { @@ -4492,16 +4492,16 @@ }, { "name": "phpstan/phpstan", - "version": "0.12.74", + "version": "0.12.76", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "bc5f9483c8f461c86653dcbd040cf0d2778c91a2" + "reference": "7aaaf9a759a29795e8f46d48041af1c1f1b23d38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/bc5f9483c8f461c86653dcbd040cf0d2778c91a2", - "reference": "bc5f9483c8f461c86653dcbd040cf0d2778c91a2", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/7aaaf9a759a29795e8f46d48041af1c1f1b23d38", + "reference": "7aaaf9a759a29795e8f46d48041af1c1f1b23d38", "shasum": "" }, "require": { @@ -4532,7 +4532,7 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.74" + "source": "https://github.com/phpstan/phpstan/tree/0.12.76" }, "funding": [ { @@ -4548,7 +4548,7 @@ "type": "tidelift" } ], - "time": "2021-02-08T15:00:25+00:00" + "time": "2021-02-13T11:47:44+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From 9faf42c5da4e112cf93d907f24e04f15b911d7bd Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Tue, 16 Feb 2021 17:41:10 -0700 Subject: [PATCH 60/66] updated languages --- system/languages/ar.yaml | 23 +++++- system/languages/bg.yaml | 4 +- system/languages/ca.yaml | 13 +++- system/languages/cs.yaml | 7 +- system/languages/da.yaml | 32 +++++++- system/languages/de.yaml | 9 ++- system/languages/el.yaml | 85 ++++++++++++++++++++- system/languages/es.yaml | 20 ++++- system/languages/et.yaml | 25 ++++++- system/languages/eu.yaml | 4 +- system/languages/fa.yaml | 4 +- system/languages/fi.yaml | 4 +- system/languages/fr.yaml | 43 +++++------ system/languages/gl.yaml | 144 ++++++++++++++++++++++++++++++++++++ system/languages/he.yaml | 4 +- system/languages/hr.yaml | 4 +- system/languages/hu.yaml | 2 +- system/languages/id.yaml | 6 +- system/languages/is.yaml | 4 +- system/languages/it.yaml | 50 ++++++++++++- system/languages/ja.yaml | 19 ++++- system/languages/ko.yaml | 4 +- system/languages/lt.yaml | 4 +- system/languages/nl.yaml | 4 +- system/languages/no.yaml | 9 ++- system/languages/pl.yaml | 42 ++++++++++- system/languages/pt.yaml | 126 +++++++++++++++++++++++++++---- system/languages/ro.yaml | 4 +- system/languages/ru.yaml | 21 +++--- system/languages/sk.yaml | 4 +- system/languages/sl.yaml | 4 +- system/languages/sr.yaml | 144 ++++++++++++++++++++++++++++++++++++ system/languages/sv.yaml | 32 +++++++- system/languages/th.yaml | 2 +- system/languages/tr.yaml | 39 +++++++++- system/languages/uk.yaml | 4 +- system/languages/vi.yaml | 4 +- system/languages/zh-CN.yaml | 144 ++++++++++++++++++++++++++++++++++++ 38 files changed, 986 insertions(+), 111 deletions(-) create mode 100644 system/languages/gl.yaml create mode 100644 system/languages/sr.yaml create mode 100644 system/languages/zh-CN.yaml diff --git a/system/languages/ar.yaml b/system/languages/ar.yaml index 04e63f976..960540588 100644 --- a/system/languages/ar.yaml +++ b/system/languages/ar.yaml @@ -1,6 +1,17 @@ --- GRAV: FRONTMATTER_ERROR_PAGE: "---\nالعنوان: %1$s\n---\n# خطأ: مادة أمامية غير صحيحة\n\nمسار: '%2$s'\n\n**%3$s**\n\n, , ,\n\n%4$s\n, , ," + INFLECTOR_UNCOUNTABLE: + - 'معدّات' + - 'معلومات' + - 'أرز' + - 'مال' + - 'نوع' + - 'سلسلة' + - 'سمك' + - 'خروف' + INFLECTOR_IRREGULAR: + 'person': 'أشخاص' NICETIME: NO_DATE_PROVIDED: لم يتم تقديم التاريخ BAD_DATE: تاريخ خاطئ @@ -37,8 +48,8 @@ GRAV: YR_PLURAL: سنوات DEC_PLURAL: عقود FORM: - VALIDATION_FAIL: فشل التحقق من صحة: - INVALID_INPUT: إدخال غير صحيح في + VALIDATION_FAIL: 'فشل التحقق من صحة:' + INVALID_INPUT: 'إدخال غير صحيح في' MISSING_REQUIRED_FIELD: 'حقل مطلوب مفقود:' MONTHS_OF_THE_YEAR: - 'كانون الثاني' @@ -61,3 +72,11 @@ GRAV: - 'الجمعة' - 'السبت' - 'الأحد' + CRON: + EVERY: كل + EVERY_HOUR: كل ساعة + EVERY_MINUTE: كل دقيقة + EVERY_DAY_OF_WEEK: كل يوم في الأسبوع + EVERY_DAY_OF_MONTH: كل يوم في الشهر + EVERY_MONTH: ' كل شهر' + TEXT_PERIOD: كل diff --git a/system/languages/bg.yaml b/system/languages/bg.yaml index 48daceb16..174b3a45d 100644 --- a/system/languages/bg.yaml +++ b/system/languages/bg.yaml @@ -36,8 +36,8 @@ GRAV: YR_PLURAL: г DEC_PLURAL: дстлт FORM: - VALIDATION_FAIL: Неуспешна проверка: - INVALID_INPUT: Невалидно въвеждане в + VALIDATION_FAIL: 'Неуспешна проверка:' + INVALID_INPUT: 'Невалидно въвеждане в' MISSING_REQUIRED_FIELD: 'Липсва задължително поле:' MONTHS_OF_THE_YEAR: - 'януари' diff --git a/system/languages/ca.yaml b/system/languages/ca.yaml index bd04474c0..7795aef8b 100644 --- a/system/languages/ca.yaml +++ b/system/languages/ca.yaml @@ -1,6 +1,15 @@ --- GRAV: FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# S'ha produït un error: Frontmatter invàlid\n\nRuta: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_UNCOUNTABLE: + - 'equipment' + - 'informació' + - 'rice' + - 'money' + - 'species' + - 'series' + - 'fish' + - 'sheep' NICETIME: NO_DATE_PROVIDED: No s'ha proporcionat data BAD_DATE: Data invàlida @@ -36,8 +45,8 @@ GRAV: YR_PLURAL: anys DEC_PLURAL: dèc. FORM: - VALIDATION_FAIL: Ha fallat la validació: - INVALID_INPUT: Entrada no vàlida a + VALIDATION_FAIL: 'Ha fallat la validació:' + INVALID_INPUT: 'Entrada no vàlida a' MISSING_REQUIRED_FIELD: 'Falta camp obligatori:' MONTHS_OF_THE_YEAR: - 'Gener' diff --git a/system/languages/cs.yaml b/system/languages/cs.yaml index 80844c997..bfad42364 100644 --- a/system/languages/cs.yaml +++ b/system/languages/cs.yaml @@ -101,9 +101,10 @@ GRAV: YR_PLURAL: r DEC_PLURAL: dek FORM: - VALIDATION_FAIL: Ověření se nezdařilo: - INVALID_INPUT: Neplatný vstup v + VALIDATION_FAIL: 'Ověření se nezdařilo:' + INVALID_INPUT: 'Neplatný vstup v' MISSING_REQUIRED_FIELD: 'Chybí požadované pole:' + XSS_ISSUES: "Byly zjištěny možné problémy XSS v poli '%s'" MONTHS_OF_THE_YEAR: - 'leden' - 'únor' @@ -125,6 +126,8 @@ GRAV: - 'pátek' - 'sobota' - 'neděle' + YES: "Ano" + NO: "Ne" CRON: EVERY: každý EVERY_HOUR: každou hodinu diff --git a/system/languages/da.yaml b/system/languages/da.yaml index 17ce683ba..f23477c53 100644 --- a/system/languages/da.yaml +++ b/system/languages/da.yaml @@ -1,11 +1,27 @@ --- GRAV: FRONTMATTER_ERROR_PAGE: "---\nTitel: %1$s\n---\n\n# Fejl: Ugyldigt frontmatter\n\nSti: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_UNCOUNTABLE: + - 'udstyr' + - 'information' + - 'ris' + - 'penge' + - 'arter' + - 'Serier' + - 'fisk' + - 'får' + INFLECTOR_IRREGULAR: + 'person': 'personer' + 'man': 'mænd' + 'child': 'børn' + 'sex': 'køn' + 'move': 'flyt' NICETIME: NO_DATE_PROVIDED: Ingen dato angivet BAD_DATE: Ugyldig dato AGO: siden FROM_NOW: fra nu + JUST_NOW: lige nu SECOND: sekund MINUTE: minut HOUR: time @@ -15,6 +31,7 @@ GRAV: YEAR: år DECADE: årti SEC: sek + MIN: min. HR: t WK: u MO: md @@ -36,8 +53,8 @@ GRAV: YR_PLURAL: år DEC_PLURAL: årtier FORM: - VALIDATION_FAIL: Validering mislykkedes: - INVALID_INPUT: Ugyldigt input i + VALIDATION_FAIL: 'Validering mislykkedes:' + INVALID_INPUT: 'Ugyldigt input i' MISSING_REQUIRED_FIELD: 'Mangler obligatorisk felt:' MONTHS_OF_THE_YEAR: - 'januar' @@ -60,3 +77,14 @@ GRAV: - 'fredag' - 'lørdag' - 'søndag' + CRON: + EVERY: hver + EVERY_HOUR: hver time + EVERY_MINUTE: hvert minut + EVERY_DAY_OF_WEEK: alle ugens dage + EVERY_DAY_OF_MONTH: alle dage i måneden + EVERY_MONTH: hver måned + TEXT_PERIOD: Hver + TEXT_MINS: ' ved minut(ter) over timen' + ERROR1: Tagget %s understøttes ikke! + ERROR2: Ugyldigt antal elementer diff --git a/system/languages/de.yaml b/system/languages/de.yaml index 533cf89c3..45c24e79c 100644 --- a/system/languages/de.yaml +++ b/system/languages/de.yaml @@ -101,9 +101,10 @@ GRAV: YR_PLURAL: Jahre DEC_PLURAL: Jahrzehnten FORM: - VALIDATION_FAIL: Überprüfung fehlgeschlagen: - INVALID_INPUT: Ungültige Eingabe in + VALIDATION_FAIL: 'Überprüfung fehlgeschlagen:' + INVALID_INPUT: 'Ungültige Eingabe in' MISSING_REQUIRED_FIELD: 'Erforderliches Feld fehlt:' + XSS_ISSUES: "Potenzielle XSS-Probleme im Feld '%s' erkannt" MONTHS_OF_THE_YEAR: - 'Januar' - 'Februar' @@ -125,8 +126,8 @@ GRAV: - 'Freitag' - 'Samstag' - 'Sonntag' - YES: 'Ja' - NO: 'Nein' + YES: "Ja" + NO: "Nein" CRON: EVERY: jede EVERY_HOUR: jede Stunde diff --git a/system/languages/el.yaml b/system/languages/el.yaml index 1faa8dd87..28619f809 100644 --- a/system/languages/el.yaml +++ b/system/languages/el.yaml @@ -1,11 +1,75 @@ --- GRAV: FRONTMATTER_ERROR_PAGE: "---\nΤίτλος: %1$s\n---\n\n# Σφάλμα: Μη έγκυρη διαδρομή Frontmatter\n\nΔιαδρομή: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_PLURALS: + '/(quiz)$/i': '\1zes' + '/^(ox)$/i': '\1en' + '/([m|l])ouse$/i': '\1ice' + '/(matr|vert|ind)ix|ex$/i': '\1ices' + '/(x|ch|ss|sh)$/i': '\1es' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([^aeiouy]|qu)y$/i': '\1ies' + '/(hive)$/i': '\1s' + '/(?:([^f])fe|([lr])f)$/i': '\1\2ves' + '/sis$/i': 'ses' + '/([ti])um$/i': '\1a' + '/(buffal|tomat)o$/i': '\1oes' + '/(bu)s$/i': '\1ses' + '/(alias|status)/i': '\1es' + '/(octop|vir)us$/i': '\1i' + '/(ax|test)is$/i': '\1es' + '/s$/i': 's' + '/$/': 's' + INFLECTOR_SINGULAR: + '/(quiz)zes$/i': '\1' + '/(matr)ices$/i': '\1ix' + '/(vert|ind)ices$/i': '\1ex' + '/^(ox)en/i': '\1' + '/(alias|status)es$/i': '\1' + '/([octop|vir])i$/i': '\1us' + '/(cris|ax|test)es$/i': '\1is' + '/(shoe)s$/i': '\1' + '/(o)es$/i': '\1' + '/(bus)es$/i': '\1' + '/([m|l])ice$/i': '\1ouse' + '/(x|ch|ss|sh)es$/i': '\1' + '/(m)ovies$/i': '\1ovie' + '/(s)eries$/i': '\1eries' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([lr])ves$/i': '\1f' + '/(tive)s$/i': '\1' + '/(hive)s$/i': '\1' + '/([^f])ves$/i': '\1fe' + '/(^analy)ses$/i': '\1sis' + '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis' + '/([ti])a$/i': '\1um' + '/(n)ews$/i': '\1ews' + INFLECTOR_UNCOUNTABLE: + - 'εξοπλισμός' + - 'πληροφοριες' + - 'rice' + - 'χρήματα' + - 'είδη' + - 'σειρές' + - 'ψάρι' + - 'πρόβατο' + INFLECTOR_IRREGULAR: + 'person': 'άνθρωποι' + 'man': 'άνδρες' + 'child': 'παιδιά' + 'sex': 'φύλο' + 'move': 'κινήσεις' + INFLECTOR_ORDINALS: + 'default': 'th' + 'first': 'st' + 'second': 'nd' + 'third': 'rd' NICETIME: NO_DATE_PROVIDED: Δεν δόθηκε καμία ημερομηνία BAD_DATE: Εσφαλμένη ημερομηνία AGO: πρίν FROM_NOW: από τώρα + JUST_NOW: μόλις τώρα SECOND: δευτερόλεπτο MINUTE: λεπτό HOUR: ώρα @@ -37,8 +101,8 @@ GRAV: YR_PLURAL: έτη DEC_PLURAL: δεκαετίες FORM: - VALIDATION_FAIL: Η επικύρωση απέτυχε: - INVALID_INPUT: Μη έγκυρα δεδομένα σε + VALIDATION_FAIL: 'Η επικύρωση απέτυχε:' + INVALID_INPUT: 'Μη έγκυρα δεδομένα σε' MISSING_REQUIRED_FIELD: 'Λείπει το απαιτούμενο πεδίο:' MONTHS_OF_THE_YEAR: - 'Ιανουάριος' @@ -61,3 +125,20 @@ GRAV: - 'Παρασκευή' - 'Σάββατο' - 'Κυριακή' + CRON: + EVERY: κάθε + EVERY_HOUR: κάθε ώρα + EVERY_MINUTE: κάθε λεπτό + EVERY_DAY_OF_WEEK: κάθε μέρα της εβδομάδος + EVERY_DAY_OF_MONTH: κάθε μέρα του μήνα + EVERY_MONTH: κάθε μήνα + TEXT_PERIOD: Κάθε + TEXT_MINS: ' κατά λεπτό(ά) μετά την ώρα' + TEXT_TIME: ' στο :' + TEXT_DOW: ' στις ' + TEXT_MONTH: ' από ' + TEXT_DOM: ' στις ' + ERROR1: Η ετικέτα %s δεν υποστηρίζεται! + ERROR2: Μη έγκυρος αριθμός στοιχείων + ERROR3: Το jquery_element θα έπρεπε να οριστεί στις ρυθμίσεις του jqCron + ERROR4: Μη αναγνωρισμένη έκφραση diff --git a/system/languages/es.yaml b/system/languages/es.yaml index 7bacfeb98..95827ee2b 100644 --- a/system/languages/es.yaml +++ b/system/languages/es.yaml @@ -1,19 +1,25 @@ --- GRAV: - FRONTMATTER_ERROR_PAGE: "---\ntítulo: %1$s\n---\n\n# Error: Frontmatter no válido\n\nRuta: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + FRONTMATTER_ERROR_PAGE: "---\ntítulo: %1$s\n---\n\n# Error: Prefacio no válido\n\nRuta: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_PLURALS: + '/(quiz)$/i': '\1ios' + '/s$/i': 's' + '/$/': 's' INFLECTOR_UNCOUNTABLE: - - 'equipo' + - 'equipamiento' - 'información' - - 'rice' + - 'arroz' - 'dinero' - - 'species' + - 'especies' - 'series' - 'pescado' - 'oveja' INFLECTOR_IRREGULAR: + 'person': 'personas' 'man': 'hombres' 'child': 'niños' 'sex': 'sexos' + 'move': 'movido' INFLECTOR_ORDINALS: 'first': 'ro' 'second': 'do' @@ -33,10 +39,12 @@ GRAV: YEAR: año DECADE: década SEC: seg + MIN: min HR: h WK: sem MO: mes YR: año + DEC: dic SECOND_PLURAL: segundos MINUTE_PLURAL: minutos HOUR_PLURAL: horas @@ -46,6 +54,7 @@ GRAV: YEAR_PLURAL: años DECADE_PLURAL: décadas SEC_PLURAL: segs + MIN_PLURAL: mins HR_PLURAL: hs WK_PLURAL: sem MO_PLURAL: mes @@ -55,6 +64,7 @@ GRAV: VALIDATION_FAIL: 'Falló la validación: ' INVALID_INPUT: 'Dato inválido en: ' MISSING_REQUIRED_FIELD: 'Falta el campo requerido: ' + XSS_ISSUES: "Se detectaron problemas XSS potenciales en el campo '%s'" MONTHS_OF_THE_YEAR: - 'Enero' - 'Febrero' @@ -76,6 +86,8 @@ GRAV: - 'Viernes' - 'Sábado' - 'Domingo' + YES: "Si" + NO: "No" CRON: EVERY: cada EVERY_HOUR: cada hora diff --git a/system/languages/et.yaml b/system/languages/et.yaml index 619aa1a73..e5659d333 100644 --- a/system/languages/et.yaml +++ b/system/languages/et.yaml @@ -1,11 +1,22 @@ --- GRAV: FRONTMATTER_ERROR_PAGE: "---\npealkiri: %1$s\n---\n\n# Viga: vigane Frontmatter'i\n\nasukoht: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_PLURALS: + '/(octop|vir)us$/i': '\1i' + INFLECTOR_SINGULAR: + '/^(ox)en/i': '\1' + '/(alias|status)es$/i': '\1' + '/(shoe)s$/i': '\1' + '/(o)es$/i': '\1' + '/(bus)es$/i': '\1' + '/(x|ch|ss|sh)es$/i': '\1' + '/(tive)s$/i': '\1' + '/(hive)s$/i': '\1' INFLECTOR_UNCOUNTABLE: - 'equipment' - 'informatsioon' - - 'rice' - - 'money' + - 'riis' + - 'raha' - 'species' - 'series' - 'kala' @@ -34,6 +45,7 @@ GRAV: YEAR: aasta DECADE: 10 aastat SEC: sek + MIN: min HR: t WK: näd MO: k. @@ -55,7 +67,7 @@ GRAV: YR_PLURAL: aastat DEC_PLURAL: dek. FORM: - VALIDATION_FAIL: Kinnitamine nurjus: + VALIDATION_FAIL: 'Kinnitamine nurjus:' INVALID_INPUT: 'Vigane sisend:' MISSING_REQUIRED_FIELD: 'Nõutud väli puudub:' MONTHS_OF_THE_YEAR: @@ -81,5 +93,12 @@ GRAV: - 'pühapäev' CRON: EVERY: iga + EVERY_HOUR: iga tund + EVERY_MINUTE: iga minut + EVERY_DAY_OF_WEEK: iga nädala päev EVERY_MONTH: iga kuu TEXT_PERIOD: Iga + ERROR1: Silt %s pole toetatud! + ERROR2: Vale elementide arv + ERROR3: jqCron seadetes peaks olema määratud jquery_element + ERROR4: Tundmatu väljend diff --git a/system/languages/eu.yaml b/system/languages/eu.yaml index 4a9a58e9e..91c3c8e2c 100644 --- a/system/languages/eu.yaml +++ b/system/languages/eu.yaml @@ -36,8 +36,8 @@ GRAV: YR_PLURAL: urt DEC_PLURAL: ham FORM: - VALIDATION_FAIL: Balidazioak huts egin du - INVALID_INPUT: Baliogabeko sarrera + VALIDATION_FAIL: 'Balidazioak huts egin du' + INVALID_INPUT: 'Baliogabeko sarrera' MISSING_REQUIRED_FIELD: 'Derrigorrezko eremua bete gabe:' MONTHS_OF_THE_YEAR: - 'Urtarrila' diff --git a/system/languages/fa.yaml b/system/languages/fa.yaml index 186f79d79..96b96dc04 100644 --- a/system/languages/fa.yaml +++ b/system/languages/fa.yaml @@ -36,8 +36,8 @@ GRAV: YR_PLURAL: سال DEC_PLURAL: دهه FORM: - VALIDATION_FAIL: سنجش اعتبار ناموفق بود - INVALID_INPUT: ورودی نامعتبر در + VALIDATION_FAIL: 'سنجش اعتبار ناموفق بود' + INVALID_INPUT: 'ورودی نامعتبر در' MISSING_REQUIRED_FIELD: 'قسمت ضروری جا افتاده:' MONTHS_OF_THE_YEAR: - 'ژانویه' diff --git a/system/languages/fi.yaml b/system/languages/fi.yaml index e84c19f66..4cb547c68 100644 --- a/system/languages/fi.yaml +++ b/system/languages/fi.yaml @@ -100,8 +100,8 @@ GRAV: YR_PLURAL: v DEC_PLURAL: vuosikymmentä FORM: - VALIDATION_FAIL: Vahvistus epäonnistui: - INVALID_INPUT: Syöte ei kelpaa + VALIDATION_FAIL: 'Vahvistus epäonnistui:' + INVALID_INPUT: 'Syöte ei kelpaa' MISSING_REQUIRED_FIELD: 'Puuttuva pakollinen kenttä:' MONTHS_OF_THE_YEAR: - 'Tammikuu' diff --git a/system/languages/fr.yaml b/system/languages/fr.yaml index 9284f7e6d..d9fa177ea 100644 --- a/system/languages/fr.yaml +++ b/system/languages/fr.yaml @@ -16,6 +16,7 @@ GRAV: '/(buffal|tomat)o$/i': '\1es' '/(bu)s$/i': 'Bus' '/(alias|status)/i': 'alias|status' + '/(octop|vir)us$/i': 'virus' '/(ax|test)is$/i': '\1s' '/s$/i': 's' '/$/': 's' @@ -80,30 +81,30 @@ GRAV: YR_PLURAL: a DEC_PLURAL: décs FORM: - VALIDATION_FAIL: La validation a échoué : - INVALID_INPUT: Saisie non valide + VALIDATION_FAIL: 'La validation a échoué :' + INVALID_INPUT: 'Saisie non valide' MISSING_REQUIRED_FIELD: 'Champ obligatoire manquant :' MONTHS_OF_THE_YEAR: - - 'Janvier' - - 'Février' - - 'Mars' - - 'Avril' - - 'Mai' - - 'Juin' - - 'Juillet' - - 'Août' - - 'Septembre' - - 'Octobre' - - 'Novembre' - - 'Décembre' + - 'janvier' + - 'février' + - 'mars' + - 'avril' + - 'mai' + - 'juin' + - 'juillet' + - 'août' + - 'septembre' + - 'octobre' + - 'novembre' + - 'décembre' DAYS_OF_THE_WEEK: - - 'Lundi' - - 'Mardi' - - 'Mercredi' - - 'Jeudi' - - 'Vendredi' - - 'Samedi' - - 'Dimanche' + - 'lundi' + - 'mardi' + - 'mercredi' + - 'jeudi' + - 'vendredi' + - 'samedi' + - 'dimanche' CRON: EVERY: chaque EVERY_HOUR: toutes les heures diff --git a/system/languages/gl.yaml b/system/languages/gl.yaml new file mode 100644 index 000000000..b016c59c3 --- /dev/null +++ b/system/languages/gl.yaml @@ -0,0 +1,144 @@ +--- +GRAV: + FRONTMATTER_ERROR_PAGE: "---\ntítulo: %1$s\n---\n\n# Erro: Limiar incorrecto\n\nRuta: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_PLURALS: + '/(quiz)$/i': '\1zes' + '/^(ox)$/i': '\1en' + '/([m|l])ouse$/i': '\1ice' + '/(matr|vert|ind)ix|ex$/i': '\1ices' + '/(x|ch|ss|sh)$/i': '\1es' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([^aeiouy]|qu)y$/i': '\1ies' + '/(hive)$/i': '\1s' + '/(?:([^f])fe|([lr])f)$/i': '\1\2ves' + '/sis$/i': 'ses' + '/([ti])um$/i': '\1a' + '/(buffal|tomat)o$/i': '\1oes' + '/(bu)s$/i': '\1ses' + '/(alias|status)/i': '\1' + '/(octop|vir)us$/i': '\1' + '/(ax|test)is$/i': '\1es' + '/s$/i': 's' + '/$/': 's' + INFLECTOR_SINGULAR: + '/(quiz)zes$/i': '\1ces' + '/(matr)ices$/i': '\1ix' + '/(vert|ind)ices$/i': '\1ex' + '/^(ox)en/i': '\1' + '/(alias|status)es$/i': '\1' + '/([octop|vir])i$/i': '\1' + '/(cris|ax|test)es$/i': '\1es' + '/(shoe)s$/i': '\1' + '/(o)es$/i': '\1' + '/(bus)es$/i': '\1' + '/([m|l])ice$/i': '\1ouse' + '/(x|ch|ss|sh)es$/i': '\1' + '/(m)ovies$/i': '\1ovie' + '/(s)eries$/i': '\1eries' + '/([^aeiouy]|qu)ies$/i': '\1' + '/([lr])ves$/i': '\1f' + '/(tive)s$/i': '\1' + '/(hive)s$/i': '\1' + '/([^f])ves$/i': '\1fe' + '/(^analy)ses$/i': '\1se' + '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2se' + '/([ti])a$/i': '\1um' + '/(n)ews$/i': '\1ews' + INFLECTOR_UNCOUNTABLE: + - 'equipo' + - 'información' + - 'arroz' + - 'diñeiro' + - 'especies' + - 'series' + - 'peixe' + - 'ovella' + INFLECTOR_IRREGULAR: + 'person': 'xente' + 'man': 'home' + 'child': 'neno' + 'sex': 'sexos' + 'move': 'move' + INFLECTOR_ORDINALS: + 'default': 'º' + 'first': 'º' + 'second': 'º' + 'third': 'º' + NICETIME: + NO_DATE_PROVIDED: Non fornece unha data + BAD_DATE: Data errada + AGO: hai + FROM_NOW: dende agora + JUST_NOW: xusto agora + SECOND: segundo + MINUTE: minuto + HOUR: hora + DAY: día + WEEK: semana + MONTH: mes + YEAR: ano + DECADE: década + SEC: seg + MIN: min + HR: hr + WK: Sem + MO: m + YR: a + DEC: dec + SECOND_PLURAL: segundos + MINUTE_PLURAL: minutos + HOUR_PLURAL: horas + DAY_PLURAL: días + WEEK_PLURAL: semanas + MONTH_PLURAL: meses + YEAR_PLURAL: anos + DECADE_PLURAL: décadas + SEC_PLURAL: segs + MIN_PLURAL: mins + HR_PLURAL: hrs + WK_PLURAL: sem + MO_PLURAL: mes + YR_PLURAL: a + DEC_PLURAL: deca + FORM: + VALIDATION_FAIL: 'Fallou a validación:' + INVALID_INPUT: 'Entrada incorrecta en' + MISSING_REQUIRED_FIELD: 'Falta un campo requirido:' + MONTHS_OF_THE_YEAR: + - 'xaneiro' + - 'febreiro' + - 'marzo' + - 'abril' + - 'maio' + - 'xuño' + - 'xullo' + - 'agosto' + - 'setembro' + - 'outubro' + - 'novembro' + - 'decembro' + DAYS_OF_THE_WEEK: + - 'luns' + - 'martes' + - 'mércores' + - 'xoves' + - 'venres' + - 'sábado' + - 'domingo' + CRON: + EVERY: cada + EVERY_HOUR: Cada hora + EVERY_MINUTE: Cada minuto + EVERY_DAY_OF_WEEK: cada día da semana + EVERY_DAY_OF_MONTH: cada día do mes + EVERY_MONTH: cada mes + TEXT_PERIOD: Cada + TEXT_MINS: ' dentro de minuto(s) despois da hora' + TEXT_TIME: ' dentro :' + TEXT_DOW: ' o ' + TEXT_MONTH: ' de ' + TEXT_DOM: ' o ' + ERROR1: A etiqueta %s non é compatíbel! + ERROR2: Mal número de elementos + ERROR3: O jquery_element debería estar determinado na configuración de jqCron + ERROR4: Expresión non recoñecida diff --git a/system/languages/he.yaml b/system/languages/he.yaml index afb63d7f8..d7f43186e 100644 --- a/system/languages/he.yaml +++ b/system/languages/he.yaml @@ -37,8 +37,8 @@ GRAV: YR_PLURAL: שני' DEC_PLURAL: עש' FORM: - VALIDATION_FAIL: האימות נכשל: - INVALID_INPUT: קלט לא חוקי + VALIDATION_FAIL: 'האימות נכשל:' + INVALID_INPUT: 'קלט לא חוקי' MISSING_REQUIRED_FIELD: 'שדות חובה חסרים:' MONTHS_OF_THE_YEAR: - 'ינואר' diff --git a/system/languages/hr.yaml b/system/languages/hr.yaml index 1b530b5c2..4827d3eec 100644 --- a/system/languages/hr.yaml +++ b/system/languages/hr.yaml @@ -50,8 +50,8 @@ GRAV: YR_PLURAL: g DEC_PLURAL: des FORM: - VALIDATION_FAIL: Validacija nije uspjela: - INVALID_INPUT: Pogrešan unos u + VALIDATION_FAIL: 'Validacija nije uspjela:' + INVALID_INPUT: 'Pogrešan unos u' MISSING_REQUIRED_FIELD: 'Nedostaje obavezno polje:' MONTHS_OF_THE_YEAR: - 'Siječanj' diff --git a/system/languages/hu.yaml b/system/languages/hu.yaml index a834c45c3..2624cf938 100644 --- a/system/languages/hu.yaml +++ b/system/languages/hu.yaml @@ -58,7 +58,7 @@ GRAV: YR_PLURAL: év DEC_PLURAL: évt FORM: - VALIDATION_FAIL: Érvényesítés nem sikerült: + VALIDATION_FAIL: 'Érvényesítés nem sikerült:' INVALID_INPUT: 'A megadott érték érvénytelen:' MISSING_REQUIRED_FIELD: 'Ez a kötelező mező nincs kitöltve:' MONTHS_OF_THE_YEAR: diff --git a/system/languages/id.yaml b/system/languages/id.yaml index 41431f13e..690959d85 100644 --- a/system/languages/id.yaml +++ b/system/languages/id.yaml @@ -1,6 +1,8 @@ --- GRAV: FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Error: Frontmatter tidak valid\n\nLokasi: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_PLURALS: + '/(quiz)$/i': '\1zes' INFLECTOR_UNCOUNTABLE: - 'peralatan' - 'informasi' @@ -53,8 +55,8 @@ GRAV: YR_PLURAL: thn DEC_PLURAL: dekade FORM: - VALIDATION_FAIL: Validasi gagal: - INVALID_INPUT: Input tidak valid di + VALIDATION_FAIL: 'Validasi gagal:' + INVALID_INPUT: 'Input tidak valid di' MISSING_REQUIRED_FIELD: 'Data yang diperlukan belum terisi:' MONTHS_OF_THE_YEAR: - 'Januari' diff --git a/system/languages/is.yaml b/system/languages/is.yaml index 6f9761ca1..00d42eefa 100644 --- a/system/languages/is.yaml +++ b/system/languages/is.yaml @@ -46,8 +46,8 @@ GRAV: YR_PLURAL: árum DEC_PLURAL: árat FORM: - VALIDATION_FAIL: Sannvottun mistókst: - INVALID_INPUT: Ógilt inntak í + VALIDATION_FAIL: 'Sannvottun mistókst:' + INVALID_INPUT: 'Ógilt inntak í' MISSING_REQUIRED_FIELD: 'Vantar nauðsynlegan reit:' MONTHS_OF_THE_YEAR: - 'janúar' diff --git a/system/languages/it.yaml b/system/languages/it.yaml index 741f72189..f366eb665 100644 --- a/system/languages/it.yaml +++ b/system/languages/it.yaml @@ -1,6 +1,49 @@ --- GRAV: FRONTMATTER_ERROR_PAGE: "---Titolo: %1$s---# Errore: Frontmatter non valido: '%2$s' * *%3$s * * ' '%4$s ' '" + INFLECTOR_PLURALS: + '/(quiz)$/i': '\1' + '/^(ox)$/i': '\1en' + '/([m|l])ouse$/i': '\1ice' + '/(matr|vert|ind)ix|ex$/i': '\1ices' + '/(x|ch|ss|sh)$/i': '\1es' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([^aeiouy]|qu)y$/i': '\1ies' + '/(hive)$/i': '\1s' + '/(?:([^f])fe|([lr])f)$/i': '\1\2ves' + '/sis$/i': 'ses' + '/([ti])um$/i': '\1a' + '/(buffal|tomat)o$/i': '\1oes' + '/(bu)s$/i': '\1ses' + '/(alias|status)/i': '\1es' + '/(octop|vir)us$/i': '\1i' + '/(ax|test)is$/i': '\1es' + '/s$/i': 's' + '/$/': 's' + INFLECTOR_SINGULAR: + '/(quiz)zes$/i': '\1' + '/(matr)ices$/i': '\1ix' + '/(vert|ind)ices$/i': '\1ex' + '/^(ox)en/i': '\1' + '/(alias|status)es$/i': '\1' + '/([octop|vir])i$/i': '\1us' + '/(cris|ax|test)es$/i': '\1is' + '/(shoe)s$/i': '\1' + '/(o)es$/i': '\1' + '/(bus)es$/i': '\1' + '/([m|l])ice$/i': '\1ouse' + '/(x|ch|ss|sh)es$/i': '\1' + '/(m)ovies$/i': '\1ovie' + '/(s)eries$/i': '\1eries' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([lr])ves$/i': '\1f' + '/(tive)s$/i': '\1' + '/(hive)s$/i': '\1' + '/([^f])ves$/i': '\1fe' + '/(^analy)ses$/i': '\1sis' + '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis' + '/([ti])a$/i': '\1um' + '/(n)ews$/i': '\1ews' INFLECTOR_UNCOUNTABLE: - 'dotazione' - 'informazione' @@ -58,9 +101,10 @@ GRAV: YR_PLURAL: anni DEC_PLURAL: decenni FORM: - VALIDATION_FAIL: Validazione fallita: - INVALID_INPUT: Input non valido in + VALIDATION_FAIL: 'Validazione fallita:' + INVALID_INPUT: 'Input non valido in' MISSING_REQUIRED_FIELD: 'Campo richiesto mancante:' + XSS_ISSUES: "Rilevati potenziali problemi di XSS nel campo '%s'" MONTHS_OF_THE_YEAR: - 'Gennaio' - 'Febbraio' @@ -82,6 +126,8 @@ GRAV: - 'Venerdì' - 'Sabato' - 'Domenica' + YES: "Sì" + NO: "No" CRON: EVERY: ogni EVERY_HOUR: ogni ora diff --git a/system/languages/ja.yaml b/system/languages/ja.yaml index 0e3fa16af..701d8e7ac 100644 --- a/system/languages/ja.yaml +++ b/system/languages/ja.yaml @@ -1,11 +1,22 @@ --- GRAV: + INFLECTOR_UNCOUNTABLE: + - 'equipment' + - '情報' + - 'rice' + - 'お金' + - 'species' + - 'series' + - '魚' + - 'ヒツジ' INFLECTOR_IRREGULAR: 'person': 'みんな' 'man': '人' 'child': '子供' 'sex': '性別' 'move': '移動' + INFLECTOR_ORDINALS: + 'first': '番目' NICETIME: NO_DATE_PROVIDED: 日付が設定されていません BAD_DATE: 不正な日付 @@ -40,8 +51,8 @@ GRAV: YR_PLURAL: 年 DEC_PLURAL: 10年 FORM: - VALIDATION_FAIL: バリデーション失敗 : - INVALID_INPUT: 不正な入力: + VALIDATION_FAIL: 'バリデーション失敗 :' + INVALID_INPUT: '不正な入力:' MISSING_REQUIRED_FIELD: '必須項目が入力されていません:' MONTHS_OF_THE_YEAR: - '1月' @@ -64,3 +75,7 @@ GRAV: - '金' - '土' - '日' + CRON: + EVERY: 毎 + EVERY_MONTH: 毎月 + ERROR1: 共有タイプ %s はサポートされていません diff --git a/system/languages/ko.yaml b/system/languages/ko.yaml index 6676a6d25..15aee8ea2 100644 --- a/system/languages/ko.yaml +++ b/system/languages/ko.yaml @@ -37,8 +37,8 @@ GRAV: YR_PLURAL: 년 DEC_PLURAL: 년간 FORM: - VALIDATION_FAIL: 유효성 검사 실패: - INVALID_INPUT: 잘못된 입력 + VALIDATION_FAIL: '유효성 검사 실패:' + INVALID_INPUT: '잘못된 입력' MISSING_REQUIRED_FIELD: '누락 된 필수 필드:' MONTHS_OF_THE_YEAR: - '일월' diff --git a/system/languages/lt.yaml b/system/languages/lt.yaml index aca0fc37f..d894b969e 100644 --- a/system/languages/lt.yaml +++ b/system/languages/lt.yaml @@ -52,8 +52,8 @@ GRAV: YR_PLURAL: m. DEC_PLURAL: dešimtmečiai FORM: - VALIDATION_FAIL: Patvirtinimas nepavyko: - INVALID_INPUT: Neteisingai įvesta į + VALIDATION_FAIL: 'Patvirtinimas nepavyko:' + INVALID_INPUT: 'Neteisingai įvesta į' MISSING_REQUIRED_FIELD: 'Būtina užpildyti laukelį:' MONTHS_OF_THE_YEAR: - 'Sausis' diff --git a/system/languages/nl.yaml b/system/languages/nl.yaml index 9706d03e5..bd0aed915 100644 --- a/system/languages/nl.yaml +++ b/system/languages/nl.yaml @@ -101,8 +101,8 @@ GRAV: YR_PLURAL: jaren DEC_PLURAL: decennia FORM: - VALIDATION_FAIL: Validatie mislukt: - INVALID_INPUT: Ongeldige invoer in + VALIDATION_FAIL: 'Validatie mislukt:' + INVALID_INPUT: 'Ongeldige invoer in' MISSING_REQUIRED_FIELD: 'Ontbrekend verplicht veld:' MONTHS_OF_THE_YEAR: - 'Januari' diff --git a/system/languages/no.yaml b/system/languages/no.yaml index 5b57938e3..2a93e6efa 100644 --- a/system/languages/no.yaml +++ b/system/languages/no.yaml @@ -21,6 +21,7 @@ GRAV: BAD_DATE: Ugyldig dato AGO: siden FROM_NOW: fra nå + JUST_NOW: akkurat nå SECOND: sekund MINUTE: minutt HOUR: time @@ -51,8 +52,8 @@ GRAV: YR_PLURAL: år DEC_PLURAL: årtier FORM: - VALIDATION_FAIL: Godkjenning mislyktes: - INVALID_INPUT: Ugyldig innhold i + VALIDATION_FAIL: 'Godkjenning mislyktes:' + INVALID_INPUT: 'Ugyldig innhold i' MISSING_REQUIRED_FIELD: 'Mangler påkrevd felt:' MONTHS_OF_THE_YEAR: - 'januar' @@ -75,3 +76,7 @@ GRAV: - 'fredag' - 'lørdag' - 'søndag' + CRON: + EVERY: hver + EVERY_HOUR: hver time + EVERY_MINUTE: hvert minutt diff --git a/system/languages/pl.yaml b/system/languages/pl.yaml index bf6fe3712..6da24e5a6 100644 --- a/system/languages/pl.yaml +++ b/system/languages/pl.yaml @@ -1,11 +1,32 @@ --- GRAV: FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Error: Nieprawidłowy Frontmatter\n\nPath: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_SINGULAR: + '/(alias|status)es$/i': '\1' + INFLECTOR_UNCOUNTABLE: + - 'wyposażenie' + - 'informacja' + - 'rice' + - 'pieniądze' + - 'species' + - 'series' + - 'ryba' + - 'owca' + INFLECTOR_IRREGULAR: + 'person': 'człowiek' + 'man': 'mężczyźni' + 'child': 'dzieci' + 'sex': 'płci' + INFLECTOR_ORDINALS: + 'first': 'pierwszy' + 'second': 'drugi' + 'third': 'trzeci' NICETIME: NO_DATE_PROVIDED: Nie podano daty BAD_DATE: Zła data AGO: temu FROM_NOW: od teraz + JUST_NOW: właśnie teraz SECOND: sekunda MINUTE: minuta HOUR: godzina @@ -15,6 +36,7 @@ GRAV: YEAR: rok DECADE: dekada SEC: sek + MIN: minuta HR: godz WK: tydz MO: m-c @@ -36,9 +58,10 @@ GRAV: YR_PLURAL: lat DEC_PLURAL: dekad FORM: - VALIDATION_FAIL: Weryfikacja nie powiodła się: - INVALID_INPUT: Nieprawidłowe dane wejściowe + VALIDATION_FAIL: 'Weryfikacja nie powiodła się:' + INVALID_INPUT: 'Nieprawidłowe dane wejściowe' MISSING_REQUIRED_FIELD: 'Opuszczono wymagane pole:' + XSS_ISSUES: "Potencjalne problemy XSS wykryte w polu '%s'" MONTHS_OF_THE_YEAR: - 'Styczeń' - 'Luty' @@ -60,3 +83,18 @@ GRAV: - 'Piątek' - 'Sobota' - 'Niedziela' + YES: "Tak" + NO: "Nie" + CRON: + EVERY: każdy + EVERY_HOUR: każdą godzinę + EVERY_MINUTE: każdą minutę + EVERY_DAY_OF_WEEK: każdego dnia tygodnia + EVERY_DAY_OF_MONTH: każdego dnia miesiące + EVERY_MONTH: każdego miesiąca + TEXT_PERIOD: Każdego + TEXT_MINS: 'o minut po godzinie' + TEXT_TIME: 'o :' + ERROR1: Znacznik %s nie jest wspierany! + ERROR2: Nieprawidłowa liczba elementów + ERROR4: Wyrażenie nierozpoznane diff --git a/system/languages/pt.yaml b/system/languages/pt.yaml index 590b5e581..2da6944d1 100644 --- a/system/languages/pt.yaml +++ b/system/languages/pt.yaml @@ -1,8 +1,75 @@ --- GRAV: + FRONTMATTER_ERROR_PAGE: "---\ntitle: %1$s\n---\n\n# Erro: Frontmatter Inválido\n\nLocalização: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_PLURALS: + '/(quiz)$/i': '\1zes' + '/^(ox)$/i': '\1en' + '/([m|l])ouse$/i': '\1ice' + '/(matr|vert|ind)ix|ex$/i': '\1ices' + '/(x|ch|ss|sh)$/i': '\1es' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([^aeiouy]|qu)y$/i': '\1ies' + '/(hive)$/i': '\1s' + '/(?:([^f])fe|([lr])f)$/i': '\1\2ves' + '/sis$/i': 'ses' + '/([ti])um$/i': '\1a' + '/(buffal|tomat)o$/i': '\1oes' + '/(bu)s$/i': '\1ses' + '/(alias|status)/i': '\1es' + '/(octop|vir)us$/i': '\1i' + '/(ax|test)is$/i': '\1es' + '/s$/i': 's' + '/$/': 's' + INFLECTOR_SINGULAR: + '/(quiz)zes$/i': '\1' + '/(matr)ices$/i': '\1ix' + '/(vert|ind)ices$/i': '\1ex' + '/^(ox)en/i': '\1' + '/(alias|status)es$/i': '\1' + '/([octop|vir])i$/i': '\1us' + '/(cris|ax|test)es$/i': '\1is' + '/(shoe)s$/i': '\1' + '/(o)es$/i': '\1' + '/(bus)es$/i': '\1' + '/([m|l])ice$/i': '\1ouse' + '/(x|ch|ss|sh)es$/i': '\1' + '/(m)ovies$/i': '\1ovie' + '/(s)eries$/i': '\1eries' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([lr])ves$/i': '\1f' + '/(tive)s$/i': '\1' + '/(hive)s$/i': '\1' + '/([^f])ves$/i': '\1fe' + '/(^analy)ses$/i': '\1sis' + '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis' + '/([ti])a$/i': '\1um' + '/(n)ews$/i': '\1ews' + INFLECTOR_UNCOUNTABLE: + - 'equipamento' + - 'informação' + - 'arroz' + - 'dinheiro' + - 'espécie' + - 'série' + - 'peixe' + - 'ovelha' + INFLECTOR_IRREGULAR: + 'person': 'pessoas' + 'man': 'homens' + 'child': 'crianças' + 'sex': 'sexos' + 'move': 'movimentos' + INFLECTOR_ORDINALS: + 'default': 'º' + 'first': 'º' + 'second': 'º' + 'third': 'º' NICETIME: NO_DATE_PROVIDED: Nenhuma data fornecida + BAD_DATE: Data inválida AGO: atrás + FROM_NOW: a partir de agora + JUST_NOW: mesmo agora SECOND: segundo MINUTE: minuto HOUR: hora @@ -11,17 +78,32 @@ GRAV: MONTH: mês YEAR: ano DECADE: década - SEC: segundos - MIN: minutos + SEC: seg + MIN: min + HR: hora + WK: semana + MO: mês + YR: ano + DEC: década + SECOND_PLURAL: segundos MINUTE_PLURAL: minutos + HOUR_PLURAL: horas DAY_PLURAL: dias WEEK_PLURAL: semanas MONTH_PLURAL: meses YEAR_PLURAL: anos - DECADE_PLURAL: decadas + DECADE_PLURAL: décadas + SEC_PLURAL: segs + MIN_PLURAL: mins + HR_PLURAL: hrs + WK_PLURAL: sems + MO_PLURAL: meses + YR_PLURAL: anos + DEC_PLURAL: décadas FORM: - VALIDATION_FAIL: Falha na validação! - MISSING_REQUIRED_FIELD: 'Campo obrigatório requerido:' + VALIDATION_FAIL: 'Falha na validação:' + INVALID_INPUT: 'Dados inseridos são inválidos em' + MISSING_REQUIRED_FIELD: 'Campo obrigatório em falta:' MONTHS_OF_THE_YEAR: - 'Janeiro' - 'Fevereiro' @@ -35,12 +117,28 @@ GRAV: - 'Outubro' - 'Novembro' - 'Dezembro' - INFLECTOR_UNCOUNTABLE: - - 'equipment' - - 'information' - - 'arroz' - - 'money' - - 'species' - - 'series' - - 'fish' - - 'sheep' + DAYS_OF_THE_WEEK: + - 'Segunda-feira' + - 'Terça-feira' + - 'Quarta-feira' + - 'Quinta-feira' + - 'Sexta-feira' + - 'Sábado' + - 'Domingo' + CRON: + EVERY: cada + EVERY_HOUR: cada hora + EVERY_MINUTE: cada minuto + EVERY_DAY_OF_WEEK: todos os dias da semana + EVERY_DAY_OF_MONTH: todos os dias do mês + EVERY_MONTH: todos os meses + TEXT_PERIOD: Cada + TEXT_MINS: ' em minuto(s) após a hora' + TEXT_TIME: ' em :' + TEXT_DOW: ' em ' + TEXT_MONTH: ' de ' + TEXT_DOM: ' em ' + ERROR1: A tag %s não é suportada! + ERROR2: Número de elementos inválido + ERROR3: O jquery_element deve ser definido nas configurações do jqCron + ERROR4: Expressão não reconhecida diff --git a/system/languages/ro.yaml b/system/languages/ro.yaml index 5bee578c9..dc22b206f 100644 --- a/system/languages/ro.yaml +++ b/system/languages/ro.yaml @@ -53,8 +53,8 @@ GRAV: YR_PLURAL: ani DEC_PLURAL: decenii FORM: - VALIDATION_FAIL: Validare nereușită - INVALID_INPUT: Date incorecte în + VALIDATION_FAIL: 'Validare nereușită' + INVALID_INPUT: 'Date incorecte în' MISSING_REQUIRED_FIELD: 'Câmp obligatoriu lipsă:' MONTHS_OF_THE_YEAR: - 'Ianuarie' diff --git a/system/languages/ru.yaml b/system/languages/ru.yaml index 78c596340..2097ada48 100644 --- a/system/languages/ru.yaml +++ b/system/languages/ru.yaml @@ -13,7 +13,7 @@ GRAV: INFLECTOR_IRREGULAR: 'person': 'люди' 'man': 'человек' - 'child': 'ребенок' + 'child': 'дети' 'sex': 'пол' 'move': 'движется' INFLECTOR_ORDINALS: @@ -58,9 +58,10 @@ GRAV: YR_PLURAL: г DEC_PLURAL: дстлт FORM: - VALIDATION_FAIL: Проверка не удалась: - INVALID_INPUT: Неверный ввод в + VALIDATION_FAIL: 'Проверка не удалась:' + INVALID_INPUT: 'Неверный ввод в' MISSING_REQUIRED_FIELD: 'Отсутствует необходимое поле:' + XSS_ISSUES: "Обнаружены потенциальные XSS проблемы в поле '%s'" MONTHS_OF_THE_YEAR: - 'январь' - 'февраль' @@ -68,12 +69,12 @@ GRAV: - 'апрель' - 'май' - 'июнь' - - 'Июль' - - 'Август' - - 'Сентябрь' - - 'Октябрь' - - 'Ноябрь' - - 'Декабрь' + - 'июль' + - 'август' + - 'сентябрь' + - 'октябрь' + - 'ноябрь' + - 'декабрь' DAYS_OF_THE_WEEK: - 'понедельник' - 'вторник' @@ -82,6 +83,8 @@ GRAV: - 'пятница' - 'суббота' - 'воскресенье' + YES: "Да" + NO: "Нет" CRON: EVERY: раз в EVERY_HOUR: раз в час diff --git a/system/languages/sk.yaml b/system/languages/sk.yaml index 89a7f563e..9543239a6 100644 --- a/system/languages/sk.yaml +++ b/system/languages/sk.yaml @@ -101,8 +101,8 @@ GRAV: YR_PLURAL: rokov DEC_PLURAL: dekád FORM: - VALIDATION_FAIL: Overenie zlyhalo: - INVALID_INPUT: Neplatný vstup v + VALIDATION_FAIL: 'Overenie zlyhalo:' + INVALID_INPUT: 'Neplatný vstup v' MISSING_REQUIRED_FIELD: 'Chýba vyžadované pole:' MONTHS_OF_THE_YEAR: - 'Január' diff --git a/system/languages/sl.yaml b/system/languages/sl.yaml index ae6032cf7..879fe1bae 100644 --- a/system/languages/sl.yaml +++ b/system/languages/sl.yaml @@ -36,8 +36,8 @@ GRAV: YR_PLURAL: l DEC_PLURAL: des FORM: - VALIDATION_FAIL: Preverjanje veljavnosti ni uspelo: - INVALID_INPUT: Neveljaven vnos v + VALIDATION_FAIL: 'Preverjanje veljavnosti ni uspelo:' + INVALID_INPUT: 'Neveljaven vnos v' MISSING_REQUIRED_FIELD: 'Manjka obvezno polje:' MONTHS_OF_THE_YEAR: - 'Januar' diff --git a/system/languages/sr.yaml b/system/languages/sr.yaml new file mode 100644 index 000000000..3368bdfb6 --- /dev/null +++ b/system/languages/sr.yaml @@ -0,0 +1,144 @@ +--- +GRAV: + FRONTMATTER_ERROR_PAGE: "---\nнаслов: %1$s\n---\n\n# Грешка: неисправан Frontmatter\n\nПутања: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_PLURALS: + '/(quiz)$/i': '\1zes' + '/^(ox)$/i': '\1en' + '/([m|l])ouse$/i': '\1ice' + '/(matr|vert|ind)ix|ex$/i': '\1ices' + '/(x|ch|ss|sh)$/i': '\1es' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([^aeiouy]|qu)y$/i': '\1ies' + '/(hive)$/i': '\1s' + '/(?:([^f])fe|([lr])f)$/i': '\1\2ves' + '/sis$/i': 'ses' + '/([ti])um$/i': '\1a' + '/(buffal|tomat)o$/i': '\1oes' + '/(bu)s$/i': '\1ses' + '/(alias|status)/i': '\1es' + '/(octop|vir)us$/i': '\1i' + '/(ax|test)is$/i': '\1es' + '/s$/i': 's' + '/$/': 's' + INFLECTOR_SINGULAR: + '/(quiz)zes$/i': '\1' + '/(matr)ices$/i': '\1ix' + '/(vert|ind)ices$/i': '\1ex' + '/^(ox)en/i': '\1' + '/(alias|status)es$/i': '\1' + '/([octop|vir])i$/i': '\1us' + '/(cris|ax|test)es$/i': '\1is' + '/(shoe)s$/i': '\1' + '/(o)es$/i': '\1' + '/(bus)es$/i': '\1' + '/([m|l])ice$/i': '\1ouse' + '/(x|ch|ss|sh)es$/i': '\1' + '/(m)ovies$/i': '\1ovie' + '/(s)eries$/i': '\1eries' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([lr])ves$/i': '\1f' + '/(tive)s$/i': '\1' + '/(hive)s$/i': '\1' + '/([^f])ves$/i': '\1fe' + '/(^analy)ses$/i': '\1sis' + '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis' + '/([ti])a$/i': '\1um' + '/(n)ews$/i': '\1ews' + INFLECTOR_UNCOUNTABLE: + - 'опрема' + - 'информација' + - 'пиринач' + - 'новац' + - 'врсте' + - 'серије' + - 'риба' + - 'овца' + INFLECTOR_IRREGULAR: + 'person': 'особе' + 'man': 'људи' + 'child': 'деца' + 'sex': 'полови' + 'move': 'помери' + INFLECTOR_ORDINALS: + 'default': 'ти' + 'first': 'први' + 'second': 'други' + 'third': 'трећи' + NICETIME: + NO_DATE_PROVIDED: Нема датума + BAD_DATE: Погрешан датум + AGO: од пре + FROM_NOW: од сада + JUST_NOW: управо сада + SECOND: секунда + MINUTE: минута + HOUR: сат + DAY: дан + WEEK: недеља + MONTH: месец + YEAR: година + DECADE: декада + SEC: сек + MIN: мин + HR: сат + WK: нед + MO: мес + YR: год + DEC: дек + SECOND_PLURAL: секунди + MINUTE_PLURAL: минута + HOUR_PLURAL: сати + DAY_PLURAL: дана + WEEK_PLURAL: недеља + MONTH_PLURAL: месеци + YEAR_PLURAL: године(а) + DECADE_PLURAL: декаде(а) + SEC_PLURAL: сек + MIN_PLURAL: мин + HR_PLURAL: сати + WK_PLURAL: недеља + MO_PLURAL: месеци + YR_PLURAL: година + DEC_PLURAL: декада + FORM: + VALIDATION_FAIL: 'Провера неуспела:' + INVALID_INPUT: 'Неисправан унос у' + MISSING_REQUIRED_FIELD: 'Недостаје обавезн поље:' + MONTHS_OF_THE_YEAR: + - 'Јануар' + - 'Фебруар' + - 'Март' + - 'Април' + - 'Мај' + - 'Јуни' + - 'Јули' + - 'Август' + - 'Септембар' + - 'Октобар' + - 'Новембар' + - 'Децембар' + DAYS_OF_THE_WEEK: + - 'Понедељак' + - 'Уторак' + - 'Среда' + - 'Четвртак' + - 'Петак' + - 'Субота' + - 'Недеља' + CRON: + EVERY: сваки + EVERY_HOUR: сваки сат + EVERY_MINUTE: сваки минут + EVERY_DAY_OF_WEEK: сваки дан у недељи + EVERY_DAY_OF_MONTH: сваки дан у месецу + EVERY_MONTH: сваки месец + TEXT_PERIOD: Сваки + TEXT_MINS: ' у минути(а) прошлог сата' + TEXT_TIME: ' у :' + TEXT_DOW: ' на ' + TEXT_MONTH: ' од ' + TEXT_DOM: ' на ' + ERROR1: Таг %s није подржан! + ERROR2: Погрешан број елемената + ERROR3: јquery_element би требао да буде постављен у jqCron подешавању + ERROR4: Непрепознат израз diff --git a/system/languages/sv.yaml b/system/languages/sv.yaml index 16afa1650..bf76beff5 100644 --- a/system/languages/sv.yaml +++ b/system/languages/sv.yaml @@ -12,11 +12,21 @@ GRAV: - 'får' INFLECTOR_IRREGULAR: 'person': 'personer' + 'man': 'män' + 'child': 'barn' + 'sex': 'kön' + 'move': 'flytta' + INFLECTOR_ORDINALS: + 'default': ':e' + 'first': ':a' + 'second': ':a' + 'third': ':e' NICETIME: NO_DATE_PROVIDED: Inget datum har angivits BAD_DATE: Ogiltigt datum AGO: sedan FROM_NOW: fr.o.m nu + JUST_NOW: just nu SECOND: sekund MINUTE: minut HOUR: timme @@ -26,10 +36,12 @@ GRAV: YEAR: år DECADE: årtionde SEC: sek + MIN: min HR: t WK: v MO: m YR: år + DEC: dec SECOND_PLURAL: sekunder MINUTE_PLURAL: minuter HOUR_PLURAL: timmar @@ -46,8 +58,8 @@ GRAV: YR_PLURAL: år DEC_PLURAL: dec FORM: - VALIDATION_FAIL: Kontrollen misslyckades: - INVALID_INPUT: Ogiltig indata i + VALIDATION_FAIL: 'Kontrollen misslyckades:' + INVALID_INPUT: 'Ogiltig indata i' MISSING_REQUIRED_FIELD: 'Obligatoriskt fält måste fyllas i:' MONTHS_OF_THE_YEAR: - 'Januari' @@ -70,3 +82,19 @@ GRAV: - 'Fredag' - 'Lördag' - 'Söndag' + CRON: + EVERY: varje + EVERY_HOUR: varje timme + EVERY_MINUTE: varje minut + EVERY_DAY_OF_WEEK: varje veckodag + EVERY_DAY_OF_MONTH: alla månadens dagar + EVERY_MONTH: varje månad + TEXT_PERIOD: Varje + TEXT_MINS: ' timmens :e minut' + TEXT_TIME: ' kl :' + TEXT_DOW: ' ' + TEXT_MONTH: ' ' + TEXT_DOM: ' ' + ERROR1: Taggen %s stöds inte! + ERROR2: Ogiltigt antal element + ERROR4: Uttrycket känns inte igen diff --git a/system/languages/th.yaml b/system/languages/th.yaml index e6ccfaba5..f71b0371b 100644 --- a/system/languages/th.yaml +++ b/system/languages/th.yaml @@ -31,7 +31,7 @@ GRAV: YR_PLURAL: ปี FORM: VALIDATION_FAIL: 'ตรวจสอบล้มเหลว: ' - INVALID_INPUT: ป้อนข้อมูลไม่ถูกต้องใน + INVALID_INPUT: 'ป้อนข้อมูลไม่ถูกต้องใน' MISSING_REQUIRED_FIELD: 'ขาดข้อมูลที่จำเป็น:' MONTHS_OF_THE_YEAR: - 'มกราคม' diff --git a/system/languages/tr.yaml b/system/languages/tr.yaml index 2143f319c..783674d58 100644 --- a/system/languages/tr.yaml +++ b/system/languages/tr.yaml @@ -1,11 +1,32 @@ --- GRAV: FRONTMATTER_ERROR_PAGE: "---\nBaşlık: %1$s\n---\n\n# Hata: Geçersiz Önbölüm\n\nYol: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_UNCOUNTABLE: + - 'ekipman' + - 'bilgi' + - 'pirinç' + - 'para' + - 'türler' + - 'seriler' + - 'balık' + - 'koyun' + INFLECTOR_IRREGULAR: + 'person': 'kişi' + 'man': 'erkek' + 'child': 'çocuklar' + 'sex': 'cinsiyet' + 'move': 'taşınmış' + INFLECTOR_ORDINALS: + 'default': '#F' + 'first': ' 1.' + 'second': ' 2.' + 'third': ' 3.' NICETIME: NO_DATE_PROVIDED: Sağlanan tarih yok BAD_DATE: Yanlış tarih AGO: önce FROM_NOW: şu andan itibaren + JUST_NOW: şimdi SECOND: saniye MINUTE: dakika HOUR: saat @@ -37,8 +58,8 @@ GRAV: YR_PLURAL: yıl DEC_PLURAL: onyl FORM: - VALIDATION_FAIL: Doğrulama başarısız: - INVALID_INPUT: Geçersiz bilgi girişi + VALIDATION_FAIL: 'Doğrulama başarısız:' + INVALID_INPUT: 'Geçersiz bilgi girişi' MISSING_REQUIRED_FIELD: 'Gerekli alan eksik:' MONTHS_OF_THE_YEAR: - 'Ocak' @@ -61,3 +82,17 @@ GRAV: - 'Cuma' - 'Cumartesi' - 'Pazar' + CRON: + EVERY: her + EVERY_HOUR: saatte bir + EVERY_MINUTE: dakikada bir + EVERY_DAY_OF_WEEK: haftanın her günü + EVERY_DAY_OF_MONTH: ayın her günü + EVERY_MONTH: her ay + TEXT_PERIOD: Her + TEXT_MINS: ' saatin dakikasında' + TEXT_TIME: ' da' + ERROR1: Etiket %s desteklenmiyor! + ERROR2: Kötü eleman sayısı + ERROR3: jquery_element jqCron ayarları içinde tanımlanmalı + ERROR4: Tanınmayan ifade diff --git a/system/languages/uk.yaml b/system/languages/uk.yaml index d264fbada..8a138a483 100644 --- a/system/languages/uk.yaml +++ b/system/languages/uk.yaml @@ -37,8 +37,8 @@ GRAV: YR_PLURAL: рр. DEC_PLURAL: рр. FORM: - VALIDATION_FAIL: Перевірка не вдалася: - INVALID_INPUT: Невірне введення в + VALIDATION_FAIL: 'Перевірка не вдалася:' + INVALID_INPUT: 'Невірне введення в' MISSING_REQUIRED_FIELD: 'Відсутнє обов''язкове поле:' MONTHS_OF_THE_YEAR: - 'Січень' diff --git a/system/languages/vi.yaml b/system/languages/vi.yaml index 0dc7e929f..9e3a0f46b 100644 --- a/system/languages/vi.yaml +++ b/system/languages/vi.yaml @@ -37,8 +37,8 @@ GRAV: YR_PLURAL: năm DEC_PLURAL: thập kỷ FORM: - VALIDATION_FAIL: Xác nhận thất bại: - INVALID_INPUT: Dữ liệu nhập không hợp lệ cho + VALIDATION_FAIL: 'Xác nhận thất bại:' + INVALID_INPUT: 'Dữ liệu nhập không hợp lệ cho' MISSING_REQUIRED_FIELD: 'Thiếu trường bắt buộc:' MONTHS_OF_THE_YEAR: - 'Tháng 1' diff --git a/system/languages/zh-CN.yaml b/system/languages/zh-CN.yaml new file mode 100644 index 000000000..334b0b41c --- /dev/null +++ b/system/languages/zh-CN.yaml @@ -0,0 +1,144 @@ +--- +GRAV: + FRONTMATTER_ERROR_PAGE: "---\n标题: %1$s\n---\n\n# 错误:无效参数\n\n位置: `%2$s`\n\n**%3$s**\n\n```\n%4$s\n```" + INFLECTOR_PLURALS: + '/(quiz)$/i': '\1zes' + '/^(ox)$/i': '\1en' + '/([m|l])ouse$/i': '\1ice' + '/(matr|vert|ind)ix|ex$/i': '\1ices' + '/(x|ch|ss|sh)$/i': '\1es' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([^aeiouy]|qu)y$/i': '\1ies' + '/(hive)$/i': '\1s' + '/(?:([^f])fe|([lr])f)$/i': '\1\2ves' + '/sis$/i': 'ses' + '/([ti])um$/i': '\1a' + '/(buffal|tomat)o$/i': '\1oes' + '/(bu)s$/i': '\1ses' + '/(alias|status)/i': '\1es' + '/(octop|vir)us$/i': '\1i' + '/(ax|test)is$/i': '\1es' + '/s$/i': 's' + '/$/': 's' + INFLECTOR_SINGULAR: + '/(quiz)zes$/i': '\1' + '/(matr)ices$/i': '\1ix' + '/(vert|ind)ices$/i': '\1ex' + '/^(ox)en/i': '\1' + '/(alias|status)es$/i': '\1' + '/([octop|vir])i$/i': '\1us' + '/(cris|ax|test)es$/i': '\1is' + '/(shoe)s$/i': '\1' + '/(o)es$/i': '\1' + '/(bus)es$/i': '\1' + '/([m|l])ice$/i': '\1ouse' + '/(x|ch|ss|sh)es$/i': '\1' + '/(m)ovies$/i': '\1ovie' + '/(s)eries$/i': '\1eries' + '/([^aeiouy]|qu)ies$/i': '\1y' + '/([lr])ves$/i': '\1f' + '/(tive)s$/i': '\1' + '/(hive)s$/i': '\1' + '/([^f])ves$/i': '\1fe' + '/(^analy)ses$/i': '\1sis' + '/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i': '\1\2sis' + '/([ti])a$/i': '\1um' + '/(n)ews$/i': '\1ews' + INFLECTOR_UNCOUNTABLE: + - '装备' + - '信息' + - '大米' + - '钱' + - '物种' + - '系列' + - '鱼' + - '羊' + INFLECTOR_IRREGULAR: + 'person': '人员' + 'man': '男人' + 'child': '儿童' + 'sex': '性别' + 'move': '移动' + INFLECTOR_ORDINALS: + 'default': 'th' + 'first': 'st' + 'second': 'md' + 'third': 'rd' + NICETIME: + NO_DATE_PROVIDED: 无日期信息 + BAD_DATE: 无效日期 + AGO: 前 + FROM_NOW: 距今 + JUST_NOW: 刚刚 + SECOND: 秒 + MINUTE: 分钟 + HOUR: 小时 + DAY: 天 + WEEK: 周 + MONTH: 月 + YEAR: 年 + DECADE: 十年 + SEC: 秒 + MIN: 分钟 + HR: 小时 + WK: 周 + MO: 月 + YR: 年 + DEC: 年代 + SECOND_PLURAL: 秒 + MINUTE_PLURAL: 分 + HOUR_PLURAL: 小时 + DAY_PLURAL: 天 + WEEK_PLURAL: 周 + MONTH_PLURAL: 月 + YEAR_PLURAL: 年 + DECADE_PLURAL: 十年 + SEC_PLURAL: 秒 + MIN_PLURAL: 分 + HR_PLURAL: 时 + WK_PLURAL: 周 + MO_PLURAL: 月 + YR_PLURAL: 年 + DEC_PLURAL: 年代 + FORM: + VALIDATION_FAIL: '验证失败:' + INVALID_INPUT: '无效输入' + MISSING_REQUIRED_FIELD: '必填字段缺失:' + MONTHS_OF_THE_YEAR: + - '1月' + - '2月' + - '3月' + - '4月' + - '5月' + - '6月' + - '7月' + - '8月' + - '9月' + - '10月' + - '11月' + - '12月' + DAYS_OF_THE_WEEK: + - '星期一' + - '星期二' + - '星期三' + - '星期四' + - '星期五' + - '星期六' + - '星期日' + CRON: + EVERY: 每隔 + EVERY_HOUR: 每小时 + EVERY_MINUTE: 每分钟 + EVERY_DAY_OF_WEEK: 一周中的每一天 + EVERY_DAY_OF_MONTH: 月份中的每一天 + EVERY_MONTH: 每月 + TEXT_PERIOD: 所有 + TEXT_MINS: ' 在 小时过后的分钟' + TEXT_TIME: ' 在 :' + TEXT_DOW: ' on ' + TEXT_MONTH: ' of ' + TEXT_DOM: ' on ' + ERROR1: 不支持分享类型 %s + ERROR2: 无效数字 + ERROR3: 请在 jqCron 设置中设定 jquery_element + ERROR4: 无法识别表达式 From cec781ad72c9f47c8827b2a2aa50f754aa023b5e Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Tue, 16 Feb 2021 17:42:35 -0700 Subject: [PATCH 61/66] updated changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd9b5ced6..6374fcfc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * Added `Medium::attribute()` to pass arbitrary attributes [#3065](https://github.com/getgrav/grav/pull/3065) * Added `Plugins::getPlugins()` and `Plugins::getPlugin($name)` to make it easier to access plugin instances [#2277](https://github.com/getgrav/grav/pull/2277) * Added `regex_match` and `regex_split` twig functions [#2788](https://github.com/getgrav/grav/pull/2788) + * Updated all languages from [Crowdin](https://crowdin.com/project/grav-core) - Please update any translations here 1. [](#improved) * Added abstract `FlexObject`, `FlexCollection` and `FlexIndex` classes to `\Grav\Common\Flex` namespace (extend those instead of Framework or Generic classes) * Updated bundled `composer.phar` binary to latest version `2.0.9` From 20e22f015a577ee3c8a2b4c20c6c315c4ecbe19b Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Tue, 16 Feb 2021 18:02:21 -0700 Subject: [PATCH 62/66] fixed some issues with chinese langs --- system/languages/{zh-CN.yaml => zh-cn.yaml} | 0 system/languages/zh.yaml | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) rename system/languages/{zh-CN.yaml => zh-cn.yaml} (100%) diff --git a/system/languages/zh-CN.yaml b/system/languages/zh-cn.yaml similarity index 100% rename from system/languages/zh-CN.yaml rename to system/languages/zh-cn.yaml diff --git a/system/languages/zh.yaml b/system/languages/zh.yaml index 4912aa9ed..334b0b41c 100644 --- a/system/languages/zh.yaml +++ b/system/languages/zh.yaml @@ -101,9 +101,9 @@ GRAV: YR_PLURAL: 年 DEC_PLURAL: 年代 FORM: - VALIDATION_FAIL: 验证失败: - INVALID_INPUT: 无效输入 - MISSING_REQUIRED_FIELD: 必填字段缺失: + VALIDATION_FAIL: '验证失败:' + INVALID_INPUT: '无效输入' + MISSING_REQUIRED_FIELD: '必填字段缺失:' MONTHS_OF_THE_YEAR: - '1月' - '2月' From 7ec8fd2003a4c9b93e06fcc0c10ad1720d9ac8c4 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 17 Feb 2021 11:01:47 +0200 Subject: [PATCH 63/66] Added option for `FlexForm` constructor to reset the form --- CHANGELOG.md | 1 + system/src/Grav/Framework/Flex/FlexForm.php | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a6511b44..5cc5a8224 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ * Added `$grav->getVersion()` or `grav.version` in twig to get the current Grav version [#3142](https://github.com/getgrav/grav/issues/3142) * Added second parameter to `$blueprint->flattenData()` to include every field, including those which have no data * Added support for setting session domain [#2040](https://github.com/getgrav/grav/pull/2040) + * Added option for `FlexForm` constructor to reset the form 1. [](#bugfix) * Fixed issue with `content-security-policy` not being properly supported with `http-equiv` + support single quotes * Fixed CLI progressbar in `backup` and `security` commands to use styled output [#3198](https://github.com/getgrav/grav/issues/3198) diff --git a/system/src/Grav/Framework/Flex/FlexForm.php b/system/src/Grav/Framework/Flex/FlexForm.php index 5455abb9a..83c98d6bc 100644 --- a/system/src/Grav/Framework/Flex/FlexForm.php +++ b/system/src/Grav/Framework/Flex/FlexForm.php @@ -122,6 +122,10 @@ class FlexForm implements FlexObjectFormInterface, JsonSerializable $this->setFlashLookupFolder($directory->getBlueprint()->get('form/flash_folder') ?? 'tmp://forms/[SESSIONID]'); $this->form = $options['form'] ?? null; + if (!empty($options['reset'])) { + $this->getFlash()->delete(); + } + $this->initialize(); } From 7e4c189136a339e90ea4c523b4733738fc8e11f9 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 17 Feb 2021 16:07:05 +0200 Subject: [PATCH 64/66] Fixed bug in page content with both markdown and twig enabled [#3223] --- CHANGELOG.md | 1 + system/src/Grav/Common/Page/Page.php | 13 +++++++++---- .../Flex/Pages/Traits/PageContentTrait.php | 12 ++++++++---- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index db7b1f687..efc2ac4ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ * Fixed behavior of opposite filters in `Pages::getCollection()` to match Grav 1.6 [#3216](https://github.com/getgrav/grav/pull/3216) * Fixed modular content with missing template file ending up using non-modular template [#3218](https://github.com/getgrav/grav/issues/3218) * Fixed broken attachment image in Flex Objects Admin when `destination: self@` used [#3225](https://github.com/getgrav/grav/issues/3225) + * Fixed bug in page content with both markdown and twig enabled [#3223](https://github.com/getgrav/grav/issues/3223) # v1.7.5 ## 02/01/2021 diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index 14bdd0abf..9d037d244 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -910,20 +910,25 @@ class Page implements PageInterface $content = $this->content; if ($keepTwig) { + $token = [ + '/' . Utils::generateRandomString(3), + Utils::generateRandomString(3) . '/' + ]; // Base64 encode any twig. $content = preg_replace_callback( - ['/({#)(.*?)(#})/mu', '/({{)(.*?)(}})/mu', '/({%)(.*?)(%})/mu'], - static function ($matches) { return $matches[1] . base64_encode($matches[2]) . $matches[3]; }, + ['/({#.*?#})/mu', '/({{.*?}})/mu', '/({%.*?%})/mu'], + static function ($matches) use ($token) { return $token[0] . base64_encode($matches[1]) . $token[1]; }, $content ); } + $content = $parsedown->text($content); if ($keepTwig) { // Base64 decode the encoded twig. $content = preg_replace_callback( - ['/({#)(.*?)(#})/mu', '/({{)(.*?)(}})/mu', '/({%)(.*?)(%})/mu'], - static function ($matches) { return $matches[1] . base64_decode($matches[2]) . $matches[3]; }, + ['`' . $token[0] . '([A-Za-z0-9+/]+={0,2})' . $token[1] . '`mu'], + static function ($matches) { return base64_decode($matches[1]); }, $content ); } diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php index fd01d1974..6aff73277 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageContentTrait.php @@ -810,10 +810,14 @@ trait PageContentTrait $keepTwig = (bool)($options['keep_twig'] ?? false); if ($keepTwig) { + $token = [ + '/' . Utils::generateRandomString(3), + Utils::generateRandomString(3) . '/' + ]; // Base64 encode any twig. $content = preg_replace_callback( - ['/({#)(.*?)(#})/mu', '/({{)(.*?)(}})/mu', '/({%)(.*?)(%})/mu'], - static function ($matches) { return $matches[1] . base64_encode($matches[2]) . $matches[3]; }, + ['/({#.*?#})/mu', '/({{.*?}})/mu', '/({%.*?%})/mu'], + static function ($matches) use ($token) { return $token[0] . base64_encode($matches[1]) . $token[1]; }, $content ); } @@ -823,8 +827,8 @@ trait PageContentTrait if ($keepTwig) { // Base64 decode the encoded twig. $content = preg_replace_callback( - ['/({#)(.*?)(#})/mu', '/({{)(.*?)(}})/mu', '/({%)(.*?)(%})/mu'], - static function ($matches) { return $matches[1] . base64_decode($matches[2]) . $matches[3]; }, + ['`' . $token[0] . '([A-Za-z0-9+/]+={0,2})' . $token[1] . '`mu'], + static function ($matches) { return base64_decode($matches[1]); }, $content ); } From 7f533c7121a402ec654c3e73547a77cd127af4b1 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Wed, 17 Feb 2021 20:12:29 +0200 Subject: [PATCH 65/66] Composer update --- composer.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/composer.lock b/composer.lock index eafebfcee..7f381b6e6 100644 --- a/composer.lock +++ b/composer.lock @@ -2127,16 +2127,16 @@ }, { "name": "rockettheme/toolbox", - "version": "1.5.6", + "version": "1.5.7", "source": { "type": "git", "url": "https://github.com/rockettheme/toolbox.git", - "reference": "b021ce236e6273687f4eb8c113a12ccff05d6ac3" + "reference": "8d3ebc4d982595d6eac90e851f2b4d5c0cec0399" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rockettheme/toolbox/zipball/b021ce236e6273687f4eb8c113a12ccff05d6ac3", - "reference": "b021ce236e6273687f4eb8c113a12ccff05d6ac3", + "url": "https://api.github.com/repos/rockettheme/toolbox/zipball/8d3ebc4d982595d6eac90e851f2b4d5c0cec0399", + "reference": "8d3ebc4d982595d6eac90e851f2b4d5c0cec0399", "shasum": "" }, "require": { @@ -2177,9 +2177,9 @@ ], "support": { "issues": "https://github.com/rockettheme/toolbox/issues", - "source": "https://github.com/rockettheme/toolbox/tree/1.5.6" + "source": "https://github.com/rockettheme/toolbox/tree/1.5.7" }, - "time": "2020-12-03T18:08:19+00:00" + "time": "2021-02-17T17:58:36+00:00" }, { "name": "seld/cli-prompt", @@ -4492,16 +4492,16 @@ }, { "name": "phpstan/phpstan", - "version": "0.12.76", + "version": "0.12.77", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "7aaaf9a759a29795e8f46d48041af1c1f1b23d38" + "reference": "1f10b8c8d118d01e7b492f9707999d456be5812c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/7aaaf9a759a29795e8f46d48041af1c1f1b23d38", - "reference": "7aaaf9a759a29795e8f46d48041af1c1f1b23d38", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1f10b8c8d118d01e7b492f9707999d456be5812c", + "reference": "1f10b8c8d118d01e7b492f9707999d456be5812c", "shasum": "" }, "require": { @@ -4532,7 +4532,7 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.76" + "source": "https://github.com/phpstan/phpstan/tree/0.12.77" }, "funding": [ { @@ -4548,7 +4548,7 @@ "type": "tidelift" } ], - "time": "2021-02-13T11:47:44+00:00" + "time": "2021-02-17T16:22:19+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", From e492dfe12cad3e421cc982689f7f5079e9d956d3 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Wed, 17 Feb 2021 11:36:35 -0700 Subject: [PATCH 66/66] 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 efc2ac4ea..15c6e6c9b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ # v1.7.6 -## mm/dd/2021 +## 02/17/2021 1. [](#new) * Added `Medium::attribute()` to pass arbitrary attributes [#3065](https://github.com/getgrav/grav/pull/3065) diff --git a/system/defines.php b/system/defines.php index 695853d45..be759dbea 100644 --- a/system/defines.php +++ b/system/defines.php @@ -8,7 +8,7 @@ // Some standard defines define('GRAV', true); -define('GRAV_VERSION', '1.7.5'); +define('GRAV_VERSION', '1.7.6'); define('GRAV_SCHEMA', '1.7.0_2020-11-20_1'); define('GRAV_TESTING', false);