diff --git a/.gitignore b/.gitignore
index da248e548..01b701cf8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,4 @@
# Composer
-composer.lock
.composer
vendor/
diff --git a/.htaccess b/.htaccess
index ecf1097c0..203e2dd8d 100644
--- a/.htaccess
+++ b/.htaccess
@@ -44,7 +44,7 @@ RewriteRule .* index.php [L]
## Begin - Security
# Block all direct access for these folders
-RewriteRule ^(cache|bin|logs|backup)/(.*) error [L]
+RewriteRule ^(.git|cache|bin|logs|backup)/(.*) error [L]
# Block access to specific file types for these folders
RewriteRule ^(system|user|vendor)/(.*)\.(txt|md|html|yaml|php|twig|sh|bat)$ error [L]
## End - Security
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e2d2c54ef..5f4e4c03e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,19 @@
+# v0.9.40
+## 08/31/2015
+
+1. [](#new)
+ * Added some new Twig filers: `defined`, `rtrim`, `ltrim`
+ * Admin support for customizable page file name + template override
+1. [](#improved)
+ * Better message for incompatible/unsupported Twig template
+ * Improved User blueprints with better help
+ * Switched to composer **install** rather than **update** by default
+ * Admin autofocus on page title
+ * `.htaccess` hardening (`.htaccess` & `htaccess.txt`)
+ * Cache safety checks for missing folders
+1. [](#bugfix)
+ * Fixed issue with unescaped `o` character in date formats
+
# v0.9.39
## 08/25/2015
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 000000000..b45ddfc5e
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,1012 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+ "This file is @generated automatically"
+ ],
+ "hash": "5b11715e8220f84c86c9004fe463c0db",
+ "packages": [
+ {
+ "name": "doctrine/cache",
+ "version": "v1.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/cache.git",
+ "reference": "c9eadeb743ac6199f7eec423cb9426bc518b7b03"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/cache/zipball/c9eadeb743ac6199f7eec423cb9426bc518b7b03",
+ "reference": "c9eadeb743ac6199f7eec423cb9426bc518b7b03",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "conflict": {
+ "doctrine/common": ">2.2,<2.4"
+ },
+ "require-dev": {
+ "phpunit/phpunit": ">=3.7",
+ "predis/predis": "~1.0",
+ "satooshi/php-coveralls": "~0.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Cache\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Caching library offering an object-oriented API for many cache backends",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "cache",
+ "caching"
+ ],
+ "time": "2015-04-15 00:11:59"
+ },
+ {
+ "name": "donatj/phpuseragentparser",
+ "version": "v0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/donatj/PhpUserAgent.git",
+ "reference": "6392753c32f3d162897c02bd72c41e356b002a57"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/donatj/PhpUserAgent/zipball/6392753c32f3d162897c02bd72c41e356b002a57",
+ "reference": "6392753c32f3d162897c02bd72c41e356b002a57",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "camspiers/json-pretty": "0.1.*",
+ "donatj/drop": "*",
+ "phpunit/phpunit": "4.*"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Source/UserAgentParser.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jesse G. Donat",
+ "email": "donatj@gmail.com",
+ "homepage": "http://donatstudios.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "Simple, streamlined PHP user-agent parser",
+ "homepage": "http://donatstudios.com/PHP-Parser-HTTP_USER_AGENT",
+ "keywords": [
+ "browser",
+ "browser detection",
+ "parser",
+ "user agent",
+ "useragent"
+ ],
+ "time": "2015-08-25 16:30:11"
+ },
+ {
+ "name": "erusev/parsedown",
+ "version": "1.5.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/erusev/parsedown.git",
+ "reference": "0e89e3714bda18973184d30646306bb0a482bd96"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/erusev/parsedown/zipball/0e89e3714bda18973184d30646306bb0a482bd96",
+ "reference": "0e89e3714bda18973184d30646306bb0a482bd96",
+ "shasum": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Parsedown": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Emanuil Rusev",
+ "email": "hello@erusev.com",
+ "homepage": "http://erusev.com"
+ }
+ ],
+ "description": "Parser for Markdown.",
+ "homepage": "http://parsedown.org",
+ "keywords": [
+ "markdown",
+ "parser"
+ ],
+ "time": "2015-08-03 09:24:05"
+ },
+ {
+ "name": "erusev/parsedown-extra",
+ "version": "0.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/erusev/parsedown-extra.git",
+ "reference": "11a44e076d02ffcc4021713398a60cd73f78b6f5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/erusev/parsedown-extra/zipball/11a44e076d02ffcc4021713398a60cd73f78b6f5",
+ "reference": "11a44e076d02ffcc4021713398a60cd73f78b6f5",
+ "shasum": ""
+ },
+ "require": {
+ "erusev/parsedown": "~1.4"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "ParsedownExtra": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Emanuil Rusev",
+ "email": "hello@erusev.com",
+ "homepage": "http://erusev.com"
+ }
+ ],
+ "description": "An extension of Parsedown that adds support for Markdown Extra.",
+ "homepage": "https://github.com/erusev/parsedown-extra",
+ "keywords": [
+ "markdown",
+ "markdown extra",
+ "parsedown",
+ "parser"
+ ],
+ "time": "2015-01-25 14:52:34"
+ },
+ {
+ "name": "filp/whoops",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/filp/whoops.git",
+ "reference": "cfe9ce209d2705fece1743f0af45f58fec840458"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/filp/whoops/zipball/cfe9ce209d2705fece1743f0af45f58fec840458",
+ "reference": "cfe9ce209d2705fece1743f0af45f58fec840458",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "0.9.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Whoops": "src/"
+ },
+ "classmap": [
+ "src/deprecated"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Filipe Dobreira",
+ "homepage": "https://github.com/filp",
+ "role": "Developer"
+ }
+ ],
+ "description": "php error handling for cool kids",
+ "homepage": "https://github.com/filp/whoops",
+ "keywords": [
+ "error",
+ "exception",
+ "handling",
+ "library",
+ "silex-provider",
+ "whoops",
+ "zf2"
+ ],
+ "time": "2015-07-23 15:48:15"
+ },
+ {
+ "name": "gregwar/cache",
+ "version": "v1.0.10",
+ "target-dir": "Gregwar/Cache",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Gregwar/Cache.git",
+ "reference": "0a1a02e4943e95f491b3d2395609247385975622"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Gregwar/Cache/zipball/0a1a02e4943e95f491b3d2395609247385975622",
+ "reference": "0a1a02e4943e95f491b3d2395609247385975622",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Gregwar\\Cache": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gregwar",
+ "email": "g.passault@gmail.com"
+ }
+ ],
+ "description": "A lightweight file-system cache system",
+ "keywords": [
+ "cache",
+ "caching",
+ "file-system",
+ "system"
+ ],
+ "time": "2014-09-24 11:23:30"
+ },
+ {
+ "name": "gregwar/image",
+ "version": "v2.0.20",
+ "target-dir": "Gregwar/Image",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Gregwar/Image.git",
+ "reference": "2c6bf2fb3b0eb844f0568d6ee55eeb86fc799414"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Gregwar/Image/zipball/2c6bf2fb3b0eb844f0568d6ee55eeb86fc799414",
+ "reference": "2c6bf2fb3b0eb844f0568d6ee55eeb86fc799414",
+ "shasum": ""
+ },
+ "require": {
+ "ext-gd": "*",
+ "gregwar/cache": "1.*",
+ "php": ">=5.3.0"
+ },
+ "suggest": {
+ "behat/transliterator": "Transliterator provides ability to set non-latin1 pretty names"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Gregwar\\Image": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Grégoire Passault",
+ "email": "g.passault@gmail.com",
+ "homepage": "http://www.gregwar.com/"
+ }
+ ],
+ "description": "Image handling",
+ "homepage": "https://github.com/Gregwar/Image",
+ "keywords": [
+ "gd",
+ "image"
+ ],
+ "time": "2015-05-30 19:24:37"
+ },
+ {
+ "name": "ircmaxell/password-compat",
+ "version": "v1.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ircmaxell/password_compat.git",
+ "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ircmaxell/password_compat/zipball/5c5cde8822a69545767f7c7f3058cb15ff84614c",
+ "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c",
+ "shasum": ""
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "lib/password.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Anthony Ferrara",
+ "email": "ircmaxell@php.net",
+ "homepage": "http://blog.ircmaxell.com"
+ }
+ ],
+ "description": "A compatibility library for the proposed simplified password hashing algorithm: https://wiki.php.net/rfc/password_hash",
+ "homepage": "https://github.com/ircmaxell/password_compat",
+ "keywords": [
+ "hashing",
+ "password"
+ ],
+ "time": "2014-11-20 16:49:30"
+ },
+ {
+ "name": "maximebf/debugbar",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/maximebf/php-debugbar.git",
+ "reference": "ab12b6f57dd33b1fffa875046fd17c34d88388b9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/ab12b6f57dd33b1fffa875046fd17c34d88388b9",
+ "reference": "ab12b6f57dd33b1fffa875046fd17c34d88388b9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "psr/log": "~1.0",
+ "symfony/var-dumper": "~2.6"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "suggest": {
+ "kriswallsmith/assetic": "The best way to manage assets",
+ "monolog/monolog": "Log using Monolog",
+ "predis/predis": "Redis storage"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "DebugBar": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Maxime Bouroumeau-Fuseau",
+ "email": "maxime.bouroumeau@gmail.com",
+ "homepage": "http://maximebf.com"
+ }
+ ],
+ "description": "Debug bar in the browser for php application",
+ "homepage": "https://github.com/maximebf/php-debugbar",
+ "keywords": [
+ "debug"
+ ],
+ "time": "2015-07-09 18:15:09"
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "1.16.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "c0c0b4bee3aabce7182876b0d912ef2595563db7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c0c0b4bee3aabce7182876b0d912ef2595563db7",
+ "reference": "c0c0b4bee3aabce7182876b0d912ef2595563db7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "psr/log": "~1.0"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0.0"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "^2.4.9",
+ "doctrine/couchdb": "~1.0@dev",
+ "graylog2/gelf-php": "~1.0",
+ "php-console/php-console": "^3.1.3",
+ "phpunit/phpunit": "~4.5",
+ "phpunit/phpunit-mock-objects": "2.3.0",
+ "raven/raven": "~0.8",
+ "ruflin/elastica": ">=0.90 <3.0",
+ "swiftmailer/swiftmailer": "~5.3",
+ "videlalvaro/php-amqplib": "~2.4"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-mongo": "Allow sending log messages to a MongoDB server",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "php-console/php-console": "Allow sending log messages to Google Chrome",
+ "raven/raven": "Allow sending log messages to a Sentry server",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
+ "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.16.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Monolog\\": "src/Monolog"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "http://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ],
+ "time": "2015-08-09 17:44:44"
+ },
+ {
+ "name": "mrclay/minify",
+ "version": "2.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mrclay/minify.git",
+ "reference": "3c11ba8232a2155a1a29552aafc528be5fb0a662"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mrclay/minify/zipball/3c11ba8232a2155a1a29552aafc528be5fb0a662",
+ "reference": "3c11ba8232a2155a1a29552aafc528be5fb0a662",
+ "shasum": ""
+ },
+ "require": {
+ "ext-pcre": "*",
+ "php": ">=5.2.1"
+ },
+ "require-dev": {
+ "tubalmartin/cssmin": "~2.4.8"
+ },
+ "suggest": {
+ "tubalmartin/cssmin": "Support minify with CSSMin (YUI PHP port)"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "min/lib/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Stephen Clay",
+ "email": "steve@mrclay.org",
+ "role": "Developer"
+ }
+ ],
+ "description": "Minify is a PHP5 app that helps you follow several rules for client-side performance. It combines multiple CSS or Javascript files, removes unnecessary whitespace and comments, and serves them with gzip encoding and optimal client-side cache headers",
+ "homepage": "http://code.google.com/p/minify/",
+ "time": "2014-10-30 22:58:02"
+ },
+ {
+ "name": "pimple/pimple",
+ "version": "v3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/silexphp/Pimple.git",
+ "reference": "3313af5935dbc560fab845b76a1ca351b47855af"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/silexphp/Pimple/zipball/3313af5935dbc560fab845b76a1ca351b47855af",
+ "reference": "3313af5935dbc560fab845b76a1ca351b47855af",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Pimple": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Pimple is a simple Dependency Injection Container for PHP 5.3",
+ "homepage": "http://pimple.sensiolabs.org",
+ "keywords": [
+ "container",
+ "dependency injection"
+ ],
+ "time": "2015-07-30 09:57:46"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
+ "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
+ "shasum": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Psr\\Log\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2012-12-21 11:40:51"
+ },
+ {
+ "name": "rockettheme/toolbox",
+ "version": "1.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/rockettheme/toolbox.git",
+ "reference": "fed1e4d60c80f2f247d1f9fb9e59cecff914aa61"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/rockettheme/toolbox/zipball/fed1e4d60c80f2f247d1f9fb9e59cecff914aa61",
+ "reference": "fed1e4d60c80f2f247d1f9fb9e59cecff914aa61",
+ "shasum": ""
+ },
+ "require": {
+ "ircmaxell/password-compat": "1.0.*",
+ "php": ">=5.4.0",
+ "pimple/pimple": "~3.0",
+ "symfony/event-dispatcher": "~2.5",
+ "symfony/yaml": "~2.5"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.0.*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "RocketTheme\\Toolbox\\ArrayTraits\\": "ArrayTraits/src",
+ "RocketTheme\\Toolbox\\Blueprints\\": "Blueprints/src",
+ "RocketTheme\\Toolbox\\DI\\": "DI/src",
+ "RocketTheme\\Toolbox\\Event\\": "Event/src",
+ "RocketTheme\\Toolbox\\File\\": "File/src",
+ "RocketTheme\\Toolbox\\ResourceLocator\\": "ResourceLocator/src",
+ "RocketTheme\\Toolbox\\Session\\": "Session/src",
+ "RocketTheme\\Toolbox\\StreamWrapper\\": "StreamWrapper/src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "RocketTheme Toolbox Library",
+ "homepage": "http://www.rockettheme.com",
+ "keywords": [
+ "php",
+ "rockettheme"
+ ],
+ "time": "2015-08-27 18:36:50"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v2.7.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/Console.git",
+ "reference": "d6cf02fe73634c96677e428f840704bfbcaec29e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/Console/zipball/d6cf02fe73634c96677e428f840704bfbcaec29e",
+ "reference": "d6cf02fe73634c96677e428f840704bfbcaec29e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.9"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/event-dispatcher": "~2.1",
+ "symfony/phpunit-bridge": "~2.7",
+ "symfony/process": "~2.1"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.7-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Console Component",
+ "homepage": "https://symfony.com",
+ "time": "2015-07-28 15:18:12"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v2.7.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/EventDispatcher.git",
+ "reference": "9310b5f9a87ec2ea75d20fec0b0017c77c66dac3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/9310b5f9a87ec2ea75d20fec0b0017c77c66dac3",
+ "reference": "9310b5f9a87ec2ea75d20fec0b0017c77c66dac3",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.9"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "~2.0,>=2.0.5",
+ "symfony/dependency-injection": "~2.6",
+ "symfony/expression-language": "~2.6",
+ "symfony/phpunit-bridge": "~2.7",
+ "symfony/stopwatch": "~2.3"
+ },
+ "suggest": {
+ "symfony/dependency-injection": "",
+ "symfony/http-kernel": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.7-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony EventDispatcher Component",
+ "homepage": "https://symfony.com",
+ "time": "2015-06-18 19:21:56"
+ },
+ {
+ "name": "symfony/var-dumper",
+ "version": "v2.7.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-dumper.git",
+ "reference": "e8903ebba5eb019f5886ffce739ea9e3b7519579"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/e8903ebba5eb019f5886ffce739ea9e3b7519579",
+ "reference": "e8903ebba5eb019f5886ffce739ea9e3b7519579",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.9"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "~2.7"
+ },
+ "suggest": {
+ "ext-symfony_debug": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.7-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "Resources/functions/dump.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\VarDumper\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony mechanism for exploring and dumping PHP variables",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "debug",
+ "dump"
+ ],
+ "time": "2015-07-28 15:18:12"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v2.7.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/Yaml.git",
+ "reference": "71340e996171474a53f3d29111d046be4ad8a0ff"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/Yaml/zipball/71340e996171474a53f3d29111d046be4ad8a0ff",
+ "reference": "71340e996171474a53f3d29111d046be4ad8a0ff",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.9"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "~2.7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.7-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Yaml\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Yaml Component",
+ "homepage": "https://symfony.com",
+ "time": "2015-07-28 14:07:07"
+ },
+ {
+ "name": "twig/twig",
+ "version": "v1.21.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/twigphp/Twig.git",
+ "reference": "ca8d3aa90b6a01c82e07909fe815d6b443e75a23"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/ca8d3aa90b6a01c82e07909fe815d6b443e75a23",
+ "reference": "ca8d3aa90b6a01c82e07909fe815d6b443e75a23",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.7"
+ },
+ "require-dev": {
+ "symfony/debug": "~2.7",
+ "symfony/phpunit-bridge": "~2.7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.21-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Twig_": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com",
+ "homepage": "http://fabien.potencier.org",
+ "role": "Lead Developer"
+ },
+ {
+ "name": "Armin Ronacher",
+ "email": "armin.ronacher@active-4.com",
+ "role": "Project Founder"
+ },
+ {
+ "name": "Twig Team",
+ "homepage": "http://twig.sensiolabs.org/contributors",
+ "role": "Contributors"
+ }
+ ],
+ "description": "Twig, the flexible, fast, and secure template language for PHP",
+ "homepage": "http://twig.sensiolabs.org",
+ "keywords": [
+ "templating"
+ ],
+ "time": "2015-08-26 08:58:31"
+ }
+ ],
+ "packages-dev": [],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": {
+ "maximebf/debugbar": 20,
+ "filp/whoops": 20
+ },
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": ">=5.4.0"
+ },
+ "platform-dev": []
+}
diff --git a/htaccess.txt b/htaccess.txt
index ce48b2674..203e2dd8d 100644
--- a/htaccess.txt
+++ b/htaccess.txt
@@ -44,7 +44,7 @@ RewriteRule .* index.php [L]
## Begin - Security
# Block all direct access for these folders
-RewriteRule ^(cache|bin|logs)/(.*) error [L]
+RewriteRule ^(.git|cache|bin|logs|backup)/(.*) error [L]
# Block access to specific file types for these folders
RewriteRule ^(system|user|vendor)/(.*)\.(txt|md|html|yaml|php|twig|sh|bat)$ error [L]
## End - Security
diff --git a/system/blueprints/config/site.yaml b/system/blueprints/config/site.yaml
index 06967ede6..0586c31a2 100644
--- a/system/blueprints/config/site.yaml
+++ b/system/blueprints/config/site.yaml
@@ -60,9 +60,9 @@ form:
label: PLUGIN_ADMIN.SUMMARY_SIZE
help: PLUGIN_ADMIN.SUMMARY_SIZE_HELP
validate:
- type: int
- min: 0
- max: 65536
+ type: int
+ min: 0
+ max: 65536
summary.format:
type: toggle
diff --git a/system/blueprints/config/system.yaml b/system/blueprints/config/system.yaml
index cfb8121a1..feb0b039a 100644
--- a/system/blueprints/config/system.yaml
+++ b/system/blueprints/config/system.yaml
@@ -58,7 +58,7 @@ form:
default: "jS M Y"
options:
"F jS \\a\\t g:ia": Date1
- "l jS of F g:i A": Date2
+ "l jS \\of F g:i A": Date2
"D, m M Y G:i:s": Date3
"d-m-y G:i": Date4
"jS M Y": Date5
@@ -71,14 +71,14 @@ form:
help: PLUGIN_ADMIN.LONG_DATE_FORMAT_HELP
options:
"F jS \\a\\t g:ia": Date1
- "l jS of F g:i A": Date2
+ "l jS \\of F g:i A": Date2
"D, m M Y G:i:s": Date3
"d-m-y G:i": Date4
"jS M Y": Date5
pages.order.by:
type: select
- size: medium
+ size: long
classes: fancy
label: PLUGIN_ADMIN.DEFAULT_ORDERING
help: PLUGIN_ADMIN.DEFAULT_ORDERING_HELP
@@ -324,7 +324,7 @@ form:
size: small
classes: fancy
label: PLUGIN_ADMIN.CACHE_CHECK_METHOD
- help: PLUGIN_ADMIN.CACHE_CHECK_METHOD
+ help: PLUGIN_ADMIN.CACHE_CHECK_METHOD_HELP
options:
file: File
folder: Folder
diff --git a/system/blueprints/pages/default.yaml b/system/blueprints/pages/default.yaml
index 061ddd7b1..04ee6e753 100644
--- a/system/blueprints/pages/default.yaml
+++ b/system/blueprints/pages/default.yaml
@@ -23,6 +23,7 @@ form:
fields:
header.title:
type: text
+ autofocus: true
style: vertical
label: PLUGIN_ADMIN.TITLE
@@ -144,10 +145,11 @@ form:
options:
'/': PLUGIN_ADMIN.DEFAULT_OPTION_ROOT
- type:
- type: templates
+ name:
+ type: select
classes: fancy
- label: PLUGIN_ADMIN.DISPLAY_TEMPLATE
+ label: PLUGIN_ADMIN.PAGE_FILE
+ help: PLUGIN_ADMIN.PAGE_FILE_HELP
default: default
@data-options: '\Grav\Common\Page\Pages::types'
@@ -248,6 +250,14 @@ form:
validate:
type: bool
+ header.template:
+ type: select
+ toggleable: true
+ classes: fancy
+ label: PLUGIN_ADMIN.DISPLAY_TEMPLATE
+ default: default
+ @data-options: '\Grav\Common\Page\Pages::types'
+
header.order_by:
type: hidden
diff --git a/system/blueprints/pages/modular_new.yaml b/system/blueprints/pages/modular_new.yaml
index e3772d366..11fc4bf5c 100644
--- a/system/blueprints/pages/modular_new.yaml
+++ b/system/blueprints/pages/modular_new.yaml
@@ -36,10 +36,11 @@ form:
validate:
required: true
- type:
+ name:
type: select
classes: fancy
label: PLUGIN_ADMIN.MODULAR_TEMPLATE
+ help: PLUGIN_ADMIN.PAGE_FILE_HELP
default: default
@data-options: '\Grav\Common\Page\Pages::modularTypes'
validate:
diff --git a/system/blueprints/pages/modular_raw.yaml b/system/blueprints/pages/modular_raw.yaml
index 5bace3077..f3c308bea 100644
--- a/system/blueprints/pages/modular_raw.yaml
+++ b/system/blueprints/pages/modular_raw.yaml
@@ -76,7 +76,7 @@ form:
validate:
required: true
- type:
+ name:
type: select
classes: fancy
label: PLUGIN_ADMIN.MODULAR_TEMPLATE
diff --git a/system/blueprints/pages/new.yaml b/system/blueprints/pages/new.yaml
index bdfa340fb..255a2ea98 100644
--- a/system/blueprints/pages/new.yaml
+++ b/system/blueprints/pages/new.yaml
@@ -38,11 +38,11 @@ form:
validate:
required: true
- type:
+ name:
type: select
- label: PLUGIN_ADMIN.DISPLAY_TEMPLATE
- help: PLUGIN_ADMIN.DISPLAY_TEMPLATE_HELP
classes: fancy
+ label: PLUGIN_ADMIN.PAGE_FILE
+ help: PLUGIN_ADMIN.PAGE_FILE_HELP
default: default
@data-options: '\Grav\Common\Page\Pages::types'
validate:
diff --git a/system/blueprints/pages/raw.yaml b/system/blueprints/pages/raw.yaml
index 00f69bdeb..55d06e72d 100644
--- a/system/blueprints/pages/raw.yaml
+++ b/system/blueprints/pages/raw.yaml
@@ -73,7 +73,7 @@ form:
options:
'/': PLUGIN_ADMIN.DEFAULT_OPTION_ROOT
- type:
+ name:
type: select
classes: fancy
label: PLUGIN_ADMIN.DISPLAY_TEMPLATE
diff --git a/system/blueprints/user/account_new.yaml b/system/blueprints/user/account_new.yaml
index 202f68814..6c6505bdb 100644
--- a/system/blueprints/user/account_new.yaml
+++ b/system/blueprints/user/account_new.yaml
@@ -11,5 +11,6 @@ form:
username:
type: text
label: PLUGIN_ADMIN.USERNAME
+ help: PLUGIN_ADMIN.USERNAME_HELP
validate:
required: true
diff --git a/system/defines.php b/system/defines.php
index f628f0737..8773bbed3 100644
--- a/system/defines.php
+++ b/system/defines.php
@@ -2,7 +2,7 @@
// Some standard defines
define('GRAV', true);
-define('GRAV_VERSION', '0.9.39');
+define('GRAV_VERSION', '0.9.40');
define('DS', '/');
// Directories and Paths
diff --git a/system/src/Grav/Common/Cache.php b/system/src/Grav/Common/Cache.php
index 0aefc0727..2511de461 100644
--- a/system/src/Grav/Common/Cache.php
+++ b/system/src/Grav/Common/Cache.php
@@ -239,19 +239,20 @@ class Cache extends Getters
$anything = false;
$files = glob(ROOT_DIR . $path . '*');
- foreach ($files as $file) {
- if (is_file($file)) {
- if (@unlink($file)) {
- $anything = true;
- }
- } elseif (is_dir($file)) {
- if (@Folder::delete($file)) {
- $anything = true;
+ if (is_array($files)) {
+ foreach ($files as $file) {
+ if (is_file($file)) {
+ if (@unlink($file)) {
+ $anything = true;
+ }
+ } elseif (is_dir($file)) {
+ if (@Folder::delete($file)) {
+ $anything = true;
+ }
}
}
}
-
if ($anything) {
$output[] = '
We're sorry! The server has encountered an internal error and was unable to complete your request. - Please contact the system administrator for more information.
-logs/ folder, or enable displaying of errors in your system configuration.Sorry, something went terribly wrong!
+ +logs/ folder, or enable displaying of errors in your system configuration.