commit cf7a95d818a5758f16dc117322d47b1a07a0f906 Author: Kevin Date: Wed May 20 15:48:29 2020 +0200 first commit diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..5dcb5e5b --- /dev/null +++ b/.env.example @@ -0,0 +1,26 @@ +DB_NAME='database_name' +DB_USER='database_user' +DB_PASSWORD='database_password' + +# Optionally, you can use a data source name (DSN) +# When using a DSN, you can remove the DB_NAME, DB_USER, DB_PASSWORD, and DB_HOST variables +# DATABASE_URL='mysql://database_user:database_password@database_host:database_port/database_name' + +# Optional variables +# DB_HOST='localhost' +# DB_PREFIX='wp_' + +WP_ENV='development' +WP_HOME='http://example.com' +WP_SITEURL="${WP_HOME}/wp" +WP_DEBUG_LOG=/path/to/debug.log + +# Generate your keys here: https://roots.io/salts.html +AUTH_KEY='generateme' +SECURE_AUTH_KEY='generateme' +LOGGED_IN_KEY='generateme' +NONCE_KEY='generateme' +AUTH_SALT='generateme' +SECURE_AUTH_SALT='generateme' +LOGGED_IN_SALT='generateme' +NONCE_SALT='generateme' diff --git a/.github/workflows/issues.yml b/.github/workflows/issues.yml new file mode 100644 index 00000000..f2b2474e --- /dev/null +++ b/.github/workflows/issues.yml @@ -0,0 +1,14 @@ +name: Issue closer +on: [issues] +jobs: + autoclose: + runs-on: ubuntu-latest + steps: + - name: Autoclose issues that did not follow issue template + uses: roots/issue-closer@v1.1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + issue-close-message: "Hi @${issue.user.login}, +It looks like the issue template is missing from this issue. Please take a look at the [Contribution Guidelines](https://github.com/roots/guidelines/blob/master/CONTRIBUTING.md), which will tell you **exactly** what your ticket has to contain in order to be processable. +Please **do not** use the issue tracker for personal support requests. Use [Roots Discourse](https://discourse.roots.io/) to ask the Roots community for help, or [hire someone from the community](https://discourse.roots.io/c/jobs)." + issue-pattern: ".*guidelines for Contributing.*" diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..2ab69404 --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +# Application +web/app/plugins/* +!web/app/plugins/.gitkeep +web/app/mu-plugins/*/ +web/app/upgrade +web/app/uploads/* +!web/app/uploads/.gitkeep + +# WordPress +web/wp +web/.htaccess + +# Logs +*.log + +# Dotenv +.env +.env.* +!.env.example + +# Composer +/vendor + +# WP-CLI +wp-cli.local.yml diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..6e530778 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,383 @@ +### Head + +### 1.13.4: 2020-04-24 + +* fix(mu-plugins): Bump bedrock-autoloader version ([#512](https://github.com/roots/bedrock/pull/512)) +* fix(mu-plugins): A more sane fix for #510 ([#512](https://github.com/roots/bedrock/pull/512)) + +### 1.13.3: 2020-04-24 + +* enhance(ci): Add CircleCI workflow for PHP 7.4 ([#510](https://github.com/roots/bedrock/pull/511)) +* fix(mu-plugins): Fix invalid array access notice on 7.4 ([#510](https://github.com/roots/bedrock/pull/510)) +* enhance(composer): Add `only` option to wpackagist.org repository ([#508](https://github.com/roots/bedrock/pull/508)) + +### 1.13.2: 2020-04-01 + +* chore(deps): Bump WordPress to 5.4 ([#502](https://github.com/roots/bedrock/pull/502)) +* chore(deps): Bump vlucas/phpdotenv ([#501](https://github.com/roots/bedrock/pull/502)) +* enhance(config): Add `WP_DEBUG_LOG` ([#499](https://github.com/roots/bedrock/pull/499)) + +### 1.13.1: 2020-02-19 + +* fix(env): Makes .env.example compatible with breaking changes from vlucas/phpdotenv 4.x ([#493](https://github.com/roots/bedrock/pull/493)) + +### 1.13.0: 2020-02-17 + +* Update to WordPress 5.3.2 ([#489](https://github.com/roots/bedrock/pull/489)) +* chore(deps): Bump vlucas/phpdotenv from 4.0.1 to 4.1.0 ([#487](https://github.com/roots/bedrock/pull/487)) +* chore(deps): Bump vlucas/phpdotenv from 3.6.0 to 4.0.1 ([#485](https://github.com/roots/bedrock/pull/485)) +* chore(deps): Bump composer/installers from 1.7.0 to 1.8.0 ([#492](https://github.com/roots/bedrock/pull/492)) +* chore(deps-dev): Bump squizlabs/php_codesniffer from 3.4.2 to 3.5.4 ([#490](https://github.com/roots/bedrock/pull/490)) +* Clean up docblocks & commenting ([#459](https://github.com/roots/bedrock/pull/459)) + +### 1.12.8: 2019-09-05 + +* Update to WordPress 5.2.3 ([#466](https://github.com/roots/bedrock/pull/466)) +* Remove `phpcs.xml` from `.gitattributes` ([#464](https://github.com/roots/bedrock/pull/464)) +* `ini_set()` fixes ([#463](https://github.com/roots/bedrock/pull/463)) +* Editorconfig updates ([#457](https://github.com/roots/bedrock/pull/457)) +* Bump `composer/installers` ([#462](https://github.com/roots/bedrock/pull/462)) +* Better default composer options ([#456](https://github.com/roots/bedrock/pull/456)) +* Ignore `.log` files ([#440](https://github.com/roots/bedrock/pull/440)) +* Change to CircleCI ([82945d8](https://github.com/roots/bedrock/commit/82945d803d10cb072b7e786e0a81094ccb2d067b), [#460](https://github.com/roots/bedrock/pull/460)) + +### 1.12.7: 2019-06-19 + +* Update to WordPress 5.2.2 ([#444](https://github.com/roots/bedrock/pull/444)) +* Bump `oscarotero/env` ([#443](https://github.com/roots/bedrock/pull/443)) +* Bump `vlucas/phpdotenv` ([#442](https://github.com/roots/bedrock/pull/442)) +* Bump `squizlabs/php_codesniffer` ([#441](https://github.com/roots/bedrock/pull/441)) +* Remove unnecessary static variables ([#437](https://github.com/roots/bedrock/pull/437)) + +### 1.12.6: 2019-05-21 + +* Update to WordPress 5.2.1 ([#436](https://github.com/roots/bedrock/pull/436)) + +### 1.12.5: 2019-05-14 + +* Disable WordPress' built-in fatal error handler on development ([#432](https://github.com/roots/bedrock/pull/434)) + +### 1.12.4: 2019-05-07 + +* Update to WordPress 5.2 ([#432](https://github.com/roots/bedrock/pull/432)) +* Configure WP-CLI `wp server` webroot ([#427](https://github.com/roots/bedrock/pull/427)) +* Fix issue with `bedrock_autoloader` option ([#386](https://github.com/roots/bedrock/pull/386)) + +### 1.12.3: 2019-03-13 + +* Update to WordPress 5.1.1 ([#426](https://github.com/roots/bedrock/pull/426)) + +### 1.12.2: 2019-02-21 + +* Update to WordPress 5.1 ([#420](https://github.com/roots/bedrock/pull/420)) + +### 1.12.1: 2019-02-14 + +* Update `vlucas/phpdotenv` ([#417](https://github.com/roots/bedrock/pull/417)) +* Make DSN implementation more uniform ([#415](https://github.com/roots/bedrock/pull/415)) + +### 1.12.0: 2019-02-07 + +* Support database DSN ([#414](https://github.com/roots/bedrock/pull/414)) +* Detect HTTPS if WordPress is behind a reverse proxy ([#413](https://github.com/roots/bedrock/pull/413)) +* Update `vlucas/phpdotenv` to `^3` ([#412](https://github.com/roots/bedrock/pull/412)) + +### 1.11.1: 2019-01-09 + +* Update to WordPress 5.0.3 ([#408](https://github.com/roots/bedrock/pull/408)) + +### 1.11.0: 2018-12-19 + +* Bump PHP requirement to >= 7.1 ([#405](https://github.com/roots/bedrock/pull/405)) + +### 1.10.2: 2018-12-19 + +* Update to WordPress 5.0.2 ([#406](https://github.com/roots/bedrock/pull/406)) + +### 1.10.1: 2018-12-12 + +* Update to WordPress 5.0.1 ([#403](https://github.com/roots/bedrock/pull/403)) + +### 1.10.0: 2018-12-09 + +* Update to WordPress 5.0, switch from `johnpbloch/wordpress` to `roots/wordpress` package ([#395](https://github.com/roots/bedrock/pull/395)) + +### 1.9.0: 2018-09-17 + +* Fix error display in development environments ([c457082](https://github.com/roots/bedrock/commit/c457082cf4b153400d3e34f4f68a30eea4cc7c38)) +* --prefer-dist on roave/security-advisories ([#381](https://github.com/roots/bedrock/pull/381)) +* New Bedrock Configuration Model ([#380](https://github.com/roots/bedrock/pull/380)) +* Remove vendor/.gitkeep ([#379](https://github.com/roots/bedrock/pull/379)) +* Composer 1.7.0 lockfile ([#378](https://github.com/roots/bedrock/pull/378)) +* Adds roave/security-advisories to composer dev deps ([#376](https://github.com/roots/bedrock/pull/376)) + +### 1.8.12: 2018-08-03 + +* Update to WordPress 4.9.8 + +### 1.8.11: 2018-07-09 + +* Update to WordPress 4.9.7 + +### 1.8.10: 2018-05-18 + +* Update to WordPress 4.9.6 + +### 1.8.9: 2018-04-04 + +* Update to WordPress 4.9.5 + +### 1.8.8: 2018-02-06 + +* Update to WordPress 4.9.4 + +### 1.8.7: 2018-02-05 + +* Update to WordPress 4.9.3 + +### 1.8.6: 2018-01-16 + +* Update to WordPress 4.9.2 + +### 1.8.5: 2017-11-29 + +* Update to WordPress 4.9.1 + +### 1.8.4: 2017-11-16 + +* Update to WordPress 4.9.0 + +### 1.8.3: 2017-10-31 + +* Update to WordPress 4.8.3 + +### 1.8.2: 2017-09-19 + +* Update to WordPress 4.8.2 + +### 1.8.1: 2017-08-02 + +* Update to WordPress 4.8.1 + +### 1.8.0: 2017-06-08 + +* Update to WordPress 4.8.0 + +### 1.7.9: 2017-05-16 + +* Update to WordPress 4.7.5 + +### 1.7.8: 2017-05-03 + +* Update `johnpbloch/wordpress` to 4.7.4.1 (see https://github.com/johnpbloch/wordpress/issues/32) + +### 1.7.7: 2017-04-20 + +* Update to WordPress 4.7.4 + +### 1.7.6: 2017-03-06 + +* Update to WordPress 4.7.3 + +### 1.7.5: 2017-01-26 + +* Update to WordPress 4.7.2 + +### 1.7.4: 2017-01-11 + +* Update to WordPress 4.7.1 +* Add Optional variables to `.env.example` +* Remove unnecessary gitignore rules ([#286](https://github.com/roots/bedrock/pull/286)) + +### 1.7.3: 2016-12-06 + +* Update to WordPress 4.7 +* Default `WP_ENV` to `production` instead of `development` ([#277](https://github.com/roots/bedrock/pull/277)) + +### 1.7.2: 2016-09-07 + +* Update to WordPress 4.6.1 + +### 1.7.1: 2016-08-16 + +* Update to WordPress 4.6 + +### 1.7.0: 2016-07-10 + +* Bump PHP requirement to >= 5.6 (5.5 is no longer supported) + +### 1.6.4: 2016-06-21 + +* Update to WordPress 4.5.3 + +### 1.6.3: 2016-05-06 + +* Update to WordPress 4.5.2 + +### 1.6.2: 2016-04-26 + +* Update to WordPress 4.5.1 + +### 1.6.1: 2016-04-12 + +* Update to WordPress 4.5 +* Update coding standards (PSR-2) ([#244](https://github.com/roots/bedrock/pull/244)) + +### 1.6.0: 2016-03-03 + +* Add wp-password-bcrypt for more secure passwords ([#243](https://github.com/roots/bedrock/pull/243)) + +### 1.5.4: 2016-02-29 + +* Use HTTPS for wpackagist.org + +### 1.5.3: 2016-02-03 + +* Update to WordPress 4.4.2 + +### 1.5.2: 2016-02-01 + +* Bump `composer/installers` dependency to 1.0.23 to fix deprecation notice + +### 1.5.1: 2016-01-27 + +* Use [oscarotero/env](https://github.com/oscarotero/env) instead of `getenv` ([#229](https://github.com/roots/bedrock/pull/233)) + +### 1.5.0: 2016-01-17 + +* Fix `DISABLE_WP_CRON` setting via ENV variable ([#229](https://github.com/roots/bedrock/pull/229)) +* Set default `DB_CHARSET` to `utf8mb4` + +### 1.4.7: 2016-01-07 + +* Update to WordPress 4.4.1 + +### 1.4.6: 2015-12-09 + +* Update to WordPress 4.4 + +### 1.4.5: 2015-09-16 + +* Update to WordPress 4.3.1 +* Bump minimum required PHP version to 5.5 ([#201](https://github.com/roots/bedrock/pull/201)) + +### 1.4.4: 2015-08-18 + +* Update to WordPress 4.3 + +### 1.4.3: 2015-08-04 + +* Update to WordPress 4.2.4 + +### 1.4.2: 2015-07-24 + +* Update to WordPress 4.2.3 + +### 1.4.1: 2015-06-30 + +* Dotenv 2.0.1 update + +### 1.4.0: 2015-06-07 + +* Removed .env generation script + +### 1.3.7: 2015-05-07 + +* Update to WordPress 4.2.2 + +### 1.3.6: 2015-04-27 + +* Update to WordPress 4.2.1 + +### 1.3.5: 2015-04-23 + +* Update to WordPress 4.2 +* Update to WordPress 4.1.2 +* Don't register theme directory if `WP_DEFAULT_THEME` is defined +* Move Capistrano configs to https://github.com/roots/bedrock-capistrano + +### 1.3.4: 2015-02-18 + +* WordPress 4.1.1 fix + +### 1.3.3: 2015-02-18 + +* Update to WordPress 4.1.1 +* mu-plugins autoloader Multisite fix +* Coding standards update + TravisCI integration + +### 1.3.2: 2014-12-18 + +* Update to WordPress 4.1 +* Remove WPLANG constant + +### 1.3.1: 2014-11-28 + +* Add Capistrano task to fix/update WP theme paths after deploys + +### 1.3.0: 2014-11-20 + +* Update to WordPress 4.0.1 +* Use johnpbloch/wordpress package instead of custom repository +* Update default deploy.rb +* Require PHP >= 5.4 in composer.json +* Better PSR-1 adherence +* Update phpdotenv dependency to 1.0.9 +* Fix Composer installer path plugin order +* Add bedrock-autoloader mu-plugin + +### 1.2.7: 2014-09-04 + +* Update to WordPress 4.0 + +### 1.2.6: 2014-08-06 + +* Update to WordPress 3.9.2 +* Minor deploy fix +* Doc updates + +### 1.2.5: 2014-07-16 + +* Update to WordPress 3.9.1 +* Doc updates +* Add `DB_PREFIX` constant +* Update Gem versions +* Disallow indexing in non-production environments + +### 1.2.4: 2014-04-17 + +* Fixes issue with 3.9 update (`composer.lock` wasn't updated) + +### 1.2.3: 2014-04-16 + +* Update to WordPress 3.9 + +### 1.2.2: 2014-04-14 + +* Update to WordPress 3.8.3 +* Only run `Dotenv::load` if `.env` file exists + +### 1.2.1: 2014-04-08 + +* Update to WordPress 3.8.2 + +### 1.2.0: 2014-04-07 + +* WP package now has `wordpress` vendor name: `wordpress/wordpress` +* Remove wp-cli and add `wp-cli.yml` config + +### 1.1.1: 2014-03-11 + +* Update phpdotenv to 1.0.6 +* Update wp-cli to v0.14.1 +* Update README to refence new WordPress Packagist namespaces +* Fix uploads path in `linked_dirs` for Capistrano deploys + +### 1.1.0: 2014-03-01 + +* Update to Capistrano 3.1.0: `deploy:restart` is no longer run by default +* Better webroot structure: introduces the `/web` directory as the document/web root for web server vhosts + +### 1.0.0: 2013-12-18 + +* Initial release diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 00000000..ee859d0f --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,19 @@ +Copyright (c) Roots + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 00000000..8fc7bbf0 --- /dev/null +++ b/README.md @@ -0,0 +1,115 @@ +

+ + Bedrock + +

+ +

+ + MIT License + + + + Packagist + + + + Build Status + + + + Follow Roots + +

+ +

+ A modern WordPress stack +
+ Built with ❤️ +

+ +

+ Official Website | Documentation | Change Log +

+ +## Supporting + +**Bedrock** is an open source project and completely free to use. + +However, the amount of effort needed to maintain and develop new features and products within the Roots ecosystem is not sustainable without proper financial backing. If you have the capability, please consider donating using the links below: + +
+ +[![Donate via Patreon](https://img.shields.io/badge/donate-patreon-orange.svg?style=flat-square&logo=patreon")](https://www.patreon.com/rootsdev) +[![Donate via PayPal](https://img.shields.io/badge/donate-paypal-blue.svg?style=flat-square&logo=paypal)](https://www.paypal.me/rootsdev) + +
+ +## Overview + +Bedrock is a modern WordPress stack that helps you get started with the best development tools and project structure. + +Much of the philosophy behind Bedrock is inspired by the [Twelve-Factor App](http://12factor.net/) methodology including the [WordPress specific version](https://roots.io/twelve-factor-wordpress/). + +## Features + +- Better folder structure +- Dependency management with [Composer](https://getcomposer.org) +- Easy WordPress configuration with environment specific files +- Environment variables with [Dotenv](https://github.com/vlucas/phpdotenv) +- Autoloader for mu-plugins (use regular plugins as mu-plugins) +- Enhanced security (separated web root and secure passwords with [wp-password-bcrypt](https://github.com/roots/wp-password-bcrypt)) + +## Requirements + +- PHP >= 7.1 +- Composer - [Install](https://getcomposer.org/doc/00-intro.md#installation-linux-unix-osx) + +## Installation + +1. Create a new project: + ```sh + $ composer create-project roots/bedrock + ``` +2. Update environment variables in the `.env` file. Wrap values that may contain non-alphanumeric characters with quotes, or they may be incorrectly parsed. + +- Database variables + - `DB_NAME` - Database name + - `DB_USER` - Database user + - `DB_PASSWORD` - Database password + - `DB_HOST` - Database host + - Optionally, you can define `DATABASE_URL` for using a DSN instead of using the variables above (e.g. `mysql://user:password@127.0.0.1:3306/db_name`) +- `WP_ENV` - Set to environment (`development`, `staging`, `production`) +- `WP_HOME` - Full URL to WordPress home (https://example.com) +- `WP_SITEURL` - Full URL to WordPress including subdirectory (https://example.com/wp) +- `AUTH_KEY`, `SECURE_AUTH_KEY`, `LOGGED_IN_KEY`, `NONCE_KEY`, `AUTH_SALT`, `SECURE_AUTH_SALT`, `LOGGED_IN_SALT`, `NONCE_SALT` + - Generate with [wp-cli-dotenv-command](https://github.com/aaemnnosttv/wp-cli-dotenv-command) + - Generate with [our WordPress salts generator](https://roots.io/salts.html) + +3. Add theme(s) in `web/app/themes/` as you would for a normal WordPress site +4. Set the document root on your webserver to Bedrock's `web` folder: `/path/to/site/web/` +5. Access WordPress admin at `https://example.com/wp/wp-admin/` + +## Documentation + +Bedrock documentation is available at [https://roots.io/docs/bedrock/master/installation/](https://roots.io/docs/bedrock/master/installation/). + +## Contributing + +Contributions are welcome from everyone. We have [contributing guidelines](https://github.com/roots/guidelines/blob/master/CONTRIBUTING.md) to help you get started. + +## Bedrock sponsors + +Help support our open-source development efforts by [becoming a patron](https://www.patreon.com/rootsdev). + +Kinsta KM Digital + +## Community + +Keep track of development and community news. + +- Participate on the [Roots Discourse](https://discourse.roots.io/) +- Follow [@rootswp on Twitter](https://twitter.com/rootswp) +- Read and subscribe to the [Roots Blog](https://roots.io/blog/) +- Subscribe to the [Roots Newsletter](https://roots.io/subscribe/) +- Listen to the [Roots Radio podcast](https://roots.io/podcast/) diff --git a/composer.json b/composer.json new file mode 100644 index 00000000..400c698c --- /dev/null +++ b/composer.json @@ -0,0 +1,72 @@ +{ + "name": "roots/bedrock", + "type": "project", + "license": "MIT", + "description": "WordPress boilerplate with modern development tools, easier configuration, and an improved folder structure", + "homepage": "https://roots.io/bedrock/", + "authors": [ + { + "name": "Scott Walkinshaw", + "email": "scott.walkinshaw@gmail.com", + "homepage": "https://github.com/swalkinshaw" + }, + { + "name": "Ben Word", + "email": "ben@benword.com", + "homepage": "https://github.com/retlehs" + } + ], + "keywords": [ + "bedrock", "composer", "roots", "wordpress", "wp", "wp-config" + ], + "support": { + "issues": "https://github.com/roots/bedrock/issues", + "forum": "https://discourse.roots.io/category/bedrock" + }, + "repositories": [ + { + "type": "composer", + "url": "https://wpackagist.org", + "only": ["wpackagist-plugin/*", "wpackagist-theme/*"] + } + ], + "require": { + "php": ">=7.1", + "composer/installers": "^1.8", + "vlucas/phpdotenv": "^4.1.3", + "oscarotero/env": "^1.2.0", + "roots/wordpress": "5.4.1", + "roots/wp-config": "1.0.0", + "roots/wp-password-bcrypt": "1.0.0", + "wpackagist-plugin/advanced-custom-fields": "^5.8", + "wpackagist-plugin/classic-editor": "^1.5", + "timber/timber": "^1.15", + "wpackagist-plugin/timber-library": "^1.15" + }, + "require-dev": { + "squizlabs/php_codesniffer": "^3.5.4", + "roave/security-advisories": "dev-master" + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist" + }, + "minimum-stability": "dev", + "prefer-stable": true, + "extra": { + "installer-paths": { + "web/app/mu-plugins/{$name}/": ["type:wordpress-muplugin"], + "web/app/plugins/{$name}/": ["type:wordpress-plugin"], + "web/app/themes/{$name}/": ["type:wordpress-theme"] + }, + "wordpress-install-dir": "web/wp" + }, + "scripts": { + "post-root-package-install": [ + "php -r \"copy('.env.example', '.env');\"" + ], + "test": [ + "phpcs" + ] + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 00000000..879aede4 --- /dev/null +++ b/composer.lock @@ -0,0 +1,1336 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "c3e60299c5808b46824d8d7d6cfee013", + "packages": [ + { + "name": "altorouter/altorouter", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/dannyvankooten/AltoRouter.git", + "reference": "39c50092470128c12284d332bb57f306bb5b58e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dannyvankooten/AltoRouter/zipball/39c50092470128c12284d332bb57f306bb5b58e4", + "reference": "39c50092470128c12284d332bb57f306bb5b58e4", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "codeclimate/php-test-reporter": "dev-master", + "phpunit/phpunit": "4.5.*" + }, + "type": "library", + "autoload": { + "classmap": [ + "AltoRouter.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Danny van Kooten", + "email": "dannyvankooten@gmail.com", + "homepage": "http://dannyvankooten.com/" + }, + { + "name": "Koen Punt", + "homepage": "https://github.com/koenpunt" + }, + { + "name": "niahoo", + "homepage": "https://github.com/niahoo" + } + ], + "description": "A lightning fast router for PHP", + "homepage": "https://github.com/dannyvankooten/AltoRouter", + "keywords": [ + "lightweight", + "router", + "routing" + ], + "time": "2015-11-30T00:47:43+00:00" + }, + { + "name": "asm89/twig-cache-extension", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/asm89/twig-cache-extension.git", + "reference": "13787226956ec766f4770722082288097aebaaf3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/asm89/twig-cache-extension/zipball/13787226956ec766f4770722082288097aebaaf3", + "reference": "13787226956ec766f4770722082288097aebaaf3", + "shasum": "" + }, + "require": { + "php": ">=5.3.2", + "twig/twig": "^1.0|^2.0" + }, + "require-dev": { + "doctrine/cache": "~1.0", + "phpunit/phpunit": "^5.0 || ^4.8.10" + }, + "suggest": { + "psr/cache-implementation": "To make use of PSR-6 cache implementation via PsrCacheAdapter." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alexander", + "email": "iam.asm89@gmail.com" + } + ], + "description": "Cache fragments of templates directly within Twig.", + "homepage": "https://github.com/asm89/twig-cache-extension", + "keywords": [ + "cache", + "extension", + "twig" + ], + "time": "2020-01-01T20:47:37+00:00" + }, + { + "name": "composer/installers", + "version": "v1.9.0", + "source": { + "type": "git", + "url": "https://github.com/composer/installers.git", + "reference": "b93bcf0fa1fccb0b7d176b0967d969691cd74cca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/installers/zipball/b93bcf0fa1fccb0b7d176b0967d969691cd74cca", + "reference": "b93bcf0fa1fccb0b7d176b0967d969691cd74cca", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0" + }, + "replace": { + "roundcube/plugin-installer": "*", + "shama/baton": "*" + }, + "require-dev": { + "composer/composer": "1.6.* || 2.0.*@dev", + "composer/semver": "1.0.* || 2.0.*@dev", + "phpunit/phpunit": "^4.8.36", + "sebastian/comparator": "^1.2.4", + "symfony/process": "^2.3" + }, + "type": "composer-plugin", + "extra": { + "class": "Composer\\Installers\\Plugin", + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Installers\\": "src/Composer/Installers" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kyle Robinson Young", + "email": "kyle@dontkry.com", + "homepage": "https://github.com/shama" + } + ], + "description": "A multi-framework Composer library installer", + "homepage": "https://composer.github.io/installers/", + "keywords": [ + "Craft", + "Dolibarr", + "Eliasis", + "Hurad", + "ImageCMS", + "Kanboard", + "Lan Management System", + "MODX Evo", + "MantisBT", + "Mautic", + "Maya", + "OXID", + "Plentymarkets", + "Porto", + "RadPHP", + "SMF", + "Thelia", + "Whmcs", + "WolfCMS", + "agl", + "aimeos", + "annotatecms", + "attogram", + "bitrix", + "cakephp", + "chef", + "cockpit", + "codeigniter", + "concrete5", + "croogo", + "dokuwiki", + "drupal", + "eZ Platform", + "elgg", + "expressionengine", + "fuelphp", + "grav", + "installer", + "itop", + "joomla", + "known", + "kohana", + "laravel", + "lavalite", + "lithium", + "magento", + "majima", + "mako", + "mediawiki", + "modulework", + "modx", + "moodle", + "osclass", + "phpbb", + "piwik", + "ppi", + "puppet", + "pxcms", + "reindex", + "roundcube", + "shopware", + "silverstripe", + "sydes", + "sylius", + "symfony", + "typo3", + "wordpress", + "yawik", + "zend", + "zikula" + ], + "time": "2020-04-07T06:57:05+00:00" + }, + { + "name": "oscarotero/env", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/oscarotero/env.git", + "reference": "4ab45ce5c1f2c62549208426bfa20a3d5fa008c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/oscarotero/env/zipball/4ab45ce5c1f2c62549208426bfa20a3d5fa008c6", + "reference": "4ab45ce5c1f2c62549208426bfa20a3d5fa008c6", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": ">=5.2" + }, + "type": "library", + "autoload": { + "psr-0": { + "Env": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oscar Otero", + "email": "oom@oscarotero.com", + "homepage": "http://oscarotero.com", + "role": "Developer" + } + ], + "description": "Simple library to consume environment variables", + "homepage": "https://github.com/oscarotero/env", + "keywords": [ + "env" + ], + "time": "2019-04-03T18:28:43+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.7.3", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/4acfd6a4b33a509d8c88f50e5222f734b6aeebae", + "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.3", + "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "time": "2020-03-21T18:07:53+00:00" + }, + { + "name": "roots/wordpress", + "version": "5.4.1", + "source": { + "type": "git", + "url": "https://github.com/WordPress/WordPress.git", + "reference": "5.4.1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/WordPress/WordPress/zipball/5.4.1", + "reference": "5.4.1" + }, + "require": { + "php": ">=5.3.2", + "roots/wordpress-core-installer": ">=1.0.0" + }, + "type": "wordpress-core", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "WordPress Community", + "homepage": "https://wordpress.org/about/" + } + ], + "description": "WordPress is web software you can use to create a beautiful website or blog.", + "homepage": "https://wordpress.org/", + "keywords": [ + "blog", + "cms", + "wordpress" + ], + "time": "2020-04-29T18:50:02+00:00" + }, + { + "name": "roots/wordpress-core-installer", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/roots/wordpress-core-installer.git", + "reference": "83744b1ba5bbdb5bb225f47e24da61a6cf6c5b80" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/roots/wordpress-core-installer/zipball/83744b1ba5bbdb5bb225f47e24da61a6cf6c5b80", + "reference": "83744b1ba5bbdb5bb225f47e24da61a6cf6c5b80", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0" + }, + "conflict": { + "composer/installers": "<1.0.6" + }, + "replace": { + "johnpbloch/wordpress-core-installer": "*" + }, + "require-dev": { + "composer/composer": "^1.0", + "phpunit/phpunit": ">=4.8.35" + }, + "type": "composer-plugin", + "extra": { + "class": "Roots\\Composer\\WordPressCorePlugin" + }, + "autoload": { + "psr-4": { + "Roots\\Composer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "John P. Bloch", + "email": "me@johnpbloch.com" + }, + { + "name": "Roots", + "email": "team@roots.io" + } + ], + "description": "A custom installer to handle deploying WordPress with composer", + "keywords": [ + "wordpress" + ], + "time": "2018-12-10T00:22:15+00:00" + }, + { + "name": "roots/wp-config", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/roots/wp-config.git", + "reference": "37c38230796119fb487fa03346ab0706ce6d4962" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/roots/wp-config/zipball/37c38230796119fb487fa03346ab0706ce6d4962", + "reference": "37c38230796119fb487fa03346ab0706ce6d4962", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5.7", + "roave/security-advisories": "dev-master", + "squizlabs/php_codesniffer": "^3.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Roots\\WPConfig\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Austin Pray", + "email": "austin@austinpray.com" + } + ], + "description": "Collect configuration values and safely define() them", + "time": "2018-08-10T14:18:38+00:00" + }, + { + "name": "roots/wp-password-bcrypt", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/roots/wp-password-bcrypt.git", + "reference": "5cecd2e98ccc3193443cc5c5db9b3bc7abed5ffa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/roots/wp-password-bcrypt/zipball/5cecd2e98ccc3193443cc5c5db9b3bc7abed5ffa", + "reference": "5cecd2e98ccc3193443cc5c5db9b3bc7abed5ffa", + "shasum": "" + }, + "require": { + "composer/installers": "~1.0", + "php": ">=5.5.0" + }, + "require-dev": { + "brain/monkey": "^1.3.1", + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.8.23|^5.2.9", + "squizlabs/php_codesniffer": "^2.5.1" + }, + "type": "library", + "autoload": { + "files": [ + "wp-password-bcrypt.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Scott Walkinshaw", + "email": "scott.walkinshaw@gmail.com", + "homepage": "https://github.com/swalkinshaw" + }, + { + "name": "qwp6t", + "homepage": "https://github.com/qwp6t" + }, + { + "name": "Jan Pingel", + "email": "jpingel@bitpiston.com", + "homepage": "http://janpingel.com" + } + ], + "description": "WordPress plugin which replaces wp_hash_password and wp_check_password's phpass hasher with PHP 5.5's password_hash and password_verify using bcrypt.", + "homepage": "https://roots.io/plugins/wp-password-bcrypt", + "keywords": [ + "wordpress wp bcrypt password" + ], + "time": "2016-03-01T16:27:06+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e94c8b1bbe2bc77507a1056cdb06451c75b427f9", + "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:14:59+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "fa79b11539418b02fc5e1897267673ba2c19419c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c", + "reference": "fa79b11539418b02fc5e1897267673ba2c19419c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "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 polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-05-12T16:47:27+00:00" + }, + { + "name": "timber/timber", + "version": "1.15.2", + "source": { + "type": "git", + "url": "https://github.com/timber/timber.git", + "reference": "c0856786f5f2bb9bbcca9febc1ae8998d912734b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/timber/timber/zipball/c0856786f5f2bb9bbcca9febc1ae8998d912734b", + "reference": "c0856786f5f2bb9bbcca9febc1ae8998d912734b", + "shasum": "" + }, + "require": { + "asm89/twig-cache-extension": "~1.0", + "composer/installers": "~1.0", + "php": ">=5.3.0|7.*", + "twig/twig": "^1.41|^2.10", + "upstatement/routes": "0.5" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "johnpbloch/wordpress": "*", + "phpunit/phpunit": "5.7.16|6.*", + "squizlabs/php_codesniffer": "3.*", + "wp-coding-standards/wpcs": "^2.0", + "wpackagist-plugin/advanced-custom-fields": "5.*", + "wpackagist-plugin/co-authors-plus": "3.2.*" + }, + "suggest": { + "satooshi/php-coveralls": "1.0.* for code coverage" + }, + "type": "library", + "autoload": { + "psr-4": { + "Timber\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jared Novack", + "email": "jared@upstatement.com", + "homepage": "http://upstatement.com" + }, + { + "name": "Connor J. Burton", + "email": "connorjburton@gmail.com", + "homepage": "http://connorburton.com" + } + ], + "description": "Plugin to write WordPress themes w Object-Oriented Code and the Twig Template Engine", + "homepage": "http://timber.upstatement.com", + "keywords": [ + "templating", + "themes", + "timber", + "twig" + ], + "time": "2020-03-24T17:38:21+00:00" + }, + { + "name": "twig/twig", + "version": "v2.12.5", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "18772e0190734944277ee97a02a9a6c6555fcd94" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/18772e0190734944277ee97a02a9a6c6555fcd94", + "reference": "18772e0190734944277ee97a02a9a6c6555fcd94", + "shasum": "" + }, + "require": { + "php": "^7.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/phpunit-bridge": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.12-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + }, + "psr-4": { + "Twig\\": "src/" + } + }, + "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": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "time": "2020-02-11T15:31:23+00:00" + }, + { + "name": "upstatement/routes", + "version": "0.5", + "source": { + "type": "git", + "url": "https://github.com/Upstatement/routes.git", + "reference": "3267d28be0a73f197087d58384e1a358d85671b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Upstatement/routes/zipball/3267d28be0a73f197087d58384e1a358d85671b6", + "reference": "3267d28be0a73f197087d58384e1a358d85671b6", + "shasum": "" + }, + "require": { + "altorouter/altorouter": "^1.1.0", + "composer/installers": "~1.0", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "3.7.*", + "satooshi/php-coveralls": "dev-master", + "wp-cli/wp-cli": "*" + }, + "type": "library", + "autoload": { + "psr-0": { + "Routes": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jared Novack", + "email": "jared@upstatement.com", + "homepage": "http://upstatement.com" + } + ], + "description": "Manage rewrites and routes in WordPress with this dead-simple plugin", + "homepage": "http://routes.upstatement.com", + "keywords": [ + "redirects", + "rewrite", + "routes", + "routing" + ], + "time": "2018-12-04T01:13:41+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v4.1.5", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "539bb6927c101a5605d31d11a2d17185a2ce2bf1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/539bb6927c101a5605d31d11a2d17185a2ce2bf1", + "reference": "539bb6927c101a5605d31d11a2d17185a2ce2bf1", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0", + "phpoption/phpoption": "^1.7.2", + "symfony/polyfill-ctype": "^1.9" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.3", + "ext-filter": "*", + "ext-pcre": "*", + "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator.", + "ext-pcre": "Required to use most of the library." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "homepage": "https://gjcampbell.co.uk/" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://vancelucas.com/" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2020-05-02T14:08:57+00:00" + }, + { + "name": "wpackagist-plugin/advanced-custom-fields", + "version": "5.8.11", + "source": { + "type": "svn", + "url": "https://plugins.svn.wordpress.org/advanced-custom-fields/", + "reference": "tags/5.8.11" + }, + "dist": { + "type": "zip", + "url": "https://downloads.wordpress.org/plugin/advanced-custom-fields.5.8.11.zip" + }, + "require": { + "composer/installers": "~1.0" + }, + "type": "wordpress-plugin", + "homepage": "https://wordpress.org/plugins/advanced-custom-fields/" + }, + { + "name": "wpackagist-plugin/classic-editor", + "version": "1.5", + "source": { + "type": "svn", + "url": "https://plugins.svn.wordpress.org/classic-editor/", + "reference": "tags/1.5" + }, + "dist": { + "type": "zip", + "url": "https://downloads.wordpress.org/plugin/classic-editor.1.5.zip" + }, + "require": { + "composer/installers": "~1.0" + }, + "type": "wordpress-plugin", + "homepage": "https://wordpress.org/plugins/classic-editor/" + }, + { + "name": "wpackagist-plugin/timber-library", + "version": "1.15.2", + "source": { + "type": "svn", + "url": "https://plugins.svn.wordpress.org/timber-library/", + "reference": "tags/1.15.2" + }, + "dist": { + "type": "zip", + "url": "https://downloads.wordpress.org/plugin/timber-library.1.15.2.zip" + }, + "require": { + "composer/installers": "~1.0" + }, + "type": "wordpress-plugin", + "homepage": "https://wordpress.org/plugins/timber-library/" + } + ], + "packages-dev": [ + { + "name": "roave/security-advisories", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/Roave/SecurityAdvisories.git", + "reference": "885e8b1e0bc2096989fd20938342e407e8045186" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/885e8b1e0bc2096989fd20938342e407e8045186", + "reference": "885e8b1e0bc2096989fd20938342e407e8045186", + "shasum": "" + }, + "conflict": { + "3f/pygmentize": "<1.2", + "adodb/adodb-php": "<5.20.12", + "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", + "amphp/artax": "<1.0.6|>=2,<2.0.6", + "amphp/http": "<1.0.1", + "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6", + "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99", + "aws/aws-sdk-php": ">=3,<3.2.1", + "bagisto/bagisto": "<0.1.5", + "barrelstrength/sprout-base-email": "<1.2.7", + "barrelstrength/sprout-forms": "<3.9", + "bolt/bolt": "<3.6.10", + "brightlocal/phpwhois": "<=4.2.5", + "buddypress/buddypress": "<5.1.2", + "bugsnag/bugsnag-laravel": ">=2,<2.0.2", + "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.5.18|>=3.6,<3.6.15|>=3.7,<3.7.7", + "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", + "cartalyst/sentry": "<=2.1.6", + "centreon/centreon": "<18.10.8|>=19,<19.4.5", + "cesnet/simplesamlphp-module-proxystatistics": "<3.1", + "codeigniter/framework": "<=3.0.6", + "composer/composer": "<=1-alpha.11", + "contao-components/mediaelement": ">=2.14.2,<2.21.1", + "contao/core": ">=2,<3.5.39", + "contao/core-bundle": ">=4,<4.4.46|>=4.5,<4.8.6", + "contao/listing-bundle": ">=4,<4.4.8", + "datadog/dd-trace": ">=0.30,<0.30.2", + "david-garcia/phpwhois": "<=4.3.1", + "doctrine/annotations": ">=1,<1.2.7", + "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", + "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", + "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2", + "doctrine/doctrine-bundle": "<1.5.2", + "doctrine/doctrine-module": "<=0.7.1", + "doctrine/mongodb-odm": ">=1,<1.0.2", + "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", + "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", + "dolibarr/dolibarr": "<=10.0.6", + "dompdf/dompdf": ">=0.6,<0.6.2", + "drupal/core": ">=7,<7.69|>=8,<8.7.12|>=8.8,<8.8.4", + "drupal/drupal": ">=7,<7.69|>=8,<8.7.12|>=8.8,<8.8.4", + "endroid/qr-code-bundle": "<3.4.2", + "enshrined/svg-sanitize": "<0.13.1", + "erusev/parsedown": "<1.7.2", + "ezsystems/demobundle": ">=5.4,<5.4.6.1", + "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1", + "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1|>=5.4,<5.4.11.1|>=2017.12,<2017.12.0.1", + "ezsystems/ezplatform": ">=1.7,<1.7.9.1|>=1.13,<1.13.5.1|>=2.5,<2.5.4", + "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6", + "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2", + "ezsystems/ezplatform-user": ">=1,<1.0.1", + "ezsystems/ezpublish-kernel": ">=5.3,<5.3.12.1|>=5.4,<5.4.14.1|>=6,<6.7.9.1|>=6.8,<6.13.6.2|>=7,<7.2.4.1|>=7.3,<7.3.2.1|>=7.5,<7.5.6.2", + "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.6|>=5.4,<5.4.14.1|>=2011,<2017.12.7.2|>=2018.6,<2018.6.1.4|>=2018.9,<2018.9.1.3|>=2019.3,<2019.3.4.2", + "ezsystems/repository-forms": ">=2.3,<2.3.2.1", + "ezyang/htmlpurifier": "<4.1.1", + "firebase/php-jwt": "<2", + "fooman/tcpdf": "<6.2.22", + "fossar/tcpdf-parser": "<6.2.22", + "friendsofsymfony/oauth2-php": "<1.3", + "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", + "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", + "fuel/core": "<1.8.1", + "getgrav/grav": "<1.7-beta.8", + "gree/jose": "<=2.2", + "gregwar/rst": "<1.0.3", + "guzzlehttp/guzzle": ">=4-rc.2,<4.2.4|>=5,<5.3.1|>=6,<6.2.1", + "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10", + "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30", + "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29", + "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", + "illuminate/view": ">=7,<7.1.2", + "ivankristianto/phpwhois": "<=4.3", + "james-heinrich/getid3": "<1.9.9", + "joomla/session": "<1.3.1", + "jsmitty12/phpwhois": "<5.1", + "kazist/phpwhois": "<=4.2.6", + "kreait/firebase-php": ">=3.2,<3.8.1", + "la-haute-societe/tcpdf": "<6.2.22", + "laravel/framework": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30|>=7,<7.1.2", + "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", + "league/commonmark": "<0.18.3", + "librenms/librenms": "<1.53", + "magento/community-edition": ">=2,<2.2.10|>=2.3,<2.3.3", + "magento/magento1ce": "<1.9.4.3", + "magento/magento1ee": ">=1,<1.14.4.3", + "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2-p.2", + "monolog/monolog": ">=1.8,<1.12", + "namshi/jose": "<2.2", + "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1", + "onelogin/php-saml": "<2.10.4", + "oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5", + "openid/php-openid": "<2.3", + "oro/crm": ">=1.7,<1.7.4", + "oro/platform": ">=1.7,<1.7.4", + "padraic/humbug_get_contents": "<1.1.2", + "pagarme/pagarme-php": ">=0,<3", + "paragonie/random_compat": "<2", + "paypal/merchant-sdk-php": "<3.12", + "pear/archive_tar": "<1.4.4", + "phpfastcache/phpfastcache": ">=5,<5.0.13", + "phpmailer/phpmailer": ">=5,<5.2.27|>=6,<6.0.6", + "phpmyadmin/phpmyadmin": "<4.9.2", + "phpoffice/phpexcel": "<1.8.2", + "phpoffice/phpspreadsheet": "<1.8", + "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", + "phpwhois/phpwhois": "<=4.2.5", + "phpxmlrpc/extras": "<0.6.1", + "pimcore/pimcore": "<6.3", + "prestashop/autoupgrade": ">=4,<4.10.1", + "prestashop/gamification": "<2.3.2", + "prestashop/ps_facetedsearch": "<3.4.1", + "privatebin/privatebin": "<1.2.2|>=1.3,<1.3.2", + "propel/propel": ">=2-alpha.1,<=2-alpha.7", + "propel/propel1": ">=1,<=1.7.1", + "pusher/pusher-php-server": "<2.2.1", + "robrichards/xmlseclibs": "<3.0.4", + "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", + "scheb/two-factor-bundle": ">=0,<3.26|>=4,<4.11", + "sensiolabs/connect": "<4.2.3", + "serluck/phpwhois": "<=4.2.6", + "shopware/shopware": "<5.3.7", + "silverstripe/admin": ">=1.0.3,<1.0.4|>=1.1,<1.1.1", + "silverstripe/assets": ">=1,<1.4.7|>=1.5,<1.5.2", + "silverstripe/cms": "<4.3.6|>=4.4,<4.4.4", + "silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1", + "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", + "silverstripe/framework": "<4.4.5|>=4.5,<4.5.2", + "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.1.2", + "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", + "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4", + "silverstripe/subsites": ">=2,<2.1.1", + "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1", + "silverstripe/userforms": "<3", + "simple-updates/phpwhois": "<=1", + "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4", + "simplesamlphp/simplesamlphp": "<1.18.6", + "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", + "simplito/elliptic-php": "<1.0.6", + "slim/slim": "<2.6", + "smarty/smarty": "<3.1.33", + "socalnick/scn-social-auth": "<1.15.2", + "spoonity/tcpdf": "<6.2.22", + "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", + "ssddanbrown/bookstack": "<0.29.2", + "stormpath/sdk": ">=0,<9.9.99", + "studio-42/elfinder": "<2.1.49", + "swiftmailer/swiftmailer": ">=4,<5.4.5", + "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", + "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", + "sylius/grid-bundle": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", + "sylius/resource-bundle": "<1.3.13|>=1.4,<1.4.6|>=1.5,<1.5.1|>=1.6,<1.6.3", + "sylius/sylius": "<1.3.16|>=1.4,<1.4.12|>=1.5,<1.5.9|>=1.6,<1.6.5", + "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99", + "symbiote/silverstripe-versionedfiles": "<=2.0.3", + "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8", + "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4", + "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", + "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7", + "symfony/http-kernel": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8", + "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/mime": ">=4.3,<4.3.8", + "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/polyfill": ">=1,<1.10", + "symfony/polyfill-php55": ">=1,<1.10", + "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/routing": ">=2,<2.0.19", + "symfony/security": ">=2,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=4.4,<4.4.7|>=5,<5.0.7", + "symfony/security-bundle": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.37|>=3,<3.3.17|>=3.4,<3.4.7|>=4,<4.0.7", + "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-guard": ">=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7", + "symfony/serializer": ">=2,<2.0.11", + "symfony/symfony": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7", + "symfony/translation": ">=2,<2.0.17", + "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", + "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8", + "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", + "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", + "t3g/svg-sanitizer": "<1.0.3", + "tecnickcom/tcpdf": "<6.2.22", + "thelia/backoffice-default-template": ">=2.1,<2.1.2", + "thelia/thelia": ">=2.1-beta.1,<2.1.3", + "theonedemon/phpwhois": "<=4.2.5", + "titon/framework": ">=0,<9.9.99", + "truckersmp/phpwhois": "<=4.3.1", + "twig/twig": "<1.38|>=2,<2.7", + "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.30|>=9,<9.5.17|>=10,<10.4.2", + "typo3/cms-core": ">=8,<8.7.30|>=9,<9.5.17|>=10,<10.4.2", + "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5", + "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4", + "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1", + "ua-parser/uap-php": "<3.8", + "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", + "verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4", + "wallabag/tcpdf": "<6.2.22", + "willdurand/js-translation-bundle": "<2.1.1", + "yii2mod/yii2-cms": "<1.9.2", + "yiisoft/yii": ">=1.1.14,<1.1.15", + "yiisoft/yii2": "<2.0.15", + "yiisoft/yii2-bootstrap": "<2.0.4", + "yiisoft/yii2-dev": "<2.0.15", + "yiisoft/yii2-elasticsearch": "<2.0.5", + "yiisoft/yii2-gii": "<2.0.4", + "yiisoft/yii2-jui": "<2.0.4", + "yiisoft/yii2-redis": "<2.0.8", + "yourls/yourls": "<1.7.4", + "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", + "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", + "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3", + "zendframework/zend-diactoros": ">=1,<1.8.4", + "zendframework/zend-feed": ">=1,<2.10.3", + "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-http": ">=1,<2.8.1", + "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", + "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", + "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", + "zendframework/zend-validator": ">=2.3,<2.3.6", + "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zendframework": "<2.5.1", + "zendframework/zendframework1": "<1.12.20", + "zendframework/zendopenid": ">=2,<2.0.2", + "zendframework/zendxml": ">=1,<1.0.1", + "zetacomponents/mail": "<1.8.2", + "zf-commons/zfc-user": "<1.2.2", + "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", + "zfr/zfr-oauth2-server-module": "<0.1.2" + }, + "type": "metapackage", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "role": "maintainer" + }, + { + "name": "Ilya Tribusean", + "email": "slash3b@gmail.com", + "role": "maintainer" + } + ], + "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", + "funding": [ + { + "url": "https://github.com/Ocramius", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories", + "type": "tidelift" + } + ], + "time": "2020-05-16T00:00:31+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.5.5", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "73e2e7f57d958e7228fce50dc0c61f58f017f9f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/73e2e7f57d958e7228fce50dc0c61f58f017f9f6", + "reference": "73e2e7f57d958e7228fce50dc0c61f58f017f9f6", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards" + ], + "time": "2020-04-17T01:09:41+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": { + "roave/security-advisories": 20 + }, + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": ">=7.1" + }, + "platform-dev": [], + "plugin-api-version": "1.1.0" +} diff --git a/config/application.php b/config/application.php new file mode 100644 index 00000000..541e05a6 --- /dev/null +++ b/config/application.php @@ -0,0 +1,134 @@ +load(); + $dotenv->required(['WP_HOME', 'WP_SITEURL']); + if (!env('DATABASE_URL')) { + $dotenv->required(['DB_NAME', 'DB_USER', 'DB_PASSWORD']); + } +} + +/** + * Set up our global environment constant and load its config first + * Default: production + */ +define('WP_ENV', env('WP_ENV') ?: 'production'); + +/** + * URLs + */ +Config::define('WP_HOME', env('WP_HOME')); +Config::define('WP_SITEURL', env('WP_SITEURL')); + +/** + * Custom Content Directory + */ +Config::define('CONTENT_DIR', '/app'); +Config::define('WP_CONTENT_DIR', $webroot_dir . Config::get('CONTENT_DIR')); +Config::define('WP_CONTENT_URL', Config::get('WP_HOME') . Config::get('CONTENT_DIR')); + +/** + * DB settings + */ +Config::define('DB_NAME', env('DB_NAME')); +Config::define('DB_USER', env('DB_USER')); +Config::define('DB_PASSWORD', env('DB_PASSWORD')); +Config::define('DB_HOST', env('DB_HOST') ?: 'localhost'); +Config::define('DB_CHARSET', 'utf8mb4'); +Config::define('DB_COLLATE', ''); +$table_prefix = env('DB_PREFIX') ?: 'wp_'; + +if (env('DATABASE_URL')) { + $dsn = (object) parse_url(env('DATABASE_URL')); + + Config::define('DB_NAME', substr($dsn->path, 1)); + Config::define('DB_USER', $dsn->user); + Config::define('DB_PASSWORD', isset($dsn->pass) ? $dsn->pass : null); + Config::define('DB_HOST', isset($dsn->port) ? "{$dsn->host}:{$dsn->port}" : $dsn->host); +} + +/** + * Authentication Unique Keys and Salts + */ +Config::define('AUTH_KEY', env('AUTH_KEY')); +Config::define('SECURE_AUTH_KEY', env('SECURE_AUTH_KEY')); +Config::define('LOGGED_IN_KEY', env('LOGGED_IN_KEY')); +Config::define('NONCE_KEY', env('NONCE_KEY')); +Config::define('AUTH_SALT', env('AUTH_SALT')); +Config::define('SECURE_AUTH_SALT', env('SECURE_AUTH_SALT')); +Config::define('LOGGED_IN_SALT', env('LOGGED_IN_SALT')); +Config::define('NONCE_SALT', env('NONCE_SALT')); + +/** + * Custom Settings + */ +Config::define('AUTOMATIC_UPDATER_DISABLED', true); +Config::define('DISABLE_WP_CRON', env('DISABLE_WP_CRON') ?: false); +// Disable the plugin and theme file editor in the admin +Config::define('DISALLOW_FILE_EDIT', true); +// Disable plugin and theme updates and installation from the admin +Config::define('DISALLOW_FILE_MODS', true); + +/** + * Debugging Settings + */ +Config::define('WP_DEBUG_DISPLAY', false); +Config::define('WP_DEBUG_LOG', env('WP_DEBUG_LOG') ?? false); +Config::define('SCRIPT_DEBUG', false); +ini_set('display_errors', '0'); + +/** + * Allow WordPress to detect HTTPS when used behind a reverse proxy or a load balancer + * See https://codex.wordpress.org/Function_Reference/is_ssl#Notes + */ +if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { + $_SERVER['HTTPS'] = 'on'; +} + +$env_config = __DIR__ . '/environments/' . WP_ENV . '.php'; + +if (file_exists($env_config)) { + require_once $env_config; +} + +Config::apply(); + +/** + * Bootstrap WordPress + */ +if (!defined('ABSPATH')) { + define('ABSPATH', $webroot_dir . '/wp/'); +} diff --git a/config/environments/development.php b/config/environments/development.php new file mode 100644 index 00000000..90077657 --- /dev/null +++ b/config/environments/development.php @@ -0,0 +1,17 @@ + + + Roots Coding Standards + + + . + + + + + + web/wp + vendor/ + + + + + + + + + + diff --git a/web/app/mu-plugins/bedrock-autoloader.php b/web/app/mu-plugins/bedrock-autoloader.php new file mode 100644 index 00000000..d165345a --- /dev/null +++ b/web/app/mu-plugins/bedrock-autoloader.php @@ -0,0 +1,243 @@ +relativePath = '/../' . basename(__DIR__); + + if (is_admin()) { + add_filter('show_advanced_plugins', [$this, 'showInAdmin'], 0, 2); + } + + $this->loadPlugins(); + } + + /** + * Run some checks then autoload our plugins. + * + * @return void + */ + public function loadPlugins() + { + $this->checkCache(); + $this->validatePlugins(); + $this->countPlugins(); + + array_map(static function () { + include_once WPMU_PLUGIN_DIR . '/' . func_get_args()[0]; + }, array_keys($this->cache['plugins'])); + + $this->pluginHooks(); + } + + /** + * Filter show_advanced_plugins to display the autoloaded plugins. + * + * @param bool $show Whether to show the advanced plugins for the specified plugin type. + * @param string $type The plugin type, i.e., `mustuse` or `dropins` + * @return bool We return `false` to prevent WordPress from overriding our work + */ + public function showInAdmin($show, $type) + { + $screen = get_current_screen(); + $current = is_multisite() ? 'plugins-network' : 'plugins'; + + if ($screen->base !== $current || $type !== 'mustuse' || !current_user_can('activate_plugins')) { + return $show; + } + + $this->updateCache(); + + $this->autoPlugins = array_map(function ($auto_plugin) { + $auto_plugin['Name'] .= ' *'; + return $auto_plugin; + }, $this->autoPlugins); + + $GLOBALS['plugins']['mustuse'] = array_unique(array_merge($this->autoPlugins, $this->muPlugins), SORT_REGULAR); + + return false; + } + + /** + * This sets the cache or calls for an update + * + * @return void + */ + private function checkCache() + { + $cache = get_site_option('bedrock_autoloader'); + + if ($cache === false || (isset($cache['plugins'], $cache['count']) && count($cache['plugins']) !== $cache['count'])) { + $this->updateCache(); + return; + } + + $this->cache = $cache; + } + + /** + * Update mu-plugin cache. + * + * Get the plugins and mu-plugins from the mu-plugin path and remove duplicates. + * Check cache against current plugins for newly activated plugins. + * After that, we can update the cache. + * + * @return void + */ + private function updateCache() + { + require_once ABSPATH . 'wp-admin/includes/plugin.php'; + + $this->autoPlugins = get_plugins($this->relativePath); + $this->muPlugins = get_mu_plugins(); + $plugins = array_diff_key($this->autoPlugins, $this->muPlugins); + $rebuild = !(isset($this->cache['plugins']) && is_array($this->cache['plugins'])); + $this->activated = $rebuild ? $plugins : array_diff_key($plugins, $this->cache['plugins']); + $this->cache = ['plugins' => $plugins, 'count' => $this->countPlugins()]; + + update_site_option('bedrock_autoloader', $this->cache); + } + + /** + * Activate plugin hooks. + * + * This accounts for the plugin hooks that would run if the plugins were + * loaded as usual. Plugins are removed by deletion, so there's no way + * to deactivate or uninstall. + * + * @return void + */ + private function pluginHooks() + { + if (!is_array($this->activated)) { + return; + } + + foreach ($this->activated as $plugin_file => $plugin_info) { + do_action('activate_' . $plugin_file); + } + } + + /** + * Check that the plugin file exists, if it doesn't update the cache. + * + * @return void + */ + private function validatePlugins() + { + foreach ($this->cache['plugins'] as $plugin_file => $plugin_info) { + if (!file_exists(WPMU_PLUGIN_DIR . '/' . $plugin_file)) { + $this->updateCache(); + break; + } + } + } + + /** + * Count the number of autoloaded plugins. + * + * Count our plugins (but only once) by counting the top level folders in the + * mu-plugins dir. If it's more or less than last time, update the cache. + * + * @return int Number of autoloaded plugins. + */ + private function countPlugins() + { + if (isset($this->count)) { + return $this->count; + } + + $count = count(glob(WPMU_PLUGIN_DIR . '/*/', GLOB_ONLYDIR | GLOB_NOSORT)); + + if (!isset($this->cache['count']) || $count !== $this->cache['count']) { + $this->count = $count; + $this->updateCache(); + } + + return $this->count; + } +} + +new Autoloader(); diff --git a/web/app/mu-plugins/disallow-indexing.php b/web/app/mu-plugins/disallow-indexing.php new file mode 100644 index 00000000..e414dd63 --- /dev/null +++ b/web/app/mu-plugins/disallow-indexing.php @@ -0,0 +1,14 @@ + Themes. +5. Do your thing! And read [the docs](https://github.com/jarednova/timber/wiki). + +## What's here? + +`static/` is where you can keep your static front-end scripts, styles, or images. In other words, your Sass files, JS files, fonts, and SVGs would live here. + +`templates/` contains all of your Twig templates. These pretty much correspond 1 to 1 with the PHP files that respond to the WordPress template hierarchy. At the end of each PHP template, you'll notice a `Timber::render()` function whose first parameter is the Twig file where that data (or `$context`) will be used. Just an FYI. + +`bin/` and `tests/` ... basically don't worry about (or remove) these unless you know what they are and want to. + +## Other Resources + +The [main Timber Wiki](https://github.com/jarednova/timber/wiki) is super great, so reference those often. Also, check out these articles and projects for more info: + +* [This branch](https://github.com/laras126/timber-starter-theme/tree/tackle-box) of the starter theme has some more example code with ACF and a slightly different set up. +* [Twig for Timber Cheatsheet](http://notlaura.com/the-twig-for-timber-cheatsheet/) +* [Timber and Twig Reignited My Love for WordPress](https://css-tricks.com/timber-and-twig-reignited-my-love-for-wordpress/) on CSS-Tricks +* [A real live Timber theme](https://github.com/laras126/yuling-theme). +* [Timber Video Tutorials](http://timber.github.io/timber/#video-tutorials) and [an incomplete set of screencasts](https://www.youtube.com/playlist?list=PLuIlodXmVQ6pkqWyR6mtQ5gQZ6BrnuFx-) for building a Timber theme from scratch. + diff --git a/web/app/themes/la_mine/agenda.php b/web/app/themes/la_mine/agenda.php new file mode 100644 index 00000000..7345752a --- /dev/null +++ b/web/app/themes/la_mine/agenda.php @@ -0,0 +1,11 @@ +post_name . '.twig', 'page.twig' ), $context ); diff --git a/web/app/themes/la_mine/archive.php b/web/app/themes/la_mine/archive.php new file mode 100755 index 00000000..148512ab --- /dev/null +++ b/web/app/themes/la_mine/archive.php @@ -0,0 +1,40 @@ +query_vars['author'] ) ) { + $author = new Timber\User( $wp_query->query_vars['author'] ); + $context['author'] = $author; + $context['title'] = 'Author Archives: ' . $author->name(); +} +Timber::render( array( 'author.twig', 'archive.twig' ), $context ); diff --git a/web/app/themes/la_mine/bin/install-wp-tests.sh b/web/app/themes/la_mine/bin/install-wp-tests.sh new file mode 100644 index 00000000..eba7bb41 --- /dev/null +++ b/web/app/themes/la_mine/bin/install-wp-tests.sh @@ -0,0 +1,152 @@ +#!/usr/bin/env bash + +if [ $# -lt 3 ]; then + echo "usage: $0 [db-host] [wp-version] [skip-database-creation]" + exit 1 +fi + +DB_NAME=$1 +DB_USER=$2 +DB_PASS=$3 +DB_HOST=${4-localhost} +WP_VERSION=${5-latest} +SKIP_DB_CREATE=${6-false} + +TMPDIR=${TMPDIR-/tmp} +TMPDIR=$(echo $TMPDIR | sed -e "s/\/$//") +WP_TESTS_DIR=${WP_TESTS_DIR-$TMPDIR/wordpress-tests-lib} +WP_CORE_DIR=${WP_CORE_DIR-$TMPDIR/wordpress/} + +download() { + if [ `which curl` ]; then + curl -s "$1" > "$2"; + elif [ `which wget` ]; then + wget -nv -O "$2" "$1" + fi +} + +if [[ $WP_VERSION =~ ^[0-9]+\.[0-9]+$ ]]; then + WP_TESTS_TAG="branches/$WP_VERSION" +elif [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0-9]+ ]]; then + if [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0] ]]; then + # version x.x.0 means the first release of the major version, so strip off the .0 and download version x.x + WP_TESTS_TAG="tags/${WP_VERSION%??}" + else + WP_TESTS_TAG="tags/$WP_VERSION" + fi +elif [[ $WP_VERSION == 'nightly' || $WP_VERSION == 'trunk' ]]; then + WP_TESTS_TAG="trunk" +else + # http serves a single offer, whereas https serves multiple. we only want one + download http://api.wordpress.org/core/version-check/1.7/ /tmp/wp-latest.json + grep '[0-9]+\.[0-9]+(\.[0-9]+)?' /tmp/wp-latest.json + LATEST_VERSION=$(grep -o '"version":"[^"]*' /tmp/wp-latest.json | sed 's/"version":"//') + if [[ -z "$LATEST_VERSION" ]]; then + echo "Latest WordPress version could not be found" + exit 1 + fi + WP_TESTS_TAG="tags/$LATEST_VERSION" +fi + +set -ex + +install_wp() { + + if [ -d $WP_CORE_DIR ]; then + return; + fi + + mkdir -p $WP_CORE_DIR + + if [[ $WP_VERSION == 'nightly' || $WP_VERSION == 'trunk' ]]; then + mkdir -p $TMPDIR/wordpress-nightly + download https://wordpress.org/nightly-builds/wordpress-latest.zip $TMPDIR/wordpress-nightly/wordpress-nightly.zip + unzip -q $TMPDIR/wordpress-nightly/wordpress-nightly.zip -d $TMPDIR/wordpress-nightly/ + mv $TMPDIR/wordpress-nightly/wordpress/* $WP_CORE_DIR + else + if [ $WP_VERSION == 'latest' ]; then + local ARCHIVE_NAME='latest' + elif [[ $WP_VERSION =~ [0-9]+\.[0-9]+ ]]; then + # https serves multiple offers, whereas http serves single. + download https://api.wordpress.org/core/version-check/1.7/ $TMPDIR/wp-latest.json + if [[ $WP_VERSION =~ [0-9]+\.[0-9]+\.[0] ]]; then + # version x.x.0 means the first release of the major version, so strip off the .0 and download version x.x + LATEST_VERSION=${WP_VERSION%??} + else + # otherwise, scan the releases and get the most up to date minor version of the major release + local VERSION_ESCAPED=`echo $WP_VERSION | sed 's/\./\\\\./g'` + LATEST_VERSION=$(grep -o '"version":"'$VERSION_ESCAPED'[^"]*' $TMPDIR/wp-latest.json | sed 's/"version":"//' | head -1) + fi + if [[ -z "$LATEST_VERSION" ]]; then + local ARCHIVE_NAME="wordpress-$WP_VERSION" + else + local ARCHIVE_NAME="wordpress-$LATEST_VERSION" + fi + else + local ARCHIVE_NAME="wordpress-$WP_VERSION" + fi + download https://wordpress.org/${ARCHIVE_NAME}.tar.gz $TMPDIR/wordpress.tar.gz + tar --strip-components=1 -zxmf $TMPDIR/wordpress.tar.gz -C $WP_CORE_DIR + fi + + download https://raw.github.com/markoheijnen/wp-mysqli/master/db.php $WP_CORE_DIR/wp-content/db.php +} + +install_test_suite() { + # portable in-place argument for both GNU sed and Mac OSX sed + if [[ $(uname -s) == 'Darwin' ]]; then + local ioption='-i .bak' + else + local ioption='-i' + fi + + # set up testing suite if it doesn't yet exist + if [ ! -d $WP_TESTS_DIR ]; then + # set up testing suite + mkdir -p $WP_TESTS_DIR + svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/includes/ $WP_TESTS_DIR/includes + svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/data/ $WP_TESTS_DIR/data + fi + + if [ ! -f wp-tests-config.php ]; then + download https://develop.svn.wordpress.org/${WP_TESTS_TAG}/wp-tests-config-sample.php "$WP_TESTS_DIR"/wp-tests-config.php + # remove all forward slashes in the end + WP_CORE_DIR=$(echo $WP_CORE_DIR | sed "s:/\+$::") + sed $ioption "s:dirname( __FILE__ ) . '/src/':'$WP_CORE_DIR/':" "$WP_TESTS_DIR"/wp-tests-config.php + sed $ioption "s/youremptytestdbnamehere/$DB_NAME/" "$WP_TESTS_DIR"/wp-tests-config.php + sed $ioption "s/yourusernamehere/$DB_USER/" "$WP_TESTS_DIR"/wp-tests-config.php + sed $ioption "s/yourpasswordhere/$DB_PASS/" "$WP_TESTS_DIR"/wp-tests-config.php + sed $ioption "s|localhost|${DB_HOST}|" "$WP_TESTS_DIR"/wp-tests-config.php + fi + +} + +install_db() { + + if [ ${SKIP_DB_CREATE} = "true" ]; then + return 0 + fi + + # parse DB_HOST for port or socket references + local PARTS=(${DB_HOST//\:/ }) + local DB_HOSTNAME=${PARTS[0]}; + local DB_SOCK_OR_PORT=${PARTS[1]}; + local EXTRA="" + + if ! [ -z $DB_HOSTNAME ] ; then + if [ $(echo $DB_SOCK_OR_PORT | grep -e '^[0-9]\{1,\}$') ]; then + EXTRA=" --host=$DB_HOSTNAME --port=$DB_SOCK_OR_PORT --protocol=tcp" + elif ! [ -z $DB_SOCK_OR_PORT ] ; then + EXTRA=" --socket=$DB_SOCK_OR_PORT" + elif ! [ -z $DB_HOSTNAME ] ; then + EXTRA=" --host=$DB_HOSTNAME --protocol=tcp" + fi + fi + + # create database + mysqladmin create $DB_NAME --user="$DB_USER" --password="$DB_PASS"$EXTRA +} + +install_wp +install_test_suite +install_db \ No newline at end of file diff --git a/web/app/themes/la_mine/composer.json b/web/app/themes/la_mine/composer.json new file mode 100644 index 00000000..99f33c73 --- /dev/null +++ b/web/app/themes/la_mine/composer.json @@ -0,0 +1,24 @@ +{ + "name": "upstatement/timber-starter-theme", + "description": "Starter theme to build a Timber theme", + "type":"wordpress-theme", + "minimum-stability" : "stable", + "authors": [ + { + "email": "jared@upstatement.com", + "name": "jarednova" + } + ], + "repositories": [ + { + "type": "composer", + "url": "https://wpackagist.org" + } + ], + "require": { + "timber/timber": "1.*" + }, + "require-dev": { + "phpunit/phpunit": "5.7.16|6.*" + } +} diff --git a/web/app/themes/la_mine/footer.php b/web/app/themes/la_mine/footer.php new file mode 100644 index 00000000..c00e7495 --- /dev/null +++ b/web/app/themes/la_mine/footer.php @@ -0,0 +1,21 @@ +

Timber not activated. Make sure you activate the plugin in ' . esc_url( admin_url( 'plugins.php' ) ) . '

'; + } + ); + + add_filter( + 'template_include', + function( $template ) { + return get_stylesheet_directory() . '/static/no-timber.html'; + } + ); + return; +} + +/** + * Sets the directories (inside your theme) to find .twig files + */ +Timber::$dirname = array( 'templates', 'views' ); + +/** + * By default, Timber does NOT autoescape values. Want to enable Twig's autoescape? + * No prob! Just set this value to true + */ +Timber::$autoescape = false; + + +/** + * We're going to configure our theme inside of a subclass of Timber\Site + * You can move this to its own file and include here via php's include("MySite.php") + */ +class StarterSite extends Timber\Site { + /** Add timber support. */ + public function __construct() { + add_action( 'after_setup_theme', array( $this, 'theme_supports' ) ); + add_filter( 'timber/context', array( $this, 'add_to_context' ) ); + add_filter( 'timber/twig', array( $this, 'add_to_twig' ) ); + add_action( 'init', array( $this, 'register_post_types' ) ); + add_action( 'init', array( $this, 'register_taxonomies' ) ); + parent::__construct(); + } + /** This is where you can register custom post types. */ + public function register_post_types() { + + } + /** This is where you can register custom taxonomies. */ + public function register_taxonomies() { + + } + + /** This is where you add some context + * + * @param string $context context['this'] Being the Twig's {{ this }}. + */ + public function add_to_context( $context ) { + $context['foo'] = 'bar'; + $context['stuff'] = 'I am a value set in your functions.php file'; + $context['notes'] = 'These values are available everytime you call Timber::context();'; + $context['menu'] = new Timber\Menu(); + $context['site'] = $this; + return $context; + } + + public function theme_supports() { + // Add default posts and comments RSS feed links to head. + add_theme_support( 'automatic-feed-links' ); + + /* + * Let WordPress manage the document title. + * By adding theme support, we declare that this theme does not use a + * hard-coded tag in the document head, and expect WordPress to + * provide it for us. + */ + add_theme_support( 'title-tag' ); + + /* + * Enable support for Post Thumbnails on posts and pages. + * + * @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/ + */ + add_theme_support( 'post-thumbnails' ); + + /* + * Switch default core markup for search form, comment form, and comments + * to output valid HTML5. + */ + add_theme_support( + 'html5', + array( + 'comment-form', + 'comment-list', + 'gallery', + 'caption', + ) + ); + + /* + * Enable support for Post Formats. + * + * See: https://codex.wordpress.org/Post_Formats + */ + add_theme_support( + 'post-formats', + array( + 'aside', + 'image', + 'video', + 'quote', + 'link', + 'gallery', + 'audio', + ) + ); + + add_theme_support( 'menus' ); + } + + /** This Would return 'foo bar!'. + * + * @param string $text being 'foo', then returned 'foo bar!'. + */ + public function myfoo( $text ) { + $text .= ' bar!'; + return $text; + } + + /** This is where you can add your own functions to twig. + * + * @param string $twig get extension. + */ + public function add_to_twig( $twig ) { + $twig->addExtension( new Twig\Extension\StringLoaderExtension() ); + $twig->addFilter( new Twig\TwigFilter( 'myfoo', array( $this, 'myfoo' ) ) ); + return $twig; + } + +} + +new StarterSite(); diff --git a/web/app/themes/la_mine/header.php b/web/app/themes/la_mine/header.php new file mode 100644 index 00000000..09451b29 --- /dev/null +++ b/web/app/themes/la_mine/header.php @@ -0,0 +1,15 @@ +<?php +/** + * Third party plugins that hijack the theme will call wp_head() to get the header template. + * We use this to start our output buffer and render into the view/page-plugin.twig template in footer.php + * + * If you're not using a plugin that requries this behavior (ones that do include Events Calendar Pro and + * WooCommerce) you can delete this file and footer.php + * + * @package WordPress + * @subpackage Timber + * @since Timber 0.1 + */ + +$GLOBALS['timberContext'] = Timber::context(); +ob_start(); diff --git a/web/app/themes/la_mine/humans.txt b/web/app/themes/la_mine/humans.txt new file mode 100644 index 00000000..95035030 --- /dev/null +++ b/web/app/themes/la_mine/humans.txt @@ -0,0 +1,10 @@ +## Team + +Your name or company +http://yoursite.org +@you_on_twitter + + +## Site + +Software: Built with [Timber](http://upstatement.com/timber) by Upstatement \ No newline at end of file diff --git a/web/app/themes/la_mine/index.php b/web/app/themes/la_mine/index.php new file mode 100755 index 00000000..804e5556 --- /dev/null +++ b/web/app/themes/la_mine/index.php @@ -0,0 +1,23 @@ +<?php +/** + * The main template file + * This is the most generic template file in a WordPress theme + * and one of the two required files for a theme (the other being style.css). + * It is used to display a page when nothing more specific matches a query. + * E.g., it puts together the home page when no home.php file exists + * + * Methods for TimberHelper can be found in the /lib sub-directory + * + * @package WordPress + * @subpackage Timber + * @since Timber 0.1 + */ + +$context = Timber::context(); +$context['posts'] = new Timber\PostQuery(); +$context['foo'] = 'bar'; +$templates = array( 'index.twig' ); +if ( is_home() ) { + array_unshift( $templates, 'front-page.twig', 'home.twig' ); +} +Timber::render( $templates, $context ); diff --git a/web/app/themes/la_mine/page.php b/web/app/themes/la_mine/page.php new file mode 100755 index 00000000..2918bd3a --- /dev/null +++ b/web/app/themes/la_mine/page.php @@ -0,0 +1,28 @@ +<?php +/** + * The template for displaying all pages. + * + * This is the template that displays all pages by default. + * Please note that this is the WordPress construct of pages + * and that other 'pages' on your WordPress site will use a + * different template. + * + * To generate specific templates for your pages you can use: + * /mytheme/templates/page-mypage.twig + * (which will still route through this PHP file) + * OR + * /mytheme/page-mypage.php + * (in which case you'll want to duplicate this file and save to the above path) + * + * Methods for TimberHelper can be found in the /lib sub-directory + * + * @package WordPress + * @subpackage Timber + * @since Timber 0.1 + */ + +$context = Timber::context(); + +$timber_post = new Timber\Post(); +$context['post'] = $timber_post; +Timber::render( array( 'page-' . $timber_post->post_name . '.twig', 'page.twig' ), $context ); diff --git a/web/app/themes/la_mine/phpunit.xml b/web/app/themes/la_mine/phpunit.xml new file mode 100644 index 00000000..e7f21fc5 --- /dev/null +++ b/web/app/themes/la_mine/phpunit.xml @@ -0,0 +1,20 @@ +<phpunit + bootstrap="tests/bootstrap.php" + backupGlobals="false" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + > + <testsuites> + <testsuite> + <directory prefix="test-" suffix=".php">./tests/</directory> + </testsuite> + <!-- The suite below HAS to be last to run, + as it includes a test that sets some const and would contaminate + the other tests as well. --> + <testsuite> + <directory prefix="testX-" suffix=".php">./tests/</directory> + </testsuite> + </testsuites> +</phpunit> diff --git a/web/app/themes/la_mine/projets.php b/web/app/themes/la_mine/projets.php new file mode 100644 index 00000000..05c7ea7a --- /dev/null +++ b/web/app/themes/la_mine/projets.php @@ -0,0 +1,11 @@ +<?php + +/** + * Template Name: projets + */ + +$context = Timber::context(); + +$timber_post = new Timber\Post(); +$context['post'] = $timber_post; +Timber::render( array( 'page-' . $timber_post->post_name . '.twig', 'page.twig' ), $context ); diff --git a/web/app/themes/la_mine/search.php b/web/app/themes/la_mine/search.php new file mode 100755 index 00000000..600a6abb --- /dev/null +++ b/web/app/themes/la_mine/search.php @@ -0,0 +1,18 @@ +<?php +/** + * Search results page + * + * Methods for TimberHelper can be found in the /lib sub-directory + * + * @package WordPress + * @subpackage Timber + * @since Timber 0.1 + */ + +$templates = array( 'search.twig', 'archive.twig', 'index.twig' ); + +$context = Timber::context(); +$context['title'] = 'Search results for ' . get_search_query(); +$context['posts'] = new Timber\PostQuery(); + +Timber::render( $templates, $context ); diff --git a/web/app/themes/la_mine/sidebar.php b/web/app/themes/la_mine/sidebar.php new file mode 100644 index 00000000..63a34921 --- /dev/null +++ b/web/app/themes/la_mine/sidebar.php @@ -0,0 +1,9 @@ +<?php +/** + * The Template for the sidebar containing the main widget area + * + * @package WordPress + * @subpackage Timber + */ + +Timber::render( array( 'sidebar.twig' ), $data ); diff --git a/web/app/themes/la_mine/single.php b/web/app/themes/la_mine/single.php new file mode 100755 index 00000000..95d1d477 --- /dev/null +++ b/web/app/themes/la_mine/single.php @@ -0,0 +1,20 @@ +<?php +/** + * The Template for displaying all single posts + * + * Methods for TimberHelper can be found in the /lib sub-directory + * + * @package WordPress + * @subpackage Timber + * @since Timber 0.1 + */ + +$context = Timber::context(); +$timber_post = Timber::query_post(); +$context['post'] = $timber_post; + +if ( post_password_required( $timber_post->ID ) ) { + Timber::render( 'single-password.twig', $context ); +} else { + Timber::render( array( 'single-' . $timber_post->ID . '.twig', 'single-' . $timber_post->post_type . '.twig', 'single-' . $timber_post->slug . '.twig', 'single.twig' ), $context ); +} diff --git a/web/app/themes/la_mine/static/no-timber.html b/web/app/themes/la_mine/static/no-timber.html new file mode 100644 index 00000000..b99c04bc --- /dev/null +++ b/web/app/themes/la_mine/static/no-timber.html @@ -0,0 +1,10 @@ +<!doctype html> +<html lang="en"> + <head> + <title>Timber not active + + + +

Timber not activated

+ + diff --git a/web/app/themes/la_mine/static/site.js b/web/app/themes/la_mine/static/site.js new file mode 100755 index 00000000..6655bd0b --- /dev/null +++ b/web/app/themes/la_mine/static/site.js @@ -0,0 +1,5 @@ +jQuery( document ).ready( function( $ ) { + + // Your JavaScript goes here + +}); \ No newline at end of file diff --git a/web/app/themes/la_mine/style.css b/web/app/themes/la_mine/style.css new file mode 100644 index 00000000..284f5f30 --- /dev/null +++ b/web/app/themes/la_mine/style.css @@ -0,0 +1,5 @@ +/* + * Theme Name: My Timber Starter Theme + * Description: Starter Theme to use with Timber + * Author: Upstatement and YOU! +*/ diff --git a/web/app/themes/la_mine/templates/404.twig b/web/app/themes/la_mine/templates/404.twig new file mode 100644 index 00000000..cf223f3c --- /dev/null +++ b/web/app/themes/la_mine/templates/404.twig @@ -0,0 +1,5 @@ +{% extends "base.twig" %} + +{% block content %} + Sorry, we couldn't find what you're looking for. +{% endblock %} \ No newline at end of file diff --git a/web/app/themes/la_mine/templates/archive.twig b/web/app/themes/la_mine/templates/archive.twig new file mode 100644 index 00000000..7e79671b --- /dev/null +++ b/web/app/themes/la_mine/templates/archive.twig @@ -0,0 +1,9 @@ +{# This file demonstrates using most of the index.twig template and modifying + just a small part. See `search.twig` for an example of another approach #} + +{% extends "index.twig" %} + +{% block content %} +

This is my archive

+ {{ parent() }} +{% endblock %} diff --git a/web/app/themes/la_mine/templates/author.twig b/web/app/themes/la_mine/templates/author.twig new file mode 100644 index 00000000..12b779b4 --- /dev/null +++ b/web/app/themes/la_mine/templates/author.twig @@ -0,0 +1,7 @@ +{% extends "base.twig" %} + +{% block content %} + {% for post in posts %} + {% include ["tease-"~post.post_type~".twig", "tease.twig"] %} + {% endfor %} +{% endblock %} \ No newline at end of file diff --git a/web/app/themes/la_mine/templates/base.twig b/web/app/themes/la_mine/templates/base.twig new file mode 100644 index 00000000..2a4ad3b1 --- /dev/null +++ b/web/app/themes/la_mine/templates/base.twig @@ -0,0 +1,45 @@ +{% block html_head_container %} + +{% include 'html-header.twig' %} + {% block head %} + {% endblock %} + +{% endblock %} + + + +
+ {% block header %} +
+

+ {{site.name}} +

+ +
+ {% endblock %} +
+ +
+ {% if title %}

{{title}}

{% endif %} +
+ {% block content %} + Sorry, no content + {% endblock %} +
+ {% if sidebar %} + + {% endif %} +
+ + {% block footer %} +
+ {% include 'footer.twig' %} +
+ {{ function('wp_footer') }} + {% endblock %} + + diff --git a/web/app/themes/la_mine/templates/comment-form.twig b/web/app/themes/la_mine/templates/comment-form.twig new file mode 100644 index 00000000..b2b0a2e7 --- /dev/null +++ b/web/app/themes/la_mine/templates/comment-form.twig @@ -0,0 +1,28 @@ +
+

Add comment

+
+ {% if user %} + + + + {% else %} + + + + {% endif %} + + + + + +

Your comment will be revised by the site if needed.

+
+
diff --git a/web/app/themes/la_mine/templates/comment.twig b/web/app/themes/la_mine/templates/comment.twig new file mode 100644 index 00000000..40ce11c2 --- /dev/null +++ b/web/app/themes/la_mine/templates/comment.twig @@ -0,0 +1,21 @@ +
+
{{comment.author.name}} says
+
{{comment.comment_content|wpautop}}
+ +
+ + + {% include "comment-form.twig" %} + + + {% if post.comments %} +

replies

+
+ {% for cmt in comment.children %} + {% include "comment.twig" with {comment:cmt} %} + {% endfor %} +
+ {% endif %} + +
+
\ No newline at end of file diff --git a/web/app/themes/la_mine/templates/footer.twig b/web/app/themes/la_mine/templates/footer.twig new file mode 100644 index 00000000..a893c946 --- /dev/null +++ b/web/app/themes/la_mine/templates/footer.twig @@ -0,0 +1 @@ +Copyright {{"now"|date('Y')}} \ No newline at end of file diff --git a/web/app/themes/la_mine/templates/html-header.twig b/web/app/themes/la_mine/templates/html-header.twig new file mode 100644 index 00000000..78991ff6 --- /dev/null +++ b/web/app/themes/la_mine/templates/html-header.twig @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + {{function('wp_head')}} diff --git a/web/app/themes/la_mine/templates/index.twig b/web/app/themes/la_mine/templates/index.twig new file mode 100644 index 00000000..7d071d62 --- /dev/null +++ b/web/app/themes/la_mine/templates/index.twig @@ -0,0 +1,11 @@ +{% extends "base.twig" %} + +{% block content %} +

{{ foo }}

+

{{ qux }}

+ {% for post in posts %} + {% include ['tease-'~post.post_type~'.twig', 'tease.twig'] %} + {% endfor %} + + {% include 'partial/pagination.twig' with { pagination: posts.pagination({show_all: false, mid_size: 3, end_size: 2}) } %} +{% endblock %} diff --git a/web/app/themes/la_mine/templates/menu.twig b/web/app/themes/la_mine/templates/menu.twig new file mode 100644 index 00000000..0650f61f --- /dev/null +++ b/web/app/themes/la_mine/templates/menu.twig @@ -0,0 +1,10 @@ +{% if menu %} +
    + {% for item in items %} +
  • + {{ item.title }} + {% include "menu.twig" with {'items': item.children} %} +
  • + {% endfor %} +
+{% endif %} diff --git a/web/app/themes/la_mine/templates/page-plugin.twig b/web/app/themes/la_mine/templates/page-plugin.twig new file mode 100644 index 00000000..712785da --- /dev/null +++ b/web/app/themes/la_mine/templates/page-plugin.twig @@ -0,0 +1,7 @@ +{% extends "base.twig" %} + +{% block content %} +
+ {{content}} +
+{% endblock %} \ No newline at end of file diff --git a/web/app/themes/la_mine/templates/page.twig b/web/app/themes/la_mine/templates/page.twig new file mode 100644 index 00000000..7f4be401 --- /dev/null +++ b/web/app/themes/la_mine/templates/page.twig @@ -0,0 +1,14 @@ +{% extends "base.twig" %} + +{% block content %} +
+
+
+

{{post.title}}

+
+ {{post.content}} +
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/web/app/themes/la_mine/templates/partial/pagination.twig b/web/app/themes/la_mine/templates/partial/pagination.twig new file mode 100644 index 00000000..ca9d4ff9 --- /dev/null +++ b/web/app/themes/la_mine/templates/partial/pagination.twig @@ -0,0 +1,64 @@ +{% if posts.pagination.pages is not empty %} + +{% endif %} diff --git a/web/app/themes/la_mine/templates/search.twig b/web/app/themes/la_mine/templates/search.twig new file mode 100644 index 00000000..31fd42fc --- /dev/null +++ b/web/app/themes/la_mine/templates/search.twig @@ -0,0 +1,13 @@ +{# see `archive.twig` for an alternative strategy of extending templates #} +{% extends "base.twig" %} + +{% block content %} + {# see `base.twig:27` for where this block's content will be inserted #} +
+ {% for post in posts %} + {% include ['tease-'~post.post_type~'.twig', 'tease.twig'] %} + {% endfor %} + + {% include 'partial/pagination.twig' with { pagination: posts.pagination({show_all: false, mid_size: 3, end_size: 2}) } %} +
+{% endblock %} diff --git a/web/app/themes/la_mine/templates/sidebar.twig b/web/app/themes/la_mine/templates/sidebar.twig new file mode 100644 index 00000000..ae3e17b5 --- /dev/null +++ b/web/app/themes/la_mine/templates/sidebar.twig @@ -0,0 +1 @@ +Sidebar in Timber. Add HTML to your hearts content. \ No newline at end of file diff --git a/web/app/themes/la_mine/templates/single-password.twig b/web/app/themes/la_mine/templates/single-password.twig new file mode 100644 index 00000000..15d672ab --- /dev/null +++ b/web/app/themes/la_mine/templates/single-password.twig @@ -0,0 +1,9 @@ +{% extends "base.twig" %} + +{% block content %} +
+ + + +
+{% endblock %} diff --git a/web/app/themes/la_mine/templates/single.twig b/web/app/themes/la_mine/templates/single.twig new file mode 100644 index 00000000..2269b188 --- /dev/null +++ b/web/app/themes/la_mine/templates/single.twig @@ -0,0 +1,39 @@ +{% extends "base.twig" %} + +{% block content %} +
+
+ +
+

{{ post.title }}

+ {{ _e('edit') }} +

+ By {{ post.author.name }} +

+
+ {{post.content}} +
+
+ + +
+ +
+ {% if post.comments %} +

comments

+ {% for cmt in post.comments %} + {% include "comment.twig" with {comment:cmt} %} + {% endfor %} + {% endif %} +
+ + {% if post.comment_status == "closed" %} +

comments for this post are closed

+ {% else %} + + {% include "comment-form.twig" %} + {% endif %} +
+
+
+{% endblock %} diff --git a/web/app/themes/la_mine/templates/tease-post.twig b/web/app/themes/la_mine/templates/tease-post.twig new file mode 100644 index 00000000..2b0a0c15 --- /dev/null +++ b/web/app/themes/la_mine/templates/tease-post.twig @@ -0,0 +1,9 @@ +{% extends "tease.twig" %} + +{% block content %} +

{{post.title}}

+

{{post.preview.length(25)}}

+ {% if post.thumbnail.src %} + + {% endif %} +{% endblock %} \ No newline at end of file diff --git a/web/app/themes/la_mine/templates/tease.twig b/web/app/themes/la_mine/templates/tease.twig new file mode 100644 index 00000000..e2b98771 --- /dev/null +++ b/web/app/themes/la_mine/templates/tease.twig @@ -0,0 +1,9 @@ +
+ {% block content %} +

{{post.title}}

+

{{post.preview}}

+ {% if post.get_thumbnail %} + + {% endif %} + {% endblock %} +
\ No newline at end of file diff --git a/web/app/themes/la_mine/tests/bootstrap.php b/web/app/themes/la_mine/tests/bootstrap.php new file mode 100644 index 00000000..8eaa39ff --- /dev/null +++ b/web/app/themes/la_mine/tests/bootstrap.php @@ -0,0 +1,22 @@ +assertTrue(is_array($context)); + } + + function testFunctionsPHP() { + $context = Timber::context(); + $this->assertEquals('StarterSite', get_class($context['site'])); + $this->assertTrue(current_theme_supports('post-thumbnails')); + $this->assertEquals('bar', $context['foo']); + } + + function testLoading() { + $str = Timber::compile('tease.twig'); + $this->assertStringStartsWith('
', $str); + $this->assertStringEndsWith('
', $str); + } + + /** + * Helper test to output current twig version + */ + function testTwigVersion() { + $str = Timber::compile_string("{{ constant('Twig_Environment::VERSION') }}"); + //error_log('Twig version = '.$str); + } + + function testTwigFilter() { + $str = Timber::compile_string('{{ "foo" | myfoo }}'); + $this->assertEquals('foo bar!', $str); + } + + static function _setupStarterTheme(){ + $dest = WP_CONTENT_DIR . '/themes/' . basename( dirname( dirname( __FILE__ ) ) ); + $src = realpath( __DIR__ . '/../../' . basename( dirname( dirname( __FILE__ ) ) ) ); + if ( is_dir($src) && !file_exists($dest) ) { + symlink($src, $dest); + } + } + + + } diff --git a/web/app/uploads/.gitkeep b/web/app/uploads/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/web/index.php b/web/index.php new file mode 100644 index 00000000..1183e8df --- /dev/null +++ b/web/index.php @@ -0,0 +1,6 @@ +