From b57f09e2211e097c7332436ddb017eedc48103de Mon Sep 17 00:00:00 2001
From: Stephen Cameron
Date: Tue, 13 Dec 2022 22:33:26 +0100
Subject: [PATCH] Source code for lyveas.fr as at the launch of the website,
13/12/2022. Full code can be installed by running `composer install` in the
root, mu-plugins/cube and themes/lyveas directories. Also run `yarn` from the
theme directory to install build tools. Done #5519.
---
.env | 39 +
.gitignore | 41 +
.htaccess | 7 +
composer.json | 87 +
composer.lock | 5617 ++++++++++
config/application.php | 145 +
config/environments/development.php | 20 +
config/environments/staging.php | 17 +
phpcs.xml | 25 +
web/app/mu-plugins/bedrock-autoloader.php | 16 +
web/app/mu-plugins/cube-loader.php | 30 +
web/app/mu-plugins/cube/.gitignore | 1 +
web/app/mu-plugins/cube/composer.json | 13 +
web/app/mu-plugins/cube/composer.lock | 861 ++
web/app/mu-plugins/cube/src/CPT/Expertise.php | 143 +
web/app/mu-plugins/cube/src/CPT/Staff.php | 190 +
web/app/mu-plugins/cube/src/Common/Setup.php | 91 +
.../mu-plugins/cube/src/Customizer/Setup.php | 40 +
.../mu-plugins/cube/src/Elementor/Setup.php | 308 +
.../src/Elementor/Widgets/ContactDetails.php | 128 +
.../src/Elementor/Widgets/ExpertiseList.php | 104 +
.../src/Elementor/Widgets/FooterWatermark.php | 81 +
.../cube/src/Elementor/Widgets/HeroBlock.php | 105 +
.../cube/src/Elementor/Widgets/LatestNews.php | 113 +
.../src/Elementor/Widgets/LottieAnimation.php | 126 +
.../cube/src/Elementor/Widgets/PageHeader.php | 240 +
.../src/Elementor/Widgets/StaffCarousel.php | 124 +
.../cube/src/Elementor/Widgets/StaffGrid.php | 77 +
.../cube/src/Elementor/Widgets/TextBlock.php | 351 +
.../cube/src/Elementor/Widgets/_Base.php | 27 +
web/app/mu-plugins/cube/src/Init.php | 46 +
web/app/mu-plugins/cube/src/News/API.php | 156 +
web/app/mu-plugins/cube/src/News/Setup.php | 116 +
.../mute-php-deprecation-notices.php | 10 +
web/app/plugins/.gitkeep | 0
web/app/themes/lyveas/.editorconfig | 24 +
web/app/themes/lyveas/.gitignore | 7 +
web/app/themes/lyveas/CHANGELOG.md | 75 +
web/app/themes/lyveas/LICENSE.md | 19 +
web/app/themes/lyveas/README.md | 137 +
.../app/Providers/ThemeServiceProvider.php | 28 +
.../lyveas/app/View/Components/Alert.php | 57 +
.../themes/lyveas/app/View/Composers/App.php | 39 +
.../lyveas/app/View/Composers/Expertise.php | 49 +
.../themes/lyveas/app/View/Composers/News.php | 74 +
.../lyveas/app/View/Composers/NewsArticle.php | 62 +
.../themes/lyveas/app/View/Composers/Post.php | 69 +
.../lyveas/app/View/Composers/Staff.php | 53 +
web/app/themes/lyveas/app/filters.php | 35 +
web/app/themes/lyveas/app/helpers.php | 30 +
web/app/themes/lyveas/app/setup.php | 339 +
web/app/themes/lyveas/bud.config.mjs | 142 +
web/app/themes/lyveas/composer.json | 71 +
web/app/themes/lyveas/composer.lock | 140 +
web/app/themes/lyveas/css-props-generator.js | 64 +
web/app/themes/lyveas/functions.php | 79 +
web/app/themes/lyveas/index.php | 37 +
web/app/themes/lyveas/jsconfig.json | 19 +
web/app/themes/lyveas/package.json | 34 +
.../resources/animations/expertise.json | 1 +
.../themes/lyveas/resources/fonts/.gitkeep | 0
.../fonts/RecifeDisplayWeb-SemiBold.woff | Bin 0 -> 37520 bytes
.../fonts/RecifeDisplayWeb-SemiBold.woff2 | Bin 0 -> 30408 bytes
.../fonts/jaapokkisubtract-regular.eot | Bin 0 -> 47656 bytes
.../fonts/jaapokkisubtract-regular.ttf | Bin 0 -> 47328 bytes
.../fonts/jaapokkisubtract-regular.woff | Bin 0 -> 21800 bytes
.../resources/fonts/roboto-v30-latin-500.woff | Bin 0 -> 20544 bytes
.../fonts/roboto-v30-latin-500.woff2 | Bin 0 -> 15920 bytes
.../resources/fonts/roboto-v30-latin-700.woff | Bin 0 -> 20408 bytes
.../fonts/roboto-v30-latin-700.woff2 | Bin 0 -> 15860 bytes
.../fonts/roboto-v30-latin-italic.woff | Bin 0 -> 22048 bytes
.../fonts/roboto-v30-latin-italic.woff2 | Bin 0 -> 17368 bytes
.../fonts/roboto-v30-latin-regular.woff | Bin 0 -> 20344 bytes
.../fonts/roboto-v30-latin-regular.woff2 | Bin 0 -> 15744 bytes
.../lyveas/resources/images/placeholder.png | Bin 0 -> 3603 bytes
.../themes/lyveas/resources/images/sprite.svg | 65 +
.../themes/lyveas/resources/scripts/app.js | 35 +
.../themes/lyveas/resources/scripts/editor.js | 27 +
.../resources/scripts/elementor/hero-block.js | 94 +
.../resources/scripts/elementor/lottie.js | 18 +
.../scripts/elementor/staff-carousel.js | 22 +
.../scripts/shared/footer-watermark.js | 53 +
.../scripts/shared/lottie-handler.js | 46 +
.../lyveas/resources/scripts/shared/menu.js | 104 +
.../lyveas/resources/scripts/shared/site.js | 135 +
.../themes/lyveas/resources/styles/admin.sass | 19 +
.../themes/lyveas/resources/styles/app.sass | 45 +
.../resources/styles/common/elementor.sass | 57 +
.../lyveas/resources/styles/common/fonts.sass | 45 +
.../resources/styles/common/footer.sass | 53 +
.../lyveas/resources/styles/common/forms.sass | 24 +
.../resources/styles/common/global.sass | 93 +
.../resources/styles/common/header.sass | 81 +
.../resources/styles/common/mixins.sass | 8 +
.../resources/styles/common/navigation.sass | 142 +
.../lyveas/resources/styles/common/setup.sass | 2 +
.../resources/styles/common/utilities.sass | 114 +
.../resources/styles/components/button.sass | 14 +
.../resources/styles/components/list.sass | 12 +
.../resources/styles/components/news.sass | 41 +
.../styles/components/page-header-simple.sass | 7 +
.../styles/components/page-header.sass | 63 +
.../styles/components/paginator.sass | 44 +
.../lyveas/resources/styles/custom-props.css | 67 +
.../resources/styles/widgets/accordion.sass | 34 +
.../styles/widgets/contact-details.sass | 29 +
.../styles/widgets/footer-watermark.sass | 13 +
.../resources/styles/widgets/hero-block.sass | 58 +
.../resources/styles/widgets/image.sass | 4 +
.../resources/styles/widgets/latest-news.sass | 9 +
.../styles/widgets/lottie-player.sass | 13 +
.../resources/styles/widgets/staff.sass | 10 +
.../resources/styles/widgets/text-block.sass | 3 +
.../lyveas/resources/views/404.blade.php | 14 +
.../views/components/alert.blade.php | 3 +
.../components/page-header-simple.blade.php | 16 +
.../views/components/page-header.blade.php | 31 +
.../views/components/sprite.blade.php | 25 +
.../views/components/staff-grid.blade.php | 59 +
.../views/components/watermark-svg.blade.php | 115 +
.../views/debug/centre-line.blade.php | 13 +
.../resources/views/debug/grid.blade.php | 74 +
.../resources/views/forms/contact.blade.php | 31 +
.../resources/views/forms/search.blade.php | 16 +
.../lyveas/resources/views/index.blade.php | 23 +
.../resources/views/layouts/app.blade.php | 17 +
.../views/news-feed/api-error.blade.php | 12 +
.../views/news-feed/article.blade.php | 120 +
.../resources/views/news-feed/base.blade.php | 9 +
.../news-feed/categories-dropdown.blade.php | 63 +
.../resources/views/news-feed/index.blade.php | 134 +
.../lyveas/resources/views/page.blade.php | 8 +
.../views/partials/comments.blade.php | 39 +
.../views/partials/content-page.blade.php | 3 +
.../views/partials/content-search.blade.php | 15 +
.../content-single-expertise.blade.php | 103 +
.../partials/content-single-staff.blade.php | 149 +
.../views/partials/content-single.blade.php | 19 +
.../views/partials/content.blade.php | 15 +
.../views/partials/entry-meta.blade.php | 10 +
.../views/partials/page-header.blade.php | 5 +
.../lyveas/resources/views/search.blade.php | 28 +
.../resources/views/sections/footer.blade.php | 76 +
.../resources/views/sections/header.blade.php | 25 +
.../views/sections/sidebar.blade.php | 1 +
.../lyveas/resources/views/single.blade.php | 7 +
.../resources/views/template-custom.blade.php | 12 +
.../views/widgets/contact-details.blade.php | 35 +
.../views/widgets/expertise-list.blade.php | 13 +
.../views/widgets/footer-watermark.blade.php | 11 +
.../views/widgets/hero-block.blade.php | 32 +
.../views/widgets/latest-news.blade.php | 28 +
.../views/widgets/lottie-player.blade.php | 6 +
.../views/widgets/page-header.blade.php | 50 +
.../views/widgets/staff-carousel.blade.php | 54 +
.../views/widgets/staff-grid.blade.php | 2 +
web/app/themes/lyveas/screenshot.png | Bin 0 -> 45962 bytes
web/app/themes/lyveas/style.css | 11 +
web/app/themes/lyveas/tailwind.config.cjs | 81 +
web/app/themes/lyveas/theme.config.cjs | 130 +
web/app/themes/lyveas/yarn.lock | 9451 +++++++++++++++++
web/app/uploads/.gitkeep | 0
web/index.php | 6 +
web/wp-config.php | 9 +
wp-cli.yml | 3 +
165 files changed, 24094 insertions(+)
create mode 100644 .env
create mode 100644 .gitignore
create mode 100644 .htaccess
create mode 100644 composer.json
create mode 100644 composer.lock
create mode 100644 config/application.php
create mode 100644 config/environments/development.php
create mode 100644 config/environments/staging.php
create mode 100644 phpcs.xml
create mode 100644 web/app/mu-plugins/bedrock-autoloader.php
create mode 100644 web/app/mu-plugins/cube-loader.php
create mode 100644 web/app/mu-plugins/cube/.gitignore
create mode 100644 web/app/mu-plugins/cube/composer.json
create mode 100644 web/app/mu-plugins/cube/composer.lock
create mode 100644 web/app/mu-plugins/cube/src/CPT/Expertise.php
create mode 100644 web/app/mu-plugins/cube/src/CPT/Staff.php
create mode 100644 web/app/mu-plugins/cube/src/Common/Setup.php
create mode 100644 web/app/mu-plugins/cube/src/Customizer/Setup.php
create mode 100644 web/app/mu-plugins/cube/src/Elementor/Setup.php
create mode 100644 web/app/mu-plugins/cube/src/Elementor/Widgets/ContactDetails.php
create mode 100644 web/app/mu-plugins/cube/src/Elementor/Widgets/ExpertiseList.php
create mode 100644 web/app/mu-plugins/cube/src/Elementor/Widgets/FooterWatermark.php
create mode 100644 web/app/mu-plugins/cube/src/Elementor/Widgets/HeroBlock.php
create mode 100644 web/app/mu-plugins/cube/src/Elementor/Widgets/LatestNews.php
create mode 100644 web/app/mu-plugins/cube/src/Elementor/Widgets/LottieAnimation.php
create mode 100644 web/app/mu-plugins/cube/src/Elementor/Widgets/PageHeader.php
create mode 100644 web/app/mu-plugins/cube/src/Elementor/Widgets/StaffCarousel.php
create mode 100644 web/app/mu-plugins/cube/src/Elementor/Widgets/StaffGrid.php
create mode 100644 web/app/mu-plugins/cube/src/Elementor/Widgets/TextBlock.php
create mode 100644 web/app/mu-plugins/cube/src/Elementor/Widgets/_Base.php
create mode 100644 web/app/mu-plugins/cube/src/Init.php
create mode 100644 web/app/mu-plugins/cube/src/News/API.php
create mode 100644 web/app/mu-plugins/cube/src/News/Setup.php
create mode 100644 web/app/mu-plugins/mute-php-deprecation-notices.php
create mode 100644 web/app/plugins/.gitkeep
create mode 100644 web/app/themes/lyveas/.editorconfig
create mode 100644 web/app/themes/lyveas/.gitignore
create mode 100644 web/app/themes/lyveas/CHANGELOG.md
create mode 100644 web/app/themes/lyveas/LICENSE.md
create mode 100644 web/app/themes/lyveas/README.md
create mode 100644 web/app/themes/lyveas/app/Providers/ThemeServiceProvider.php
create mode 100644 web/app/themes/lyveas/app/View/Components/Alert.php
create mode 100644 web/app/themes/lyveas/app/View/Composers/App.php
create mode 100644 web/app/themes/lyveas/app/View/Composers/Expertise.php
create mode 100644 web/app/themes/lyveas/app/View/Composers/News.php
create mode 100644 web/app/themes/lyveas/app/View/Composers/NewsArticle.php
create mode 100644 web/app/themes/lyveas/app/View/Composers/Post.php
create mode 100644 web/app/themes/lyveas/app/View/Composers/Staff.php
create mode 100644 web/app/themes/lyveas/app/filters.php
create mode 100644 web/app/themes/lyveas/app/helpers.php
create mode 100644 web/app/themes/lyveas/app/setup.php
create mode 100644 web/app/themes/lyveas/bud.config.mjs
create mode 100644 web/app/themes/lyveas/composer.json
create mode 100644 web/app/themes/lyveas/composer.lock
create mode 100644 web/app/themes/lyveas/css-props-generator.js
create mode 100644 web/app/themes/lyveas/functions.php
create mode 100644 web/app/themes/lyveas/index.php
create mode 100644 web/app/themes/lyveas/jsconfig.json
create mode 100644 web/app/themes/lyveas/package.json
create mode 100644 web/app/themes/lyveas/resources/animations/expertise.json
create mode 100644 web/app/themes/lyveas/resources/fonts/.gitkeep
create mode 100644 web/app/themes/lyveas/resources/fonts/RecifeDisplayWeb-SemiBold.woff
create mode 100644 web/app/themes/lyveas/resources/fonts/RecifeDisplayWeb-SemiBold.woff2
create mode 100644 web/app/themes/lyveas/resources/fonts/jaapokkisubtract-regular.eot
create mode 100644 web/app/themes/lyveas/resources/fonts/jaapokkisubtract-regular.ttf
create mode 100644 web/app/themes/lyveas/resources/fonts/jaapokkisubtract-regular.woff
create mode 100644 web/app/themes/lyveas/resources/fonts/roboto-v30-latin-500.woff
create mode 100644 web/app/themes/lyveas/resources/fonts/roboto-v30-latin-500.woff2
create mode 100644 web/app/themes/lyveas/resources/fonts/roboto-v30-latin-700.woff
create mode 100644 web/app/themes/lyveas/resources/fonts/roboto-v30-latin-700.woff2
create mode 100644 web/app/themes/lyveas/resources/fonts/roboto-v30-latin-italic.woff
create mode 100644 web/app/themes/lyveas/resources/fonts/roboto-v30-latin-italic.woff2
create mode 100644 web/app/themes/lyveas/resources/fonts/roboto-v30-latin-regular.woff
create mode 100644 web/app/themes/lyveas/resources/fonts/roboto-v30-latin-regular.woff2
create mode 100644 web/app/themes/lyveas/resources/images/placeholder.png
create mode 100644 web/app/themes/lyveas/resources/images/sprite.svg
create mode 100644 web/app/themes/lyveas/resources/scripts/app.js
create mode 100644 web/app/themes/lyveas/resources/scripts/editor.js
create mode 100644 web/app/themes/lyveas/resources/scripts/elementor/hero-block.js
create mode 100644 web/app/themes/lyveas/resources/scripts/elementor/lottie.js
create mode 100644 web/app/themes/lyveas/resources/scripts/elementor/staff-carousel.js
create mode 100644 web/app/themes/lyveas/resources/scripts/shared/footer-watermark.js
create mode 100644 web/app/themes/lyveas/resources/scripts/shared/lottie-handler.js
create mode 100644 web/app/themes/lyveas/resources/scripts/shared/menu.js
create mode 100644 web/app/themes/lyveas/resources/scripts/shared/site.js
create mode 100644 web/app/themes/lyveas/resources/styles/admin.sass
create mode 100644 web/app/themes/lyveas/resources/styles/app.sass
create mode 100644 web/app/themes/lyveas/resources/styles/common/elementor.sass
create mode 100644 web/app/themes/lyveas/resources/styles/common/fonts.sass
create mode 100644 web/app/themes/lyveas/resources/styles/common/footer.sass
create mode 100644 web/app/themes/lyveas/resources/styles/common/forms.sass
create mode 100644 web/app/themes/lyveas/resources/styles/common/global.sass
create mode 100644 web/app/themes/lyveas/resources/styles/common/header.sass
create mode 100644 web/app/themes/lyveas/resources/styles/common/mixins.sass
create mode 100644 web/app/themes/lyveas/resources/styles/common/navigation.sass
create mode 100644 web/app/themes/lyveas/resources/styles/common/setup.sass
create mode 100644 web/app/themes/lyveas/resources/styles/common/utilities.sass
create mode 100644 web/app/themes/lyveas/resources/styles/components/button.sass
create mode 100644 web/app/themes/lyveas/resources/styles/components/list.sass
create mode 100644 web/app/themes/lyveas/resources/styles/components/news.sass
create mode 100644 web/app/themes/lyveas/resources/styles/components/page-header-simple.sass
create mode 100644 web/app/themes/lyveas/resources/styles/components/page-header.sass
create mode 100644 web/app/themes/lyveas/resources/styles/components/paginator.sass
create mode 100644 web/app/themes/lyveas/resources/styles/custom-props.css
create mode 100644 web/app/themes/lyveas/resources/styles/widgets/accordion.sass
create mode 100644 web/app/themes/lyveas/resources/styles/widgets/contact-details.sass
create mode 100644 web/app/themes/lyveas/resources/styles/widgets/footer-watermark.sass
create mode 100644 web/app/themes/lyveas/resources/styles/widgets/hero-block.sass
create mode 100644 web/app/themes/lyveas/resources/styles/widgets/image.sass
create mode 100644 web/app/themes/lyveas/resources/styles/widgets/latest-news.sass
create mode 100644 web/app/themes/lyveas/resources/styles/widgets/lottie-player.sass
create mode 100644 web/app/themes/lyveas/resources/styles/widgets/staff.sass
create mode 100644 web/app/themes/lyveas/resources/styles/widgets/text-block.sass
create mode 100644 web/app/themes/lyveas/resources/views/404.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/components/alert.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/components/page-header-simple.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/components/page-header.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/components/sprite.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/components/staff-grid.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/components/watermark-svg.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/debug/centre-line.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/debug/grid.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/forms/contact.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/forms/search.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/index.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/layouts/app.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/news-feed/api-error.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/news-feed/article.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/news-feed/base.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/news-feed/categories-dropdown.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/news-feed/index.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/page.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/partials/comments.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/partials/content-page.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/partials/content-search.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/partials/content-single-expertise.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/partials/content-single-staff.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/partials/content-single.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/partials/content.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/partials/entry-meta.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/partials/page-header.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/search.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/sections/footer.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/sections/header.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/sections/sidebar.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/single.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/template-custom.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/widgets/contact-details.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/widgets/expertise-list.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/widgets/footer-watermark.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/widgets/hero-block.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/widgets/latest-news.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/widgets/lottie-player.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/widgets/page-header.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/widgets/staff-carousel.blade.php
create mode 100644 web/app/themes/lyveas/resources/views/widgets/staff-grid.blade.php
create mode 100644 web/app/themes/lyveas/screenshot.png
create mode 100644 web/app/themes/lyveas/style.css
create mode 100644 web/app/themes/lyveas/tailwind.config.cjs
create mode 100644 web/app/themes/lyveas/theme.config.cjs
create mode 100644 web/app/themes/lyveas/yarn.lock
create mode 100644 web/app/uploads/.gitkeep
create mode 100644 web/index.php
create mode 100644 web/wp-config.php
create mode 100644 wp-cli.yml
diff --git a/.env b/.env
new file mode 100644
index 0000000..c1ca92f
--- /dev/null
+++ b/.env
@@ -0,0 +1,39 @@
+# NOTE: for some reason, using the standard DB_USER variable above doesn't work on Gandi's server
+# When using DB_USER, it gives an error saying user 'hosting-db' is denied, which suggests
+# that this environment variable is being overridden by their system.
+# Anyway, the solution is to use the DATABASE_URL instead:
+DB_NAME='lyveas_production'
+DB_USER='lyveas_production' # Doesn't arrive, must be a conflict somewhere...
+DB_USERNAME='lyveas_production' # Altertnative variable for use in the DATABASE_URL
+DB_PASSWORD='eSCsFHWdQ2*OR4-h'
+
+DATABASE_URL="mysql://${DB_USERNAME}:${DB_PASSWORD}@localhost:3306/${DB_NAME}"
+
+# Optional database variables
+DB_HOST='localhost'
+DB_PREFIX='wp_'
+
+WP_ENV='production'
+WP_HOME='https://www.lyveas.fr'
+WP_SITEURL="${WP_HOME}/wp"
+
+# Specify optional debug.log path
+# WP_DEBUG_LOG='/path/to/debug.log'
+
+# BusinessComm News Feed API
+NEWS_API_ENDPOINT='https://avocat2.businesscomm.fr/apiFeed/'
+NEWS_API_KEY='5e1c6c30ea1e5-5e1c6c30ea1eb-5e1c6c30ea1ec'
+
+# Layout helpers
+DEBUG_GRID=false
+DEBUG_CENTER=false
+
+# Generate your keys here: https://roots.io/salts.html
+AUTH_KEY='svojeoix%BtP]mvhz#Ltu;#C(q}j:j9OU7^M(aKg42]X&J2%p=%x*gUmGrv|wqYy'
+SECURE_AUTH_KEY='&ID8^[H}9w00m[r|WurA/Wl>K@,_C$xim#+a2kH{88K9+q1L+wfT3[=DfB)(%Q%h'
+LOGGED_IN_KEY='#B+C]R<]5$W&9MDNG`D0bQz[/MLb,HiN4cV]c^NY^yYpfj6y{EeKtinO0mX:h,[T'
+NONCE_KEY='G?S1^(K4-&`veaInR}#d>r,z=[6Zr+^|fWu][QI0.{n6^Lfz#}9W5J,2J]F90;AA|g^$H@-1UEcEiAE_q8,y|Gxj_K?UJaf$ON51[TAgFj+ez}R'
+LOGGED_IN_SALT='{8|{eiEob@?aaX94^U_])A)ba3[,S!ze{i7O)BQ3*W,iI[1^E5p}LfFKE,aLzUI%'
+NONCE_SALT='ZBV#Vp]b#tp#`c3r8/7Hc#ONe56FCfD&g1cMbx61,{q|#cpu<_^RZ/[c3K{.UAMu'
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f4a2d77
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,41 @@
+# Misc
+.DS_Store
+.idea
+_doc
+/CHANGELOG.md
+/README.md
+/LICENSE.md
+
+# Application
+web/app/themes/*
+!web/app/themes/lyveas/
+web/app/cache/*
+web/app/plugins/*
+web/app/db.php
+!web/app/plugins/.gitkeep
+web/app/mu-plugins/wp-migrate-db-pro-compatibility.php
+web/app/mu-plugins/*/
+!web/app/mu-plugins/cube
+web/app/upgrade
+web/app/uploads/*
+!web/app/uploads/.gitkeep
+
+# Translations
+web/app/languages
+
+# WordPress
+web/wp
+
+# Logs
+*.log
+
+# Dotenv
+#.env
+.env.*
+!.env.example
+
+# Composer
+/vendor
+
+# WP-CLI
+wp-cli.local.yml
diff --git a/.htaccess b/.htaccess
new file mode 100644
index 0000000..8a6a65d
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,7 @@
+# Gandi.net hosting doesn't allow us to set a custom web root, so this extra rewrite rule is required
+# Ref: https://docs.roots.io/bedrock/master/server-configuration/#managed-wordpress-hosts-and-bedrock
+
+RewriteEngine on
+
+RewriteCond %{REQUEST_URI} !web/
+RewriteRule ^(.*)$ /web/$1 [L]
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..14893ab
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,87 @@
+{
+ "name": "roots/bedrock",
+ "type": "project",
+ "license": "MIT",
+ "description": "WordPress boilerplate with Composer, 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.4",
+ "ext-json": "*",
+ "composer/installers": "^2.2",
+ "vlucas/phpdotenv": "^5.4",
+ "oscarotero/env": "^2.1",
+ "roots/bedrock-autoloader": "^1.0",
+ "roots/bedrock-disallow-indexing": "^2.0",
+ "roots/wordpress": "6.0.3",
+ "roots/wp-config": "1.0.0",
+ "roots/wp-password-bcrypt": "1.1.0",
+ "roots/acorn": "^2.1",
+ "wpackagist-theme/twentytwentythree": "^1.0",
+ "wpackagist-plugin/elementor": "^3.8",
+ "wpackagist-plugin/classic-editor": "^1.6",
+ "wpackagist-plugin/classic-widgets": "^0.3.0",
+ "wpackagist-plugin/html-forms": "^1.3",
+ "wpackagist-plugin/meta-box": "^5.6",
+ "wpackagist-plugin/mb-relationships": "^1.10",
+ "wpackagist-plugin/post-types-order": "1.9.9.2",
+ "wpackagist-plugin/wp-migrate-db": "^2.5",
+ "wpackagist-plugin/updraftplus": "^1.22"
+ },
+ "require-dev": {
+ "squizlabs/php_codesniffer": "^3.7.1",
+ "roave/security-advisories": "dev-latest",
+ "wpackagist-plugin/query-monitor": "^3.10"
+ },
+ "config": {
+ "optimize-autoloader": true,
+ "preferred-install": "dist",
+ "allow-plugins": {
+ "composer/installers": true,
+ "roots/wordpress-core-installer": true
+ }
+ },
+ "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 0000000..929834a
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,5617 @@
+{
+ "_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": "68c990b57b4d28aacd3c1adeed6022cf",
+ "packages": [
+ {
+ "name": "brick/math",
+ "version": "0.10.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/brick/math.git",
+ "reference": "459f2781e1a08d52ee56b0b1444086e038561e3f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/brick/math/zipball/459f2781e1a08d52ee56b0b1444086e038561e3f",
+ "reference": "459f2781e1a08d52ee56b0b1444086e038561e3f",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.2",
+ "phpunit/phpunit": "^9.0",
+ "vimeo/psalm": "4.25.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Brick\\Math\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Arbitrary-precision arithmetic library",
+ "keywords": [
+ "Arbitrary-precision",
+ "BigInteger",
+ "BigRational",
+ "arithmetic",
+ "bigdecimal",
+ "bignum",
+ "brick",
+ "math"
+ ],
+ "support": {
+ "issues": "https://github.com/brick/math/issues",
+ "source": "https://github.com/brick/math/tree/0.10.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/BenMorel",
+ "type": "github"
+ }
+ ],
+ "time": "2022-08-10T22:54:19+00:00"
+ },
+ {
+ "name": "composer/installers",
+ "version": "v2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/installers.git",
+ "reference": "c29dc4b93137acb82734f672c37e029dfbd95b35"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/installers/zipball/c29dc4b93137acb82734f672c37e029dfbd95b35",
+ "reference": "c29dc4b93137acb82734f672c37e029dfbd95b35",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.0 || ^2.0",
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "composer/composer": "1.6.* || ^2.0",
+ "composer/semver": "^1 || ^3",
+ "phpstan/phpstan": "^0.12.55",
+ "phpstan/phpstan-phpunit": "^0.12.16",
+ "symfony/phpunit-bridge": "^5.3",
+ "symfony/process": "^5"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "Composer\\Installers\\Plugin",
+ "branch-alias": {
+ "dev-main": "2.x-dev"
+ },
+ "plugin-modifies-install-path": true
+ },
+ "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": [
+ "Dolibarr",
+ "Eliasis",
+ "Hurad",
+ "ImageCMS",
+ "Kanboard",
+ "Lan Management System",
+ "MODX Evo",
+ "MantisBT",
+ "Mautic",
+ "Maya",
+ "OXID",
+ "Plentymarkets",
+ "Porto",
+ "RadPHP",
+ "SMF",
+ "Starbug",
+ "Thelia",
+ "Whmcs",
+ "WolfCMS",
+ "agl",
+ "annotatecms",
+ "attogram",
+ "bitrix",
+ "cakephp",
+ "chef",
+ "cockpit",
+ "codeigniter",
+ "concrete5",
+ "croogo",
+ "dokuwiki",
+ "drupal",
+ "eZ Platform",
+ "elgg",
+ "expressionengine",
+ "fuelphp",
+ "grav",
+ "installer",
+ "itop",
+ "known",
+ "kohana",
+ "laravel",
+ "lavalite",
+ "lithium",
+ "magento",
+ "majima",
+ "mako",
+ "matomo",
+ "mediawiki",
+ "miaoxing",
+ "modulework",
+ "modx",
+ "moodle",
+ "osclass",
+ "pantheon",
+ "phpbb",
+ "piwik",
+ "ppi",
+ "processwire",
+ "puppet",
+ "pxcms",
+ "reindex",
+ "roundcube",
+ "shopware",
+ "silverstripe",
+ "sydes",
+ "sylius",
+ "tastyigniter",
+ "wordpress",
+ "yawik",
+ "zend",
+ "zikula"
+ ],
+ "support": {
+ "issues": "https://github.com/composer/installers/issues",
+ "source": "https://github.com/composer/installers/tree/v2.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-08-20T06:45:11+00:00"
+ },
+ {
+ "name": "doctrine/inflector",
+ "version": "2.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/inflector.git",
+ "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/d9d313a36c872fd6ee06d9a6cbcf713eaa40f024",
+ "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^10",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpstan/phpstan-strict-rules": "^1.3",
+ "phpunit/phpunit": "^8.5 || ^9.5",
+ "vimeo/psalm": "^4.25"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
+ "homepage": "https://www.doctrine-project.org/projects/inflector.html",
+ "keywords": [
+ "inflection",
+ "inflector",
+ "lowercase",
+ "manipulation",
+ "php",
+ "plural",
+ "singular",
+ "strings",
+ "uppercase",
+ "words"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/inflector/issues",
+ "source": "https://github.com/doctrine/inflector/tree/2.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-10-20T09:10:12+00:00"
+ },
+ {
+ "name": "graham-campbell/result-type",
+ "version": "v1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/GrahamCampbell/Result-Type.git",
+ "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/a878d45c1914464426dc94da61c9e1d36ae262a8",
+ "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0",
+ "phpoption/phpoption": "^1.9"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5.28 || ^9.5.21"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "GrahamCampbell\\ResultType\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ }
+ ],
+ "description": "An Implementation Of The Result Type",
+ "keywords": [
+ "Graham Campbell",
+ "GrahamCampbell",
+ "Result Type",
+ "Result-Type",
+ "result"
+ ],
+ "support": {
+ "issues": "https://github.com/GrahamCampbell/Result-Type/issues",
+ "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-07-30T15:56:11+00:00"
+ },
+ {
+ "name": "illuminate/bus",
+ "version": "v8.83.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/bus.git",
+ "reference": "d2a8ae4bfd881086e55455e470776358eab27eae"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/bus/zipball/d2a8ae4bfd881086e55455e470776358eab27eae",
+ "reference": "d2a8ae4bfd881086e55455e470776358eab27eae",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/collections": "^8.0",
+ "illuminate/contracts": "^8.0",
+ "illuminate/pipeline": "^8.0",
+ "illuminate/support": "^8.0",
+ "php": "^7.3|^8.0"
+ },
+ "suggest": {
+ "illuminate/queue": "Required to use closures when chaining jobs (^7.0)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "8.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Bus\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Bus package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2022-03-07T15:02:42+00:00"
+ },
+ {
+ "name": "illuminate/cache",
+ "version": "v8.83.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/cache.git",
+ "reference": "7ae5b3661413dad7264b5c69037190d766bae50f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/cache/zipball/7ae5b3661413dad7264b5c69037190d766bae50f",
+ "reference": "7ae5b3661413dad7264b5c69037190d766bae50f",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/collections": "^8.0",
+ "illuminate/contracts": "^8.0",
+ "illuminate/macroable": "^8.0",
+ "illuminate/support": "^8.0",
+ "php": "^7.3|^8.0"
+ },
+ "provide": {
+ "psr/simple-cache-implementation": "1.0"
+ },
+ "suggest": {
+ "ext-memcached": "Required to use the memcache cache driver.",
+ "illuminate/database": "Required to use the database cache driver (^8.0).",
+ "illuminate/filesystem": "Required to use the file cache driver (^8.0).",
+ "illuminate/redis": "Required to use the redis cache driver (^8.0).",
+ "symfony/cache": "Required to PSR-6 cache bridge (^5.4)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "8.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Cache\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Cache package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2022-07-22T14:58:32+00:00"
+ },
+ {
+ "name": "illuminate/collections",
+ "version": "v8.83.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/collections.git",
+ "reference": "705a4e1ef93cd492c45b9b3e7911cccc990a07f4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/collections/zipball/705a4e1ef93cd492c45b9b3e7911cccc990a07f4",
+ "reference": "705a4e1ef93cd492c45b9b3e7911cccc990a07f4",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "^8.0",
+ "illuminate/macroable": "^8.0",
+ "php": "^7.3|^8.0"
+ },
+ "suggest": {
+ "symfony/var-dumper": "Required to use the dump method (^5.4)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "8.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "helpers.php"
+ ],
+ "psr-4": {
+ "Illuminate\\Support\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Collections package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2022-06-23T15:29:49+00:00"
+ },
+ {
+ "name": "illuminate/config",
+ "version": "v8.83.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/config.git",
+ "reference": "feac56ab7a5c70cf2dc60dffe4323eb9851f51a8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/config/zipball/feac56ab7a5c70cf2dc60dffe4323eb9851f51a8",
+ "reference": "feac56ab7a5c70cf2dc60dffe4323eb9851f51a8",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/collections": "^8.0",
+ "illuminate/contracts": "^8.0",
+ "php": "^7.3|^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "8.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Config\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Config package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2022-01-31T15:57:46+00:00"
+ },
+ {
+ "name": "illuminate/console",
+ "version": "v8.83.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/console.git",
+ "reference": "4aaa93223eb3bd8119157c95f58c022967826035"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/console/zipball/4aaa93223eb3bd8119157c95f58c022967826035",
+ "reference": "4aaa93223eb3bd8119157c95f58c022967826035",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/collections": "^8.0",
+ "illuminate/contracts": "^8.0",
+ "illuminate/macroable": "^8.0",
+ "illuminate/support": "^8.0",
+ "php": "^7.3|^8.0",
+ "symfony/console": "^5.4",
+ "symfony/process": "^5.4"
+ },
+ "suggest": {
+ "dragonmantank/cron-expression": "Required to use scheduler (^3.0.2).",
+ "guzzlehttp/guzzle": "Required to use the ping methods on schedules (^6.5.5|^7.0.1).",
+ "illuminate/bus": "Required to use the scheduled job dispatcher (^8.0).",
+ "illuminate/container": "Required to use the scheduler (^8.0).",
+ "illuminate/filesystem": "Required to use the generator command (^8.0).",
+ "illuminate/queue": "Required to use closures for scheduled jobs (^8.0)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "8.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Console\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Console package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2022-04-21T22:14:18+00:00"
+ },
+ {
+ "name": "illuminate/container",
+ "version": "v8.83.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/container.git",
+ "reference": "14062628d05f75047c5a1360b9350028427d568e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/container/zipball/14062628d05f75047c5a1360b9350028427d568e",
+ "reference": "14062628d05f75047c5a1360b9350028427d568e",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "^8.0",
+ "php": "^7.3|^8.0",
+ "psr/container": "^1.0"
+ },
+ "provide": {
+ "psr/container-implementation": "1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "8.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Container\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Container package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2022-02-02T21:03:35+00:00"
+ },
+ {
+ "name": "illuminate/contracts",
+ "version": "v8.83.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/contracts.git",
+ "reference": "5e0fd287a1b22a6b346a9f7cd484d8cf0234585d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/contracts/zipball/5e0fd287a1b22a6b346a9f7cd484d8cf0234585d",
+ "reference": "5e0fd287a1b22a6b346a9f7cd484d8cf0234585d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.3|^8.0",
+ "psr/container": "^1.0",
+ "psr/simple-cache": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "8.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Contracts\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Contracts package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2022-01-13T14:47:47+00:00"
+ },
+ {
+ "name": "illuminate/events",
+ "version": "v8.83.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/events.git",
+ "reference": "b7f06cafb6c09581617f2ca05d69e9b159e5a35d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/events/zipball/b7f06cafb6c09581617f2ca05d69e9b159e5a35d",
+ "reference": "b7f06cafb6c09581617f2ca05d69e9b159e5a35d",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/bus": "^8.0",
+ "illuminate/collections": "^8.0",
+ "illuminate/container": "^8.0",
+ "illuminate/contracts": "^8.0",
+ "illuminate/macroable": "^8.0",
+ "illuminate/support": "^8.0",
+ "php": "^7.3|^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "8.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "functions.php"
+ ],
+ "psr-4": {
+ "Illuminate\\Events\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Events package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2021-09-15T14:32:50+00:00"
+ },
+ {
+ "name": "illuminate/filesystem",
+ "version": "v8.83.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/filesystem.git",
+ "reference": "73db3e9a233ed587ba54f52ab8580f3c7bc872b2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/filesystem/zipball/73db3e9a233ed587ba54f52ab8580f3c7bc872b2",
+ "reference": "73db3e9a233ed587ba54f52ab8580f3c7bc872b2",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/collections": "^8.0",
+ "illuminate/contracts": "^8.0",
+ "illuminate/macroable": "^8.0",
+ "illuminate/support": "^8.0",
+ "php": "^7.3|^8.0",
+ "symfony/finder": "^5.4"
+ },
+ "suggest": {
+ "ext-ftp": "Required to use the Flysystem FTP driver.",
+ "illuminate/http": "Required for handling uploaded files (^7.0).",
+ "league/flysystem": "Required to use the Flysystem local and FTP drivers (^1.1).",
+ "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).",
+ "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).",
+ "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).",
+ "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).",
+ "symfony/filesystem": "Required to enable support for relative symbolic links (^5.4).",
+ "symfony/mime": "Required to enable support for guessing extensions (^5.4)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "8.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Filesystem\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Filesystem package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2022-01-15T15:00:40+00:00"
+ },
+ {
+ "name": "illuminate/http",
+ "version": "v8.83.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/http.git",
+ "reference": "38b8b0c8ca5d5231df9c515f3a3e7aac5f0da9f4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/http/zipball/38b8b0c8ca5d5231df9c515f3a3e7aac5f0da9f4",
+ "reference": "38b8b0c8ca5d5231df9c515f3a3e7aac5f0da9f4",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "illuminate/collections": "^8.0",
+ "illuminate/macroable": "^8.0",
+ "illuminate/session": "^8.0",
+ "illuminate/support": "^8.0",
+ "php": "^7.3|^8.0",
+ "symfony/http-foundation": "^5.4",
+ "symfony/http-kernel": "^5.4",
+ "symfony/mime": "^5.4"
+ },
+ "suggest": {
+ "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().",
+ "guzzlehttp/guzzle": "Required to use the HTTP Client (^6.5.5|^7.0.1)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "8.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Http\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Http package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2022-06-10T18:50:29+00:00"
+ },
+ {
+ "name": "illuminate/log",
+ "version": "v8.83.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/log.git",
+ "reference": "1dbdc6aca24d1d2b5903f865bb206039d4b800b2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/log/zipball/1dbdc6aca24d1d2b5903f865bb206039d4b800b2",
+ "reference": "1dbdc6aca24d1d2b5903f865bb206039d4b800b2",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "^8.0",
+ "illuminate/support": "^8.0",
+ "monolog/monolog": "^2.0",
+ "php": "^7.3|^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "8.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Log\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Log package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2022-01-10T15:22:22+00:00"
+ },
+ {
+ "name": "illuminate/macroable",
+ "version": "v8.83.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/macroable.git",
+ "reference": "aed81891a6e046fdee72edd497f822190f61c162"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/macroable/zipball/aed81891a6e046fdee72edd497f822190f61c162",
+ "reference": "aed81891a6e046fdee72edd497f822190f61c162",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.3|^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "8.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Support\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Macroable package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2021-11-16T13:57:03+00:00"
+ },
+ {
+ "name": "illuminate/pipeline",
+ "version": "v8.83.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/pipeline.git",
+ "reference": "23aeff5b26ae4aee3f370835c76bd0f4e93f71d2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/pipeline/zipball/23aeff5b26ae4aee3f370835c76bd0f4e93f71d2",
+ "reference": "23aeff5b26ae4aee3f370835c76bd0f4e93f71d2",
+ "shasum": ""
+ },
+ "require": {
+ "illuminate/contracts": "^8.0",
+ "illuminate/support": "^8.0",
+ "php": "^7.3|^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "8.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Pipeline\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Pipeline package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2021-03-26T18:39:16+00:00"
+ },
+ {
+ "name": "illuminate/session",
+ "version": "v8.83.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/session.git",
+ "reference": "9c9988d7229d888c098eebbbb9fcb8c68580411c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/session/zipball/9c9988d7229d888c098eebbbb9fcb8c68580411c",
+ "reference": "9c9988d7229d888c098eebbbb9fcb8c68580411c",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "illuminate/collections": "^8.0",
+ "illuminate/contracts": "^8.0",
+ "illuminate/filesystem": "^8.0",
+ "illuminate/support": "^8.0",
+ "php": "^7.3|^8.0",
+ "symfony/finder": "^5.4",
+ "symfony/http-foundation": "^5.4"
+ },
+ "suggest": {
+ "illuminate/console": "Required to use the session:table command (^8.0)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "8.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\Session\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Session package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2022-01-13T18:28:06+00:00"
+ },
+ {
+ "name": "illuminate/support",
+ "version": "v8.83.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/support.git",
+ "reference": "1c79242468d3bbd9a0f7477df34f9647dde2a09b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/support/zipball/1c79242468d3bbd9a0f7477df34f9647dde2a09b",
+ "reference": "1c79242468d3bbd9a0f7477df34f9647dde2a09b",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/inflector": "^1.4|^2.0",
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "illuminate/collections": "^8.0",
+ "illuminate/contracts": "^8.0",
+ "illuminate/macroable": "^8.0",
+ "nesbot/carbon": "^2.53.1",
+ "php": "^7.3|^8.0",
+ "voku/portable-ascii": "^1.6.1"
+ },
+ "conflict": {
+ "tightenco/collect": "<5.5.33"
+ },
+ "suggest": {
+ "illuminate/filesystem": "Required to use the composer class (^8.0).",
+ "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^1.3|^2.0.2).",
+ "ramsey/uuid": "Required to use Str::uuid() (^4.2.2).",
+ "symfony/process": "Required to use the composer class (^5.4).",
+ "symfony/var-dumper": "Required to use the dd function (^5.4).",
+ "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.4.1)."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "8.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "helpers.php"
+ ],
+ "psr-4": {
+ "Illuminate\\Support\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate Support package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2022-09-21T21:30:03+00:00"
+ },
+ {
+ "name": "illuminate/view",
+ "version": "v8.83.26",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/illuminate/view.git",
+ "reference": "5e73eef48d9242532f81fadc14c816a01bfb1388"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/illuminate/view/zipball/5e73eef48d9242532f81fadc14c816a01bfb1388",
+ "reference": "5e73eef48d9242532f81fadc14c816a01bfb1388",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "illuminate/collections": "^8.0",
+ "illuminate/container": "^8.0",
+ "illuminate/contracts": "^8.0",
+ "illuminate/events": "^8.0",
+ "illuminate/filesystem": "^8.0",
+ "illuminate/macroable": "^8.0",
+ "illuminate/support": "^8.0",
+ "php": "^7.3|^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "8.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Illuminate\\View\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylor@laravel.com"
+ }
+ ],
+ "description": "The Illuminate View package.",
+ "homepage": "https://laravel.com",
+ "support": {
+ "issues": "https://github.com/laravel/framework/issues",
+ "source": "https://github.com/laravel/framework"
+ },
+ "time": "2022-04-14T13:47:10+00:00"
+ },
+ {
+ "name": "league/flysystem",
+ "version": "1.1.10",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/flysystem.git",
+ "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/3239285c825c152bcc315fe0e87d6b55f5972ed1",
+ "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1",
+ "shasum": ""
+ },
+ "require": {
+ "ext-fileinfo": "*",
+ "league/mime-type-detection": "^1.3",
+ "php": "^7.2.5 || ^8.0"
+ },
+ "conflict": {
+ "league/flysystem-sftp": "<1.0.6"
+ },
+ "require-dev": {
+ "phpspec/prophecy": "^1.11.1",
+ "phpunit/phpunit": "^8.5.8"
+ },
+ "suggest": {
+ "ext-ftp": "Allows you to use FTP server storage",
+ "ext-openssl": "Allows you to use FTPS server storage",
+ "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2",
+ "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3",
+ "league/flysystem-azure": "Allows you to use Windows Azure Blob storage",
+ "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching",
+ "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem",
+ "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files",
+ "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib",
+ "league/flysystem-webdav": "Allows you to use WebDAV storage",
+ "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter",
+ "spatie/flysystem-dropbox": "Allows you to use Dropbox storage",
+ "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\Flysystem\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Frank de Jonge",
+ "email": "info@frenky.net"
+ }
+ ],
+ "description": "Filesystem abstraction: Many filesystems, one API.",
+ "keywords": [
+ "Cloud Files",
+ "WebDAV",
+ "abstraction",
+ "aws",
+ "cloud",
+ "copy.com",
+ "dropbox",
+ "file systems",
+ "files",
+ "filesystem",
+ "filesystems",
+ "ftp",
+ "rackspace",
+ "remote",
+ "s3",
+ "sftp",
+ "storage"
+ ],
+ "support": {
+ "issues": "https://github.com/thephpleague/flysystem/issues",
+ "source": "https://github.com/thephpleague/flysystem/tree/1.1.10"
+ },
+ "funding": [
+ {
+ "url": "https://offset.earth/frankdejonge",
+ "type": "other"
+ }
+ ],
+ "time": "2022-10-04T09:16:37+00:00"
+ },
+ {
+ "name": "league/mime-type-detection",
+ "version": "1.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/mime-type-detection.git",
+ "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd",
+ "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd",
+ "shasum": ""
+ },
+ "require": {
+ "ext-fileinfo": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.2",
+ "phpstan/phpstan": "^0.12.68",
+ "phpunit/phpunit": "^8.5.8 || ^9.3"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "League\\MimeTypeDetection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Frank de Jonge",
+ "email": "info@frankdejonge.nl"
+ }
+ ],
+ "description": "Mime-type detection for Flysystem",
+ "support": {
+ "issues": "https://github.com/thephpleague/mime-type-detection/issues",
+ "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/frankdejonge",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/league/flysystem",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-04-17T13:12:02+00:00"
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "2.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "720488632c590286b88b80e62aa3d3d551ad4a50"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50",
+ "reference": "720488632c590286b88b80e62aa3d3d551ad4a50",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2",
+ "psr/log": "^1.0.1 || ^2.0 || ^3.0"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "^2.4.9 || ^3.0",
+ "doctrine/couchdb": "~1.0@dev",
+ "elasticsearch/elasticsearch": "^7 || ^8",
+ "ext-json": "*",
+ "graylog2/gelf-php": "^1.4.2",
+ "guzzlehttp/guzzle": "^7.4",
+ "guzzlehttp/psr7": "^2.2",
+ "mongodb/mongodb": "^1.8",
+ "php-amqplib/php-amqplib": "~2.4 || ^3",
+ "phpspec/prophecy": "^1.15",
+ "phpstan/phpstan": "^0.12.91",
+ "phpunit/phpunit": "^8.5.14",
+ "predis/predis": "^1.1 || ^2.0",
+ "rollbar/rollbar": "^1.3 || ^2 || ^3",
+ "ruflin/elastica": "^7",
+ "swiftmailer/swiftmailer": "^5.3|^6.0",
+ "symfony/mailer": "^5.4 || ^6",
+ "symfony/mime": "^5.4 || ^6"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler",
+ "ext-mbstring": "Allow to work properly with unicode symbols",
+ "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
+ "ext-openssl": "Required to send log messages using SSL",
+ "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Monolog\\": "src/Monolog"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "https://seld.be"
+ }
+ ],
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "https://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ],
+ "support": {
+ "issues": "https://github.com/Seldaek/monolog/issues",
+ "source": "https://github.com/Seldaek/monolog/tree/2.8.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Seldaek",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-07-24T11:55:47+00:00"
+ },
+ {
+ "name": "nesbot/carbon",
+ "version": "2.64.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/briannesbitt/Carbon.git",
+ "reference": "889546413c97de2d05063b8cb7b193c2531ea211"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/889546413c97de2d05063b8cb7b193c2531ea211",
+ "reference": "889546413c97de2d05063b8cb7b193c2531ea211",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "php": "^7.1.8 || ^8.0",
+ "symfony/polyfill-mbstring": "^1.0",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0"
+ },
+ "require-dev": {
+ "doctrine/dbal": "^2.0 || ^3.1.4",
+ "doctrine/orm": "^2.7",
+ "friendsofphp/php-cs-fixer": "^3.0",
+ "kylekatarnls/multi-tester": "^2.0",
+ "ondrejmirtes/better-reflection": "*",
+ "phpmd/phpmd": "^2.9",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^0.12.99 || ^1.7.14",
+ "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20",
+ "squizlabs/php_codesniffer": "^3.4"
+ },
+ "bin": [
+ "bin/carbon"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-3.x": "3.x-dev",
+ "dev-master": "2.x-dev"
+ },
+ "laravel": {
+ "providers": [
+ "Carbon\\Laravel\\ServiceProvider"
+ ]
+ },
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Carbon\\": "src/Carbon/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Brian Nesbitt",
+ "email": "brian@nesbot.com",
+ "homepage": "https://markido.com"
+ },
+ {
+ "name": "kylekatarnls",
+ "homepage": "https://github.com/kylekatarnls"
+ }
+ ],
+ "description": "An API extension for DateTime that supports 281 different languages.",
+ "homepage": "https://carbon.nesbot.com",
+ "keywords": [
+ "date",
+ "datetime",
+ "time"
+ ],
+ "support": {
+ "docs": "https://carbon.nesbot.com/docs",
+ "issues": "https://github.com/briannesbitt/Carbon/issues",
+ "source": "https://github.com/briannesbitt/Carbon"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/kylekatarnls",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/Carbon#sponsor",
+ "type": "opencollective"
+ },
+ {
+ "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-11-26T17:36:00+00:00"
+ },
+ {
+ "name": "oscarotero/env",
+ "version": "v2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/oscarotero/env.git",
+ "reference": "0da22cadc6924155fa9bbea2cdda2e84ab7cbdd3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/oscarotero/env/zipball/0da22cadc6924155fa9bbea2cdda2e84ab7cbdd3",
+ "reference": "0da22cadc6924155fa9bbea2cdda2e84ab7cbdd3",
+ "shasum": ""
+ },
+ "require": {
+ "ext-ctype": "*",
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^2.16",
+ "phpunit/phpunit": "^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/env_function.php"
+ ],
+ "psr-4": {
+ "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"
+ ],
+ "support": {
+ "email": "oom@oscarotero.com",
+ "issues": "https://github.com/oscarotero/env/issues",
+ "source": "https://github.com/oscarotero/env/tree/v2.1.0"
+ },
+ "time": "2020-06-11T10:59:27+00:00"
+ },
+ {
+ "name": "phpoption/phpoption",
+ "version": "1.9.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/php-option.git",
+ "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dc5ff11e274a90cc1c743f66c9ad700ce50db9ab",
+ "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8",
+ "phpunit/phpunit": "^8.5.28 || ^9.5.21"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": true
+ },
+ "branch-alias": {
+ "dev-master": "1.9-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",
+ "homepage": "https://github.com/schmittjoh"
+ },
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ }
+ ],
+ "description": "Option Type for PHP",
+ "keywords": [
+ "language",
+ "option",
+ "php",
+ "type"
+ ],
+ "support": {
+ "issues": "https://github.com/schmittjoh/php-option/issues",
+ "source": "https://github.com/schmittjoh/php-option/tree/1.9.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-07-30T15:51:26+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "1.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "513e0666f7216c7459170d56df27dfcefe1689ea"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea",
+ "reference": "513e0666f7216c7459170d56df27dfcefe1689ea",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.4.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/1.1.2"
+ },
+ "time": "2021-11-05T16:50:12+00:00"
+ },
+ {
+ "name": "psr/event-dispatcher",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/event-dispatcher.git",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\EventDispatcher\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Standard interfaces for event handling.",
+ "keywords": [
+ "events",
+ "psr",
+ "psr-14"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/event-dispatcher/issues",
+ "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+ },
+ "time": "2019-01-08T18:20:26+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376",
+ "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.0.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/2.0.0"
+ },
+ "time": "2021-07-14T16:41:46+00:00"
+ },
+ {
+ "name": "psr/simple-cache",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/simple-cache.git",
+ "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
+ "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\SimpleCache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for simple caching",
+ "keywords": [
+ "cache",
+ "caching",
+ "psr",
+ "psr-16",
+ "simple-cache"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/simple-cache/tree/master"
+ },
+ "time": "2017-10-23T01:57:42+00:00"
+ },
+ {
+ "name": "ramsey/collection",
+ "version": "1.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ramsey/collection.git",
+ "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a",
+ "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.3 || ^8",
+ "symfony/polyfill-php81": "^1.23"
+ },
+ "require-dev": {
+ "captainhook/captainhook": "^5.3",
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "ergebnis/composer-normalize": "^2.6",
+ "fakerphp/faker": "^1.5",
+ "hamcrest/hamcrest-php": "^2",
+ "jangregor/phpstan-prophecy": "^0.8",
+ "mockery/mockery": "^1.3",
+ "phpspec/prophecy-phpunit": "^2.0",
+ "phpstan/extension-installer": "^1",
+ "phpstan/phpstan": "^0.12.32",
+ "phpstan/phpstan-mockery": "^0.12.5",
+ "phpstan/phpstan-phpunit": "^0.12.11",
+ "phpunit/phpunit": "^8.5 || ^9",
+ "psy/psysh": "^0.10.4",
+ "slevomat/coding-standard": "^6.3",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.4"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Ramsey\\Collection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ben Ramsey",
+ "email": "ben@benramsey.com",
+ "homepage": "https://benramsey.com"
+ }
+ ],
+ "description": "A PHP library for representing and manipulating collections.",
+ "keywords": [
+ "array",
+ "collection",
+ "hash",
+ "map",
+ "queue",
+ "set"
+ ],
+ "support": {
+ "issues": "https://github.com/ramsey/collection/issues",
+ "source": "https://github.com/ramsey/collection/tree/1.2.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/ramsey",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/ramsey/collection",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-10T03:01:02+00:00"
+ },
+ {
+ "name": "ramsey/uuid",
+ "version": "4.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ramsey/uuid.git",
+ "reference": "ad63bc700e7d021039e30ce464eba384c4a1d40f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/ad63bc700e7d021039e30ce464eba384c4a1d40f",
+ "reference": "ad63bc700e7d021039e30ce464eba384c4a1d40f",
+ "shasum": ""
+ },
+ "require": {
+ "brick/math": "^0.8.8 || ^0.9 || ^0.10",
+ "ext-json": "*",
+ "php": "^8.0",
+ "ramsey/collection": "^1.0"
+ },
+ "replace": {
+ "rhumsaa/uuid": "self.version"
+ },
+ "require-dev": {
+ "captainhook/captainhook": "^5.10",
+ "captainhook/plugin-composer": "^5.3",
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "doctrine/annotations": "^1.8",
+ "ergebnis/composer-normalize": "^2.15",
+ "mockery/mockery": "^1.3",
+ "paragonie/random-lib": "^2",
+ "php-mock/php-mock": "^2.2",
+ "php-mock/php-mock-mockery": "^1.3",
+ "php-parallel-lint/php-parallel-lint": "^1.1",
+ "phpbench/phpbench": "^1.0",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpunit/phpunit": "^8.5 || ^9",
+ "ramsey/composer-repl": "^1.4",
+ "slevomat/coding-standard": "^8.4",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.9"
+ },
+ "suggest": {
+ "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.",
+ "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.",
+ "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.",
+ "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
+ "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
+ },
+ "type": "library",
+ "extra": {
+ "captainhook": {
+ "force-install": true
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "Ramsey\\Uuid\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).",
+ "keywords": [
+ "guid",
+ "identifier",
+ "uuid"
+ ],
+ "support": {
+ "issues": "https://github.com/ramsey/uuid/issues",
+ "source": "https://github.com/ramsey/uuid/tree/4.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/ramsey",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-11-05T23:03:38+00:00"
+ },
+ {
+ "name": "roots/acorn",
+ "version": "v2.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/roots/acorn.git",
+ "reference": "82649f7b8b4916da7fb63b202b4e3c8024178dbd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/roots/acorn/zipball/82649f7b8b4916da7fb63b202b4e3c8024178dbd",
+ "reference": "82649f7b8b4916da7fb63b202b4e3c8024178dbd",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "illuminate/cache": "^8.70",
+ "illuminate/config": "^8.70",
+ "illuminate/console": "^8.70",
+ "illuminate/container": "^8.70",
+ "illuminate/contracts": "^8.70",
+ "illuminate/events": "^8.70",
+ "illuminate/filesystem": "^8.70",
+ "illuminate/http": "^8.70",
+ "illuminate/log": "^8.70",
+ "illuminate/support": "^8.70",
+ "illuminate/view": "^8.70",
+ "league/flysystem": "^1.1",
+ "php": "^7.3|^8.0",
+ "ramsey/uuid": "^4.1",
+ "roots/support": "^1.0",
+ "symfony/error-handler": "^5.2",
+ "symfony/var-dumper": "^5.2",
+ "vlucas/phpdotenv": "^5.2"
+ },
+ "require-dev": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "filp/whoops": "^2.9",
+ "pestphp/pest": "^1.0",
+ "pestphp/pest-plugin-mock": "^1.0",
+ "phpcompatibility/php-compatibility": "^9.3",
+ "roave/security-advisories": "dev-master",
+ "spatie/pest-plugin-snapshots": "^1.0",
+ "spatie/temporary-directory": "^1.3",
+ "squizlabs/php_codesniffer": "^3.5",
+ "tmarsteel/mockery-callable-mock": "^2.1",
+ "wp-cli/wp-cli": "^2.5"
+ },
+ "suggest": {
+ "filp/whoops": "Required for friendly error pages in development (^2.9)."
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/Roots/helpers.php",
+ "src/Roots/globals.php"
+ ],
+ "psr-4": {
+ "Roots\\": "src/Roots/",
+ "Illuminate\\": "src/Illuminate/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "QWp6t",
+ "email": "hi@qwp6t.me"
+ },
+ {
+ "name": "Brandon Nifong",
+ "email": "brandon@tendency.me"
+ }
+ ],
+ "description": "Framework for Roots WordPress projects built with Laravel components.",
+ "homepage": "https://roots.io/acorn/",
+ "keywords": [
+ "sage",
+ "wordpress"
+ ],
+ "support": {
+ "forum": "https://discourse.roots.io/",
+ "issues": "https://github.com/roots/acorn/issues",
+ "source": "https://github.com/roots/acorn/tree/v2.1.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/roots",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/rootsdev",
+ "type": "patreon"
+ }
+ ],
+ "time": "2022-07-17T19:11:26+00:00"
+ },
+ {
+ "name": "roots/bedrock-autoloader",
+ "version": "1.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/roots/bedrock-autoloader.git",
+ "reference": "f508348a3365ab5ce7e045f5fd4ee9f0a30dd70f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/roots/bedrock-autoloader/zipball/f508348a3365ab5ce7e045f5fd4ee9f0a30dd70f",
+ "reference": "f508348a3365ab5ce7e045f5fd4ee9f0a30dd70f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "10up/wp_mock": "^0.4.2",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Roots\\Bedrock\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nick Fox",
+ "email": "nick@foxaii.com",
+ "homepage": "https://github.com/foxaii"
+ },
+ {
+ "name": "Scott Walkinshaw",
+ "email": "scott.walkinshaw@gmail.com",
+ "homepage": "https://github.com/swalkinshaw"
+ },
+ {
+ "name": "Austin Pray",
+ "email": "austin@austinpray.com",
+ "homepage": "https://github.com/austinpray"
+ }
+ ],
+ "description": "An autoloader that enables standard plugins to be required just like must-use plugins",
+ "keywords": [
+ "autoloader",
+ "bedrock",
+ "mu-plugin",
+ "must-use",
+ "plugin",
+ "wordpress"
+ ],
+ "support": {
+ "forum": "https://discourse.roots.io/",
+ "issues": "https://github.com/roots/bedrock-autoloader/issues",
+ "source": "https://github.com/roots/bedrock-autoloader/tree/1.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/roots",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/rootsdev",
+ "type": "patreon"
+ }
+ ],
+ "time": "2020-12-04T15:59:12+00:00"
+ },
+ {
+ "name": "roots/bedrock-disallow-indexing",
+ "version": "2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/roots/bedrock-disallow-indexing.git",
+ "reference": "6c28192e17cb9e02a5c0c99691a18552b85e1615"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/roots/bedrock-disallow-indexing/zipball/6c28192e17cb9e02a5c0c99691a18552b85e1615",
+ "reference": "6c28192e17cb9e02a5c0c99691a18552b85e1615",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "wordpress-muplugin",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ben Word",
+ "email": "ben@benword.com",
+ "homepage": "https://github.com/retlehs"
+ },
+ {
+ "name": "Scott Walkinshaw",
+ "email": "scott.walkinshaw@gmail.com",
+ "homepage": "https://github.com/swalkinshaw"
+ },
+ {
+ "name": "QWp6t",
+ "email": "hi@qwp6t.me",
+ "homepage": "https://github.com/qwp6t"
+ }
+ ],
+ "description": "Disallow indexing of your site on non-production environments",
+ "keywords": [
+ "wordpress"
+ ],
+ "support": {
+ "forum": "https://discourse.roots.io/",
+ "issues": "https://github.com/roots/bedrock-disallow-indexing/issues",
+ "source": "https://github.com/roots/bedrock-disallow-indexing/tree/2.0.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/roots",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/rootsdev",
+ "type": "patreon"
+ }
+ ],
+ "time": "2020-05-20T01:25:07+00:00"
+ },
+ {
+ "name": "roots/support",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/roots/support.git",
+ "reference": "0c5231dc194407e32bfee000d49a36775040289a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/roots/support/zipball/0c5231dc194407e32bfee000d49a36775040289a",
+ "reference": "0c5231dc194407e32bfee000d49a36775040289a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.2",
+ "squizlabs/php_codesniffer": "^3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "helpers.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "QWp6t",
+ "email": "hi@qwp6t.me"
+ }
+ ],
+ "homepage": "https://github.com/roots/support/",
+ "support": {
+ "forum": "https://discourse.roots.io/",
+ "issues": "https://github.com/roots/support/issues",
+ "source": "https://github.com/roots/support/tree/1.0.0"
+ },
+ "time": "2019-01-28T09:46:14+00:00"
+ },
+ {
+ "name": "roots/wordpress",
+ "version": "6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/roots/wordpress.git",
+ "reference": "41ff6e23ccbc3a1691406d69fe8c211a225514e2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/roots/wordpress/zipball/41ff6e23ccbc3a1691406d69fe8c211a225514e2",
+ "reference": "41ff6e23ccbc3a1691406d69fe8c211a225514e2",
+ "shasum": ""
+ },
+ "require": {
+ "roots/wordpress-core-installer": "^1.0.0",
+ "roots/wordpress-no-content": "self.version"
+ },
+ "type": "metapackage",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT",
+ "GPL-2.0-or-later"
+ ],
+ "description": "WordPress is open source software you can use to create a beautiful website, blog, or app.",
+ "homepage": "https://wordpress.org/",
+ "keywords": [
+ "blog",
+ "cms",
+ "wordpress"
+ ],
+ "support": {
+ "issues": "https://github.com/roots/wordpress/issues",
+ "source": "https://github.com/roots/wordpress/tree/6.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/roots",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/rootsdev",
+ "type": "patreon"
+ }
+ ],
+ "time": "2022-06-01T16:54:37+00:00"
+ },
+ {
+ "name": "roots/wordpress-core-installer",
+ "version": "1.100.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/roots/wordpress-core-installer.git",
+ "reference": "73f8488e5178c5d54234b919f823a9095e2b1847"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/roots/wordpress-core-installer/zipball/73f8488e5178c5d54234b919f823a9095e2b1847",
+ "reference": "73f8488e5178c5d54234b919f823a9095e2b1847",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.0 || ^2.0",
+ "php": ">=5.6.0"
+ },
+ "conflict": {
+ "composer/installers": "<1.0.6"
+ },
+ "replace": {
+ "johnpbloch/wordpress-core-installer": "*"
+ },
+ "require-dev": {
+ "composer/composer": "^1.0 || ^2.0",
+ "phpunit/phpunit": ">=5.7.27"
+ },
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/roots/wordpress-core-installer/issues",
+ "source": "https://github.com/roots/wordpress-core-installer/tree/master"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/roots",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/rootsdev",
+ "type": "patreon"
+ }
+ ],
+ "time": "2020-08-20T00:27:30+00:00"
+ },
+ {
+ "name": "roots/wordpress-no-content",
+ "version": "6.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/WordPress/WordPress.git",
+ "reference": "6.0.3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://downloads.wordpress.org/release/wordpress-6.0.3-no-content.zip",
+ "shasum": "39bb6da76aa5c28c4288593e0cd6a710cde7db6e"
+ },
+ "require": {
+ "php": ">= 5.6.20"
+ },
+ "provide": {
+ "wordpress/core-implementation": "6.0.3"
+ },
+ "suggest": {
+ "ext-curl": "Performs remote request operations.",
+ "ext-dom": "Used to validate Text Widget content and to automatically configuring IIS7+.",
+ "ext-exif": "Works with metadata stored in images.",
+ "ext-fileinfo": "Used to detect mimetype of file uploads.",
+ "ext-hash": "Used for hashing, including passwords and update packages.",
+ "ext-imagick": "Provides better image quality for media uploads.",
+ "ext-json": "Used for communications with other servers.",
+ "ext-libsodium": "Validates Signatures and provides securely random bytes.",
+ "ext-mbstring": "Used to properly handle UTF8 text.",
+ "ext-mysqli": "Connects to MySQL for database interactions.",
+ "ext-openssl": "Permits SSL-based connections to other hosts.",
+ "ext-pcre": "Increases performance of pattern matching in code searches.",
+ "ext-xml": "Used for XML parsing, such as from a third-party site.",
+ "ext-zip": "Used for decompressing Plugins, Themes, and WordPress update packages."
+ },
+ "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 open source software you can use to create a beautiful website, blog, or app.",
+ "homepage": "https://wordpress.org/",
+ "keywords": [
+ "blog",
+ "cms",
+ "wordpress"
+ ],
+ "support": {
+ "docs": "https://developer.wordpress.org/",
+ "forum": "https://wordpress.org/support/",
+ "irc": "irc://irc.freenode.net/wordpress",
+ "issues": "https://core.trac.wordpress.org/",
+ "rss": "https://wordpress.org/news/feed/",
+ "source": "https://core.trac.wordpress.org/browser",
+ "wiki": "https://codex.wordpress.org/"
+ },
+ "funding": [
+ {
+ "url": "https://wordpressfoundation.org/donate/",
+ "type": "other"
+ }
+ ],
+ "time": "2022-10-17T22:55: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",
+ "support": {
+ "issues": "https://github.com/roots/wp-config/issues",
+ "source": "https://github.com/roots/wp-config/tree/master"
+ },
+ "time": "2018-08-10T14:18:38+00:00"
+ },
+ {
+ "name": "roots/wp-password-bcrypt",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/roots/wp-password-bcrypt.git",
+ "reference": "15f0d8919fb3731f79a0cf2fb47e1baecb86cb26"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/roots/wp-password-bcrypt/zipball/15f0d8919fb3731f79a0cf2fb47e1baecb86cb26",
+ "reference": "15f0d8919fb3731f79a0cf2fb47e1baecb86cb26",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6.0"
+ },
+ "require-dev": {
+ "brain/monkey": "^2.6",
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "mockery/mockery": "^1.4",
+ "phpcompatibility/php-compatibility": "^9.3",
+ "phpunit/phpunit": "<= 9.3",
+ "squizlabs/php_codesniffer": "^3.5"
+ },
+ "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": "Brandon Nifong",
+ "homepage": "https://github.com/log1x"
+ },
+ {
+ "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": [
+ "bcrypt",
+ "passwords",
+ "wordpress"
+ ],
+ "support": {
+ "forum": "https://discourse.roots.io/",
+ "issues": "https://github.com/roots/wp-password-bcrypt/issues",
+ "source": "https://github.com/roots/wp-password-bcrypt/tree/1.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/roots",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/rootsdev",
+ "type": "patreon"
+ }
+ ],
+ "time": "2021-10-31T01:18:58+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v5.4.16",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "8e9b9c8dfb33af6057c94e1b44846bee700dc5ef"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/8e9b9c8dfb33af6057c94e1b44846bee700dc5ef",
+ "reference": "8e9b9c8dfb33af6057c94e1b44846bee700dc5ef",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php73": "^1.9",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/string": "^5.1|^6.0"
+ },
+ "conflict": {
+ "psr/log": ">=3",
+ "symfony/dependency-injection": "<4.4",
+ "symfony/dotenv": "<5.1",
+ "symfony/event-dispatcher": "<4.4",
+ "symfony/lock": "<4.4",
+ "symfony/process": "<4.4"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0|2.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2",
+ "symfony/config": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+ "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
+ "symfony/lock": "^4.4|^5.0|^6.0",
+ "symfony/process": "^4.4|^5.0|^6.0",
+ "symfony/var-dumper": "^4.4|^5.0|^6.0"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Eases the creation of beautiful and testable command line interfaces",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "cli",
+ "command line",
+ "console",
+ "terminal"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/console/tree/v5.4.16"
+ },
+ "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": "2022-11-25T14:09:27+00:00"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918",
+ "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.1-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.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": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.1.1"
+ },
+ "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": "2022-02-25T11:15:52+00:00"
+ },
+ {
+ "name": "symfony/error-handler",
+ "version": "v5.4.15",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/error-handler.git",
+ "reference": "539cf1428b8442303c6e876ad7bf5a7babd91091"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/539cf1428b8442303c6e876ad7bf5a7babd91091",
+ "reference": "539cf1428b8442303c6e876ad7bf5a7babd91091",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/log": "^1|^2|^3",
+ "symfony/var-dumper": "^4.4|^5.0|^6.0"
+ },
+ "require-dev": {
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/http-kernel": "^4.4|^5.0|^6.0",
+ "symfony/serializer": "^4.4|^5.0|^6.0"
+ },
+ "bin": [
+ "Resources/bin/patch-type-declarations"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\ErrorHandler\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools to manage errors and ease debugging PHP code",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/error-handler/tree/v5.4.15"
+ },
+ "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": "2022-10-27T06:32:25+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v6.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "9efb1618fabee89515fe031314e8ed5625f85a53"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9efb1618fabee89515fe031314e8ed5625f85a53",
+ "reference": "9efb1618fabee89515fe031314e8ed5625f85a53",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/event-dispatcher-contracts": "^2|^3"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<5.4"
+ },
+ "provide": {
+ "psr/event-dispatcher-implementation": "1.0",
+ "symfony/event-dispatcher-implementation": "2.0|3.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/error-handler": "^5.4|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/stopwatch": "^5.4|^6.0"
+ },
+ "suggest": {
+ "symfony/dependency-injection": "",
+ "symfony/http-kernel": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.0"
+ },
+ "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": "2022-11-02T09:08:04+00:00"
+ },
+ {
+ "name": "symfony/event-dispatcher-contracts",
+ "version": "v3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+ "reference": "02ff5eea2f453731cfbc6bc215e456b781480448"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/02ff5eea2f453731cfbc6bc215e456b781480448",
+ "reference": "02ff5eea2f453731cfbc6bc215e456b781480448",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/event-dispatcher": "^1"
+ },
+ "suggest": {
+ "symfony/event-dispatcher-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.1-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\EventDispatcher\\": ""
+ }
+ },
+ "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": "Generic abstractions related to dispatching event",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.1.1"
+ },
+ "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": "2022-02-25T11:15:52+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v5.4.11",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/7872a66f57caffa2916a584db1aa7f12adc76f8c",
+ "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Finds files and directories via an intuitive fluent interface",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/finder/tree/v5.4.11"
+ },
+ "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": "2022-07-29T07:37:50+00:00"
+ },
+ {
+ "name": "symfony/http-foundation",
+ "version": "v5.4.16",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-foundation.git",
+ "reference": "5032c5849aef24741e1970cb03511b0dd131d838"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5032c5849aef24741e1970cb03511b0dd131d838",
+ "reference": "5032c5849aef24741e1970cb03511b0dd131d838",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-mbstring": "~1.1",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "require-dev": {
+ "predis/predis": "~1.0",
+ "symfony/cache": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/expression-language": "^4.4|^5.0|^6.0",
+ "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4",
+ "symfony/mime": "^4.4|^5.0|^6.0",
+ "symfony/rate-limiter": "^5.2|^6.0"
+ },
+ "suggest": {
+ "symfony/mime": "To use the file extension guesser"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpFoundation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Defines an object-oriented layer for the HTTP specification",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/http-foundation/tree/v5.4.16"
+ },
+ "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": "2022-11-07T08:06:40+00:00"
+ },
+ {
+ "name": "symfony/http-kernel",
+ "version": "v5.4.16",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-kernel.git",
+ "reference": "b432c57c5de73634b1859093c1f58e3cd84455a1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b432c57c5de73634b1859093c1f58e3cd84455a1",
+ "reference": "b432c57c5de73634b1859093c1f58e3cd84455a1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/log": "^1|^2",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/error-handler": "^4.4|^5.0|^6.0",
+ "symfony/event-dispatcher": "^5.0|^6.0",
+ "symfony/http-foundation": "^5.3.7|^6.0",
+ "symfony/polyfill-ctype": "^1.8",
+ "symfony/polyfill-php73": "^1.9",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "conflict": {
+ "symfony/browser-kit": "<5.4",
+ "symfony/cache": "<5.0",
+ "symfony/config": "<5.0",
+ "symfony/console": "<4.4",
+ "symfony/dependency-injection": "<5.3",
+ "symfony/doctrine-bridge": "<5.0",
+ "symfony/form": "<5.0",
+ "symfony/http-client": "<5.0",
+ "symfony/mailer": "<5.0",
+ "symfony/messenger": "<5.0",
+ "symfony/translation": "<5.0",
+ "symfony/twig-bridge": "<5.0",
+ "symfony/validator": "<5.0",
+ "twig/twig": "<2.13"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0|2.0"
+ },
+ "require-dev": {
+ "psr/cache": "^1.0|^2.0|^3.0",
+ "symfony/browser-kit": "^5.4|^6.0",
+ "symfony/config": "^5.0|^6.0",
+ "symfony/console": "^4.4|^5.0|^6.0",
+ "symfony/css-selector": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^5.3|^6.0",
+ "symfony/dom-crawler": "^4.4|^5.0|^6.0",
+ "symfony/expression-language": "^4.4|^5.0|^6.0",
+ "symfony/finder": "^4.4|^5.0|^6.0",
+ "symfony/http-client-contracts": "^1.1|^2|^3",
+ "symfony/process": "^4.4|^5.0|^6.0",
+ "symfony/routing": "^4.4|^5.0|^6.0",
+ "symfony/stopwatch": "^4.4|^5.0|^6.0",
+ "symfony/translation": "^4.4|^5.0|^6.0",
+ "symfony/translation-contracts": "^1.1|^2|^3",
+ "twig/twig": "^2.13|^3.0.4"
+ },
+ "suggest": {
+ "symfony/browser-kit": "",
+ "symfony/config": "",
+ "symfony/console": "",
+ "symfony/dependency-injection": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\HttpKernel\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides a structured process for converting a Request into a Response",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/http-kernel/tree/v5.4.16"
+ },
+ "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": "2022-11-28T18:08:58+00:00"
+ },
+ {
+ "name": "symfony/mime",
+ "version": "v5.4.16",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/mime.git",
+ "reference": "46eeedb08f0832b1b61a84c612d945fc85ee4734"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/46eeedb08f0832b1b61a84c612d945fc85ee4734",
+ "reference": "46eeedb08f0832b1b61a84c612d945fc85ee4734",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-intl-idn": "^1.10",
+ "symfony/polyfill-mbstring": "^1.0",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "conflict": {
+ "egulias/email-validator": "~3.0.0",
+ "phpdocumentor/reflection-docblock": "<3.2.2",
+ "phpdocumentor/type-resolver": "<1.4.0",
+ "symfony/mailer": "<4.4",
+ "symfony/serializer": "<5.4.14|>=6.0,<6.0.14|>=6.1,<6.1.6"
+ },
+ "require-dev": {
+ "egulias/email-validator": "^2.1.10|^3.1",
+ "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+ "symfony/property-access": "^4.4|^5.1|^6.0",
+ "symfony/property-info": "^4.4|^5.1|^6.0",
+ "symfony/serializer": "^5.4.14|~6.0.14|^6.1.6"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Mime\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Allows manipulating MIME messages",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "mime",
+ "mime-type"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/mime/tree/v5.4.16"
+ },
+ "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": "2022-11-26T16:45:22+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.27.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
+ "reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-ctype": "*"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.27-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ }
+ },
+ "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"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
+ },
+ "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": "2022-11-03T14:55:06+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.27.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "511a08c03c1960e08a883f4cffcacd219b758354"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354",
+ "reference": "511a08c03c1960e08a883f4cffcacd219b758354",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.27-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ }
+ },
+ "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 intl's grapheme_* functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "grapheme",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0"
+ },
+ "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": "2022-11-03T14:55:06+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-idn",
+ "version": "v1.27.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-idn.git",
+ "reference": "639084e360537a19f9ee352433b84ce831f3d2da"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da",
+ "reference": "639084e360537a19f9ee352433b84ce831f3d2da",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1",
+ "symfony/polyfill-intl-normalizer": "^1.10",
+ "symfony/polyfill-php72": "^1.10"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.27-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Idn\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Laurent Bassin",
+ "email": "laurent@bassin.info"
+ },
+ {
+ "name": "Trevor Rowbotham",
+ "email": "trevor.rowbotham@pm.me"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "idn",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0"
+ },
+ "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": "2022-11-03T14:55:06+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "v1.27.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6",
+ "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.27-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "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 intl's Normalizer class and related functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "intl",
+ "normalizer",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0"
+ },
+ "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": "2022-11-03T14:55:06+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.27.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
+ "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.27-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
+ },
+ "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"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
+ },
+ "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": "2022-11-03T14:55:06+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php72",
+ "version": "v1.27.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php72.git",
+ "reference": "869329b1e9894268a8a61dabb69153029b7a8c97"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97",
+ "reference": "869329b1e9894268a8a61dabb69153029b7a8c97",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.27-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php72\\": ""
+ }
+ },
+ "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 backporting some PHP 7.2+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0"
+ },
+ "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": "2022-11-03T14:55:06+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php73",
+ "version": "v1.27.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9",
+ "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.27-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "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 backporting some PHP 7.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0"
+ },
+ "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": "2022-11-03T14:55:06+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php80",
+ "version": "v1.27.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
+ "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.27-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
+ },
+ "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": "2022-11-03T14:55:06+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php81",
+ "version": "v1.27.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php81.git",
+ "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a",
+ "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.27-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php81\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "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 backporting some PHP 8.1+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0"
+ },
+ "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": "2022-11-03T14:55:06+00:00"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v5.4.11",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/6e75fe6874cbc7e4773d049616ab450eff537bf1",
+ "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Executes commands in sub-processes",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/process/tree/v5.4.11"
+ },
+ "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": "2022-06-27T16:58:25+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v2.5.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
+ "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/container": "^1.1",
+ "symfony/deprecation-contracts": "^2.1|^3"
+ },
+ "conflict": {
+ "ext-psr": "<1.1|>=2"
+ },
+ "suggest": {
+ "symfony/service-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.5-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ }
+ },
+ "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": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/v2.5.2"
+ },
+ "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": "2022-05-30T19:17:29+00:00"
+ },
+ {
+ "name": "symfony/string",
+ "version": "v6.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/string.git",
+ "reference": "145702685e0d12f81d755c71127bfff7582fdd36"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/string/zipball/145702685e0d12f81d755c71127bfff7582fdd36",
+ "reference": "145702685e0d12f81d755c71127bfff7582fdd36",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-intl-grapheme": "~1.0",
+ "symfony/polyfill-intl-normalizer": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/translation-contracts": "<2.0"
+ },
+ "require-dev": {
+ "symfony/error-handler": "^5.4|^6.0",
+ "symfony/http-client": "^5.4|^6.0",
+ "symfony/intl": "^6.2",
+ "symfony/translation-contracts": "^2.0|^3.0",
+ "symfony/var-exporter": "^5.4|^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/functions.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "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": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "grapheme",
+ "i18n",
+ "string",
+ "unicode",
+ "utf-8",
+ "utf8"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/string/tree/v6.2.0"
+ },
+ "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": "2022-11-30T17:13:47+00:00"
+ },
+ {
+ "name": "symfony/translation",
+ "version": "v6.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation.git",
+ "reference": "c08de62caead8357244efcb809d0b1a2584f2198"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/c08de62caead8357244efcb809d0b1a2584f2198",
+ "reference": "c08de62caead8357244efcb809d0b1a2584f2198",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/translation-contracts": "^2.3|^3.0"
+ },
+ "conflict": {
+ "symfony/config": "<5.4",
+ "symfony/console": "<5.4",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/http-kernel": "<5.4",
+ "symfony/twig-bundle": "<5.4",
+ "symfony/yaml": "<5.4"
+ },
+ "provide": {
+ "symfony/translation-implementation": "2.3|3.0"
+ },
+ "require-dev": {
+ "nikic/php-parser": "^4.13",
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/console": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/finder": "^5.4|^6.0",
+ "symfony/http-client-contracts": "^1.1|^2.0|^3.0",
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/intl": "^5.4|^6.0",
+ "symfony/polyfill-intl-icu": "^1.21",
+ "symfony/routing": "^5.4|^6.0",
+ "symfony/service-contracts": "^1.1.2|^2|^3",
+ "symfony/yaml": "^5.4|^6.0"
+ },
+ "suggest": {
+ "nikic/php-parser": "To use PhpAstExtractor",
+ "psr/log-implementation": "To use logging capability in translator",
+ "symfony/config": "",
+ "symfony/yaml": ""
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/functions.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides tools to internationalize your application",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/translation/tree/v6.2.0"
+ },
+ "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": "2022-11-02T09:08:04+00:00"
+ },
+ {
+ "name": "symfony/translation-contracts",
+ "version": "v3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/translation-contracts.git",
+ "reference": "606be0f48e05116baef052f7f3abdb345c8e02cc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/606be0f48e05116baef052f7f3abdb345c8e02cc",
+ "reference": "606be0f48e05116baef052f7f3abdb345c8e02cc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "suggest": {
+ "symfony/translation-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.1-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Translation\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
+ },
+ "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": "Generic abstractions related to translation",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.1.1"
+ },
+ "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": "2022-06-27T17:24:16+00:00"
+ },
+ {
+ "name": "symfony/var-dumper",
+ "version": "v5.4.14",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-dumper.git",
+ "reference": "6894d06145fefebd9a4c7272baa026a1c394a430"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6894d06145fefebd9a4c7272baa026a1c394a430",
+ "reference": "6894d06145fefebd9a4c7272baa026a1c394a430",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<5.4.3",
+ "symfony/console": "<4.4"
+ },
+ "require-dev": {
+ "ext-iconv": "*",
+ "symfony/console": "^4.4|^5.0|^6.0",
+ "symfony/process": "^4.4|^5.0|^6.0",
+ "symfony/uid": "^5.1|^6.0",
+ "twig/twig": "^2.13|^3.0.4"
+ },
+ "suggest": {
+ "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
+ "ext-intl": "To show region name in time zone dump",
+ "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
+ },
+ "bin": [
+ "Resources/bin/var-dump-server"
+ ],
+ "type": "library",
+ "autoload": {
+ "files": [
+ "Resources/functions/dump.php"
+ ],
+ "psr-4": {
+ "Symfony\\Component\\VarDumper\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "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": "Provides mechanisms for walking through any arbitrary PHP variable",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "debug",
+ "dump"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/var-dumper/tree/v5.4.14"
+ },
+ "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": "2022-10-07T08:01:20+00:00"
+ },
+ {
+ "name": "vlucas/phpdotenv",
+ "version": "v5.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/vlucas/phpdotenv.git",
+ "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7",
+ "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7",
+ "shasum": ""
+ },
+ "require": {
+ "ext-pcre": "*",
+ "graham-campbell/result-type": "^1.0.2",
+ "php": "^7.1.3 || ^8.0",
+ "phpoption/phpoption": "^1.8",
+ "symfony/polyfill-ctype": "^1.23",
+ "symfony/polyfill-mbstring": "^1.23.1",
+ "symfony/polyfill-php80": "^1.23.1"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.4.1",
+ "ext-filter": "*",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25"
+ },
+ "suggest": {
+ "ext-filter": "Required to use the boolean validator."
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": true
+ },
+ "branch-alias": {
+ "dev-master": "5.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Dotenv\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Vance Lucas",
+ "email": "vance@vancelucas.com",
+ "homepage": "https://github.com/vlucas"
+ }
+ ],
+ "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
+ "keywords": [
+ "dotenv",
+ "env",
+ "environment"
+ ],
+ "support": {
+ "issues": "https://github.com/vlucas/phpdotenv/issues",
+ "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-10-16T01:01:54+00:00"
+ },
+ {
+ "name": "voku/portable-ascii",
+ "version": "1.6.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/voku/portable-ascii.git",
+ "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/voku/portable-ascii/zipball/87337c91b9dfacee02452244ee14ab3c43bc485a",
+ "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0"
+ },
+ "suggest": {
+ "ext-intl": "Use Intl for transliterator_transliterate() support"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "voku\\": "src/voku/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Lars Moelleken",
+ "homepage": "http://www.moelleken.org/"
+ }
+ ],
+ "description": "Portable ASCII library - performance optimized (ascii) string functions for php.",
+ "homepage": "https://github.com/voku/portable-ascii",
+ "keywords": [
+ "ascii",
+ "clean",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/voku/portable-ascii/issues",
+ "source": "https://github.com/voku/portable-ascii/tree/1.6.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.paypal.me/moelleken",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/voku",
+ "type": "github"
+ },
+ {
+ "url": "https://opencollective.com/portable-ascii",
+ "type": "open_collective"
+ },
+ {
+ "url": "https://www.patreon.com/voku",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-24T18:55:24+00:00"
+ },
+ {
+ "name": "wpackagist-plugin/classic-editor",
+ "version": "1.6.2",
+ "source": {
+ "type": "svn",
+ "url": "https://plugins.svn.wordpress.org/classic-editor/",
+ "reference": "tags/1.6.2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://downloads.wordpress.org/plugin/classic-editor.1.6.2.zip"
+ },
+ "require": {
+ "composer/installers": "^1.0 || ^2.0"
+ },
+ "type": "wordpress-plugin",
+ "homepage": "https://wordpress.org/plugins/classic-editor/"
+ },
+ {
+ "name": "wpackagist-plugin/classic-widgets",
+ "version": "0.3",
+ "source": {
+ "type": "svn",
+ "url": "https://plugins.svn.wordpress.org/classic-widgets/",
+ "reference": "tags/0.3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://downloads.wordpress.org/plugin/classic-widgets.0.3.zip"
+ },
+ "require": {
+ "composer/installers": "^1.0 || ^2.0"
+ },
+ "type": "wordpress-plugin",
+ "homepage": "https://wordpress.org/plugins/classic-widgets/"
+ },
+ {
+ "name": "wpackagist-plugin/elementor",
+ "version": "3.8.1",
+ "source": {
+ "type": "svn",
+ "url": "https://plugins.svn.wordpress.org/elementor/",
+ "reference": "tags/3.8.1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://downloads.wordpress.org/plugin/elementor.3.8.1.zip"
+ },
+ "require": {
+ "composer/installers": "^1.0 || ^2.0"
+ },
+ "type": "wordpress-plugin",
+ "homepage": "https://wordpress.org/plugins/elementor/"
+ },
+ {
+ "name": "wpackagist-plugin/html-forms",
+ "version": "1.3.26",
+ "source": {
+ "type": "svn",
+ "url": "https://plugins.svn.wordpress.org/html-forms/",
+ "reference": "tags/1.3.26"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://downloads.wordpress.org/plugin/html-forms.1.3.26.zip"
+ },
+ "require": {
+ "composer/installers": "^1.0 || ^2.0"
+ },
+ "type": "wordpress-plugin",
+ "homepage": "https://wordpress.org/plugins/html-forms/"
+ },
+ {
+ "name": "wpackagist-plugin/mb-relationships",
+ "version": "1.10.11",
+ "source": {
+ "type": "svn",
+ "url": "https://plugins.svn.wordpress.org/mb-relationships/",
+ "reference": "tags/1.10.11"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://downloads.wordpress.org/plugin/mb-relationships.1.10.11.zip"
+ },
+ "require": {
+ "composer/installers": "^1.0 || ^2.0"
+ },
+ "type": "wordpress-plugin",
+ "homepage": "https://wordpress.org/plugins/mb-relationships/"
+ },
+ {
+ "name": "wpackagist-plugin/meta-box",
+ "version": "5.6.9",
+ "source": {
+ "type": "svn",
+ "url": "https://plugins.svn.wordpress.org/meta-box/",
+ "reference": "tags/5.6.9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://downloads.wordpress.org/plugin/meta-box.5.6.9.zip"
+ },
+ "require": {
+ "composer/installers": "^1.0 || ^2.0"
+ },
+ "type": "wordpress-plugin",
+ "homepage": "https://wordpress.org/plugins/meta-box/"
+ },
+ {
+ "name": "wpackagist-plugin/post-types-order",
+ "version": "1.9.9.2",
+ "source": {
+ "type": "svn",
+ "url": "https://plugins.svn.wordpress.org/post-types-order/",
+ "reference": "tags/1.9.9.2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://downloads.wordpress.org/plugin/post-types-order.1.9.9.2.zip"
+ },
+ "require": {
+ "composer/installers": "^1.0 || ^2.0"
+ },
+ "type": "wordpress-plugin",
+ "homepage": "https://wordpress.org/plugins/post-types-order/"
+ },
+ {
+ "name": "wpackagist-plugin/updraftplus",
+ "version": "1.22.23",
+ "source": {
+ "type": "svn",
+ "url": "https://plugins.svn.wordpress.org/updraftplus/",
+ "reference": "tags/1.22.23"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://downloads.wordpress.org/plugin/updraftplus.1.22.23.zip"
+ },
+ "require": {
+ "composer/installers": "^1.0 || ^2.0"
+ },
+ "type": "wordpress-plugin",
+ "homepage": "https://wordpress.org/plugins/updraftplus/"
+ },
+ {
+ "name": "wpackagist-plugin/wp-migrate-db",
+ "version": "2.5.0",
+ "source": {
+ "type": "svn",
+ "url": "https://plugins.svn.wordpress.org/wp-migrate-db/",
+ "reference": "tags/2.5.0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://downloads.wordpress.org/plugin/wp-migrate-db.2.5.0.zip"
+ },
+ "require": {
+ "composer/installers": "^1.0 || ^2.0"
+ },
+ "type": "wordpress-plugin",
+ "homepage": "https://wordpress.org/plugins/wp-migrate-db/"
+ },
+ {
+ "name": "wpackagist-theme/twentytwentythree",
+ "version": "1.0",
+ "source": {
+ "type": "svn",
+ "url": "https://themes.svn.wordpress.org/twentytwentythree/",
+ "reference": "1.0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://downloads.wordpress.org/theme/twentytwentythree.1.0.zip"
+ },
+ "require": {
+ "composer/installers": "^1.0 || ^2.0"
+ },
+ "type": "wordpress-theme",
+ "homepage": "https://wordpress.org/themes/twentytwentythree/"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "roave/security-advisories",
+ "version": "dev-latest",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Roave/SecurityAdvisories.git",
+ "reference": "891ecbb72eac808c80fb97f2cce67824e94e5652"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/891ecbb72eac808c80fb97f2cce67824e94e5652",
+ "reference": "891ecbb72eac808c80fb97f2cce67824e94e5652",
+ "shasum": ""
+ },
+ "conflict": {
+ "3f/pygmentize": "<1.2",
+ "admidio/admidio": "<4.1.9",
+ "adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3",
+ "aheinze/cockpit": "<=2.2.1",
+ "akaunting/akaunting": "<2.1.13",
+ "alextselegidis/easyappointments": "<=1.4.3",
+ "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1",
+ "amazing/media2click": ">=1,<1.3.3",
+ "amphp/artax": "<1.0.6|>=2,<2.0.6",
+ "amphp/http": "<1.0.1",
+ "amphp/http-client": ">=4,<4.4",
+ "anchorcms/anchor-cms": "<=0.12.7",
+ "andreapollastri/cipi": "<=3.1.15",
+ "apereo/phpcas": "<1.6",
+ "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6",
+ "appwrite/server-ce": "<0.11.1|>=0.12,<0.12.2",
+ "area17/twill": "<1.2.5|>=2,<2.5.3",
+ "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99",
+ "awesome-support/awesome-support": "<=6.0.7",
+ "aws/aws-sdk-php": ">=3,<3.2.1",
+ "backdrop/backdrop": "<=1.23",
+ "badaso/core": "<2.7",
+ "bagisto/bagisto": "<0.1.5",
+ "barrelstrength/sprout-base-email": "<1.2.7",
+ "barrelstrength/sprout-forms": "<3.9",
+ "barryvdh/laravel-translation-manager": "<0.6.2",
+ "baserproject/basercms": "<=4.7.1",
+ "billz/raspap-webgui": "<=2.6.6",
+ "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3",
+ "bmarshall511/wordpress_zero_spam": "<5.2.13",
+ "bolt/bolt": "<3.7.2",
+ "bolt/core": "<=4.2",
+ "bottelet/flarepoint": "<2.2.1",
+ "brightlocal/phpwhois": "<=4.2.5",
+ "brotkrueml/codehighlight": "<2.7",
+ "brotkrueml/schema": "<1.13.1|>=2,<2.5.1",
+ "brotkrueml/typo3-matomo-integration": "<1.3.2",
+ "buddypress/buddypress": "<7.2.1",
+ "bugsnag/bugsnag-laravel": ">=2,<2.0.2",
+ "bytefury/crater": "<6.0.2",
+ "cachethq/cachet": "<2.5.1",
+ "cakephp/cakephp": "<3.10.3|>=4,<4.0.6",
+ "cardgate/magento2": "<2.0.33",
+ "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
+ "cartalyst/sentry": "<=2.1.6",
+ "catfan/medoo": "<1.7.5",
+ "centreon/centreon": "<22.10-beta.1",
+ "cesnet/simplesamlphp-module-proxystatistics": "<3.1",
+ "codeception/codeception": "<3.1.3|>=4,<4.1.22",
+ "codeigniter/framework": "<=3.0.6",
+ "codeigniter4/framework": "<4.2.7",
+ "codeigniter4/shield": "= 1.0.0-beta",
+ "codiad/codiad": "<=2.8.4",
+ "composer/composer": "<1.10.26|>=2-alpha.1,<2.2.12|>=2.3,<2.3.5",
+ "concrete5/concrete5": "<9.1.3|>= 9.0.0RC1, < 9.1.3",
+ "concrete5/core": "<8.5.8|>=9,<9.1",
+ "contao-components/mediaelement": ">=2.14.2,<2.21.1",
+ "contao/contao": ">=4,<4.4.56|>=4.5,<4.9.18|>=4.10,<4.11.7|>=4.13,<4.13.3",
+ "contao/core": ">=2,<3.5.39",
+ "contao/core-bundle": "<4.9.18|>=4.10,<4.11.7|>=4.13,<4.13.3|= 4.10.0",
+ "contao/listing-bundle": ">=4,<4.4.8",
+ "contao/managed-edition": "<=1.5",
+ "craftcms/cms": "<3.7.55.2|>= 4.0.0-RC1, < 4.2.1",
+ "croogo/croogo": "<3.0.7",
+ "cuyz/valinor": "<0.12",
+ "czproject/git-php": "<4.0.3",
+ "darylldoyle/safe-svg": "<1.9.10",
+ "datadog/dd-trace": ">=0.30,<0.30.2",
+ "david-garcia/phpwhois": "<=4.3.1",
+ "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1",
+ "directmailteam/direct-mail": "<5.2.4",
+ "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|>=3,<3.1.4",
+ "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|>=2.8.3,<2.8.4",
+ "dolibarr/dolibarr": "<16|>=16.0.1,<16.0.3|= 12.0.5|>= 3.3.beta1, < 13.0.2",
+ "dompdf/dompdf": "<2.0.1",
+ "drupal/core": ">=7,<7.91|>=8,<9.3.19|>=9.4,<9.4.3",
+ "drupal/drupal": ">=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4",
+ "dweeves/magmi": "<=0.7.24",
+ "ecodev/newsletter": "<=4",
+ "ectouch/ectouch": "<=2.7.2",
+ "elefant/cms": "<1.3.13",
+ "elgg/elgg": "<3.3.24|>=4,<4.0.5",
+ "endroid/qr-code-bundle": "<3.4.2",
+ "enshrined/svg-sanitize": "<0.15",
+ "erusev/parsedown": "<1.7.2",
+ "ether/logs": "<3.0.4",
+ "exceedone/exment": "<4.4.3|>=5,<5.0.3",
+ "exceedone/laravel-admin": "= 3.0.0|<2.2.3",
+ "ezsystems/demobundle": ">=5.4,<5.4.6.1",
+ "ezsystems/ez-support-tools": ">=2.2,<2.2.3",
+ "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.13.6|>=2,<=2.5.24",
+ "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26",
+ "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1",
+ "ezsystems/ezplatform-graphql": ">=1-rc.1,<1.0.13|>=2-beta.1,<2.3.12",
+ "ezsystems/ezplatform-kernel": "<=1.2.5|>=1.3,<1.3.26",
+ "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8",
+ "ezsystems/ezplatform-richtext": ">=2.3,<=2.3.7",
+ "ezsystems/ezplatform-user": ">=1,<1.0.1",
+ "ezsystems/ezpublish-kernel": "<=6.13.8.1|>=7,<7.5.30",
+ "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.3.5.1",
+ "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3",
+ "ezsystems/repository-forms": ">=2.3,<2.3.2.1|>=2.5,<2.5.15",
+ "ezyang/htmlpurifier": "<4.1.1",
+ "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2",
+ "facturascripts/facturascripts": "<=2022.8",
+ "feehi/cms": "<=2.1.1",
+ "feehi/feehicms": "<=2.0.1.1",
+ "fenom/fenom": "<=2.12.1",
+ "filegator/filegator": "<7.8",
+ "firebase/php-jwt": "<2",
+ "flarum/core": ">=1,<=1.0.1|>=1.5,<1.6.2",
+ "flarum/sticky": ">=0.1-beta.14,<=0.1-beta.15",
+ "flarum/tags": "<=0.1-beta.13",
+ "fluidtypo3/vhs": "<5.1.1",
+ "fof/byobu": ">=0.3-beta.2,<1.1.7",
+ "fof/upload": "<1.2.3",
+ "fooman/tcpdf": "<6.2.22",
+ "forkcms/forkcms": "<5.11.1",
+ "fossar/tcpdf-parser": "<6.2.22",
+ "francoisjacquet/rosariosis": "<10.1",
+ "friendsofsymfony/oauth2-php": "<1.3",
+ "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2",
+ "friendsofsymfony/user-bundle": ">=1.2,<1.3.5",
+ "friendsoftypo3/mediace": ">=7.6.2,<7.6.5",
+ "froala/wysiwyg-editor": "<3.2.7",
+ "froxlor/froxlor": "<0.10.39",
+ "fuel/core": "<1.8.1",
+ "gaoming13/wechat-php-sdk": "<=1.10.2",
+ "genix/cms": "<=1.1.11",
+ "getgrav/grav": "<1.7.34",
+ "getkirby/cms": "= 3.8.0|<3.5.8.2|>=3.6,<3.6.6.2|>=3.7,<3.7.5.1",
+ "getkirby/panel": "<2.5.14",
+ "getkirby/starterkit": "<=3.7.0.2",
+ "gilacms/gila": "<=1.11.4",
+ "globalpayments/php-sdk": "<2",
+ "google/protobuf": "<3.15",
+ "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3",
+ "gree/jose": "<=2.2",
+ "gregwar/rst": "<1.0.3",
+ "grumpydictator/firefly-iii": "<5.6.5",
+ "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5",
+ "guzzlehttp/psr7": "<1.8.4|>=2,<2.1.1",
+ "helloxz/imgurl": "= 2.31|<=2.31",
+ "hillelcoren/invoice-ninja": "<5.3.35",
+ "hjue/justwriting": "<=1",
+ "hov/jobfair": "<1.0.13|>=2,<2.0.2",
+ "hyn/multi-tenant": ">=5.6,<5.7.2",
+ "ibexa/admin-ui": ">=4.2,<4.2.3",
+ "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3",
+ "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3",
+ "ibexa/post-install": "<=1.0.4",
+ "icecoder/icecoder": "<=8.1",
+ "idno/known": "<=1.3.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.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4",
+ "illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40",
+ "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": "<6.20.42|>=7,<7.30.6|>=8,<8.75",
+ "impresscms/impresscms": "<=1.4.3",
+ "in2code/femanager": "<5.5.2|>=6,<6.3.3|>=7,<7.0.1",
+ "in2code/lux": "<17.6.1|>=18,<24.0.2",
+ "intelliants/subrion": "<=4.2.1",
+ "islandora/islandora": ">=2,<2.4.1",
+ "ivankristianto/phpwhois": "<=4.3",
+ "jackalope/jackalope-doctrine-dbal": "<1.7.4",
+ "james-heinrich/getid3": "<1.9.21",
+ "jasig/phpcas": "<1.3.3",
+ "joomla/archive": "<1.1.12|>=2,<2.0.1",
+ "joomla/filesystem": "<1.6.2|>=2,<2.0.1",
+ "joomla/filter": "<1.4.4|>=2,<2.0.1",
+ "joomla/input": ">=2,<2.0.2",
+ "joomla/session": "<1.3.1",
+ "joyqi/hyper-down": "<=2.4.27",
+ "jsdecena/laracom": "<2.0.9",
+ "jsmitty12/phpwhois": "<5.1",
+ "kazist/phpwhois": "<=4.2.6",
+ "kevinpapst/kimai2": "<1.16.7",
+ "kitodo/presentation": "<3.1.2",
+ "klaviyo/magento2-extension": ">=1,<3",
+ "krayin/laravel-crm": "<1.2.2",
+ "kreait/firebase-php": ">=3.2,<3.8.1",
+ "la-haute-societe/tcpdf": "<6.2.22",
+ "laminas/laminas-diactoros": "<2.11.1",
+ "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1",
+ "laminas/laminas-http": "<2.14.2",
+ "laravel/fortify": "<1.11.1",
+ "laravel/framework": "<6.20.42|>=7,<7.30.6|>=8,<8.75",
+ "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10",
+ "latte/latte": "<2.10.8",
+ "lavalite/cms": "<=5.8",
+ "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5",
+ "league/commonmark": "<0.18.3",
+ "league/flysystem": "<1.1.4|>=2,<2.1.1",
+ "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3",
+ "librenms/librenms": "<22.10",
+ "limesurvey/limesurvey": "<3.27.19",
+ "livehelperchat/livehelperchat": "<=3.91",
+ "livewire/livewire": ">2.2.4,<2.2.6",
+ "lms/routes": "<2.1.1",
+ "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2",
+ "luyadev/yii-helpers": "<1.2.1",
+ "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",
+ "marcwillmann/turn": "<0.3.3",
+ "matyhtf/framework": "<3.0.6",
+ "mautic/core": "<4.3|= 2.13.1",
+ "mediawiki/core": ">=1.27,<1.27.6|>=1.29,<1.29.3|>=1.30,<1.30.2|>=1.31,<1.31.9|>=1.32,<1.32.6|>=1.32.99,<1.33.3|>=1.33.99,<1.34.3|>=1.34.99,<1.35",
+ "melisplatform/melis-asset-manager": "<5.0.1",
+ "melisplatform/melis-cms": "<5.0.1",
+ "melisplatform/melis-front": "<5.0.1",
+ "mezzio/mezzio-swoole": "<3.7|>=4,<4.3",
+ "microweber/microweber": "<=1.3.1",
+ "miniorange/miniorange-saml": "<1.4.3",
+ "mittwald/typo3_forum": "<1.2.1",
+ "modx/revolution": "<= 2.8.3-pl|<2.8",
+ "mojo42/jirafeau": "<4.4",
+ "monolog/monolog": ">=1.8,<1.12",
+ "moodle/moodle": "<4.0.5",
+ "mustache/mustache": ">=2,<2.14.1",
+ "namshi/jose": "<2.2",
+ "neoan3-apps/template": "<1.1.1",
+ "neorazorx/facturascripts": "<2022.4",
+ "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6",
+ "neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3",
+ "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.9.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2",
+ "neos/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5",
+ "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15",
+ "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6",
+ "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13",
+ "nilsteampassnet/teampass": "<=2.1.27.36",
+ "notrinos/notrinos-erp": "<=0.7",
+ "noumo/easyii": "<=0.9",
+ "nukeviet/nukeviet": "<4.5.2",
+ "nystudio107/craft-seomatic": "<3.4.12",
+ "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1",
+ "october/backend": "<1.1.2",
+ "october/cms": "= 1.1.1|= 1.0.471|= 1.0.469|>=1.0.319,<1.0.469",
+ "october/october": ">=1.0.319,<1.0.466|>=2.1,<2.1.12",
+ "october/rain": "<1.0.472|>=1.1,<1.1.2",
+ "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.0.66",
+ "onelogin/php-saml": "<2.10.4",
+ "oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5",
+ "open-web-analytics/open-web-analytics": "<1.7.4",
+ "opencart/opencart": "<=3.0.3.7",
+ "openid/php-openid": "<2.3",
+ "openmage/magento-lts": "<19.4.15|>=20,<20.0.13",
+ "orchid/platform": ">=9,<9.4.4",
+ "oro/commerce": ">=4.1,<5.0.6",
+ "oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7",
+ "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<4.2.8",
+ "packbackbooks/lti-1-3-php-library": "<5",
+ "padraic/humbug_get_contents": "<1.1.2",
+ "pagarme/pagarme-php": ">=0,<3",
+ "pagekit/pagekit": "<=1.0.18",
+ "paragonie/random_compat": "<2",
+ "passbolt/passbolt_api": "<2.11",
+ "paypal/merchant-sdk-php": "<3.12",
+ "pear/archive_tar": "<1.4.14",
+ "pear/crypt_gpg": "<1.6.7",
+ "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1",
+ "personnummer/personnummer": "<3.0.2",
+ "phanan/koel": "<5.1.4",
+ "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7",
+ "phpmailer/phpmailer": "<6.5",
+ "phpmussel/phpmussel": ">=1,<1.6",
+ "phpmyadmin/phpmyadmin": "<5.1.3",
+ "phpmyfaq/phpmyfaq": "<=3.1.7",
+ "phpoffice/phpexcel": "<1.8",
+ "phpoffice/phpspreadsheet": "<1.16",
+ "phpseclib/phpseclib": "<2.0.31|>=3,<3.0.7",
+ "phpservermon/phpservermon": "<=3.5.2",
+ "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5,<5.6.3",
+ "phpwhois/phpwhois": "<=4.2.5",
+ "phpxmlrpc/extras": "<0.6.1",
+ "phpxmlrpc/phpxmlrpc": "<4.9",
+ "pimcore/data-hub": "<1.2.4",
+ "pimcore/pimcore": "<10.5.9",
+ "pocketmine/bedrock-protocol": "<8.0.2",
+ "pocketmine/pocketmine-mp": "<4.7.2|>= 4.0.0-BETA5, < 4.4.2",
+ "pressbooks/pressbooks": "<5.18",
+ "prestashop/autoupgrade": ">=4,<4.10.1",
+ "prestashop/blockwishlist": ">=2,<2.1.1",
+ "prestashop/contactform": ">=1.0.1,<4.3",
+ "prestashop/gamification": "<2.3.2",
+ "prestashop/prestashop": ">=1.6.0.10,<1.7.8.7",
+ "prestashop/productcomments": "<5.0.2",
+ "prestashop/ps_emailsubscription": "<2.6.1",
+ "prestashop/ps_facetedsearch": "<3.4.1",
+ "prestashop/ps_linklist": "<3.1",
+ "privatebin/privatebin": "<1.4",
+ "processwire/processwire": "<=3.0.200",
+ "propel/propel": ">=2-alpha.1,<=2-alpha.7",
+ "propel/propel1": ">=1,<=1.7.1",
+ "pterodactyl/panel": "<1.7",
+ "ptrofimov/beanstalk_console": "<1.7.14",
+ "pusher/pusher-php-server": "<2.2.1",
+ "pwweb/laravel-core": "<=0.3.6-beta",
+ "rainlab/debugbar-plugin": "<3.1",
+ "rankmath/seo-by-rank-math": "<=1.0.95",
+ "react/http": ">=0.7,<1.7",
+ "remdex/livehelperchat": "<3.99",
+ "rmccue/requests": ">=1.6,<1.8",
+ "robrichards/xmlseclibs": "<3.0.4",
+ "rudloff/alltube": "<3.0.3",
+ "s-cart/core": "<6.9",
+ "s-cart/s-cart": "<6.9",
+ "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1",
+ "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/core": "<=6.4.9",
+ "shopware/platform": "<=6.4.9",
+ "shopware/production": "<=6.3.5.2",
+ "shopware/shopware": "<=5.7.14",
+ "shopware/storefront": "<=6.4.8.1",
+ "shopxo/shopxo": "<2.2.6",
+ "showdoc/showdoc": "<2.10.4",
+ "silverstripe/admin": ">=1,<1.11.3",
+ "silverstripe/assets": ">=1,<1.11.1",
+ "silverstripe/cms": "<4.11.3",
+ "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.11.14",
+ "silverstripe/graphql": "<3.5.2|>=4-alpha.1,<4-alpha.2|= 4.0.0-alpha1",
+ "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1",
+ "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1",
+ "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4",
+ "silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1",
+ "silverstripe/subsites": ">=2,<2.1.1",
+ "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1",
+ "silverstripe/userforms": "<3",
+ "silverstripe/versioned-admin": ">=1,<1.11.1",
+ "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.47|>=4,<4.2.1",
+ "snipe/snipe-it": "<6.0.11|>= 6.0.0-RC-1, <= 6.0.0-RC-5",
+ "socalnick/scn-social-auth": "<1.15.2",
+ "socialiteproviders/steam": "<1.1",
+ "spatie/browsershot": "<3.57.4",
+ "spipu/html2pdf": "<5.2.4",
+ "spoonity/tcpdf": "<6.2.22",
+ "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
+ "ssddanbrown/bookstack": "<22.2.3",
+ "statamic/cms": "<3.2.39|>=3.3,<3.3.2",
+ "stormpath/sdk": ">=0,<9.9.99",
+ "studio-42/elfinder": "<2.1.59",
+ "subrion/cms": "<=4.2.1",
+ "sulu/sulu": "= 2.4.0-RC1|<1.6.44|>=2,<2.2.18|>=2.3,<2.3.8",
+ "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.10.1",
+ "sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1",
+ "sylius/resource-bundle": "<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4",
+ "sylius/sylius": "<1.9.10|>=1.10,<1.10.11|>=1.11,<1.11.2",
+ "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99",
+ "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4",
+ "symbiote/silverstripe-versionedfiles": "<=2.0.3",
+ "symfont/process": ">=0,<4",
+ "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|>=5.3.14,<=5.3.14|>=5.4.3,<=5.4.3|>=6.0.3,<=6.0.3|= 6.0.3|= 5.4.3|= 5.3.14",
+ "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.4.13|>=5,<5.1.5|>=5.2,<5.3.12",
+ "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13",
+ "symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1",
+ "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,<3.4.49|>=4,<4.4.24|>=5,<5.2.8",
+ "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|>=5.3,<5.3.12",
+ "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9",
+ "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,<3.4.48|>=4,<4.4.23|>=5,<5.2.8",
+ "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|>=5.1,<5.2.8|>=5.3,<5.3.2",
+ "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12",
+ "symfony/symfony": ">=2,<3.4.49|>=4,<4.4.35|>=5,<5.3.12|>=5.3.14,<=5.3.14|>=5.4.3,<=5.4.3|>=6.0.3,<=6.0.3",
+ "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",
+ "t3/dce": ">=2.2,<2.6.2",
+ "t3g/svg-sanitizer": "<1.0.3",
+ "tastyigniter/tastyigniter": "<3.3",
+ "tecnickcom/tcpdf": "<6.2.22",
+ "terminal42/contao-tablelookupwizard": "<3.3.5",
+ "thelia/backoffice-default-template": ">=2.1,<2.1.2",
+ "thelia/thelia": ">=2.1-beta.1,<2.1.3",
+ "theonedemon/phpwhois": "<=4.2.5",
+ "thinkcmf/thinkcmf": "<=5.1.7",
+ "thorsten/phpmyfaq": "<3.1.8",
+ "tinymce/tinymce": "<5.10",
+ "titon/framework": ">=0,<9.9.99",
+ "tobiasbg/tablepress": "<= 2.0-RC1",
+ "topthink/framework": "<=6.0.13",
+ "topthink/think": "<=6.0.9",
+ "topthink/thinkphp": "<=3.2.3",
+ "tribalsystems/zenario": "<=9.3.57186",
+ "truckersmp/phpwhois": "<=4.3.1",
+ "twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3",
+ "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.38|>=9,<9.5.29|>=10,<10.4.32|>=11,<11.5.16",
+ "typo3/cms-backend": ">=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
+ "typo3/cms-core": ">=6.2,<=6.2.56|>=7,<7.6.58|>=8,<8.7.48|>=9,<9.5.37|>=10,<10.4.32|>=11,<11.5.16",
+ "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
+ "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6",
+ "typo3/html-sanitizer": ">=1,<1.0.7|>=2,<2.0.16",
+ "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3",
+ "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1",
+ "typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5",
+ "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10",
+ "ua-parser/uap-php": "<3.8",
+ "unisharp/laravel-filemanager": "<=2.5.1",
+ "userfrosting/userfrosting": ">=0.3.1,<4.6.3",
+ "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2",
+ "vanilla/safecurl": "<0.9.2",
+ "verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4",
+ "vrana/adminer": "<4.8.1",
+ "wallabag/tcpdf": "<6.2.22",
+ "wanglelecc/laracms": "<=1.0.3",
+ "web-auth/webauthn-framework": ">=3.3,<3.3.4",
+ "webcoast/deferred-image-processing": "<1.0.2",
+ "wikimedia/parsoid": "<0.12.2",
+ "willdurand/js-translation-bundle": "<2.1.1",
+ "wintercms/winter": "<1.0.475|>=1.1,<1.1.10|>=1.2,<1.2.1",
+ "woocommerce/woocommerce": "<6.6",
+ "wp-cli/wp-cli": "<2.5",
+ "wp-graphql/wp-graphql": "<0.3.5",
+ "wpanel/wpanel4-cms": "<=4.3.1",
+ "wwbn/avideo": "<=11.6",
+ "yeswiki/yeswiki": "<4.1",
+ "yetiforce/yetiforce-crm": "<=6.4",
+ "yidashi/yii2cmf": "<=2",
+ "yii2mod/yii2-cms": "<1.9.2",
+ "yiisoft/yii": "<1.1.27",
+ "yiisoft/yii2": "<2.0.38",
+ "yiisoft/yii2-bootstrap": "<2.0.4",
+ "yiisoft/yii2-dev": "<2.0.43",
+ "yiisoft/yii2-elasticsearch": "<2.0.5",
+ "yiisoft/yii2-gii": "<2.0.4",
+ "yiisoft/yii2-jui": "<2.0.4",
+ "yiisoft/yii2-redis": "<2.0.8",
+ "yoast-seo-for-typo3/yoast_seo": "<7.2.3",
+ "yourls/yourls": "<=1.8.2",
+ "zendesk/zendesk_api_client_php": "<2.2.11",
+ "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.8.4",
+ "zendframework/zend-feed": "<2.10.3",
+ "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1",
+ "zendframework/zend-http": "<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": "<=3",
+ "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",
+ "zoujingli/thinkadmin": "<6.0.22"
+ },
+ "default-branch": true,
+ "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",
+ "support": {
+ "issues": "https://github.com/Roave/SecurityAdvisories/issues",
+ "source": "https://github.com/Roave/SecurityAdvisories/tree/latest"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Ocramius",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-12-02T23:04:13+00:00"
+ },
+ {
+ "name": "squizlabs/php_codesniffer",
+ "version": "3.7.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+ "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619",
+ "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619",
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
+ "source": "https://github.com/squizlabs/PHP_CodeSniffer",
+ "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
+ },
+ "time": "2022-06-18T07:21:10+00:00"
+ },
+ {
+ "name": "wpackagist-plugin/query-monitor",
+ "version": "3.10.1",
+ "source": {
+ "type": "svn",
+ "url": "https://plugins.svn.wordpress.org/query-monitor/",
+ "reference": "tags/3.10.1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://downloads.wordpress.org/plugin/query-monitor.3.10.1.zip"
+ },
+ "require": {
+ "composer/installers": "^1.0 || ^2.0"
+ },
+ "type": "wordpress-plugin",
+ "homepage": "https://wordpress.org/plugins/query-monitor/"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "dev",
+ "stability-flags": {
+ "roave/security-advisories": 20
+ },
+ "prefer-stable": true,
+ "prefer-lowest": false,
+ "platform": {
+ "php": ">=7.4",
+ "ext-json": "*"
+ },
+ "platform-dev": [],
+ "plugin-api-version": "2.1.0"
+}
diff --git a/config/application.php b/config/application.php
new file mode 100644
index 0000000..e20fbd5
--- /dev/null
+++ b/config/application.php
@@ -0,0 +1,145 @@
+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', false);
+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', false);
+// Limit the number of post revisions that Wordpress stores (true (default WP): store every revision)
+Config::define('WP_POST_REVISIONS', env('WP_POST_REVISIONS') ?: true);
+
+/**
+ * Debugging Settings
+ */
+Config::define('WP_DEBUG_DISPLAY', false);
+Config::define('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';
+}
+
+
+/**
+ * News Feed API Settings
+ */
+Config::define('NEWS_API_ENDPOINT', env('NEWS_API_ENDPOINT'));
+Config::define('NEWS_API_KEY', env('NEWS_API_KEY'));
+
+
+$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 0000000..8706398
--- /dev/null
+++ b/config/environments/development.php
@@ -0,0 +1,20 @@
+
+
+ Roots Coding Standards
+
+
+ .
+
+
+
+
+
+ web/wp
+ web/app/themes/twentytwentytwo/
+ vendor/
+ web/app/mu-plugins/cube/
+
+
+
+
+
+
+
+
+
+
diff --git a/web/app/mu-plugins/bedrock-autoloader.php b/web/app/mu-plugins/bedrock-autoloader.php
new file mode 100644
index 0000000..646f4a8
--- /dev/null
+++ b/web/app/mu-plugins/bedrock-autoloader.php
@@ -0,0 +1,16 @@
+=5.5"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "^4.4 || ^5.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.5-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions_include.php"
+ ],
+ "psr-4": {
+ "GuzzleHttp\\Promise\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "Guzzle promises library",
+ "keywords": [
+ "promise"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/promises/issues",
+ "source": "https://github.com/guzzle/promises/tree/1.5.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-08-28T14:55:35+00:00"
+ },
+ {
+ "name": "guzzlehttp/psr7",
+ "version": "2.4.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/psr7.git",
+ "reference": "67c26b443f348a51926030c83481b85718457d3d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d",
+ "reference": "67c26b443f348a51926030c83481b85718457d3d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-factory": "^1.0",
+ "psr/http-message": "^1.0",
+ "ralouphie/getallheaders": "^3.0"
+ },
+ "provide": {
+ "psr/http-factory-implementation": "1.0",
+ "psr/http-message-implementation": "1.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.8.1",
+ "http-interop/http-factory-tests": "^0.9",
+ "phpunit/phpunit": "^8.5.29 || ^9.5.23"
+ },
+ "suggest": {
+ "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
+ },
+ "type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ },
+ "branch-alias": {
+ "dev-master": "2.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Psr7\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://github.com/sagikazarmark"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://sagikazarmark.hu"
+ }
+ ],
+ "description": "PSR-7 message implementation that also provides common utility methods",
+ "keywords": [
+ "http",
+ "message",
+ "psr-7",
+ "request",
+ "response",
+ "stream",
+ "uri",
+ "url"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/psr7/issues",
+ "source": "https://github.com/guzzle/psr7/tree/2.4.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-10-26T14:07:24+00:00"
+ },
+ {
+ "name": "htmlburger/carbon-fields",
+ "version": "v3.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/htmlburger/carbon-fields.git",
+ "reference": "2ae6773c004b873a1b0456613b14852c1a436a96"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/htmlburger/carbon-fields/zipball/2ae6773c004b873a1b0456613b14852c1a436a96",
+ "reference": "2ae6773c004b873a1b0456613b14852c1a436a96",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9.7",
+ "phpunit/phpunit": "~4.8"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Carbon_Fields\\": "core/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-2.0-only"
+ ],
+ "authors": [
+ {
+ "name": "htmlBurger",
+ "email": "wordpress@htmlburger.com",
+ "homepage": "https://htmlburger.com/",
+ "role": "Developer"
+ },
+ {
+ "name": "Miroslav Mitev",
+ "email": "mmitev.2create@gmail.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Atanas Angelov",
+ "email": "atanas.angelov.dev@gmail.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Georgi Stoyanov",
+ "email": "stoyanov.gs@gmail.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Plamen Kostadinov",
+ "email": "pkostadinov.2create@gmail.com",
+ "homepage": "http://plasmen.info/",
+ "role": "Developer"
+ },
+ {
+ "name": "Stanimir Panchev",
+ "email": "Stan4omir@gmail.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Marin Atanasov",
+ "email": "contact@marinatanasov.com",
+ "homepage": "http://marinatanasov.com/",
+ "role": "Developer"
+ },
+ {
+ "name": "Siyan Panayotov",
+ "homepage": "http://siyanpanayotov.com/",
+ "role": "Developer"
+ },
+ {
+ "name": "Peter Petrov",
+ "email": "peter.petrov89@gmail.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Stanimir Stoyanov",
+ "email": "stanimir.k.stoyanov@gmail.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Kaloyan Ivanov",
+ "email": "kaloyanxivanov@gmail.com",
+ "homepage": "http://vilepixels.com/",
+ "role": "Developer"
+ },
+ {
+ "name": "Georgi Popov",
+ "homepage": "http://magadanski.com/",
+ "role": "Developer"
+ },
+ {
+ "name": "German Velchev",
+ "email": "germozy@gmail.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Rashko Petrov",
+ "email": "brutalenemy666@gmail.com",
+ "homepage": "http://errorfactory.com/",
+ "role": "Developer"
+ },
+ {
+ "name": "Alexander Panayotov",
+ "email": "alexander.panayotov@gmail.com",
+ "homepage": "http://alexanderpanayotov.com/",
+ "role": "Developer"
+ },
+ {
+ "name": "Viktor Vasilev",
+ "email": "liberalcho@gmail.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Georgi Georgiev",
+ "email": "george.georgiev96@gmail.com",
+ "role": "Developer"
+ },
+ {
+ "name": "Atanas Vasilev",
+ "email": "atanasvasilev91@gmail.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "WordPress developer-friendly custom fields for post types, taxonomy terms, users, comments, widgets, options and more.",
+ "homepage": "http://carbonfields.net/",
+ "support": {
+ "docs": "http://carbonfields.net/docs/",
+ "email": "wordpress@htmlburger.com",
+ "issues": "https://github.com/htmlburger/carbon-fields/issues",
+ "source": "https://github.com/htmlburger/carbon-fields"
+ },
+ "time": "2022-05-05T14:49:59+00:00"
+ },
+ {
+ "name": "jjgrainger/posttypes",
+ "version": "v2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/jjgrainger/PostTypes.git",
+ "reference": "20f5a203316783a71ddfcd047ffebf1dc2bacb51"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/jjgrainger/PostTypes/zipball/20f5a203316783a71ddfcd047ffebf1dc2bacb51",
+ "reference": "20f5a203316783a71ddfcd047ffebf1dc2bacb51",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "8.*",
+ "squizlabs/php_codesniffer": "3.*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "PostTypes\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Joe Grainger",
+ "homepage": "https://jjgrainger.co.uk"
+ }
+ ],
+ "description": "Simple WordPress custom post types.",
+ "homepage": "https://posttypes.jjgrainger.co.uk",
+ "keywords": [
+ "post-types",
+ "wordpress"
+ ],
+ "support": {
+ "issues": "https://github.com/jjgrainger/posttypes/issues",
+ "source": "https://github.com/jjgrainger/posttypes"
+ },
+ "time": "2022-05-21T14:15:12+00:00"
+ },
+ {
+ "name": "psr/http-client",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-client.git",
+ "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
+ "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0 || ^8.0",
+ "psr/http-message": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Client\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP clients",
+ "homepage": "https://github.com/php-fig/http-client",
+ "keywords": [
+ "http",
+ "http-client",
+ "psr",
+ "psr-18"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-client/tree/master"
+ },
+ "time": "2020-06-29T06:28:15+00:00"
+ },
+ {
+ "name": "psr/http-factory",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-factory.git",
+ "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
+ "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0.0",
+ "psr/http-message": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for PSR-7 HTTP message factories",
+ "keywords": [
+ "factory",
+ "http",
+ "message",
+ "psr",
+ "psr-17",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-factory/tree/master"
+ },
+ "time": "2019-04-30T12:38:16+00:00"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-message/tree/master"
+ },
+ "time": "2016-08-06T14:39:51+00:00"
+ },
+ {
+ "name": "ralouphie/getallheaders",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ralouphie/getallheaders.git",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.1",
+ "phpunit/phpunit": "^5 || ^6.5"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/getallheaders.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ralph Khattar",
+ "email": "ralph.khattar@gmail.com"
+ }
+ ],
+ "description": "A polyfill for getallheaders.",
+ "support": {
+ "issues": "https://github.com/ralouphie/getallheaders/issues",
+ "source": "https://github.com/ralouphie/getallheaders/tree/develop"
+ },
+ "time": "2019-03-08T08:55:37+00:00"
+ },
+ {
+ "name": "sivka/paginator",
+ "version": "2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/alexSivka/php-paginator.git",
+ "reference": "a982f625398bd5d1a6062ffef8d9c636fcfddd8a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/alexSivka/php-paginator/zipball/a982f625398bd5d1a6062ffef8d9c636fcfddd8a",
+ "reference": "a982f625398bd5d1a6062ffef8d9c636fcfddd8a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Sivka": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jason Grimes",
+ "email": "jason@grimesit.com"
+ },
+ {
+ "name": "alexSivka"
+ }
+ ],
+ "description": "bootstrap-4 fork of jasongrimes/php-paginator, a lightweight PHP paginator, for generating pagination controls in the style of Stack Overflow and Flickr. The 'first' and 'last' page links are shown inline as page numbers, and excess page numbers are replaced by ellipses.",
+ "homepage": "http://github.com/sivka/php-paginator",
+ "keywords": [
+ "pager",
+ "pagination",
+ "paginator"
+ ],
+ "support": {
+ "issues": "https://github.com/alexSivka/php-paginator/issues",
+ "source": "https://github.com/alexSivka/php-paginator/tree/2.1.0"
+ },
+ "time": "2020-07-26T10:44:33+00:00"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918",
+ "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.1-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.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": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.1.1"
+ },
+ "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": "2022-02-25T11:15:52+00:00"
+ }
+ ],
+ "packages-dev": [],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": [],
+ "platform-dev": [],
+ "plugin-api-version": "2.1.0"
+}
diff --git a/web/app/mu-plugins/cube/src/CPT/Expertise.php b/web/app/mu-plugins/cube/src/CPT/Expertise.php
new file mode 100644
index 0000000..4b0762d
--- /dev/null
+++ b/web/app/mu-plugins/cube/src/CPT/Expertise.php
@@ -0,0 +1,143 @@
+ 'expertise', // Internal name of the custom post type
+ 'slug' => 'expertise', // Base URL slug for custom post type pages
+ 'singular' => 'Expertise',
+ 'plural' => 'Expertises',
+ ];
+
+ public static $categories = [ // The category names used to separate the types of services
+ 'business' => 'Business',
+ 'personal' => 'Personnelle',
+ ];
+
+ protected $expertise; // Holds the custom post type object once registered
+
+ public function register() {
+ $this->custom_post_type();
+ $this->custom_post_fields();
+ $this->custom_admin_columns();
+
+ // Many-to-many relationship with staff custom post type:
+ // --> see setup_relationships() function in CPT\Staff class.
+ }
+
+ // Create the Expertise custom post type
+ // Ref: https://posttypes.jjgrainger.co.uk/post-types/create-a-post-type
+ public function custom_post_type() {
+
+ $this->expertise = new PostType(static::$post_type);
+
+ // Set options for the post type
+ // https://posttypes.jjgrainger.co.uk/post-types/create-a-post-type#set-options
+ $this->expertise->options([
+ 'enter_title_here' => __("Titre de l'expertise", 'cube'),
+ 'menu_icon' => 'dashicons-admin-network',
+ 'show_in_rest' => false,
+ 'has_archive' => false,
+
+ // Not using the editor (post_content) or featured image because we have custom fields
+ // for these. As nice as it would be to use the built-in fields, we don't have enough
+ // control over them to properly integrate with the other custom fields.
+ // Note: in the future, if the "post_content" field needs to be populated for some
+ // reason (eg. compatibility with other plugins), it can be migrated.
+ // See: https://wordpress.stackexchange.com/a/338866
+ 'supports' => ['title'],
+
+ // Don't use main permalink base (/actualites/...)
+ // Ref: https://stackoverflow.com/a/15619416
+ // 'rewrite' => [
+ // 'with_front' => false
+ // ],
+
+ ]);
+
+ // Set custom labels
+ // https://posttypes.jjgrainger.co.uk/post-types/create-a-post-type#set-labels
+ $this->expertise->labels([
+ 'menu_name' => 'Expertises',
+ 'all_items' => 'Expertises',
+ 'add_new' => "Ajouter une nouvelle",
+ 'add_new_item' => "Nouvelle expertise",
+ ]);
+
+
+ // Setup custom admin columns
+ $this->custom_admin_columns(); // Needs to be called before registering post type
+
+ // Finally, register the custom post type with WordPress
+ $this->expertise->register();
+ }
+
+ // Set up custom fields using Carbon Fields
+ // Ref: https://docs.carbonfields.net/learn/fields/usage.html
+ public function custom_post_fields() {
+ // Define custom fields for Realisation post type using Carbon Fields
+ add_action('carbon_fields_register_fields', function() {
+
+ Container::make('post_meta', __("Détails", 'cube'))
+ ->where('post_type', '=', static::$post_type['name'])
+ ->set_context('carbon_fields_after_title')
+ ->add_fields([
+
+ Field::make('select', 'category', __("Catégorie d'expertise"))
+ ->add_options(['' => __('(veuillez sélectionner)')] + static::$categories)
+ ->set_required(),
+
+ Field::make('textarea', 'intro', __("Texte d'introduction", 'cube'))
+ ->set_required()
+ ->set_rows(2),
+
+ Field::make('rich_text', 'description', __('Description', 'cube'))
+ ->set_required(),
+
+ Field::make('complex', 'services', __( 'Liste des services' ) )
+ ->add_fields([
+ Field::make( 'text', 'detail', __('Détails')),
+ ])
+ ->set_header_template('<%= detail %>')
+ ->set_collapsed(true),
+
+ ]);
+ });
+ }
+
+ // Set custom admin columns
+ // Ref: https://posttypes.jjgrainger.co.uk/post-types/columns
+ public function custom_admin_columns() {
+
+ $columns = $this->expertise->columns();
+
+ $columns->add([
+ 'category' => __("Catégorie d'expertise"),
+ ]);
+
+ $columns->order([
+ 'category' => 2,
+ ]);
+
+ // https://posttypes.jjgrainger.co.uk/post-types/columns#sortable-columns
+ $columns->sortable([
+ 'category' => ['_category', false],
+ ]);
+
+ //== Populate newly added columns
+
+ // Status column
+ $columns->populate('category', function ($column, $post_id) {
+ $category = carbon_get_post_meta($post_id, 'category');
+ echo static::$categories[$category] ?? 'â';
+ });
+
+ }
+
+}
diff --git a/web/app/mu-plugins/cube/src/CPT/Staff.php b/web/app/mu-plugins/cube/src/CPT/Staff.php
new file mode 100644
index 0000000..fec4263
--- /dev/null
+++ b/web/app/mu-plugins/cube/src/CPT/Staff.php
@@ -0,0 +1,190 @@
+ 'staff', // Internal name of the custom post type
+ 'slug' => 'equipe', // Base URL slug for custom post type pages
+ 'singular' => "Membre de l'équipe",
+ 'plural' => "Membres de l'équipe",
+ ];
+
+ protected $title_placeholder = "Nom du membre de l'équipe"; // Custom title placeholder on add page
+
+ protected $staff; // Holds the custom post type object once registered
+
+ public function register() {
+ $this->custom_post_type();
+ $this->custom_post_fields();
+ $this->setup_relationships();
+ }
+
+ // Create the Staff custom post type
+ // Ref: https://posttypes.jjgrainger.co.uk/post-types/create-a-post-type
+ public function custom_post_type() {
+
+ $this->staff = new PostType(static::$post_type);
+
+ // Set options for the post type
+ // https://posttypes.jjgrainger.co.uk/post-types/create-a-post-type#set-options
+ $this->staff->options([
+ 'menu_icon' => 'dashicons-id-alt',
+ 'show_in_rest' => false,
+ 'has_archive' => false,
+
+ // Not using the editor (post_content) or featured image because we have custom fields
+ // for these. As nice as it would be to use the built-in fields, we don't have enough
+ // control over them to properly integrate with the other custom fields.
+ // Note: in the future, if the "post_content" field needs to be populated for some
+ // reason (eg. compatibility with other plugins), it can be migrated.
+ // See: https://wordpress.stackexchange.com/a/338866
+ 'supports' => ['title'],
+
+ // Don't use main permalink base (/actualites/...)
+ // Ref: https://stackoverflow.com/a/15619416
+ // 'rewrite' => [
+ // 'with_front' => false
+ // ],
+
+ ]);
+
+ // Set custom labels
+ // https://posttypes.jjgrainger.co.uk/post-types/create-a-post-type#set-labels
+ $this->staff->labels([
+ 'menu_name' => 'Ãquipe',
+ 'all_items' => 'Membres',
+ 'add_new' => "Ajouter un nouveau",
+ 'add_new_item' => "Nouveau membre de l'équipe",
+ ]);
+
+ // Set title placeholder text
+ if (is_admin()) {
+ add_filter('enter_title_here', function($title) {
+ if (static::$post_type['name'] !== get_post_type()) {
+ return $title; // Only change title for this custom post type
+ }
+
+ return $this->title_placeholder;
+ });
+ }
+
+ // Setup custom admin columns
+ $this->custom_admin_columns(); // Needs to be called before registering post type
+
+ // Finally, register the custom post type with WordPress
+ $this->staff->register();
+ }
+
+ // Set up custom fields using Carbon Fields
+ // Ref: https://docs.carbonfields.net/learn/fields/usage.html
+ public function custom_post_fields() {
+ // Define custom fields for Realisation post type using Carbon Fields
+ add_action('carbon_fields_register_fields', function() {
+
+ Container::make('post_meta', __('Détails', 'cube'))
+ ->where('post_type', '=', static::$post_type['name'])
+ ->set_context('carbon_fields_after_title')
+ ->add_fields([
+
+ Field::make('image', 'photo', __('Photo', 'cube'))
+ ->set_width(15),
+
+ Field::make('text', 'status', __('Statut', 'cube'))
+ ->set_attribute('placeholder', 'Ex : Avocat associé')
+ ->set_required()
+ ->set_width(25),
+
+ Field::make('complex', 'highlights', __( 'Points saillants' ) )
+ ->add_fields([
+ Field::make( 'text', 'detail', __('Détails')),
+ ])
+ ->set_header_template('<%= detail %>')
+ ->set_collapsed(true)
+ ->set_width(60),
+
+ Field::make('textarea', 'intro', __("Texte d'introduction", 'cube'))
+ ->set_rows(2),
+
+ Field::make('rich_text', 'bio', __('Biographie', 'cube')),
+
+ Field::make('complex', 'associations', __( 'Associations et engagements' ) )
+ ->add_fields([
+ Field::make( 'textarea', 'detail', __('Détails'))
+ ->set_rows(2),
+ ])
+ ->set_header_template('<%= detail.substring(0, 50) %>...')
+ ->set_collapsed(true),
+ ]);
+ });
+ }
+
+ // Set custom admin columns
+ // Ref: https://posttypes.jjgrainger.co.uk/post-types/columns
+ public function custom_admin_columns() {
+
+ $columns = $this->staff->columns();
+
+ // Add new columns
+ // Note: the "Expertises" column is added by setup_relationships()
+ // and the position it is inserted is controlled from there
+ $columns->set([
+ 'photo' => __('Photo'),
+ 'title' => __('Nom'),
+ 'status' => __('Statut'),
+ 'date' => __('Date'),
+ ]);
+
+ //== Populate newly added columns
+
+ // Photo column
+ $columns->populate('photo', function ($column, $post_id) {
+ $image = wp_get_attachment_image(carbon_get_post_meta($post_id, 'photo'), 'thumbnail', false, ['style' => 'width: 75px; height: auto;']);
+ $edit_link = get_edit_post_link($post_id);
+ echo " $image ";
+ });
+
+ // Status column
+ $columns->populate('status', function ($column, $post_id) {
+ echo carbon_get_post_meta($post_id, 'status');
+ });
+
+ }
+
+
+ // Set up a two-way (many-to-many) relationship between the 'staff' and 'expertise' custom post types
+ // This uses the free version of the Meta Box Plugin, along with the MB Relationships Extension
+ //
+ // Both these plugins must be installed:
+ // - https://wordpress.org/plugins/meta-box/
+ // - https://wordpress.org/plugins/mb-relationships/
+ //
+ // Documentation: https://docs.metabox.io/extensions/mb-relationships/
+ public function setup_relationships() {
+ add_action('mb_relationships_init', function() {
+ \MB_Relationships_API::register([
+ 'id' => 'staff_to_expertise',
+ 'from' => [
+ 'post_type' => static::$post_type['name'],
+ 'meta_box' => [
+ 'title' => 'Expertises',
+ ],
+ 'admin_column' => 'after status',
+ ],
+ 'to' => [
+ 'post_type' => 'expertise',
+ 'meta_box' => [
+ 'title' => 'Interlocuteurs',
+ ],
+ 'admin_column' => 'after category',
+ ],
+ ]);
+ });
+ }
+
+}
diff --git a/web/app/mu-plugins/cube/src/Common/Setup.php b/web/app/mu-plugins/cube/src/Common/Setup.php
new file mode 100644
index 0000000..9ed42f4
--- /dev/null
+++ b/web/app/mu-plugins/cube/src/Common/Setup.php
@@ -0,0 +1,91 @@
+make_wordpress_less_stupid();
+ $this->dashboard_menu();
+ }
+
+ public function make_wordpress_less_stupid() {
+
+ // Remove Global Styles and SVG Filters from WP 5.9.1+
+ add_action('init', function() {
+ remove_action('wp_enqueue_scripts', 'wp_enqueue_global_styles' );
+ remove_action('wp_body_open', 'wp_global_styles_render_svg_filters' );
+ });
+
+ // Remove Gutenberg block styles
+ add_action('wp_print_styles', function() {
+ wp_deregister_style('wp-block-library');
+ wp_dequeue_style('wp-block-library');
+ wp_deregister_style('wp-block-library-theme');
+ wp_dequeue_style('wp-block-library-theme');
+ }, 100000);
+
+ $this->disable_emojis();
+ }
+
+ public function dashboard_menu() {
+
+ // Remove "Posts" menu from the WordPress dashboard since we don't use this
+ // News posts are sourced externally via BusinessComm's API
+ // Also remove "Comments" menu.
+ // Ref: https://wordpress.stackexchange.com/a/57469
+ add_action( 'admin_menu', function() {
+ remove_menu_page('edit.php'); // Remove "Posts" menu item
+ remove_menu_page('edit-comments.php'); // Remove "Comments" menu item
+ });
+ }
+
+ // Remove WordPress emoji functionality and all the cruft that comes with it ð¢
+ public function disable_emojis() {
+ add_action('init', function() {
+
+ // Prevent Emoji from loading on the front-end
+ remove_action('wp_head', 'print_emoji_detection_script', 7);
+ remove_action('wp_print_styles', 'print_emoji_styles');
+
+ // Remove from admin area also
+ remove_action('admin_print_scripts', 'print_emoji_detection_script');
+ remove_action('admin_print_styles', 'print_emoji_styles');
+
+ // Remove from RSS feeds also
+ remove_filter('the_content_feed', 'wp_staticize_emoji');
+ remove_filter('comment_text_rss', 'wp_staticize_emoji');
+
+ // Remove from Embeds
+ remove_filter('embed_head', 'print_emoji_detection_script');
+
+ // Remove from emails
+ remove_filter('wp_mail', 'wp_staticize_emoji_for_email');
+
+ // Disable from TinyMCE editor
+ add_filter('tiny_mce_plugins', function($plugins) {
+ if (is_array($plugins)) {
+ $plugins = array_diff($plugins, ['wpemoji']);
+ }
+ return $plugins;
+ });
+
+ // Lastly, prevent emoji character conversion from plain text
+ add_filter( 'option_use_smilies', '__return_false' );
+ });
+ }
+
+}
diff --git a/web/app/mu-plugins/cube/src/Customizer/Setup.php b/web/app/mu-plugins/cube/src/Customizer/Setup.php
new file mode 100644
index 0000000..9d0cf0c
--- /dev/null
+++ b/web/app/mu-plugins/cube/src/Customizer/Setup.php
@@ -0,0 +1,40 @@
+site_details($wp_customize);
+ });
+
+ }
+
+ public function site_details(WP_Customize_Manager $wp_customize) {
+
+ // Rename "Site Identity" section
+ $wp_customize->get_section('title_tagline')->title = __('Site Details', 'cube');
+ // Remove tagline control
+ $wp_customize->remove_control('blogdescription');
+
+ }
+
+}
diff --git a/web/app/mu-plugins/cube/src/Elementor/Setup.php b/web/app/mu-plugins/cube/src/Elementor/Setup.php
new file mode 100644
index 0000000..829c002
--- /dev/null
+++ b/web/app/mu-plugins/cube/src/Elementor/Setup.php
@@ -0,0 +1,308 @@
+register_customisations();
+ }
+
+ public function register_widgets() {
+
+ $elementor = Plugin::$instance;
+ $elementor->widgets_manager->register(new Widgets\PageHeader());
+ $elementor->widgets_manager->register(new Widgets\TextBlock());
+ $elementor->widgets_manager->register(new Widgets\HeroBlock());
+ $elementor->widgets_manager->register(new Widgets\LottieAnimation());
+ $elementor->widgets_manager->register(new Widgets\StaffGrid());
+ $elementor->widgets_manager->register(new Widgets\StaffCarousel());
+ $elementor->widgets_manager->register(new Widgets\ExpertiseList());
+ $elementor->widgets_manager->register(new Widgets\ContactDetails());
+ $elementor->widgets_manager->register(new Widgets\LatestNews());
+ $elementor->widgets_manager->register(new Widgets\FooterWatermark());
+ }
+
+
+ // Ref: https://developers.elementor.com/widget-categories/
+ /* @var $manager \Elementor\Elements_Manager */
+ public function register_widgets_category($manager) {
+ $manager->add_category('cube', ['title' => 'Cubedesigners']);
+ }
+
+ public function register_customisations() {
+ $this->customise_sections();
+ $this->customise_containers();
+ $this->customise_widgets();
+ }
+
+ public function customise_sections() {
+
+ // Section Layout and Padding Controls
+ add_action('elementor/element/after_section_start', function($element, $section_id, $args) {
+
+ // echo "";
+ // Add our custom layout controls to the "Layout" section in the "Advanced" tab of each element
+ // Note: for normal widgets, section_id for the Layout section is '_section_style',
+ // while for containers, it is called 'section_layout' (due to different implementation of Containers)
+
+ if (in_array($section_id, ['_section_style', 'section_layout'])) {
+
+ /* @var \Elementor\Controls_Stack $element */
+
+
+ // Grid Width Controls
+ $element->add_control(
+ 'constrain_width',
+ [
+ 'label' => __('Constrain width?', 'cube'),
+ 'type' => Controls_Manager::SWITCHER,
+ 'default' => '',
+ 'return_value' => 'grid-constrain-fluid',
+ 'prefix_class' => '',
+ ]
+ );
+
+ $element->add_control(
+ 'max_grid_cols',
+ [
+ 'label' => __('Max Width (measured in grid columns)', 'cube'),
+ 'type' => Controls_Manager::SLIDER,
+ 'range' => [
+ 'px' => [ // Not really a px measure but the slider doesn't work properly if we set a custom type here
+ 'min' => 2,
+ 'max' => 12,
+ 'step' => 1,
+ ],
+ ],
+ 'default' => [
+ 'size' => 12,
+ ],
+ 'condition' => [
+ 'constrain_width!' => '',
+ ],
+ 'separator' => 'after',
+ //'render_type' => 'ui',
+ 'selectors' => [
+ '{{WRAPPER}}' => '--max-cols: {{SIZE}}',
+ ],
+ ]
+ );
+
+
+
+ // TODO: Check to see if the width constraint can be integrated into the main _element_width control. Need to think about if I want to use the responsive controls here too or have something more automatic that just cancels the max-width once we hit a certain minimum (like currently) ð¤ ============> see add_control() / update_control() functions, especially the $options['position'] setting that seems to allow us to inject a new control at a specific point in the stack. This would be needed to add the custom grid-based width control
+
+
+ // Originally, spacing was handled by adding classes to the elements but this wasn't the best
+ // solution due to having to generate all the CSS classes ahead of time (100kb extra!)
+ // $element->add_control(
+ // 'enable_custom_spacing',
+ // [
+ // 'label' => __('Enable spacing classes?', 'cube'),
+ // 'type' => Controls_Manager::SWITCHER,
+ // 'default' => 'yes',
+ // ]
+ // );
+ //
+ //
+ // $old_spacing_controls = [
+ // 'mt-' => __('[x] Top Margin â¥', 'cube'),
+ // 'pt-' => __('[x] Top Padding â¤', 'cube'),
+ // 'pb-' => __('[x] Bottom Padding â¤', 'cube'),
+ // 'mb-' => __('[x] Bottom Margin â§', 'cube'),
+ // ];
+ //
+ // foreach ($old_spacing_controls as $old_spacing_control_prefix => $old_spacing_control_label) {
+ // $field_name = 'spacing_' . rtrim($old_spacing_control_prefix, '-');
+ // $element->add_control(
+ // $field_name,
+ // [
+ // 'label' => $old_spacing_control_label,
+ // 'type' => Controls_Manager::SELECT,
+ // 'options' => static::old_spacing_options($old_spacing_control_prefix),
+ // 'default' => '',
+ // 'prefix_class' => '', // Use the full value as the classname
+ // 'condition' => [
+ // 'enable_custom_spacing!' => '',
+ // ],
+ // ]
+ // );
+ // }
+
+
+ $spacing_controls = [
+ 'margin-top' => __('Top Margin â¥', 'cube'),
+ 'padding-top' => __('Top Padding â¤', 'cube'),
+ 'padding-bottom' => __('Bottom Padding â¤', 'cube'),
+ 'margin-bottom' => __('Bottom Margin â§', 'cube'),
+ ];
+
+ foreach ($spacing_controls as $spacing_control_name => $spacing_control_label) {
+ $field_name = 'spacing_' . $spacing_control_name;
+ $element->add_responsive_control(
+ $field_name,
+ [
+ 'label' => $spacing_control_label,
+ 'type' => Controls_Manager::SELECT,
+ 'options' => static::spacing_options(),
+ 'default' => '',
+ 'selectors' => [
+ '{{WRAPPER}}' => "--{$spacing_control_name}: var(--space-{{VALUE}});",
+ ],
+ ]
+ );
+ }
+
+
+ }
+
+ }, 10, 3 );
+
+
+ // add_action('elementor/frontend/section/before_render', function (Element_Base $element) {
+ //
+ // $children = $element->get_children();
+ // $cols = count($children);
+ //
+ // $element->add_render_attribute('_wrapper', 'data-cols', $cols);
+ // });
+
+ }
+
+
+ public function customise_containers() {
+
+ // Add some extra hooks that we can use on the Elementor elements...
+ add_action('elementor/frontend/container/before_render', function (Element_Base $element) {
+ // Add number child items in this container
+ $element->add_render_attribute('_wrapper', 'data-children', count($element->get_children()));
+ });
+ }
+
+ public function customise_widgets() {
+
+ // Customise the individual widget attributes
+ // This is used to blacklist certain widgets from GSAP animations
+ // while adding a GSAP animation class to others...
+ add_action('elementor/frontend/widget/before_render', function (Element_Base $element) {
+
+ // TODO: consider having a custom control / toggle for all elements that allows this to be set on an individual basis. This way, it could be applied to containers or only certain widgets depending on the context. It could be implemented like the custom spacing controls. The setting value is accessible via $element->get_settings('xxxxxx')
+
+ // List of all the widgets that we don't want to have the standard GSAP intro animation applied to
+ // These are widgets that don't make sense to animate or that might cause conflicts (e.g Lottie)
+ $GSAP_blacklist = [
+ 'cube-lottie',
+ 'cube-page-header',
+ 'cube-footer-watermark',
+ 'cube-hero',
+ 'cube-staff-grid',
+ 'cube-staff-carousel',
+ ];
+
+ if (in_array($element->get_name(), $GSAP_blacklist)) {
+ return false;
+ }
+
+ // This class will be used by elementorWidgetAnimations() in site.js
+ $element->add_render_attribute('_wrapper', 'class', 'gsap-animated-elementor');
+ });
+ }
+
+
+ public static function spacing_options() {
+ // List of base spacing scales along with their descriptions
+ // Note: this should match what is in the theme's `tailwind.config.cjs`
+ return [
+ '' => __('(par défaut)', 'cube'),
+ '0' => __('Aucun', 'cube'),
+ '3xs' => '3XS (4px â 5px)',
+ '2xs' => '2XS (8px â 10px)',
+ 'xs' => 'XS (12px â 15px)',
+ 's' => 'S (16px â 20px)',
+ 'm' => 'M (24px â 30px)',
+ 'l' => 'L (32px â 40px)',
+ 'xl' => 'XL (48px â 60px)',
+ '2xl' => '2XL (64px â 80px)',
+ '3xl' => '3XL (96px â 120px)',
+ '4xl' => '4XL (112px â 140px)',
+ '5xl' => '5XL (128px â 160px)',
+
+ // Not all of these are needed for now, so removing them to lighten the UI
+ // '3xs-2xs' => '3XS â 2XS (4px â 10px)',
+ // '2xs-xs' => '2XS â XS (8px â 15px)',
+ // 'xs-s' => 'XS â S (12px â 20px)',
+ // 's-m' => 'S â M (16px â 30px)',
+ // 'm-l' => 'M â L (24px â 40px)',
+ // 'l-xl' => 'L â XL (32px â 60px)',
+ // 'xl-2xl' => 'XL â 2XL (48px â 80px)',
+ // '2xl-3xl' => '2XL â 3XL (64px â 120px)',
+ // '3xl-4xl' => '3XL â 4XL (96px â 140px)',
+ // '4xl-5xl' => '4XL â 5XL (112px â 160px)',
+
+ 's-l' => 'S â L (16px â 40px)',
+ 'm-xl' => 'M â XL (24px â 60px)',
+ 'l-2xl' => 'L â 2XL (32px â 80px)',
+ '2xl-4xl' => '2XL â 4XL (64px â 140px)',
+ ];
+ }
+
+ public static function old_spacing_options($prefix) {
+
+ // List of base spacing scales along with their descriptions
+ // Note: this should match what is in the theme's `tailwind.config.cjs`
+ $spacing_scale = [
+ '0' => __('Aucun', 'cube'),
+ '3xs' => '3XS (4px â 5px)',
+ '2xs' => '2XS (8px â 10px)',
+ 'xs' => 'XS (12px â 15px)',
+ 's' => 'S (16px â 20px)',
+ 'm' => 'M (24px â 30px)',
+ 'l' => 'L (32px â 40px)',
+ 'xl' => 'XL (48px â 60px)',
+ '2xl' => '2XL (64px â 80px)',
+ '3xl' => '3XL (96px â 120px)',
+ '4xl' => '4XL (112px â 140px)',
+ '5xl' => '5XL (128px â 160px)',
+
+ // Not all of these are needed for now, so removing them to lighten the UI
+ // '3xs-2xs' => '3XS â 2XS (4px â 10px)',
+ // '2xs-xs' => '2XS â XS (8px â 15px)',
+ // 'xs-s' => 'XS â S (12px â 20px)',
+ // 's-m' => 'S â M (16px â 30px)',
+ // 'm-l' => 'M â L (24px â 40px)',
+ // 'l-xl' => 'L â XL (32px â 60px)',
+ // 'xl-2xl' => 'XL â 2XL (48px â 80px)',
+ // '2xl-3xl' => '2XL â 3XL (64px â 120px)',
+ // '3xl-4xl' => '3XL â 4XL (96px â 140px)',
+ // '4xl-5xl' => '4XL â 5XL (112px â 160px)',
+
+ 's-l' => 'S â L (16px â 40px)',
+ 'm-xl' => 'M â XL (24px â 60px)',
+ 'l-2xl' => 'L â 2XL (32px â 80px)',
+ '2xl-4xl' => '2XL â 4XL (64px â 140px)',
+ ];
+
+ $options = ['' => __('(par défaut)', 'cube')]; // Empty default so no class is applied
+
+ foreach ($spacing_scale as $id => $label) {
+ $options[$prefix.$id] = $label;
+ }
+
+ return $options;
+ }
+
+}
diff --git a/web/app/mu-plugins/cube/src/Elementor/Widgets/ContactDetails.php b/web/app/mu-plugins/cube/src/Elementor/Widgets/ContactDetails.php
new file mode 100644
index 0000000..d737801
--- /dev/null
+++ b/web/app/mu-plugins/cube/src/Elementor/Widgets/ContactDetails.php
@@ -0,0 +1,128 @@
+start_controls_section(
+ 'section_content',
+ [
+ 'label' => __('Coordonnées de contact', 'cube'),
+ ]
+ );
+
+ $this->add_control(
+ 'title',
+ [
+ 'label' => __('Titre', 'cube'),
+ 'type' => Controls_Manager::TEXT,
+ 'default' => ''
+ ]
+ );
+
+ $this->add_control(
+ 'phone',
+ [
+ 'label' => __('Numéro de téléphone', 'cube'),
+ 'type' => Controls_Manager::TEXT,
+ 'default' => ''
+ ]
+ );
+
+ $this->add_control(
+ 'address',
+ [
+ 'label' => __("L'adresse", 'cube'),
+ 'type' => Controls_Manager::TEXTAREA,
+ 'default' => '',
+ ]
+ );
+
+ $this->add_control(
+ 'address_link',
+ [
+ 'label' => __('Lien vers la carte', 'cube'),
+ 'type' => Controls_Manager::URL,
+ 'default' => [
+ 'url' => '',
+ ],
+ 'options' => false
+ ]
+ );
+
+ $this->add_control(
+ 'photo',
+ [
+ 'label' => esc_html__('Photo', 'cube'),
+ 'type' => Controls_Manager::MEDIA,
+ 'default' => [
+ 'url' => Utils::get_placeholder_image_src(),
+ ],
+ ]
+ );
+
+
+ $this->end_controls_section();
+
+ $this->common_controls();
+ }
+ /**
+ * Render the widget output on the frontend.
+ * Written in PHP and used to generate the final HTML.
+ *
+ * @since 1.0.0
+ * @access protected
+ */
+ protected function render() {
+
+ $title = $this->get_settings('title');
+ $phone = $this->get_settings('phone');
+ $address = $this->get_settings('address');
+ $address_link = $this->get_settings('address_link');
+ $photo = $this->get_settings('photo');
+
+ echo view('widgets/contact-details', compact('title', 'phone', 'address','address_link', 'photo'));
+ }
+
+}
diff --git a/web/app/mu-plugins/cube/src/Elementor/Widgets/ExpertiseList.php b/web/app/mu-plugins/cube/src/Elementor/Widgets/ExpertiseList.php
new file mode 100644
index 0000000..8f8b2d5
--- /dev/null
+++ b/web/app/mu-plugins/cube/src/Elementor/Widgets/ExpertiseList.php
@@ -0,0 +1,104 @@
+start_controls_section(
+ 'section_content',
+ [
+ 'label' => __('Liste des expertises', 'cube'),
+ ]
+ );
+
+ $this->add_control(
+ 'category',
+ [
+ 'label' => __("Catégorie d'expertise", 'cube'),
+ 'type' => Controls_Manager::SELECT,
+ 'options' => ['' => __('Toutes les expertises', 'cube')] + Expertise::$categories,
+ 'default' => '',
+ ]
+ );
+
+
+
+ $this->end_controls_section();
+
+ $this->common_controls();
+ }
+ /**
+ * Render the widget output on the frontend.
+ * Written in PHP and used to generate the final HTML.
+ *
+ * @since 1.0.0
+ * @access protected
+ */
+ protected function render() {
+
+ $category = $this->get_settings('category');
+
+ $query = [
+ 'post_type' => Expertise::$post_type['name'],
+ 'orderby' => 'title',
+ 'order' => 'asc',
+ 'nopaging' => true, // Fetch all records
+ ];
+
+ // Filter by category meta key, if specified
+ if (!empty($category)) {
+ $query['meta_query'] = [
+ [
+ 'key' => '_category',
+ 'value' => $category
+ ]
+ ];
+ }
+
+ $expertises = get_posts($query);
+
+ echo view('widgets/expertise-list', compact('expertises'));
+ }
+
+}
diff --git a/web/app/mu-plugins/cube/src/Elementor/Widgets/FooterWatermark.php b/web/app/mu-plugins/cube/src/Elementor/Widgets/FooterWatermark.php
new file mode 100644
index 0000000..a4624c5
--- /dev/null
+++ b/web/app/mu-plugins/cube/src/Elementor/Widgets/FooterWatermark.php
@@ -0,0 +1,81 @@
+start_controls_section(
+ 'section_content',
+ [
+ 'label' => __( 'Contenu', 'cube' ),
+ ]
+ );
+
+ $this->add_control(
+ 'watermark_text',
+ [
+ 'label' => __('Texte en filigrane', 'cube'),
+ 'type' => Controls_Manager::TEXT,
+ 'default' => 'Ensemble',
+ ]
+ );
+
+ $this->end_controls_section();
+
+ $this->common_controls();
+ }
+ /**
+ * Render the widget output on the frontend.
+ * Written in PHP and used to generate the final HTML.
+ *
+ * @since 1.0.0
+ * @access protected
+ */
+ protected function render() {
+
+ $watermark_text = $this->get_settings('watermark_text');
+
+ echo view('widgets/footer-watermark', compact('watermark_text'));
+ }
+
+}
diff --git a/web/app/mu-plugins/cube/src/Elementor/Widgets/HeroBlock.php b/web/app/mu-plugins/cube/src/Elementor/Widgets/HeroBlock.php
new file mode 100644
index 0000000..1d158c5
--- /dev/null
+++ b/web/app/mu-plugins/cube/src/Elementor/Widgets/HeroBlock.php
@@ -0,0 +1,105 @@
+start_controls_section(
+ 'section_content',
+ [
+ 'label' => __( 'Content', 'cube' ),
+ ]
+ );
+
+
+ $this->add_control(
+ 'heading',
+ [
+ 'label' => __('Heading', 'cube'),
+ 'type' => Controls_Manager::TEXTAREA,
+ 'default' => '',
+ ]
+ );
+
+ $this->add_control(
+ 'subheading',
+ [
+ 'label' => __('Subheading', 'cube'),
+ 'type' => Controls_Manager::TEXTAREA,
+ 'default' => '',
+ ]
+ );
+
+
+ $this->add_control(
+ 'watermark_text',
+ [
+ 'label' => __('Watermark Text', 'cube'),
+ 'type' => Controls_Manager::TEXT,
+ 'default' => 'ENSEMBLE',
+ ]
+ );
+
+ $this->end_controls_section();
+
+ $this->common_controls();
+ }
+ /**
+ * Render the widget output on the frontend.
+ * Written in PHP and used to generate the final HTML.
+ *
+ * @since 1.0.0
+ * @access protected
+ */
+ protected function render() {
+
+ $heading = $this->get_settings('heading');
+ $subheading = $this->get_settings('subheading');
+ $watermark_text = $this->get_settings('watermark_text');
+
+ echo view('widgets/hero-block', compact('heading', 'subheading', 'watermark_text'));
+ }
+
+}
diff --git a/web/app/mu-plugins/cube/src/Elementor/Widgets/LatestNews.php b/web/app/mu-plugins/cube/src/Elementor/Widgets/LatestNews.php
new file mode 100644
index 0000000..f7b26d4
--- /dev/null
+++ b/web/app/mu-plugins/cube/src/Elementor/Widgets/LatestNews.php
@@ -0,0 +1,113 @@
+start_controls_section(
+ 'section_content',
+ [
+ 'label' => __( 'Configuration', 'cube' ),
+ ]
+ );
+
+
+ $this->add_control(
+ 'heading',
+ [
+ 'label' => __('Titre', 'cube'),
+ 'type' => Controls_Manager::TEXT,
+ 'default' => 'Nos actualités',
+ ]
+ );
+
+
+ $this->add_control(
+ 'cta_text',
+ [
+ 'label' => __('Texte du bouton', 'cube'),
+ 'type' => Controls_Manager::TEXT,
+ 'default' => 'Toutes nos actualités',
+ ]
+ );
+
+ $this->end_controls_section();
+
+ $this->common_controls();
+ }
+
+ /**
+ * Render the widget output on the frontend.
+ * Written in PHP and used to generate the final HTML.
+ *
+ * @since 1.0.0
+ * @access protected
+ */
+ protected function render() {
+
+ $heading = $this->get_settings('heading');
+ $cta_text = $this->get_settings('cta_text');
+
+ $all_news_link = '/actualites/'; // Hard-coded since it's very unlikely to change
+
+ // TODO: consider setting up a separate cron job that runs in the background and ensures that we always have a fresh copy of the latest posts. Currently, there may be occasional delays with the home page loading if it's a request where the cache needs to be refreshed. Having a background process could avoid this.
+
+ // Fetch posts from the News API
+ $content_type = NewsSetup::$feed_types['actualites']['id']; // Look up the ID
+ $items_to_fetch = 3; // This could be customisable but for now it's not.
+
+ $news = new NewsAPI();
+ $request = $news->request('list', [
+ 'type' => $content_type,
+ 'items-page' => $items_to_fetch,
+ 'num-page' => 1,
+ ]);
+
+ $latest_news = ($request && $request->ok) ? $request->data->items : [];
+
+ echo view('widgets/latest-news', compact('heading', 'cta_text', 'latest_news', 'all_news_link'));
+ }
+
+}
diff --git a/web/app/mu-plugins/cube/src/Elementor/Widgets/LottieAnimation.php b/web/app/mu-plugins/cube/src/Elementor/Widgets/LottieAnimation.php
new file mode 100644
index 0000000..8f2cf71
--- /dev/null
+++ b/web/app/mu-plugins/cube/src/Elementor/Widgets/LottieAnimation.php
@@ -0,0 +1,126 @@
+start_controls_section(
+ 'section_content',
+ [
+ 'label' => __( 'Content', 'cube' ),
+ ]
+ );
+
+ $this->add_control(
+ 'media_source',
+ [
+ 'label' => esc_html__( 'Media Source', 'cube' ),
+ 'type' => Controls_Manager::SELECT,
+ 'default' => 'json_file',
+ 'options' => [
+ 'json_file' => esc_html__( 'Lottie JSON', 'cube' ),
+ 'external_url' => esc_html__( 'Lottie External URL', 'cube' ),
+ ],
+ 'frontend_available' => true,
+ ]
+ );
+
+ $this->add_control(
+ 'source_json',
+ [
+ 'label' => esc_html__( 'Upload JSON File', 'cube' ),
+ 'type' => Controls_Manager::MEDIA,
+ 'media_type' => 'application/json',
+ 'frontend_available' => true,
+ 'condition' => [
+ 'media_source' => 'json_file',
+ ],
+ ]
+ );
+
+ $this->add_control(
+ 'source_external_url',
+ [
+ 'label' => esc_html__( 'External URL', 'cube' ),
+ 'type' => Controls_Manager::URL,
+ 'condition' => [
+ 'media_source' => 'external_url',
+ ],
+ 'placeholder' => esc_html__( 'Enter your URL', 'cube' ),
+ 'frontend_available' => true,
+ ]
+ );
+
+ $this->end_controls_section();
+
+ $this->common_controls();
+ }
+ /**
+ * Render the widget output on the frontend.
+ * Written in PHP and used to generate the final HTML.
+ *
+ * @since 1.0.0
+ * @access protected
+ */
+ protected function render() {
+
+ $id = $this->get_id();
+ $media_source = $this->get_settings('media_source');
+ $source_json = $this->get_settings('source_json');
+ $source_external_url = $this->get_settings('source_external_url');
+ $lottie_url = '';
+
+ if ($media_source === 'json_file') {
+ $lottie_url = $source_json['url'];
+ } elseif ($media_source === 'external_url') {
+ $lottie_url = $source_external_url['url'];
+ }
+
+ echo view('widgets/lottie-player', compact('id', 'lottie_url'));
+ }
+
+}
diff --git a/web/app/mu-plugins/cube/src/Elementor/Widgets/PageHeader.php b/web/app/mu-plugins/cube/src/Elementor/Widgets/PageHeader.php
new file mode 100644
index 0000000..867070b
--- /dev/null
+++ b/web/app/mu-plugins/cube/src/Elementor/Widgets/PageHeader.php
@@ -0,0 +1,240 @@
+start_controls_section(
+ 'section_content',
+ [
+ 'label' => __( 'Content', 'cube' ),
+ ]
+ );
+
+ // Disabled until CSS can be adapted to handle this properly
+ // $this->add_control(
+ // 'theme',
+ // [
+ // 'label' => __('Header Theme', 'cube'),
+ // 'type' => Controls_Manager::SELECT,
+ // 'options' => [
+ // 'light' => __('Clair (défaut)', 'cube'),
+ // 'dark' => __('Foncé', 'cube'),
+ // ],
+ // 'default' => 'light',
+ // 'separator' => 'after',
+ // ]
+ // );
+
+ $this->add_control(
+ 'title',
+ [
+ 'label' => __( 'Title', 'elementor' ),
+ 'type' => Controls_Manager::TEXTAREA,
+ 'placeholder' => __( 'Enter your title', 'elementor' ),
+ 'default' => '',
+ ]
+ );
+
+ // $this->add_control(
+ // 'title_tag',
+ // [
+ // 'label' => __( 'Balise de titre (SEO)', 'cube' ),
+ // 'type' => Controls_Manager::SELECT,
+ // 'options' => [
+ // 'h1' => __( 'H1', 'cube' ),
+ // 'h2' => __( 'H2 (Défaut)', 'cube' ),
+ // 'h3' => __( 'H3', 'cube' ),
+ // ],
+ // 'default' => 'h2',
+ // ]
+ // );
+
+ $this->add_control(
+ 'media_source',
+ [
+ 'label' => esc_html__( 'Media Source', 'cube' ),
+ 'type' => Controls_Manager::SELECT,
+ 'default' => 'json_file',
+ 'options' => [
+ 'image' => esc_html__( 'Image', 'cube' ),
+ 'json_file' => esc_html__( 'Lottie JSON', 'cube' ),
+ 'external_url' => esc_html__( 'Lottie External URL', 'cube' ),
+ ],
+ 'frontend_available' => true,
+ ]
+ );
+
+ $this->add_control(
+ 'source_image',
+ [
+ 'label' => esc_html__( 'Image', 'cube' ),
+ 'type' => Controls_Manager::MEDIA,
+ 'default' => [
+ 'url' => Utils::get_placeholder_image_src(),
+ ],
+ 'condition' => [
+ 'media_source' => 'image',
+ ],
+ ]
+ );
+
+ $this->add_control(
+ 'source_json',
+ [
+ 'label' => esc_html__( 'Upload JSON File', 'cube' ),
+ 'type' => Controls_Manager::MEDIA,
+ 'media_type' => 'application/json',
+ 'frontend_available' => true,
+ 'condition' => [
+ 'media_source' => 'json_file',
+ ],
+ ]
+ );
+
+ $this->add_control(
+ 'source_external_url',
+ [
+ 'label' => esc_html__( 'External URL', 'cube' ),
+ 'type' => Controls_Manager::URL,
+ 'condition' => [
+ 'media_source' => 'external_url',
+ ],
+ 'placeholder' => esc_html__( 'Enter your URL', 'cube' ),
+ 'frontend_available' => true,
+ ]
+ );
+
+ $this->add_control(
+ 'content',
+ [
+ 'label' => __('Optional Content', 'cube'),
+ 'type' => Controls_Manager::WYSIWYG,
+ 'default' => '',
+ ]
+ );
+
+
+ $this->add_control(
+ 'content_top_margin',
+ [
+ 'label' => __('Top Margin for Content'),
+ 'type' => Controls_Manager::SELECT,
+ 'options' => Setup::spacing_options(),
+ 'default' => 'xl',
+ ]
+ );
+
+ $this->add_control(
+ 'content_constrain_width',
+ [
+ 'label' => __('Constrain content width?', 'cube'),
+ 'type' => Controls_Manager::SWITCHER,
+ 'default' => '',
+ ]
+ );
+
+ $this->add_control(
+ // Note: this name must be unique otherwise it will silently fail if there's another control with the same ID already
+ 'content_max_grid_cols',
+ [
+ 'label' => __('Max Content Width (measured in grid columns)', 'cube'),
+ 'type' => Controls_Manager::SLIDER,
+ 'range' => [
+ 'px' => [ // Not really a px measure but the slider doesn't work properly if we set a custom type here
+ 'min' => 2,
+ 'max' => 12,
+ 'step' => 1,
+ ],
+ ],
+ 'default' => [
+ 'size' => 6,
+ ],
+ 'condition' => [
+ 'content_constrain_width!' => '',
+ ],
+ 'selectors' => [
+ '{{WRAPPER}} .page-header-content' => '--max-cols: {{SIZE}}',
+ ],
+ ]
+ );
+
+
+ $this->end_controls_section();
+
+ $this->common_controls();
+ }
+ /**
+ * Render the widget output on the frontend.
+ * Written in PHP and used to generate the final HTML.
+ *
+ * @since 1.0.0
+ * @access protected
+ */
+ protected function render() {
+
+ $theme = $this->get_settings('theme');
+ $title = $this->get_settings('title');
+ $media_source = $this->get_settings('media_source');
+ $source_image = $this->get_settings('source_image');
+ $source_json = $this->get_settings('source_json');
+ $source_external_url = $this->get_settings('source_external_url');
+ $lottie_url = '';
+
+ if ($media_source === 'json_file') {
+ $lottie_url = $source_json['url'];
+ } elseif ($media_source === 'external_url') {
+ $lottie_url = $source_external_url['url'];
+ }
+
+ $content = $this->parse_text_editor($this->get_settings('content'));
+ $content_top_margin = ($mt = $this->get_settings('content_top_margin')) === '' ? '' : "margin-top:var(--space-{$mt});";
+ $content_constraint = $this->get_settings('content_constrain_width') === 'yes' ? 'grid-constrain-fluid' : null;
+
+ echo view('widgets/page-header', compact('theme', 'title', 'content', 'content_top_margin', 'content_constraint', 'media_source', 'source_image', 'lottie_url'));
+ }
+
+}
diff --git a/web/app/mu-plugins/cube/src/Elementor/Widgets/StaffCarousel.php b/web/app/mu-plugins/cube/src/Elementor/Widgets/StaffCarousel.php
new file mode 100644
index 0000000..257c043
--- /dev/null
+++ b/web/app/mu-plugins/cube/src/Elementor/Widgets/StaffCarousel.php
@@ -0,0 +1,124 @@
+enqueue();
+ }
+
+
+ /**
+ * List of scripts the widget depends on.
+ * Used to set scripts dependencies required to run the widget.
+ *
+ * @since 1.0.0
+ * @access public
+ * @return array Widget scripts dependencies.
+ */
+ public function get_script_depends() {
+ // wp_register_script(
+ // 'splide',
+ // asset('scripts/splide.js')->uri(),
+ // [], // Dependencies
+ // null, // Version
+ // true // In footer?
+ // );
+ //
+ // return ['splide'];
+
+ //bundle('splide')->enqueueJs();
+
+ return [];
+
+ }
+
+ /**
+ * Get style dependencies.
+ *
+ * Retrieve the list of style dependencies the element requires.
+ *
+ * @since 1.9.0
+ * @access public
+ *
+ * @return array Element styles dependencies.
+ */
+ public function get_style_depends() {
+ // wp_register_style(
+ // 'splide',
+ // asset('scripts/splide.css')->uri(),
+ // );
+ //
+ // return ['splide'];
+
+ //bundle('splide')->enqueueCss();
+
+ return [];
+
+ }
+
+
+ /**
+ * Register the widget controls.
+ * Adds different input fields to allow the user to change and customize the widget settings.
+ *
+ * @since 1.0.0
+ * @access protected
+ */
+ protected function _register_controls() {
+
+ $this->start_controls_section(
+ 'section_content',
+ [
+ 'label' => $this->get_title(),
+ ]
+ );
+
+ $this->end_controls_section();
+
+ $this->common_controls();
+ }
+ /**
+ * Render the widget output on the frontend.
+ * Written in PHP and used to generate the final HTML.
+ *
+ * @since 1.0.0
+ * @access protected
+ */
+ protected function render() {
+
+ $staff = get_posts([
+ 'post_type' => Staff::$post_type['name'],
+ 'nopaging' => true, // Fetch all records
+ ]);
+
+ echo view('widgets/staff-carousel', compact('staff'));
+ }
+
+}
diff --git a/web/app/mu-plugins/cube/src/Elementor/Widgets/StaffGrid.php b/web/app/mu-plugins/cube/src/Elementor/Widgets/StaffGrid.php
new file mode 100644
index 0000000..82f5fc1
--- /dev/null
+++ b/web/app/mu-plugins/cube/src/Elementor/Widgets/StaffGrid.php
@@ -0,0 +1,77 @@
+start_controls_section(
+ 'section_content',
+ [
+ 'label' => __("Grille d'équipe", 'cube'),
+ ]
+ );
+
+ // Todo: consider adding the option to manually select the users (IDs) based on a repeater?
+
+ $this->end_controls_section();
+
+ $this->common_controls();
+ }
+ /**
+ * Render the widget output on the frontend.
+ * Written in PHP and used to generate the final HTML.
+ *
+ * @since 1.0.0
+ * @access protected
+ */
+ protected function render() {
+
+ $staff = get_posts([
+ 'post_type' => Staff::$post_type['name'],
+ 'nopaging' => true, // Fetch all records
+ ]);
+
+ echo view('widgets/staff-grid', compact('staff'));
+ }
+
+}
diff --git a/web/app/mu-plugins/cube/src/Elementor/Widgets/TextBlock.php b/web/app/mu-plugins/cube/src/Elementor/Widgets/TextBlock.php
new file mode 100644
index 0000000..c454dc8
--- /dev/null
+++ b/web/app/mu-plugins/cube/src/Elementor/Widgets/TextBlock.php
@@ -0,0 +1,351 @@
+start_controls_section(
+ 'section_content',
+ [
+ 'label' => __( 'Content', 'cube' ),
+ ]
+ );
+
+ $this->add_control(
+ 'title',
+ [
+ 'label' => __( 'Title', 'elementor' ),
+ 'type' => Controls_Manager::TEXTAREA,
+ 'placeholder' => __( 'Enter your title', 'elementor' ),
+ 'default' => '',
+ ]
+ );
+
+ $this->add_control(
+ 'title_tag',
+ [
+ 'label' => __( 'Balise de titre (SEO)', 'cube' ),
+ 'type' => Controls_Manager::SELECT,
+ 'options' => [
+ 'h1' => __( 'H1', 'cube' ),
+ 'h2' => __( 'H2 (Défaut)', 'cube' ),
+ 'h3' => __( 'H3', 'cube' ),
+ ],
+ 'default' => 'h2',
+ ]
+ );
+
+ $this->add_control(
+ 'body',
+ [
+ 'label' => __('Body', 'cube'),
+ 'type' => Controls_Manager::WYSIWYG,
+ 'default' => '',
+ ]
+ );
+
+ $this->add_control(
+ 'cta_text',
+ [
+ 'label' => __('Call to Action text', 'cube'),
+ 'type' => Controls_Manager::TEXT,
+ 'default' => ''
+ ]
+ );
+
+ $this->add_control(
+ 'cta_link',
+ [
+ 'label' => __('Call to Action link', 'cube'),
+ 'type' => Controls_Manager::URL,
+ 'default' => [
+ 'url' => '',
+ 'is_external' => false,
+ ],
+ 'show_external' => true
+ ]
+ );
+
+ $this->end_controls_section();
+
+ $this->start_controls_section(
+ 'section_formatting',
+ [
+ 'label' => __( 'Colours & Formatting', 'cube' ),
+ ]
+ );
+
+ $this->add_control(
+ 'title_size',
+ [
+ 'label' => __( 'Title Size', 'cube' ),
+ 'type' => Controls_Manager::SELECT,
+ 'options' => [
+ 'text-lg' => __( 'Plus petite', 'cube' ),
+ '' => __( 'Défaut', 'cube' ),
+ 'text-2xl' => __( 'Plus grande', 'cube' ),
+ ],
+ 'default' => '',
+ ]
+ );
+
+ $this->add_control(
+ 'title_color',
+ [
+ 'label' => __( 'Title Colour', 'cube' ),
+ 'type' => Controls_Manager::COLOR,
+ 'default' => '',
+ 'selectors' => [
+ '{{WRAPPER}} .text-block-title' => 'color: {{VALUE}};',
+ ],
+ ]
+ );
+
+
+ $this->add_control(
+ 'body_color',
+ [
+ 'label' => __( 'Body Colour', 'cube' ),
+ 'type' => Controls_Manager::COLOR,
+ 'default' => '',
+ 'selectors' => [
+ '{{WRAPPER}} .text-block-body' => 'color: {{VALUE}};',
+ ],
+ ]
+ );
+
+
+ $this->add_responsive_control(
+ 'align',
+ [
+ 'label' => __( 'Alignment', 'elementor' ),
+ 'type' => Controls_Manager::CHOOSE,
+ 'options' => [
+ 'left' => [
+ 'title' => __( 'Left', 'elementor' ),
+ 'icon' => 'fa fa-align-left',
+ ],
+ 'center' => [
+ 'title' => __( 'Center', 'elementor' ),
+ 'icon' => 'fa fa-align-center',
+ ],
+ /*
+ 'right' => [
+ 'title' => __( 'Right', 'elementor' ),
+ 'icon' => 'fa fa-align-right',
+ ],
+ 'justify' => [
+ 'title' => __( 'Justified', 'elementor' ),
+ 'icon' => 'fa fa-align-justify',
+ ],
+ */
+ ],
+ 'default' => 'left',
+ 'prefix_class' => 'text-block-align-',
+ ]
+ );
+
+ $this->add_responsive_control(
+ 'width',
+ [
+ 'label' => __( 'Width', 'elementor' ),
+ 'type' => Controls_Manager::TEXT,
+ 'default' => '100%',
+ 'selectors' => [
+ '{{WRAPPER}} .text-block' => 'width: {{VALUE}};',
+ ],
+ ]
+ );
+
+ $this->add_control(
+ 'max_width',
+ [
+ 'label' => __( 'Maximum Width', 'cube' ),
+ 'type' => Controls_Manager::SLIDER,
+ // 'default' => [
+ // 'size' => 400,
+ // ],
+ 'range' => [
+ 'px' => [
+ 'min' => 400,
+ 'max' => 1600,
+ 'step' => 10,
+ ],
+ '%' => [
+ 'min' => 0,
+ 'max' => 100,
+ ],
+ ],
+ 'selectors' => [
+ '{{WRAPPER}} .text-block' => 'max-width: {{SIZE}}{{UNIT}};',
+ ],
+ ]
+ );
+
+ $this->add_control(
+ 'block_position',
+ [
+ 'label' => __('Positionnement de bloc', 'cube'),
+ 'type' => Controls_Manager::SELECT,
+ 'options' => [
+ '' => __( 'Défaut', 'cube' ),
+ 'margin-left: auto; margin-right: auto;' => __( 'Centré', 'cube' ),
+ 'margin-right: auto;' => __( 'Gauche', 'cube' ),
+ 'margin-left: auto;' => __( 'Droite', 'cube' ),
+ ],
+ 'default' => '',
+ 'selectors' => [
+ '{{WRAPPER}} .text-block' => '{{VALUE}}',
+ ],
+ ]
+ );
+
+ $this->end_controls_section();
+
+ $this->common_controls();
+ }
+ /**
+ * Render the widget output on the frontend.
+ * Written in PHP and used to generate the final HTML.
+ *
+ * @since 1.0.0
+ * @access protected
+ */
+ protected function render() {
+
+ $title = $this->get_settings('title');
+ $title_tag = $this->get_settings('title_tag');
+ $title_size = $this->get_settings('title_size');
+ $body = $this->parse_text_editor($this->get_settings('body'));
+ $cta_text = $this->get_settings('cta_text');
+ $cta_link = $this->get_settings('cta_link');
+
+ if (empty($title_size)) {
+ $title_size = 'text-xl';
+ }
+
+ if ( ! empty( $cta_link['url'] ) ) {
+ $this->add_render_attribute( 'cta_text', 'href', $cta_link['url'] );
+
+ if ( $cta_link['is_external'] ) {
+ $this->add_render_attribute( 'cta_text', 'target', '_blank' );
+ }
+
+ if ( $cta_link['nofollow'] ) {
+ $this->add_render_attribute( 'cta_text', 'rel', 'nofollow' );
+ }
+ }
+
+ // Inline Editing settings
+ $this->add_inline_editing_attributes('title', 'none');
+ $this->add_inline_editing_attributes('body', 'advanced');
+ $this->add_inline_editing_attributes('cta_text', 'none');
+
+ // CSS Classes for elements
+ $this->add_render_attribute('title', 'class', ["text-block-title font-semibold $title_size"]);
+ $this->add_render_attribute('body', 'class', ['text-block-body']);
+ $this->add_render_attribute('cta_text', 'class', ['text-block-cta btn']);
+
+ // Rendered content
+ echo '';
+ if (!empty($title)) echo "<{$title_tag} {$this->get_render_attribute_string('title')}>$title{$title_tag}>";
+ if (!empty($body)) echo "
get_render_attribute_string('body')}>$body
";
+ if (!empty($cta_text)) {
+ echo '
get_render_attribute_string('cta_text') .'>';
+ echo $cta_text;
+ echo '
+
+ ';
+ echo '
';
+ }
+ echo '
';
+ }
+
+ /**
+ * Render text editor widget output in the editor.
+ *
+ * Written as a Backbone JavaScript template and used to generate the live preview.
+ *
+ * @since 1.0.0
+ * @access protected
+ */
+ protected function content_template() {
+ ?>
+ <#
+
+ var title_size = (settings.title_size == '') ? 'text-xl' : settings.title_size;
+
+ view.addRenderAttribute( 'title', 'class', ['text-block-title font-semibold '+ title_size]);
+ view.addRenderAttribute( 'body', 'class', ['text-block-body']);
+ view.addRenderAttribute( 'cta_text', 'class', ['text-block-cta btn']);
+
+ view.addInlineEditingAttributes( 'title', 'none' );
+ view.addInlineEditingAttributes( 'body', 'advanced' );
+ view.addInlineEditingAttributes( 'cta_text', 'none' );
+ #>
+
+
+ <# if ('' !== settings.title) { #>
+ <{{{ settings.title_tag }}} {{{ view.getRenderAttributeString( 'title' ) }}}>{{{ settings.title }}}{{{ settings.title_tag }}}>
+ <# } #>
+
+ <# if ('' !== settings.body) { #>
+
{{{ settings.body }}}
+ <# } #>
+
+ <# if ('' !== settings.cta_text) { #>
+
+
+ {{{ settings.cta_text }}}
+
+
+
+
+
+ <# } #>
+
+
+ spacing_controls();
+
+ // Most common controls are handled for all Elements via
+ // Elementor\Setup but leaving this here as a hook for the future.
+ }
+
+}
diff --git a/web/app/mu-plugins/cube/src/Init.php b/web/app/mu-plugins/cube/src/Init.php
new file mode 100644
index 0000000..f3da48d
--- /dev/null
+++ b/web/app/mu-plugins/cube/src/Init.php
@@ -0,0 +1,46 @@
+register();
+ }
+ }
+ }
+
+ /**
+ * @param class $class Class from the services array
+ * @return class instance New instance of the class
+ */
+ private static function instantiate($class) {
+ return new $class();
+ }
+}
diff --git a/web/app/mu-plugins/cube/src/News/API.php b/web/app/mu-plugins/cube/src/News/API.php
new file mode 100644
index 0000000..930df8c
--- /dev/null
+++ b/web/app/mu-plugins/cube/src/News/API.php
@@ -0,0 +1,156 @@
+base_url = $base_url ?? NEWS_API_ENDPOINT;
+ $this->key = $key ?? NEWS_API_KEY;
+
+ // Caching setup
+ $this->cache_path = WP_CONTENT_DIR . DIRECTORY_SEPARATOR . 'cache' . DIRECTORY_SEPARATOR . 'news-API';
+ $this->filesystem = new Filesystem();
+ $this->filesystem->ensureDirectoryExists($this->cache_path, 0755, true);
+
+ // HTTP Client setup
+ $this->client = new Client(['base_uri' => trailingslashit($this->base_url)]);
+ }
+
+ public function get_token() {
+ // Request a login token for use with other requests
+ if (isset($this->token)) {
+ return $this->token;
+ }
+
+ $login = $this->request('login', ['key' => $this->key]);
+ $this->token = $login->data->token ?? false;
+
+ return $this->token;
+ }
+
+
+ /**
+ * @param $action
+ * @param $data
+ * @return false|mixed
+ * @throws GuzzleException
+ */
+ public function request($action, $data = [])
+ {
+ $cache_exists = false;
+
+ // All API requests except the login may be cached to improve performance
+ if ($action !== 'login') {
+ $cache_id = $this->cache_id($action, $data);
+
+ // Check if cached copy of data exists
+ $cache_file = $this->cache_path . DIRECTORY_SEPARATOR . $cache_id . '.json';
+ if ($this->filesystem->isFile($cache_file)) {
+ $cache_exists = true;
+
+ if (!$this->cache_expired($cache_file)) {
+ return json_decode($this->filesystem->get($cache_file));
+ }
+ }
+
+ $data['token'] = $this->get_token(); // Add token to request...
+ }
+
+
+ // No cached data, so try to get it from the API
+ try {
+ $response = $this->client->post($action, ['form_params' => $data]);
+ $response_contents = $response->getBody()->getContents();
+ $result = json_decode($response_contents);
+
+ // If everything went well, cache the JSON response locally
+ if ($result && $result->ok) {
+ if (isset($cache_file)) {
+ $this->filesystem->put($cache_file, $response_contents);
+ }
+ return $result;
+ }
+ } catch (GuzzleException $e) {
+ // Even if the API fails, we might still have a stale cached copy of the data we can use
+ // It's better than a complete failure...
+
+ if ($cache_exists) {
+ return json_decode($this->filesystem->get($cache_file));
+ }
+
+ return false;
+ }
+
+
+ return false;
+ }
+
+ // Generate an ID based on action and data for use in caching requests
+ public function cache_id($action, $data) {
+ $id = $action;
+
+ foreach ($data as $key => $value) {
+ $id .= "_{$key}-{$value}";
+ }
+
+ return $id;
+ }
+
+ // Check if cache has expired
+ public function cache_expired($cache_file) {
+ return (time() - $this->filesystem->lastModified($cache_file)) > $this->cache_period * 3600;
+ }
+}
diff --git a/web/app/mu-plugins/cube/src/News/Setup.php b/web/app/mu-plugins/cube/src/News/Setup.php
new file mode 100644
index 0000000..456d125
--- /dev/null
+++ b/web/app/mu-plugins/cube/src/News/Setup.php
@@ -0,0 +1,116 @@
+>> Visit Dashboard > Settings > Permalinks and click "Save Changes".
+ // To debug URL rewrites, use the Query Monitor plugin: https://wordpress.org/plugins/query-monitor/
+
+ // List of API content types that we want to support from the News API
+ // The array keys below will be registered as custom URL rewrites in WordPress
+ // This will provide URLs such as:
+ // - /actualites/ <-- main content type index page
+ // - /actualites/page-2/ <-- pagination support
+ // - /actualites/123456/ <-- individual content ID
+ // The 'id' sub-key is the content type ID from the News API (avocat2.businesscomm.fr/apiFeed/contentTypes)
+ // The 'title' sub-key is used for the main page template heading text
+ // Since the API is so poorly designed and these values should never change, they're hard-coded here:
+ public static $feed_types = [
+ 'actualites' => [ // If this key changes, make sure to update Elementor LatestNews widget.
+ 'id' => 1, // API content type ID
+ 'title' => 'Nos actualités',
+ ],
+ // NOTE: the agendas have been disabled because the API doesn't provide consistent or useful data
+ // Although we can get a list of the agenda posts, attempting to query the detail for an agenda item
+ // results in a flat "false" response from the API. The agenda URL provided in the API list result
+ // doesn't even show any data for that item, so the whole thing is pointless.
+ // The only way this might work is to embed / direct link to https://avocat2.businesscomm.fr/nos-agenda
+ // 'agenda' => [
+ // 'id' => 2,
+ // 'title' => 'Agendas',
+ // ],
+ 'dossiers-du-mois' => [
+ 'id' => 5,
+ 'title' => 'Dossiers du mois',
+ ],
+ 'indices-taux' => [
+ 'id' => 4,
+ 'title' => 'Indices & taux',
+ ],
+ 'simulateurs' => [
+ 'id' => 11,
+ 'title' => 'Simulateurs',
+ ],
+ 'videos' => [
+ 'id' => 6,
+ 'title' => 'Vidéos',
+ ],
+ ];
+
+ /**
+ * Common setup, will be automatically triggered by Init class if included
+ */
+ public function register() {
+ $this->setup_routes();
+ }
+
+ public function setup_routes() {
+
+ // Add custom URL pattern
+ // Ref: https://www.youtube.com/watch?v=Wb5yEs5kV5k
+ add_action('init', function() {
+
+ // Add a custom URL for each of the feed_types
+ foreach (static::$feed_types as $feed_type => $feed_type_detail) {
+ // https://regex101.com/r/awt6hs/1
+ add_rewrite_rule($feed_type . '\/?(page-([\d]+))?\/?$', 'index.php?feed_type='. $feed_type .'&feed_page=$matches[2]', 'top');
+
+ // Also a URL pattern for the individual article IDs under each feed type (eg. /actualites/xxxxx)
+ add_rewrite_rule($feed_type . '\/([\d]+)\/?$', 'index.php?feed_type='. $feed_type .'&feed_article=$matches[1]', 'top');
+ }
+
+
+ });
+
+ // Make sure WordPress knows about these custom parameters
+ add_filter('query_vars', function($query_vars) {
+ $query_vars[] = 'feed_type';
+ $query_vars[] = 'feed_page';
+ $query_vars[] = 'feed_article';
+ return $query_vars;
+ });
+
+ // Load the correct Blade view file
+ // Ref: https://discourse.roots.io/t/load-a-specific-blade-template-for-custom-url-structure-with-wp-rewrite/22951/3
+ add_filter('template_include', function ($template) {
+ $feed_type = get_query_var('feed_type');
+ $feed_article = get_query_var('feed_article');
+
+ if (!$feed_type || !array_key_exists($feed_type, static::$feed_types)) {
+ return $template;
+ }
+
+ // All these templates have a header that sits under the logo / menu icon, so add CSS class to signal that
+ add_filter('body_class', function ($classes) {
+ $classes[] = 'has-page-header';
+ return $classes;
+ });
+
+ // Are we viewing a single article or an index page?
+ if ($feed_article) {
+ return locate_template(app('sage.finder')->locate('news-feed.article'));
+ }
+
+ // TODO: possibly handle special case for Agenda here
+ $view = 'news-feed/index';
+
+ return locate_template(app('sage.finder')->locate($view));
+ });
+ }
+
+}
diff --git a/web/app/mu-plugins/mute-php-deprecation-notices.php b/web/app/mu-plugins/mute-php-deprecation-notices.php
new file mode 100644
index 0000000..ac3f6ed
--- /dev/null
+++ b/web/app/mu-plugins/mute-php-deprecation-notices.php
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WordPress starter theme with Laravel Blade components and templates, Tailwind CSS, and a modern development workflow
+
+
+
+ Website Documentation Releases Support
+
+
+## Sponsors
+
+**Sage** 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 [sponsoring Roots](https://github.com/sponsors/roots).
+
+
+
+
+
+
+## Features
+
+- Harness the power of [Laravel](https://laravel.com) and its available packages thanks to [Acorn](https://github.com/roots/acorn).
+- Clean, efficient theme templating utilizing [Laravel Blade](https://laravel.com/docs/master/blade).
+- Lightning fast frontend development workflow powered by [Bud](https://bud.js.org/).
+- Out of the box support for [Tailwind CSS](https://tailwindcss.com/).
+
+## Requirements
+
+Make sure all dependencies have been installed before moving on:
+
+- [Acorn](https://docs.roots.io/acorn/2.x/installation/) v2
+- [WordPress](https://wordpress.org/) >= 5.9
+- [PHP](https://secure.php.net/manual/en/install.php) >= 7.4.0 (with [`php-mbstring`](https://secure.php.net/manual/en/book.mbstring.php) enabled)
+- [Composer](https://getcomposer.org/download/)
+- [Node.js](http://nodejs.org/) >= 16
+- [Yarn](https://yarnpkg.com/en/docs/install)
+
+## Theme installation
+
+Install Sage using Composer from your WordPress themes directory (replace `your-theme-name` below with the name of your theme):
+
+```sh
+# @ app/themes/ or wp-content/themes/
+$ composer create-project roots/sage your-theme-name
+```
+
+To install the latest development version of Sage, add `dev-main` to the end of the command:
+
+```sh
+$ composer create-project roots/sage your-theme-name dev-main
+```
+
+Make sure that you have [Acorn installed](https://docs.roots.io/acorn/2.x/installation/).
+
+## Theme structure
+
+```sh
+themes/your-theme-name/ # â Root of your Sage based theme
+âââ app/ # â Theme PHP
+â âââ Providers/ # â Service providers
+â âââ View/ # â View models
+â âââ filters.php # â Theme filters
+â âââ setup.php # â Theme setup
+âââ composer.json # â Autoloading for `app/` files
+âââ public/ # â Built theme assets (never edit)
+âââ functions.php # â Theme bootloader
+âââ index.php # â Theme template wrapper
+âââ node_modules/ # â Node.js packages (never edit)
+âââ package.json # â Node.js dependencies and scripts
+âââ resources/ # â Theme assets and templates
+â âââ fonts/ # â Theme fonts
+â âââ images/ # â Theme images
+â âââ scripts/ # â Theme javascript
+â âââ styles/ # â Theme stylesheets
+â âââ views/ # â Theme templates
+â âââ components/ # â Component templates
+â âââ forms/ # â Form templates
+â âââ layouts/ # â Base templates
+â âââ partials/ # â Partial templates
+ âââ sections/ # â Section templates
+âââ screenshot.png # â Theme screenshot for WP admin
+âââ style.css # â Theme meta information
+âââ vendor/ # â Composer packages (never edit)
+âââ bud.config.js # â Bud configuration
+```
+
+## Theme setup
+
+Edit `app/setup.php` to enable or disable theme features, setup navigation menus, post thumbnail sizes, and sidebars.
+
+## Theme development
+
+- Run `yarn` from the theme directory to install dependencies
+- Update `bud.config.js` with your local dev URL
+
+### Build commands
+
+- `yarn dev` â Compile assets when file changes are made, start Browsersync session
+- `yarn build` â Compile assets for production
+
+## Community
+
+Keep track of development and community news.
+
+- Join us on Discord by [sponsoring us on GitHub](https://github.com/sponsors/roots)
+- 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/)
diff --git a/web/app/themes/lyveas/app/Providers/ThemeServiceProvider.php b/web/app/themes/lyveas/app/Providers/ThemeServiceProvider.php
new file mode 100644
index 0000000..1d50cb4
--- /dev/null
+++ b/web/app/themes/lyveas/app/Providers/ThemeServiceProvider.php
@@ -0,0 +1,28 @@
+ 'text-indigo-50 bg-indigo-400',
+ 'success' => 'text-green-50 bg-green-400',
+ 'caution' => 'text-yellow-50 bg-yellow-400',
+ 'warning' => 'text-red-50 bg-red-400',
+ ];
+
+ /**
+ * Create the component instance.
+ *
+ * @param string $type
+ * @param string $message
+ * @return void
+ */
+ public function __construct($type = 'default', $message = null)
+ {
+ $this->type = $this->types[$type] ?? $this->types['default'];
+ $this->message = $message;
+ }
+
+ /**
+ * Get the view / contents that represent the component.
+ *
+ * @return \Illuminate\View\View|string
+ */
+ public function render()
+ {
+ return $this->view('components.alert');
+ }
+}
diff --git a/web/app/themes/lyveas/app/View/Composers/App.php b/web/app/themes/lyveas/app/View/Composers/App.php
new file mode 100644
index 0000000..0d870d4
--- /dev/null
+++ b/web/app/themes/lyveas/app/View/Composers/App.php
@@ -0,0 +1,39 @@
+ $this->siteName(),
+ ];
+ }
+
+ /**
+ * Returns the site name.
+ *
+ * @return string
+ */
+ public function siteName()
+ {
+ return get_bloginfo('name', 'display');
+ }
+}
diff --git a/web/app/themes/lyveas/app/View/Composers/Expertise.php b/web/app/themes/lyveas/app/View/Composers/Expertise.php
new file mode 100644
index 0000000..cd7c1db
--- /dev/null
+++ b/web/app/themes/lyveas/app/View/Composers/Expertise.php
@@ -0,0 +1,49 @@
+ carbon_get_post_meta($postID, 'intro'),
+ 'description' => wpautop(carbon_get_post_meta($postID, 'description')),
+ 'services' => carbon_get_post_meta($postID, 'services'),
+ 'staff' => $this->staff(),
+ ];
+ }
+
+ public function staff()
+ {
+ $staff = new WP_Query([
+ 'relationship' => [
+ 'id' => 'staff_to_expertise',
+ 'to' => get_the_ID(),
+ ],
+ 'nopaging' => true,
+ ]);
+
+ return $staff->posts;
+ }
+
+}
diff --git a/web/app/themes/lyveas/app/View/Composers/News.php b/web/app/themes/lyveas/app/View/Composers/News.php
new file mode 100644
index 0000000..aebc76f
--- /dev/null
+++ b/web/app/themes/lyveas/app/View/Composers/News.php
@@ -0,0 +1,74 @@
+request('list', [
+ 'type' => Setup::$feed_types[$feed_type]['id'],
+ 'items-page' => $items_per_page,
+ 'num-page' => $feed_page,
+ ]);
+
+ if (!$response || !$response->ok) {
+ $api_failed = true;
+ return compact('title', 'api_failed');
+ }
+
+
+ $paginator = new Paginator(
+ $response->data->total_items,
+ $items_per_page,
+ $feed_page,
+ function ($page_number) use ($feed_type) {
+ // Paginator URL template: doesn't include page-xxx for first page
+ $template = "/$feed_type/";
+
+ if ($page_number > 1) {
+ $template .= "page-{$page_number}/";
+ }
+ return $template;
+ }
+ );
+ $paginator->setMaxPagesToShow(5); // How many pages to show in the sliding list
+
+ return [
+ 'title' => $title,
+ 'feed_type' => $feed_type,
+ 'categories' => Setup::$feed_types,
+ 'items' => $response->data->items ?? [],
+ 'paginator' => $paginator,
+ 'total_items' => $response->data->total_items,
+ 'total_pages' => $response->data->total_pages,
+ ];
+ }
+}
diff --git a/web/app/themes/lyveas/app/View/Composers/NewsArticle.php b/web/app/themes/lyveas/app/View/Composers/NewsArticle.php
new file mode 100644
index 0000000..f8e69bd
--- /dev/null
+++ b/web/app/themes/lyveas/app/View/Composers/NewsArticle.php
@@ -0,0 +1,62 @@
+request('detail', [
+ 'id' => $article_id,
+ ]);
+
+ if (!$response || !$response->ok) {
+ $api_failed = true;
+ $title = 'Erreur technique';
+ return compact('title', 'api_failed');
+ }
+
+ $article = $response->data->items[0]; // Only ever one result for the detail query
+
+ // The API doesn't return us the full image but we can get the URL by removing the resizing suffix
+ $article->picture_path = str_replace('-bcSize-300x300', '', $article->picture_path);
+
+ // There's some nasty formatting in the article content, so let's improve that
+ // What to remove in the content:
+ $remove = [
+ ' style="text-align: justify;"', // No, thanks.
+ 'Â
', // Empty paragraphs
+ 'Â
',
+ ];
+ $article->content = str_replace($remove, '', $article->content);
+
+ return [
+ 'title' => $article->title,
+ 'article' => $article,
+ 'feed_type' => $feed_type,
+ ];
+ }
+}
diff --git a/web/app/themes/lyveas/app/View/Composers/Post.php b/web/app/themes/lyveas/app/View/Composers/Post.php
new file mode 100644
index 0000000..0d39879
--- /dev/null
+++ b/web/app/themes/lyveas/app/View/Composers/Post.php
@@ -0,0 +1,69 @@
+ $this->title(),
+ ];
+ }
+
+ /**
+ * Returns the post title.
+ *
+ * @return string
+ */
+ public function title()
+ {
+ if ($this->view->name() !== 'partials.page-header') {
+ return get_the_title();
+ }
+
+ if (is_home()) {
+ if ($home = get_option('page_for_posts', true)) {
+ return get_the_title($home);
+ }
+
+ return __('Latest Posts', 'sage');
+ }
+
+ if (is_archive()) {
+ return get_the_archive_title();
+ }
+
+ if (is_search()) {
+ return sprintf(
+ /* translators: %s is replaced with the search query */
+ __('Search Results for %s', 'sage'),
+ get_search_query()
+ );
+ }
+
+ if (is_404()) {
+ return __('Not Found', 'sage');
+ }
+
+ return get_the_title();
+ }
+}
diff --git a/web/app/themes/lyveas/app/View/Composers/Staff.php b/web/app/themes/lyveas/app/View/Composers/Staff.php
new file mode 100644
index 0000000..61f477b
--- /dev/null
+++ b/web/app/themes/lyveas/app/View/Composers/Staff.php
@@ -0,0 +1,53 @@
+ get_the_title(),
+ 'photo' => wp_get_attachment_image_url(carbon_get_post_meta($postID, 'photo'), 'full'),
+ 'status' => carbon_get_post_meta($postID, 'status'),
+ 'highlights' => carbon_get_post_meta($postID, 'highlights'),
+ 'intro' => carbon_get_post_meta($postID, 'intro'),
+ 'bio' => wpautop(carbon_get_post_meta($postID, 'bio')),
+ 'expertises' => $this->expertises(),
+ 'associations' => carbon_get_post_meta($postID, 'associations'),
+ ];
+ }
+
+ public function expertises()
+ {
+ $expertises = new WP_Query([
+ 'relationship' => [
+ 'id' => 'staff_to_expertise',
+ 'from' => get_the_ID(),
+ ],
+ 'nopaging' => true,
+ ]);
+
+ return $expertises->posts;
+ }
+
+}
diff --git a/web/app/themes/lyveas/app/filters.php b/web/app/themes/lyveas/app/filters.php
new file mode 100644
index 0000000..4d2639b
--- /dev/null
+++ b/web/app/themes/lyveas/app/filters.php
@@ -0,0 +1,35 @@
+%s', get_permalink(), __('Continued', 'sage'));
+});
diff --git a/web/app/themes/lyveas/app/helpers.php b/web/app/themes/lyveas/app/helpers.php
new file mode 100644
index 0000000..434c2b7
--- /dev/null
+++ b/web/app/themes/lyveas/app/helpers.php
@@ -0,0 +1,30 @@
+enqueue();
+}, 100);
+
+/**
+ * Register the theme assets with the block editor.
+ *
+ * @return void
+ */
+add_action('enqueue_block_editor_assets', function () {
+ bundle('editor')->enqueue();
+}, 100);
+
+/**
+ * Add admin specific styles
+ */
+function add_admin_styles($force = false) {
+ if (is_admin() || $force) {
+ // Adds the admin bundle (see bud.config.mjs entrypoint definitions)
+ bundle('admin')->enqueue();
+ }
+}
+add_action('admin_enqueue_scripts', __NAMESPACE__ . '\add_admin_styles');
+add_action('elementor/common/after_register_scripts', __NAMESPACE__ . '\add_admin_styles');
+add_action('elementor/preview/enqueue_styles', function () {
+ add_admin_styles(true);
+});
+
+/**
+ * Register the initial theme setup.
+ *
+ * @return void
+ */
+add_action('after_setup_theme', function () {
+ /**
+ * Enable features from the Soil plugin if activated.
+ *
+ * @link https://roots.io/plugins/soil/
+ */
+ add_theme_support('soil', [
+ 'clean-up',
+ 'nav-walker',
+ 'nice-search',
+ 'relative-urls',
+ ]);
+
+ /**
+ * Disable full-site editing support.
+ *
+ * @link https://wptavern.com/gutenberg-10-5-embeds-pdfs-adds-verse-block-color-options-and-introduces-new-patterns
+ */
+ remove_theme_support('block-templates');
+
+ /**
+ * Register the navigation menus.
+ *
+ * @link https://developer.wordpress.org/reference/functions/register_nav_menus/
+ */
+ register_nav_menus([
+ 'navigation_primary' => __('Menu Principal', 'sage'),
+ 'navigation_footer_primary' => __('Menu de bas de page', 'sage'),
+ 'navigation_footer_secondary' => __('Menu secondaire de bas de page', 'sage'),
+ ]);
+
+ /**
+ * Disable the default block patterns.
+ *
+ * @link https://developer.wordpress.org/block-editor/developers/themes/theme-support/#disabling-the-default-block-patterns
+ */
+ remove_theme_support('core-block-patterns');
+
+ /**
+ * Enable plugins to manage the document title.
+ *
+ * @link https://developer.wordpress.org/reference/functions/add_theme_support/#title-tag
+ */
+ add_theme_support('title-tag');
+
+ /**
+ * Enable post thumbnail support.
+ *
+ * @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/
+ */
+ add_theme_support('post-thumbnails');
+
+ /**
+ * Enable responsive embed support.
+ *
+ * @link https://wordpress.org/gutenberg/handbook/designers-developers/developers/themes/theme-support/#responsive-embedded-content
+ */
+ add_theme_support('responsive-embeds');
+
+ /**
+ * Enable HTML5 markup support.
+ *
+ * @link https://developer.wordpress.org/reference/functions/add_theme_support/#html5
+ */
+ add_theme_support('html5', [
+ 'caption',
+ 'comment-form',
+ 'comment-list',
+ 'gallery',
+ 'search-form',
+ 'script',
+ 'style',
+ ]);
+
+ /**
+ * Enable selective refresh for widgets in customizer.
+ *
+ * @link https://developer.wordpress.org/themes/advanced-topics/customizer-api/#theme-support-in-sidebars
+ */
+ add_theme_support('customize-selective-refresh-widgets');
+}, 20);
+
+/**
+ * Register the theme sidebars.
+ *
+ * @return void
+ */
+add_action('widgets_init', function () {
+ $config = [
+ 'before_widget' => '',
+ 'before_title' => '',
+ 'after_title' => ' ',
+ ];
+
+ $footer_columns = 4; // How many widget areas / columns will there be in the footer?
+
+ for ($i = 1; $i <= $footer_columns; $i++) {
+ register_sidebar([
+ 'name' => "Footer $i",
+ 'id' => "footer-$i",
+ ] + $config);
+ }
+});
+
+
+
+/**
+ * Add Custom Styles to TinyMCE editor
+ */
+// https://codex.wordpress.org/TinyMCE_Custom_Styles
+// Callback function to insert 'styleselect' into the $buttons array
+add_filter('mce_buttons_2', function ($buttons) {
+ array_unshift($buttons, 'styleselect');
+ return $buttons;
+});
+
+// Add format classes to style dropdown
+add_filter( 'tiny_mce_before_init', function ($init_array) {
+
+ //=== Font Families
+ $fonts = [
+ 'font-heading' => 'Heading Font (Recife)',
+ 'font-body' => 'Body Font (Roboto)',
+ 'font-watermark' => 'Decorative Font (Jaapokki Subtract)',
+ ];
+
+ $font_formats = [];
+
+ foreach ($fonts as $font => $font_label) {
+ $font_formats[] = [
+ 'title' => $font_label,
+ 'inline' => 'span',
+ 'selector' => 'h1, h2, h3, h4, h5, p, div',
+ 'classes' => $font,
+ 'wrapper' => false,
+ ];
+ }
+
+ // Add submenu for font fonts
+ $style_formats[] = [
+ 'title' => 'Font',
+ 'items' => $font_formats,
+ ];
+
+
+ //=== Text size styles
+ $sizes = [
+ 'text-sm' => 'Small Text (14px)',
+ 'text-step--2' => 'Step -2',
+ 'text-step--1' => 'Step -1',
+ 'text-step-0' => 'Step 0',
+ 'text-step-1' => 'Step 1',
+ 'text-step-2' => 'Step 2',
+ 'text-step-3' => 'Step 3',
+ 'text-step-4' => 'Step 4',
+ 'text-step-5' => 'Step 5',
+ 'text-step-6' => 'Step 6',
+ ];
+
+ $size_formats = [];
+
+ foreach ($sizes as $size => $size_label) {
+ $size_formats[] = [
+ 'title' => $size_label,
+ 'inline' => 'span',
+ 'selector' => 'h1, h2, h3, h4, h5, p, div',
+ 'classes' => $size,
+ 'wrapper' => false,
+ ];
+ }
+
+ // Add submenu for font sizes
+ $style_formats[] = [
+ 'title' => 'Font Size',
+ 'items' => $size_formats,
+ ];
+
+ //=== Font weights
+ $weights = [
+ 'font-normal' => 'Regular',
+ 'font-medium' => 'Medium',
+ 'font-semibold' => 'Semi-bold',
+ ];
+
+ $weight_formats = [];
+
+ foreach ($weights as $weight => $weight_label) {
+ $weight_formats[] = [
+ 'title' => $weight_label,
+ 'inline' => 'span',
+ 'selector' => 'h1, h2, h3, h4, h5, p, div, li',
+ 'classes' => $weight,
+ 'wrapper' => false,
+ ];
+ }
+
+ // Add submenu for font weights
+ $style_formats[] = [
+ 'title' => 'Font Weight',
+ 'items' => $weight_formats,
+ ];
+
+ //=== Text colours
+ $colours = [
+ 'text-navy' => 'Navy',
+ 'text-orange' => 'Orange',
+ 'text-grey' => 'Grey',
+ 'text-light' => 'Light',
+ 'text-white' => 'White',
+ ];
+
+ $colour_formats = [];
+
+ foreach ($colours as $colour => $colour_label) {
+ $colour_formats[] = [
+ 'title' => $colour_label,
+ 'inline' => 'span',
+ 'selector' => 'h1, h2, h3, h4, h5, p, div, li',
+ 'classes' => $colour,
+ 'wrapper' => false,
+ ];
+ }
+
+ // Add submenu for text colours
+ $style_formats[] = [
+ 'title' => 'Font Colour',
+ 'items' => $colour_formats,
+ ];
+
+ //=== Line Heights (leading)
+ $line_heights = [
+ 'leading-none' => 'None',
+ 'leading-tight' => 'Tight',
+ 'leading-snug' => 'Snug',
+ 'leading-normal' => 'Normal',
+ 'leading-relaxed' => 'Relaxed',
+ 'leading-loose' => 'Loose',
+ ];
+
+ $line_height_formats = [];
+
+ foreach ($line_heights as $line_height => $line_height_label) {
+ $line_height_formats[] = [
+ 'title' => $line_height_label,
+ 'inline' => 'span',
+ 'selector' => 'h1, h2, h3, h4, h5, p, div, li',
+ 'classes' => $line_height,
+ 'wrapper' => false,
+ ];
+ }
+
+ // Add submenu for text line_heights
+ $style_formats[] = [
+ 'title' => 'Line Heights',
+ 'items' => $line_height_formats,
+ ];
+
+ //=== Letter Spacing (tracking)
+ $letter_spacings = [
+ 'tracking-tighter' => 'Tighter',
+ 'tracking-tight' => 'Tight',
+ 'tracking-normal' => 'Normal',
+ 'tracking-wide' => 'Wide',
+ 'tracking-wider' => 'Wider',
+ 'tracking-widest' => 'Widest',
+ ];
+
+ $letter_spacing_formats = [];
+
+ foreach ($letter_spacings as $letter_spacing => $letter_spacing_label) {
+ $letter_spacing_formats[] = [
+ 'title' => $letter_spacing_label,
+ 'inline' => 'span',
+ 'selector' => 'h1, h2, h3, h4, h5, p, div, li',
+ 'classes' => $letter_spacing,
+ 'wrapper' => false,
+ ];
+ }
+
+ // Add submenu for text letter_spacings
+ $style_formats[] = [
+ 'title' => 'Letter Spacing',
+ 'items' => $letter_spacing_formats,
+ ];
+
+ // Insert the array, JSON ENCODED, into 'style_formats'
+ $init_array['style_formats'] = json_encode($style_formats);
+
+ return $init_array;
+});
diff --git a/web/app/themes/lyveas/bud.config.mjs b/web/app/themes/lyveas/bud.config.mjs
new file mode 100644
index 0000000..6f028a9
--- /dev/null
+++ b/web/app/themes/lyveas/bud.config.mjs
@@ -0,0 +1,142 @@
+// @ts-check
+
+/**
+ * Build configuration
+ *
+ * @see {@link https://bud.js.org/guides/configure}
+ * @param {import('@roots/bud').Bud} app
+ */
+export default async (app) => {
+
+ // Note: currently assets don't work properly if `yarn dev` is running (hot reload) and you access
+ // the non-live-reload version (ie. lyveas.test vs lyveas.test:3000). This is a known issue and will
+ // be fixed once Acorn 3 is out but for now, we have to live it it.
+ // Ref:
+
+ app
+ /**
+ * Application entrypoints
+ */
+ .entry({
+ // Include the main app.js, plus any scripts in the elementor/* subdirectory (for custom widgets init)
+ app: ['@scripts/app', '@styles/app', await app.glob('@scripts/elementor/*.js')],
+ admin: ['@styles/admin'],
+ // editor: ['@scripts/editor', '@styles/editor'],
+ })
+
+ .tap(bud => bud.postcss.setPluginOptions('env', {
+ //preserve: false,
+ features: {
+ 'custom-properties': false, // Don't make css var fallback values
+ },
+ }))
+
+ /**
+ * Directory contents to be included in the compilation
+ */
+ .assets(["images", "animations"])
+
+ /**
+ * Matched files trigger a page reload when modified
+ */
+ .watch(["resources/views/**/*", "app/**/*"])
+
+ /**
+ * Proxy origin (`WP_HOME`)
+ */
+ .proxy("http://lyveas.test")
+
+ /**
+ * Development origin
+ */
+ // .serve("http://0.0.0.0:3000")
+ // NOTE: there's a current issue with this, preventing it from
+ // working properly with the network IP address or custom domain
+ // (see: https://github.com/roots/bud/issues/1765)
+ // For the local network devices, use:
+ //
+ // .serve("http://192.168.1.14:3000")
+ .serve("http://lyveas.test:3000")
+
+ /**
+ * URI of the `public` directory
+ */
+ .setPublicPath("/app/themes/lyveas/public/")
+
+ /**
+ * Generate WordPress `theme.json`
+ *
+ * @note This overwrites `theme.json` on every build.
+ */
+ /*
+ .wpjson
+ .settings({
+ color: {
+ custom: false,
+ customGradient: false,
+ defaultPalette: false,
+ defaultGradients: false,
+ },
+ custom: {
+ spacing: {},
+ typography: {
+ 'font-size': {},
+ 'line-height': {},
+ },
+ },
+ spacing: {
+ padding: true,
+ units: ['px', '%', 'em', 'rem', 'vw', 'vh'],
+ },
+ typography: {
+ customFontSize: false,
+ },
+ })
+ .useTailwindColors()
+ .useTailwindFontFamily()
+ .useTailwindFontSize()
+ .enable()
+
+ */
+
+
+ // >> Failed attempt to get SugarSS working instead of SASS :(
+
+ // //app.postcss.parser = 'sugarss';
+
+ // app.build
+ // .setLoader('sugarss', 'postcss-loader')
+ // .setItem('sugarss', {
+ // loader: 'sugarss',
+ // options: {
+ // postcssOptions: {
+ // parser: 'sugarss',
+ // },
+ // }
+ // })
+ // .setRule('sugarss', {test: /\.sss$/, use: ['sugarss']})
+
+ //>>> the below seems to give a similar result to above
+
+ // app.hooks.on('build.module.rules.oneOf', (rules) => [
+ // ...rules,
+ // {
+ // test: /\.sss$/,
+ // use: [
+ // {
+ // loader: 'postcss-loader',
+ // options: {
+ // postcssOptions: {
+ // parser: "sugarss",
+ // }
+ // },
+ // },
+ // ],
+ // },
+ // ])
+ // .hooks.on('build.resolve.extensions', (ext) => ext.add('.sss'))
+
+ // console.log(app.postcss)
+ // app.close()
+
+};
diff --git a/web/app/themes/lyveas/composer.json b/web/app/themes/lyveas/composer.json
new file mode 100644
index 0000000..baaf1ee
--- /dev/null
+++ b/web/app/themes/lyveas/composer.json
@@ -0,0 +1,71 @@
+{
+ "name": "roots/sage",
+ "type": "wordpress-theme",
+ "license": "MIT",
+ "description": "WordPress starter theme with a modern development workflow",
+ "homepage": "https://roots.io/sage/",
+ "authors": [
+ {
+ "name": "Ben Word",
+ "email": "ben@benword.com",
+ "homepage": "https://github.com/retlehs"
+ },
+ {
+ "name": "Scott Walkinshaw",
+ "email": "scott.walkinshaw@gmail.com",
+ "homepage": "https://github.com/swalkinshaw"
+ },
+ {
+ "name": "QWp6t",
+ "email": "hi@qwp6t.me",
+ "homepage": "https://github.com/qwp6t"
+ },
+ {
+ "name": "Brandon Nifong",
+ "email": "brandon@tendency.me",
+ "homepage": "https://github.com/log1x"
+ }
+ ],
+ "keywords": [
+ "wordpress"
+ ],
+ "support": {
+ "issues": "https://github.com/roots/sage/issues",
+ "forum": "https://discourse.roots.io/"
+ },
+ "autoload": {
+ "psr-4": {
+ "App\\": "app/"
+ }
+ },
+ "require": {
+ "php": "^7.4|^8.0",
+ "log1x/sage-html-forms": "^1.0"
+ },
+ "require-dev": {
+ "squizlabs/php_codesniffer": "3.7.1"
+ },
+ "suggest": {
+ "log1x/sage-directives": "A collection of useful Blade directives for WordPress and Sage (^1.0).",
+ "log1x/sage-svg": "A useful SVG directive for inlining SVG's within Blade views (^1.0)."
+ },
+ "config": {
+ "optimize-autoloader": true,
+ "preferred-install": "dist",
+ "sort-packages": true
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true,
+ "scripts": {
+ "lint": [
+ "phpcs --extensions=php --standard=PSR12 app"
+ ]
+ },
+ "extra": {
+ "acorn": {
+ "providers": [
+ "App\\Providers\\ThemeServiceProvider"
+ ]
+ }
+ }
+}
diff --git a/web/app/themes/lyveas/composer.lock b/web/app/themes/lyveas/composer.lock
new file mode 100644
index 0000000..2937189
--- /dev/null
+++ b/web/app/themes/lyveas/composer.lock
@@ -0,0 +1,140 @@
+{
+ "_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": "fe68302baf1fbf7dee5242b8644577c9",
+ "packages": [
+ {
+ "name": "log1x/sage-html-forms",
+ "version": "v1.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Log1x/sage-html-forms.git",
+ "reference": "d992fc06ea3a8708b521c9b28dab737f5fdfd7b9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Log1x/sage-html-forms/zipball/d992fc06ea3a8708b521c9b28dab737f5fdfd7b9",
+ "reference": "d992fc06ea3a8708b521c9b28dab737f5fdfd7b9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.3|^8.0"
+ },
+ "require-dev": {
+ "squizlabs/php_codesniffer": "^3.5"
+ },
+ "type": "package",
+ "extra": {
+ "acorn": {
+ "providers": [
+ "Log1x\\HtmlForms\\HtmlFormsServiceProvider"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Log1x\\HtmlForms\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Brandon Nifong",
+ "email": "brandon@tendency.me"
+ }
+ ],
+ "description": "Create forms using HTMLForms.io and Sage 10 Blade components",
+ "keywords": [
+ "htmlforms",
+ "roots",
+ "sage",
+ "wordpress"
+ ],
+ "support": {
+ "issues": "https://github.com/log1x/sage-html-forms/issues",
+ "source": "https://github.com/Log1x/sage-html-forms/tree/v1.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Log1x",
+ "type": "github"
+ }
+ ],
+ "time": "2022-11-29T20:36:12+00:00"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "squizlabs/php_codesniffer",
+ "version": "3.7.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+ "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619",
+ "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619",
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
+ "source": "https://github.com/squizlabs/PHP_CodeSniffer",
+ "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
+ },
+ "time": "2022-06-18T07:21:10+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "dev",
+ "stability-flags": [],
+ "prefer-stable": true,
+ "prefer-lowest": false,
+ "platform": {
+ "php": "^7.4|^8.0"
+ },
+ "platform-dev": [],
+ "plugin-api-version": "2.1.0"
+}
diff --git a/web/app/themes/lyveas/css-props-generator.js b/web/app/themes/lyveas/css-props-generator.js
new file mode 100644
index 0000000..0665a31
--- /dev/null
+++ b/web/app/themes/lyveas/css-props-generator.js
@@ -0,0 +1,64 @@
+// This script is part of the build process and generates CSS custom properties based on the Tailwind config
+// Original source: https://github.com/hankchizljaw/CUBE-with-tailwind/blob/main/css-props-generator.js
+
+const fs = require('fs');
+const prettier = require('prettier');
+const resolveConfig = require('tailwindcss/resolveConfig');
+const tailwindConfig = require('./tailwind.config.cjs');
+const outputPath = './resources/styles/custom-props.css';
+
+//const config = resolveConfig(tailwindConfig);
+// Now using shared config file instead of Tailwind:
+config = require('./theme.config.cjs')
+
+/*
+ Converts the tailwind config elements into custom props.
+*/
+const generateCSSProps = () => {
+ let result = '';
+
+ const groups = [
+ {key: 'custom_props', prefix: ''}, // Non-prefixed to allow for flexibility in naming
+ {key: 'colors', prefix: 'color-'},
+ {key: 'fontFamily', prefix: 'font-'},
+ {key: 'fontSize', prefix: 'size-'},
+ {key: 'spacing', prefix: 'space-'},
+ ];
+
+ // Add a note that this is auto generated
+ result += `/*=== VARIABLES AUTO-GENERATED FROM TAILWIND CONFIG ON ${new Date().toLocaleString('en-GB')}. ===*/
+/* Config location: ./tailwind.config.cjs */
+/* To regenerate this file, run: yarn css-props */
+
+:root {\n`;
+
+ // Loop each group's keys, use that and the associated
+ // property to define a :root custom prop
+ groups.forEach(({key, prefix}) => {
+ //const group = config.theme[key];
+ const group = config[key];
+
+
+ if (!group) {
+ return;
+ }
+
+ Object.keys(group).forEach(key => {
+ result += `\t`;
+ result += `--${prefix}${key}: ${group[key]};`;
+ result += `\n`;
+ });
+ });
+
+ // Close the :root block
+ result += `}`;
+
+ // Make the CSS readable to help people with auto-complete in their editors
+ //result = prettier.format(result, {parser: 'scss'});
+
+ // Push this file into the CSS dir, ready to go
+ fs.writeFileSync(outputPath, result);
+};
+
+generateCSSProps();
+module.exports = generateCSSProps;
diff --git a/web/app/themes/lyveas/functions.php b/web/app/themes/lyveas/functions.php
new file mode 100644
index 0000000..7d8b0d8
--- /dev/null
+++ b/web/app/themes/lyveas/functions.php
@@ -0,0 +1,79 @@
+composer install.', 'sage'));
+}
+
+require $composer;
+
+/*
+|--------------------------------------------------------------------------
+| Register The Bootloader
+|--------------------------------------------------------------------------
+|
+| The first thing we will do is schedule a new Acorn application container
+| to boot when WordPress is finished loading the theme. The application
+| serves as the "glue" for all the components of Laravel and is
+| the IoC container for the system binding all of the various parts.
+|
+*/
+
+try {
+ \Roots\bootloader();
+} catch (Throwable $e) {
+ wp_die(
+ __('You need to install Acorn to use this theme.', 'sage'),
+ '',
+ [
+ 'link_url' => 'https://docs.roots.io/acorn/2.x/installation/',
+ 'link_text' => __('Acorn Docs: Installation', 'sage'),
+ ]
+ );
+}
+
+/*
+|--------------------------------------------------------------------------
+| Register Sage Theme Files
+|--------------------------------------------------------------------------
+|
+| Out of the box, Sage ships with categorically named theme files
+| containing common functionality and setup to be bootstrapped with your
+| theme. Simply add (or remove) files from the array below to change what
+| is registered alongside Sage.
+|
+*/
+
+collect(['helpers', 'setup', 'filters'])
+ ->each(function ($file) {
+ if (! locate_template($file = "app/{$file}.php", true, true)) {
+ wp_die(
+ /* translators: %s is replaced with the relative file path */
+ sprintf(__('Error locating %s for inclusion.', 'sage'), $file)
+ );
+ }
+ });
+
+/*
+|--------------------------------------------------------------------------
+| Enable Sage Theme Support
+|--------------------------------------------------------------------------
+|
+| Once our theme files are registered and available for use, we are almost
+| ready to boot our application. But first, we need to signal to Acorn
+| that we will need to initialize the necessary service providers built in
+| for Sage when booting.
+|
+*/
+
+add_theme_support('sage');
diff --git a/web/app/themes/lyveas/index.php b/web/app/themes/lyveas/index.php
new file mode 100644
index 0000000..6ec70f0
--- /dev/null
+++ b/web/app/themes/lyveas/index.php
@@ -0,0 +1,37 @@
+
+>
+
+
+
+
+
+
+
+
+
+
+ >
+
+
+
+
+
+ render(); ?>
+
+
+
+
+
+
diff --git a/web/app/themes/lyveas/jsconfig.json b/web/app/themes/lyveas/jsconfig.json
new file mode 100644
index 0000000..65d57f2
--- /dev/null
+++ b/web/app/themes/lyveas/jsconfig.json
@@ -0,0 +1,19 @@
+{
+ "compilerOptions": {
+ "allowSyntheticDefaultImports": true,
+ "baseUrl": "resources",
+ "lib": ["DOM", "DOM.Iterable", "ESNext"],
+ "module": "esnext",
+ "moduleResolution": "node",
+ "jsx": "preserve",
+ "paths": {
+ "@fonts/*": ["fonts/*"],
+ "@images/*": ["images/*"],
+ "@scripts/*": ["scripts/*"],
+ "@styles/*": ["styles/*"]
+ },
+ "target": "es5"
+ },
+ "include": ["bud.config.mjs", "resources"],
+ "exclude": ["public"]
+}
diff --git a/web/app/themes/lyveas/package.json b/web/app/themes/lyveas/package.json
new file mode 100644
index 0000000..fd9fa54
--- /dev/null
+++ b/web/app/themes/lyveas/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "sage",
+ "private": true,
+ "browserslist": [
+ "extends @roots/browserslist-config/current"
+ ],
+ "engines": {
+ "node": ">=16.0.0"
+ },
+ "scripts": {
+ "dev": "bud dev",
+ "build": "yarn css-props && bud build",
+ "css-props": "node css-props-generator.js",
+ "translate": "yarn translate:pot && yarn translate:update",
+ "translate:pot": "wp i18n make-pot . ./resources/lang/sage.pot --include=\"app,resources\"",
+ "translate:update": "for filename in ./resources/lang/*.po; do msgmerge -U $filename ./resources/lang/sage.pot; done; rm -f ./resources/lang/*.po~",
+ "translate:compile": "yarn translate:mo && yarn translate:js",
+ "translate:js": "wp i18n make-json ./resources/lang --pretty-print",
+ "translate:mo": "wp i18n make-mo ./resources/lang ./resources/lang"
+ },
+ "devDependencies": {
+ "@roots/bud": "6.5.3",
+ "@roots/bud-sass": "^6.6.1",
+ "@roots/bud-tailwindcss": "6.5.3",
+ "@roots/sage": "6.5.3",
+ "@splidejs/splide": "^4.1.4",
+ "@splidejs/splide-extension-auto-scroll": "^0.5.3",
+ "alpinejs": "^3.10.5",
+ "gsap": "^3.11.3",
+ "lottie-web": "^5.10.0",
+ "prettier": "^2.7.1"
+ },
+ "dependencies": {}
+}
diff --git a/web/app/themes/lyveas/resources/animations/expertise.json b/web/app/themes/lyveas/resources/animations/expertise.json
new file mode 100644
index 0000000..ac62eca
--- /dev/null
+++ b/web/app/themes/lyveas/resources/animations/expertise.json
@@ -0,0 +1 @@
+{"v":"5.7.4","fr":25,"ip":0,"op":50,"w":300,"h":300,"nm":"expertise","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"quart 1/3 gris fonce Silhouettes","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.337],"y":[1.005]},"o":{"x":[0.663],"y":[0.004]},"t":20,"s":[90]},{"t":35,"s":[0]}],"ix":10},"p":{"a":0,"k":[100,0,0],"ix":2,"l":2},"a":{"a":0,"k":[100.25,0.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-55.229,0],[0,0]],"o":[[0,55.228],[0,0],[0,0]],"v":[[-50,-50],[50,50],[50,-50]],"c":true},"ix":2},"nm":"Tracé 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fond 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[50.25,50.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Groupe 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3750,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"cercle trace orange Silhouettes","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200,100,0],"ix":2,"l":2},"a":{"a":0,"k":[100.25,100.25,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.122,0.122,0.667],"y":[0.987,0.987,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":30,"s":[0,0,100]},{"t":45,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[55.228,0],[0,-55.228],[-55.228,0],[0,55.228]],"o":[[-55.228,0],[0,55.228],[55.228,0],[0,-55.228]],"v":[[0,-100],[-100,0],[0,100],[100,0]],"c":true},"ix":2},"nm":"Tracé 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-54.589,0],[0,-54.589],[54.589,0],[0,54.589]],"o":[[54.589,0],[0,54.589],[-54.589,0],[0,-54.589]],"v":[[0,-99],[99,0],[0,99],[-99,0]],"c":true},"ix":2},"nm":"Tracé 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Fusionner les tracés 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.403921598547,0.121568634931,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fond 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[100.25,100.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Groupe 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3750,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"quart 1/3 gris clair Silhouettes","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.331],"y":[1]},"o":{"x":[0.665],"y":[0]},"t":25,"s":[180]},{"t":40,"s":[0]}],"ix":10},"p":{"a":0,"k":[100,0,0],"ix":2,"l":2},"a":{"a":0,"k":[0.25,0.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,55.229],[0,0]],"o":[[55.228,0],[0,0],[0,0]],"v":[[-50,50],[50,-50],[-50,-50]],"c":true},"ix":2},"nm":"Tracé 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972549079446,0.972549079446,0.972549079446,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fond 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[50.25,50.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Groupe 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3750,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"cercle blanc Silhouettes","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[100,200,0],"ix":2,"l":2},"a":{"a":0,"k":[100.25,100.25,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.327,0.327,0.667],"y":[1.378,1.378,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":20,"s":[0,0,100]},{"t":35,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-55.228],[55.228,0],[0,55.228],[-55.228,0]],"o":[[0,55.228],[-55.228,0],[0,-55.228],[55.228,0]],"v":[[100,0],[0,100],[-100,0],[0,-100]],"c":true},"ix":2},"nm":"Tracé 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fond 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[100.25,100.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Groupe 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3750,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"demi cercle gris clair Silhouettes","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":35,"s":[360,200,0],"to":[-18.333,0,0],"ti":[18.333,0,0]},{"t":50,"s":[250,200,0]}],"ix":2,"l":2},"a":{"a":0,"k":[50.25,100.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-55.228],[-55.228,0],[0,0]],"o":[[0,55.229],[0,0],[-55.228,0]],"v":[[-50,0],[50,100],[50,-100]],"c":true},"ix":2},"nm":"Tracé 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972549079446,0.972549079446,0.972549079446,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fond 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[50.25,100.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Groupe 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3750,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"carre gris fonce Silhouettes","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":10,"s":[-60,50,0],"to":[18.333,0,0],"ti":[-18.333,0,0]},{"t":25,"s":[50,50,0]}],"ix":2,"l":2},"a":{"a":0,"k":[50.25,50.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-50,50],[50,50],[50,-50],[-50,-50]],"c":true},"ix":2},"nm":"Tracé 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.89019613827,0.894117706897,0.89019613827,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fond 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[50.25,50.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Groupe 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3750,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"carre bleu Silhouettes","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[50,200,0],"ix":2,"l":2},"a":{"a":0,"k":[50.25,100.25,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":10,"s":[100,0,100]},{"t":25,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-50,50],[50,50],[50,-50],[-50,-50]],"c":true},"ix":2},"nm":"Tracé 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.01568627451,0.117647066303,0.258823529412,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fond 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[50.25,50.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Groupe 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3750,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"carre orange Silhouettes","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[100,150,0],"ix":2,"l":2},"a":{"a":0,"k":[0.25,50.25,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[0,100,100]},{"t":15,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[50,50],[-50,50],[-50,-50],[50,-50]],"c":true},"ix":2},"nm":"Tracé 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.403921598547,0.121568634931,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fond 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[50.25,50.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Groupe 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3750,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"carre gris fonce Silhouettes","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[150,360,0],"to":[0,-18.333,0],"ti":[0,18.333,0]},{"t":15,"s":[150,250,0]}],"ix":2,"l":2},"a":{"a":0,"k":[50.25,50.25,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-50,50],[50,50],[50,-50],[-50,-50]],"c":true},"ix":2},"nm":"Tracé 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.89019613827,0.894117706897,0.89019613827,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fond 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[50.25,50.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformer "}],"nm":"Groupe 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":3750,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
diff --git a/web/app/themes/lyveas/resources/fonts/.gitkeep b/web/app/themes/lyveas/resources/fonts/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/web/app/themes/lyveas/resources/fonts/RecifeDisplayWeb-SemiBold.woff b/web/app/themes/lyveas/resources/fonts/RecifeDisplayWeb-SemiBold.woff
new file mode 100644
index 0000000000000000000000000000000000000000..137007a10d92c3503bb2d4137b9b21308621ee1d
GIT binary patch
literal 37520
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
literal 0
HcmV?d00001
diff --git a/web/app/themes/lyveas/resources/fonts/RecifeDisplayWeb-SemiBold.woff2 b/web/app/themes/lyveas/resources/fonts/RecifeDisplayWeb-SemiBold.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..693859c6d504f1e4f58ad9968056a57bd82470f2
GIT binary patch
literal 30408
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