+ * Fixed `FormTrait::render()` not providing config variable
+ * Updated `bin/grav clean` to clear `cache/compiled` and `user/config/security.yaml`
+
+# v1.6.7
+## 04/22/2019
+
+1. [](#new)
+ * Added a new `bin/grav yamllinter` CLI command to find YAML Linting issues [#2468](https://github.com/getgrav/grav/issues/2468#issuecomment-485151681)
+1. [](#improved)
+ * Improve `FormTrait` backwards compatibility with existing forms
+ * Added a new `Utils::getSubnet()` function for IPv4/IPv6 parsing [#2465](https://github.com/getgrav/grav/pull/2465)
+1. [](#bugfix)
+ * Remove disabled fields from the form schema
+ * Fix issue when excluding `inlineJs` and `inlineCss` from Assets pipeline [#2468](https://github.com/getgrav/grav/issues/2468)
+ * Fix for manually set position on external URLs [#2470](https://github.com/getgrav/grav/issues/2470)
+
+# v1.6.6
+## 04/17/2019
+
+1. [](#new)
+ * `FormInterface` now implements `RenderInterface`
+ * Added new `FormInterface::getTask()` method which reads the task from `form.task` in the blueprint
+1. [](#improved)
+ * Updated vendor libraries to latest
+1. [](#bugfix)
+ * Rollback `redirect_default_route` logic as it has issues with multi-lang [#2459](https://github.com/getgrav/grav/issues/2459)
+ * Fix potential issue with `|contains` Twig filter on PHP 7.3
+ * Fixed bug in text field filtering: return empty string if value isn't a string or number [#2460](https://github.com/getgrav/grav/issues/2460)
+ * Force Asset `priority` to be an integer and not throw error if invalid string passed [#2461](https://github.com/getgrav/grav/issues/2461)
+ * Fixed bug in text field filtering: return empty string if value isn't a string or number
+ * Fixed `FlexForm` missing getter methods for defining form variables
+
+# v1.6.5
+## 04/15/2019
+
+1. [](#bugfix)
+ * Backwards compatiblity with old `Uri::__toString()` output
+
+# v1.6.4
+## 04/15/2019
+
+1. [](#bugfix)
+ * Improved `redirect_default_route` logic as well as `Uri::toArray()` to take into account `root_path` and `extension`
+ * Rework logic to pull out excluded files from pipeline more reliably [#2445](https://github.com/getgrav/grav/issues/2445)
+ * Better logic in `Utils::normalizePath` to handle externals properly [#2216](https://github.com/getgrav/grav/issues/2216)
+ * Fixed to force all `Page::taxonomy` to be treated as strings [#2446](https://github.com/getgrav/grav/issues/2446)
+ * Fixed issue with `Grav['user']` not being available [form#332](https://github.com/getgrav/grav-plugin-form/issues/332)
+ * Updated rounding logic for `Utils::parseSize()` [#2394](https://github.com/getgrav/grav/issues/2394)
+ * Fixed Flex simple storage not being properly initialized if used with caching
+
+# v1.6.3
+## 04/12/2019
+
+1. [](#new)
+ * Added `Blueprint::addDynamicHandler()` method to allow custom dynamic handlers, for example `custom-options@: getCustomOptions`
+1. [](#bugfix)
+ * Missed a `CacheCommand` reference in `bin/grav` [#2442](https://github.com/getgrav/grav/issues/2442)
+ * Fixed issue with `Utils::normalizePath` messing with external URLs [#2216](https://github.com/getgrav/grav/issues/2216)
+ * Fix for `vUndefined` versions when upgrading
+
+# v1.6.2
+## 04/11/2019
+
+1. [](#bugfix)
+ * Revert renaming of `ClearCacheCommand` to ensure CLI GPM upgrades go smoothly
+
+# v1.6.1
+## 04/11/2019
+
+1. [](#improved)
+ * Improved CSS for the bottom filter bar of DebugBar
+1. [](#bugfix)
+ * Fixed issue with `@import` not being added to top of pipelined css [#2440](https://github.com/getgrav/grav/issues/2440)
+
+# v1.6.0
+## 04/11/2019
+
+1. [](#new)
+ * Set minimum requirements to [PHP 7.1.3](https://getgrav.org/blog/raising-php-requirements-2018)
+ * New `Scheduler` functionality for periodic jobs
+ * New `Backup` functionality with multiple backup profiles and scheduler integration
+ * Refactored `Assets Manager` to be more powerful and flexible
+ * Updated Doctrine Collections to 1.6
+ * Updated Doctrine Cache to 1.8
+ * Updated Symfony Components to 4.2
+ * Added new Cache purge functionality old cache manually via CLI/Admin as well as scheduler integration
+ * Added new `{% throw 404 'Not Found' %}` twig tag (with custom code/message)
+ * Added `Grav\Framework\File` classes for handling YAML, Markdown, JSON, INI and PHP serialized files
+ * Added `Grav\Framework\Collection\AbstractIndexCollection` class
+ * Added `Grav\Framework\Object\ObjectIndex` class
+ * Added `Grav\Framework\Flex` classes
+ * Added support for hiding form fields in blueprints by using dynamic property like `security@: admin.foobar`, `scope@: object` or `scope-ignore@: object` to any field
+ * New experimental **FlexObjects** powered `Users` for increased performance and capability (**disabled** by default)
+ * Added PSR-7 and PSR-15 classes
+ * Added `Grav\Framework\DI\Container` class
+ * Added `Grav\Framework\RequestHandler\RequestHandler` class
+ * Added `Page::httpResponseCode()` and `Page::httpHeaders()` methods
+ * New `$grav['users']` service to allow custom user classes implementing `UserInterface`
+ * Added `LogViewer` helper class and CLI command: `bin/grav logviewer`
+ * Added `select()` and `unselect()` methods to `CollectionInterface` and its base classes
+ * Added `orderBy()` and `limit()` methods to `ObjectCollectionInterface` and its base classes
+ * Added `user-data://` which is a writable stream (`user://data` is not and should be avoided)
+ * Added support for `/action:{$action}` (like task but used without nonce when only receiving data)
+ * Added `onAction.{$action}` event
+ * Added `Grav\Framework\Form\FormFlash` class to contain AJAX uploaded files in more reliable way
+ * Added `Grav\Framework\Form\FormFlashFile` class which implements `UploadedFileInterface` from PSR-7
+ * Added `Grav\Framework\Filesystem\Filesystem` class with methods to manipulate stream URLs
+ * Added new `$grav['filesystem']` service using an instance of the new `Filesystem` object
+ * Added `{% render object layout: 'default' with { variable: true } %}` for Flex objects and collections
+ * Added `$grav->setup()` to simplify CLI and custom access points
+ * Added `CsvFormatter` and `CsvFile` classes
+ * Added new system config option to `pages.hide_empty_folders` if a folder has no valid `.md` file available. Default behavior is `false` for compatibility.
+ * Added new system config option for `languages.pages_fallback_only` forcing only 'fallback' to find page content through supported languages, default behavior is to display any language found if active language is missing
+ * Added `Utils::arrayFlattenDotNotation()` and `Utils::arrayUnflattenDotNotation()` helper methods
+1. [](#improved)
+ * Add the page to onMarkdownInitialized event [#2412](https://github.com/getgrav/grav/issues/2412)
+ * Doctrine filecache is now namespaced with prefix to support purging
+ * Register all page types into `blueprint://pages` stream
+ * Removed `apc` and `xcache` support, made `apc` alias of `apcu`
+ * Support admin and regular translations via the `|t` twig filter and `t()` twig function
+ * Improved Grav Core installer/updater to run installer script
+ * Updated vendor libraries including Symfony `4.2.3`
+ * Renamed old `User` class to `Grav\Common\User\DataUser\User` with multiple improvements and small fixes
+ * `User` class now acts as a compatibility layer to older versions of Grav
+ * Deprecated `new User()`, `User::load()`, `User::find()` and `User::delete()` in favor of `$grav['users']` service
+ * `Media` constructor has now support to not to initialize the media objects
+ * Cleanly handle session corruption due to changing Flex object types
+ * Added `FlexObjectInterface::getDefaultValue()` and `FormInterface::getDefaultValue()`
+ * Added new `onPageContent()` event for every call to `Page::content()`
+ * Added trim support for text input fields `validate: trim: true`
+ * Improved `Grav\Framework\File\Formatter` classes to have abstract parent class and some useful methods
+ * Support negotiated content types set via the Request `Accept:` header
+ * Support negotiated language types set via the Request `Accept-Language:` header
+ * Cleaned up and sorted the Service `idMap`
+ * Updated `Grav` container object to implement PSR-11 `ContainerInterface`
+ * Updated Grav `Processor` classes to implement PSR-15 `MiddlewareInterface`
+ * Make `Data` class to extend `JsonSerializable`
+ * Modified debugger icon to use retina space-dude version
+ * Added missing `Video::preload()` method
+ * Set session name based on `security.salt` rather than `GRAV_ROOT` [#2242](https://github.com/getgrav/grav/issues/2242)
+ * Added option to configure list of `xss_invalid_protocols` in `Security` config [#2250](https://github.com/getgrav/grav/issues/2250)
+ * Smarter `security.salt` checking now we use `security.yaml` for other options
+ * Added apcu autoloader optimization
+ * Additional helper methods in `Language`, `Languages`, and `LanguageCodes` classes
+ * Call `onFatalException` event also on internal PHP errors
+ * Built-in PHP Webserver: log requests before handling them
+ * Added support for syslog and syslog facility logging (default: 'file')
+ * Improved usability of `System` configuration blueprint with side-tabs
+ 1. [](#bugfix)
+ * Fixed issue with `Truncator::truncateWords` and `Truncator::truncateLetters` when string not wrapped in tags [#2432](https://github.com/getgrav/grav/issues/2432)
+ * Fixed `Undefined method closure::fields()` when getting avatar for user, thanks @Romarain [#2422](https://github.com/getgrav/grav/issues/2422)
+ * Fixed cached images not being updated when source image is modified
+ * Fixed deleting last list item in the form
+ * Fixed issue with `Utils::url()` method would append extra `base_url` if URL already included it
+ * Fixed `mkdir(...)` race condition
+ * Fixed `Obtaining write lock failed on file...`
+ * Fixed potential undefined property in `onPageNotFound` event handling
+ * Fixed some potential issues/bugs found by phpstan
+ * Fixed regression in GPM packages casted to Array (ref, getgrav/grav-plugin-admin@e3fc4ce)
+ die(sprintf('You are running PHP %s, but Grav needs at least <strong>PHP %s</strong> to run.', $ver, $req));
}
}
-if (PHP_SAPI === 'cli-server') {
- if (!isset($_SERVER['PHP_CLI_ROUTER'])) {
- die("PHP webserver requires a router to run Grav, please use: <pre>php -S {$_SERVER['SERVER_NAME']}:{$_SERVER['SERVER_PORT']} system/router.php</pre>");
+ die("PHP webserver requires a router to run Grav, please use: <pre>php -S {$_SERVER['SERVER_NAME']}:{$_SERVER['SERVER_PORT']} system/router.php</pre>");
enable_media_timestamp: false # Enable media timestamps
enable_media_timestamp: false # Enable media timestamps
@@ -135,6 +147,7 @@ session:
initialize: true # Initialize session from Grav (if false, plugin needs to start the session)
initialize: true # Initialize session from Grav (if false, plugin needs to start the session)
timeout: 1800 # Timeout in seconds
timeout: 1800 # Timeout in seconds
name: grav-site # Name prefix of the session cookie. Use alphanumeric, dashes or underscores only. Do not use dots in the session name
name: grav-site # Name prefix of the session cookie. Use alphanumeric, dashes or underscores only. Do not use dots in the session name
+ uniqueness: path # Should sessions be `path` based or `security.salt` based
secure: false # Set session secure. If true, indicates that communication for this cookie must be over an encrypted transmission. Enable this only on sites that run exclusively on HTTPS
secure: false # Set session secure. If true, indicates that communication for this cookie must be over an encrypted transmission. Enable this only on sites that run exclusively on HTTPS
httponly: true # Set session HTTP only. If true, indicates that cookies should be used only over HTTP, and JavaScript modification is not allowed.
httponly: true # Set session HTTP only. If true, indicates that cookies should be used only over HTTP, and JavaScript modification is not allowed.
split: true # Sessions should be independent between site and plugins (such as admin)
split: true # Sessions should be independent between site and plugins (such as admin)
@@ -147,6 +160,10 @@ gpm:
verify_peer: true # Sometimes on some systems (Windows most commonly) GPM is unable to connect because the SSL certificate cannot be verified. Disabling this setting might help.
verify_peer: true # Sometimes on some systems (Windows most commonly) GPM is unable to connect because the SSL certificate cannot be verified. Disabling this setting might help.
official_gpm_only: true # By default GPM direct-install will only allow URLs via the official GPM proxy to ensure security
official_gpm_only: true # By default GPM direct-install will only allow URLs via the official GPM proxy to ensure security
+accounts:
+ type: data # Account type: data or flex
+ storage: file # Flex storage type: file or folder