From: Vincent Vanwaelscappel Date: Tue, 30 Jan 2024 10:43:03 +0000 (+0100) Subject: wip #6693 @1 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=ed84fddef91956de8849c3f26b055981cf1d2f68;p=fluidbook-toolbox.git wip #6693 @1 --- diff --git a/app/Http/Controllers/Admin/Operations/Tools/DockerWebContainer.php b/app/Http/Controllers/Admin/Operations/Tools/DockerWebContainer.php index ed229834f..250f6601d 100644 --- a/app/Http/Controllers/Admin/Operations/Tools/DockerWebContainer.php +++ b/app/Http/Controllers/Admin/Operations/Tools/DockerWebContainer.php @@ -55,162 +55,187 @@ trait DockerWebContainer public function dodockerwebcontainer() { $request = request(); - $name = Str::slug($request->get('containername', 'containername')); - $envs = $request->get('env', ['production']); + $tmp = Files::mkdir(Files::tmpdir()); - $tmp = Files::tmpdir(); + $name = Str::slug($request->get('containername', 'containername')); $notification = __('Le container web :name a été crée avec les informations suivantes', ['name' => $name]) . " : \n\n"; + $envs = $request->get('env', ['production']); foreach ($envs as $k => $env) { - $domain = $request->get('domain', ''); - - $notification .= '---- Environnement : ' . $env . " ----\n\n"; - $subDomain = $env === 'production' ? (substr_count($domain, '.') >= 2 ? '' : 'www.') : $env . '.'; $dockerSuffix = $env === 'production' ? '' : '-' . $env; - - if (count($envs) === 1) { - $subDomain = ''; + $dir = $this->_createEnv($env, $name, $dockerSuffix, $notification); + $fdir = $tmp . $name . $dockerSuffix; + if ($k === 0) { + `mv $dir $tmp`; + $firstDir = $fdir; + continue; } + `mv $dir/www/.docker/$env $firstDir/www/.docker/`; + rename($dir . '/www/.env.' . $env, $firstDir . '/www/.env.' . $env); + $fdir = Files::mkdir($fdir); + `cp -r $firstDir/www $fdir`; + copy($dir . '/update', $fdir . 'update'); + } - $laravel = $request->get('laravel', true); - - $variables = [ - '$user' => $name, - '$name' => $name . $dockerSuffix, - '$matomodbpassword' => Str::random(16), - '$sshport' => rand(10000, 60000), - '$domain' => $domain, - '$dbpassword' => Str::random(16), - '$phpfpmimage' => 'php-fpm', - '$locale' => 'fr_FR', - '$localeshort' => 'fr', - '$sshpassword' => Str::random(16), - '$public' => ($laravel || $request->get('public')) ? '/public' : '/', - '$environment' => $env, - ]; + $tmpfile = Files::tempnam() . '.zip'; + Zip::archive($tmp, $tmpfile); + Files::rmdir($tmp); - if (!$variables['$domain']) { - $variables['$domain'] = $name . '.dev.cubedesigners.com'; - } - $fixRights = []; - $variables['$domain'] = $subDomain . $variables['$domain']; - - $dir = Files::mkdir($tmp . '/' . $name . $dockerSuffix); - $www = $dir . 'www'; - $source = resource_path('tools/dockerwebcontainer/template'); - `cp -r $source/* $dir/`; - - $additionalEnv = []; - - $compose = ['base']; - $variables['$phpversion'] = $request->get('phpversion', '8.3'); - if ($variables['$phpversion'] !== 'none') { - $compose[] = 'php'; - if (version_compare($variables['$phpversion'], '5.6', '<=')) { - $variables['$phpfpmimage'] = 'php-' . $variables['$phpversion'] . '-fpm'; - } - $fixRights[] = 'chown 0:0 ./config/cron/crontab'; - } - if ($laravel || $request->get('mysql', true)) { - $compose[] = 'mysql'; - $fixRights[] = 'chown -R 999:999 ./database/data'; - - $additionalEnv['DB_CONNECTION'] = 'mysql'; - $additionalEnv['DB_HOST'] = '$name-mariadb'; - $additionalEnv['DB_PORT'] = '3306'; - $additionalEnv['DB_DATABASE'] = '$name'; - $additionalEnv['DB_USERNAME'] = 'root'; - $additionalEnv['DB_PASSWORD'] = '$dbpassword'; - } - if ($laravel || $request->get('redis', true)) { - $compose[] = 'redis'; - $fixRights[] = 'chown -R 999:999 ./redis'; - $additionalEnv['CACHE_DRIVER'] = 'redis'; - $additionalEnv['SESSION_DRIVER'] = 'redis'; - $additionalEnv['REDIS_HOST'] = '$name-redis'; - } - if ($request->get('matomo', true)) { - $compose[] = 'matomo'; - } - if ($request->get('elasticsearch', false)) { - $compose[] = 'elasticsearch'; - $fixRights[] = 'chmod -R 777 ./esdata'; - } + $res = response()->download($tmpfile, $name . '.zip')->deleteFileAfterSend(true); + backpack_user()->notify(new ToolboxNotification(__('Container :name web prêt', ['name' => $name]), $notification, [], true)); + return $res; + } - if ($request->get('laravel', true)) { - $envPath = $www . '/.env'; - $env = Dotenv::parse(file_get_contents($envPath)); - `rm -rf $www;composer create-project laravel/laravel $www`; - $composerFile = $www . '/composer.json'; - $composer = json_decode(file_get_contents($composerFile)); - $composer->name = str_replace('-', '/', $name); - $composer->license = 'Proprietary'; - $composer->keywords = [$name]; - $composer->description = $name . ' project'; - $composer->require->{"cubist/cms-back"} = 'dev-backpack5'; - $composer->repositories = [ - ['type' => 'composer', 'url' => "https://composer.cubedesigners.com/"], - ['type' => 'composer', 'url' => "https://repo.backpackforlaravel.com/"] - ]; - $composer->{"minimum-stability"} = 'dev'; - file_put_contents($composerFile, json_encode($composer)); - copy(base_path() . '/auth.json', $www . '/auth.json'); - `rm -rf $www/vendor`; - $laravelEnv = Dotenv::parse(file_get_contents($envPath)); - $laravelEnv = array_merge($laravelEnv, $env, $additionalEnv); - $output = new BufferedOutput(); - Artisan::call('key:generate --show', [], $output); - $laravelEnv['APP_KEY'] = trim($output->fetch()); - Env::arrayToEnvFile($envPath . '.' . $env, $laravelEnv); - unlink($envPath); - unlink($envPath . '.example'); - } + protected function _createEnv($env, $name, $dockerSuffix, &$notification) + { - $variables['$fixrights'] = implode("\n", $fixRights); + $request = request(); - $compose[] = 'network'; - $composeFileContent = ''; - foreach ($compose as $item) { - $composeFileContent .= file_get_contents(resource_path('tools/dockerwebcontainer/' . $item)); - } - file_put_contents($dir . '/docker-compose.yml', $composeFileContent); - - $infos = ['URL' => 'https://' . $variables['$domain'] . '/']; - - if ($request->get('mysql', true)) { - $infos = array_merge($infos, - [ - __('Hôte de base de données') => $variables['$name'] . '-mariadb', - __('Nom de base de données') => $variables['$name'], - __('Utilisateur de la base de données') => 'root', - __('Mot de passe de la base de données') => $variables['$dbpassword'], - 'Adminer' => 'https://adminer.' . $variables['$domain'] . '/', - __('Serveur SSH/SFTP') => $variables['$domain'], - __('Port') => $variables['$sshport'], - __('Utilisateur') => $variables['$name'], - __('Mot de passe') => $variables['$sshpassword'], - ]); - } - foreach ($infos as $k => $v) { - $notification .= '* ' . $k . ' : ' . $v . "\n"; + $tmp = Files::tmpdir(); + + $envs = $request->get('env', ['production']); + + $domain = $request->get('domain', ''); + + $notification .= '---- Environnement : ' . $env . " ----\n\n"; + $subDomain = $env === 'production' ? (substr_count($domain, '.') >= 2 ? '' : 'www.') : $env . '.'; + + if (count($envs) === 1) { + $subDomain = ''; + } + + $laravel = $request->get('laravel', true); + + $variables = [ + '$user' => $name, + '$name' => $name . $dockerSuffix, + '$matomodbpassword' => Str::random(16), + '$sshport' => rand(10000, 60000), + '$domain' => $domain, + '$dbpassword' => Str::random(16), + '$phpfpmimage' => 'php-fpm', + '$locale' => 'fr_FR', + '$localeshort' => 'fr', + '$sshpassword' => Str::random(16), + '$public' => ($laravel || $request->get('public')) ? '/public' : '/', + '$environment' => $env, + ]; + + if (!$variables['$domain']) { + $variables['$domain'] = $name . '.dev.cubedesigners.com'; + } + $fixRights = []; + $variables['$domain'] = $subDomain . $variables['$domain']; + + $dir = Files::mkdir($tmp . '/' . $name . $dockerSuffix); + $www = $dir . 'www'; + $source = resource_path('tools/dockerwebcontainer/template'); + `cp -r $source/* $dir/`; + + $additionalEnv = []; + + $compose = ['base']; + $variables['$phpversion'] = $request->get('phpversion', '8.3'); + if ($variables['$phpversion'] !== 'none') { + $compose[] = 'php'; + if (version_compare($variables['$phpversion'], '5.6', '<=')) { + $variables['$phpfpmimage'] = 'php-' . $variables['$phpversion'] . '-fpm'; } - $notification .= "\n"; + $fixRights[] = 'chown 0:0 ./config/cron/crontab'; + } + if ($laravel || $request->get('mysql', true)) { + $compose[] = 'mysql'; + $fixRights[] = 'chown -R 999:999 ./database/data'; + + $additionalEnv['DB_CONNECTION'] = 'mysql'; + $additionalEnv['DB_HOST'] = '$name-mariadb'; + $additionalEnv['DB_PORT'] = '3306'; + $additionalEnv['DB_DATABASE'] = '$name'; + $additionalEnv['DB_USERNAME'] = 'root'; + $additionalEnv['DB_PASSWORD'] = '$dbpassword'; + } + if ($laravel || $request->get('redis', true)) { + $compose[] = 'redis'; + $fixRights[] = 'chown -R 999:999 ./redis'; + $additionalEnv['CACHE_DRIVER'] = 'redis'; + $additionalEnv['SESSION_DRIVER'] = 'redis'; + $additionalEnv['REDIS_HOST'] = '$name-redis'; + } + if ($request->get('matomo', true)) { + $compose[] = 'matomo'; + } + if ($request->get('elasticsearch', false)) { + $compose[] = 'elasticsearch'; + $fixRights[] = 'chmod -R 777 ./esdata'; + } + + if ($request->get('laravel', true)) { + $envPath = $www . '/.env'; + $projectEnv = Dotenv::parse(file_get_contents($envPath)); + `rm -rf $www;composer create-project laravel/laravel $www`; + $composerFile = $www . '/composer.json'; + $composer = json_decode(file_get_contents($composerFile)); + $composer->name = str_replace('-', '/', $name); + $composer->license = 'Proprietary'; + $composer->keywords = [$name]; + $composer->description = $name . ' project'; + $composer->require->{"cubist/cms-back"} = 'dev-backpack5'; + $composer->repositories = [ + ['type' => 'composer', 'url' => "https://composer.cubedesigners.com/"], + ['type' => 'composer', 'url' => "https://repo.backpackforlaravel.com/"] + ]; + $composer->{"minimum-stability"} = 'dev'; + file_put_contents($composerFile, json_encode($composer)); + copy(base_path() . '/auth.json', $www . '/auth.json'); + `rm -rf $www/vendor`; + $laravelEnv = Dotenv::parse(file_get_contents($envPath)); + $laravelEnv = array_merge($laravelEnv, $projectEnv, $additionalEnv); + $output = new BufferedOutput(); + Artisan::call('key:generate --show', [], $output); + $laravelEnv['APP_KEY'] = trim($output->fetch()); + Env::arrayToEnvFile($envPath . '.' . $env, $laravelEnv); + unlink($envPath); + unlink($envPath . '.example'); + } - $docker = $www . '/.docker'; + $variables['$fixrights'] = implode("\n", $fixRights); - `mkdir -p $docker;mv $dir/images $docker;mv $dir/config $docker;mv $dir/update $docker;mv $dir/docker-compose.yml $docker`; - file_put_contents($dir . 'update', '#!/bin/sh' . "\n" . "cd /docker/$name\nrm ./update;ln -sf ./www/.docker/$env/docker-compose.yml docker-compose.yml\nln -sf ./www/.docker/$env/update update\nchmod 755 ./www/.docker/update\n./www/.docker/update"); - chmod($dir . 'update', 0755); - Files::recursiveReplaceStringInDir($dir, $variables); + $compose[] = 'network'; + $composeFileContent = ''; + foreach ($compose as $item) { + $composeFileContent .= file_get_contents(resource_path('tools/dockerwebcontainer/' . $item)); } + file_put_contents($dir . '/docker-compose.yml', $composeFileContent); + + $infos = ['URL' => 'https://' . $variables['$domain'] . '/']; + + if ($request->get('mysql', true)) { + $infos = array_merge($infos, + [ + __('Hôte de base de données') => $variables['$name'] . '-mariadb', + __('Nom de base de données') => $variables['$name'], + __('Utilisateur de la base de données') => 'root', + __('Mot de passe de la base de données') => $variables['$dbpassword'], + 'Adminer' => 'https://adminer.' . $variables['$domain'] . '/', + __('Serveur SSH/SFTP') => $variables['$domain'], + __('Port') => $variables['$sshport'], + __('Utilisateur') => $variables['$name'], + __('Mot de passe') => $variables['$sshpassword'], + ]); + } + foreach ($infos as $k => $v) { + $notification .= '* ' . $k . ' : ' . $v . "\n"; + } + $notification .= "\n"; - $tmpfile = Files::tempnam() . '.zip'; - Zip::archive($tmp, $tmpfile); - Files::rmdir($tmp); + $docker = $www . '/.docker'; - $res = response()->download($tmpfile, $name . '.zip')->deleteFileAfterSend(true); - backpack_user()->notify(new ToolboxNotification(__('Container :name web prêt', ['name' => $name]), $notification, [], true)); - return $res; + `mkdir -p $docker/$env;mv $dir/images $docker;mv $dir/config $docker;mv $dir/update $docker/$env;mv $dir/docker-compose.yml $docker/$env`; + file_put_contents($dir . 'update', '#!/bin/sh' . "\n" . "cd /docker/$name$dockerSuffix\nrm ./update\nln -sf ./www/.docker/$env/docker-compose.yml docker-compose.yml\nln -sf ./www/.docker/$env/update update\nchmod 755 ./www/.docker/update\n./www/.docker/update"); + chmod($dir . 'update', 0755); + Files::recursiveReplaceStringInDir($dir, $variables); + + return $dir; } } diff --git a/composer.lock b/composer.lock index cd1af0ca7..14d0fd4d9 100644 --- a/composer.lock +++ b/composer.lock @@ -1677,13 +1677,13 @@ "source": { "type": "git", "url": "git://git.cubedesigners.com/cubist_cms-back.git", - "reference": "56509efd3b620e928ed14f3d722802c1027e4b09" + "reference": "48039b3810803a836b7b4ab19b09a80be3b74689" }, "dist": { "type": "tar", - "url": "https://composer.cubedesigners.com/dist/cubist/cms-back/cubist-cms-back-dev-backpack5-4fcd03.tar", - "reference": "56509efd3b620e928ed14f3d722802c1027e4b09", - "shasum": "80c966f4ce25af613b9b89bc5926e9f1689420fe" + "url": "https://composer.cubedesigners.com/dist/cubist/cms-back/cubist-cms-back-dev-backpack5-b9c537.tar", + "reference": "48039b3810803a836b7b4ab19b09a80be3b74689", + "shasum": "338dc444826c83941232e1c2555464f22fc11e3e" }, "require": { "backpack/backupmanager": "^v3.0.9", @@ -1761,7 +1761,7 @@ } ], "description": "Cubist Backpack extension", - "time": "2024-01-15T18:38:35+00:00" + "time": "2024-01-24T11:17:46+00:00" }, { "name": "cubist/cms-front", @@ -2060,13 +2060,13 @@ "source": { "type": "git", "url": "git://git.cubedesigners.com/cubist_net.git", - "reference": "52f7f103f94793d3d6318cb65e00dbe0c8f4226f" + "reference": "9d3823f1b3fce0ec412d6018029fdd03a807af0a" }, "dist": { "type": "tar", - "url": "https://composer.cubedesigners.com/dist/cubist/net/cubist-net-dev-master-91f83d.tar", - "reference": "52f7f103f94793d3d6318cb65e00dbe0c8f4226f", - "shasum": "5395e472bf4a7c1c7a33a3c7c2d40ec587de8f59" + "url": "https://composer.cubedesigners.com/dist/cubist/net/cubist-net-dev-master-88722a.tar", + "reference": "9d3823f1b3fce0ec412d6018029fdd03a807af0a", + "shasum": "fdd28b01b4b9ac324b7f40b0e92ddd75271ca0ad" }, "require": { "cubist/util": "dev-master", @@ -2091,7 +2091,7 @@ } ], "description": "net cubist composer package", - "time": "2023-11-30T16:25:50+00:00" + "time": "2024-01-24T08:02:45+00:00" }, { "name": "cubist/pdf", @@ -2099,13 +2099,13 @@ "source": { "type": "git", "url": "git://git.cubedesigners.com/cubist_pdf.git", - "reference": "f4fde37c6a0f30a62d0c702b05a4454122a63874" + "reference": "0ed905cbc9025bfa2118c48073ad40721219353b" }, "dist": { "type": "tar", - "url": "https://composer.cubedesigners.com/dist/cubist/pdf/cubist-pdf-dev-master-fdd331.tar", - "reference": "f4fde37c6a0f30a62d0c702b05a4454122a63874", - "shasum": "a5961c463a5f4239afca2a112f28b76ab3a4e2af" + "url": "https://composer.cubedesigners.com/dist/cubist/pdf/cubist-pdf-dev-master-126d9e.tar", + "reference": "0ed905cbc9025bfa2118c48073ad40721219353b", + "shasum": "12dd4fa201a4d84306a9436db54ad6784af4ef10" }, "require": { "cubist/util": "dev-master", @@ -2141,7 +2141,7 @@ "cubist", "pdf" ], - "time": "2023-12-20T16:22:40+00:00" + "time": "2024-01-19T09:44:53+00:00" }, { "name": "cubist/scorm", @@ -2186,13 +2186,13 @@ "source": { "type": "git", "url": "git://git.cubedesigners.com/cubist_util.git", - "reference": "f15e99193c36a9b70d5a0cf523d8ff42680e9abb" + "reference": "601e15bd4f99a05a2c4be400a475d1473bb30e84" }, "dist": { "type": "tar", - "url": "https://composer.cubedesigners.com/dist/cubist/util/cubist-util-dev-master-cbad04.tar", - "reference": "f15e99193c36a9b70d5a0cf523d8ff42680e9abb", - "shasum": "cdabb1faca8a0d49608d95c70a7a5210dfaac2f7" + "url": "https://composer.cubedesigners.com/dist/cubist/util/cubist-util-dev-master-29c66e.tar", + "reference": "601e15bd4f99a05a2c4be400a475d1473bb30e84", + "shasum": "7dd3298f216b05b671939ac90a5f6fd3d8375a46" }, "require": { "cubist/net": "dev-master", @@ -2226,7 +2226,7 @@ } ], "description": "Utilities class", - "time": "2024-01-15T16:33:50+00:00" + "time": "2024-01-30T07:38:57+00:00" }, { "name": "cviebrock/eloquent-sluggable", @@ -2717,16 +2717,16 @@ }, { "name": "doctrine/dbal", - "version": "3.7.2", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "0ac3c270590e54910715e9a1a044cc368df282b2" + "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2", - "reference": "0ac3c270590e54910715e9a1a044cc368df282b2", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/d244f2e6e6bf32bff5174e6729b57214923ecec9", + "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9", "shasum": "" }, "require": { @@ -2742,14 +2742,14 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.42", + "phpstan/phpstan": "1.10.56", "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.13", + "phpunit/phpunit": "9.6.15", "psalm/plugin-phpunit": "0.18.4", "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.7.2", - "symfony/cache": "^5.4|^6.0", - "symfony/console": "^4.4|^5.4|^6.0", + "squizlabs/php_codesniffer": "3.8.1", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0", "vimeo/psalm": "4.30.0" }, "suggest": { @@ -2810,7 +2810,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.7.2" + "source": "https://github.com/doctrine/dbal/tree/3.8.0" }, "funding": [ { @@ -2826,7 +2826,7 @@ "type": "tidelift" } ], - "time": "2023-11-19T08:06:58+00:00" + "time": "2024-01-25T21:44:02+00:00" }, { "name": "doctrine/deprecations", @@ -3830,13 +3830,13 @@ "source": { "type": "git", "url": "git://git.cubedesigners.com/fluidbook_tools.git", - "reference": "57526de1fdc708b39ff9a161fe4859025bb69f38" + "reference": "0a4a4c6605137583f8db296fb1e400bd4a26c0d4" }, "dist": { "type": "tar", - "url": "https://composer.cubedesigners.com/dist/fluidbook/tools/fluidbook-tools-dev-master-6fe20d.tar", - "reference": "57526de1fdc708b39ff9a161fe4859025bb69f38", - "shasum": "3511f038673257bf8cab7967a389d2b82238a353" + "url": "https://composer.cubedesigners.com/dist/fluidbook/tools/fluidbook-tools-dev-master-2c2082.tar", + "reference": "0a4a4c6605137583f8db296fb1e400bd4a26c0d4", + "shasum": "016a8b47bf5d23809af3d3f144d971c756ad1954" }, "require": { "barryvdh/laravel-debugbar": "*", @@ -3872,7 +3872,7 @@ } ], "description": "Fluidbook Tools", - "time": "2024-01-08T15:06:53+00:00" + "time": "2024-01-18T15:48:35+00:00" }, { "name": "fruitcake/php-cors", @@ -5114,16 +5114,16 @@ }, { "name": "laravel/framework", - "version": "v10.40.0", + "version": "v10.42.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "7a9470071dac9579ebf29ad1b9d73e4b8eb586fc" + "reference": "fef1aff874a6749c44f8e142e5764eab8cb96890" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/7a9470071dac9579ebf29ad1b9d73e4b8eb586fc", - "reference": "7a9470071dac9579ebf29ad1b9d73e4b8eb586fc", + "url": "https://api.github.com/repos/laravel/framework/zipball/fef1aff874a6749c44f8e142e5764eab8cb96890", + "reference": "fef1aff874a6749c44f8e142e5764eab8cb96890", "shasum": "" }, "require": { @@ -5315,7 +5315,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-01-09T11:46:47+00:00" + "time": "2024-01-23T15:07:56+00:00" }, { "name": "laravel/prompts", @@ -5769,16 +5769,16 @@ }, { "name": "league/flysystem", - "version": "3.23.0", + "version": "3.23.1", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc" + "reference": "199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc", - "reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e", + "reference": "199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e", "shasum": "" }, "require": { @@ -5843,7 +5843,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.23.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.23.1" }, "funding": [ { @@ -5855,20 +5855,20 @@ "type": "github" } ], - "time": "2023-12-04T10:16:17+00:00" + "time": "2024-01-26T18:42:03+00:00" }, { "name": "league/flysystem-local", - "version": "3.23.0", + "version": "3.23.1", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "5cf046ba5f059460e86a997c504dd781a39a109b" + "reference": "b884d2bf9b53bb4804a56d2df4902bb51e253f00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/5cf046ba5f059460e86a997c504dd781a39a109b", - "reference": "5cf046ba5f059460e86a997c504dd781a39a109b", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/b884d2bf9b53bb4804a56d2df4902bb51e253f00", + "reference": "b884d2bf9b53bb4804a56d2df4902bb51e253f00", "shasum": "" }, "require": { @@ -5903,7 +5903,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-local/issues", - "source": "https://github.com/thephpleague/flysystem-local/tree/3.23.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.23.1" }, "funding": [ { @@ -5915,7 +5915,7 @@ "type": "github" } ], - "time": "2023-12-04T10:14:46+00:00" + "time": "2024-01-26T18:25:23+00:00" }, { "name": "league/glide", @@ -5984,16 +5984,16 @@ }, { "name": "league/mime-type-detection", - "version": "1.14.0", + "version": "1.15.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "b6a5854368533df0295c5761a0253656a2e52d9e" + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e", - "reference": "b6a5854368533df0295c5761a0253656a2e52d9e", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", "shasum": "" }, "require": { @@ -6024,7 +6024,7 @@ "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.14.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0" }, "funding": [ { @@ -6036,7 +6036,7 @@ "type": "tidelift" } ], - "time": "2023-10-17T14:13:20+00:00" + "time": "2024-01-28T23:22:08+00:00" }, { "name": "league/uri", @@ -6834,16 +6834,16 @@ }, { "name": "nesbot/carbon", - "version": "2.72.1", + "version": "2.72.2", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78" + "reference": "3e7edc41b58d65509baeb0d4a14c8fa41d627130" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", - "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/3e7edc41b58d65509baeb0d4a14c8fa41d627130", + "reference": "3e7edc41b58d65509baeb0d4a14c8fa41d627130", "shasum": "" }, "require": { @@ -6937,35 +6937,35 @@ "type": "tidelift" } ], - "time": "2023-12-08T23:47:49+00:00" + "time": "2024-01-19T00:21:53+00:00" }, { "name": "nette/schema", - "version": "v1.2.5", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a" + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/0462f0166e823aad657c9224d0f849ecac1ba10a", - "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a", + "url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", "shasum": "" }, "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": "7.1 - 8.3" + "nette/utils": "^4.0", + "php": "8.1 - 8.3" }, "require-dev": { - "nette/tester": "^2.3 || ^2.4", + "nette/tester": "^2.4", "phpstan/phpstan-nette": "^1.0", - "tracy/tracy": "^2.7" + "tracy/tracy": "^2.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -6997,22 +6997,22 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.5" + "source": "https://github.com/nette/schema/tree/v1.3.0" }, - "time": "2023-10-05T20:37:59+00:00" + "time": "2023-12-11T11:54:22+00:00" }, { "name": "nette/utils", - "version": "v4.0.3", + "version": "v4.0.4", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015" + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/a9d127dd6a203ce6d255b2e2db49759f7506e015", - "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015", + "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218", + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218", "shasum": "" }, "require": { @@ -7083,9 +7083,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.3" + "source": "https://github.com/nette/utils/tree/v4.0.4" }, - "time": "2023-10-29T21:02:13+00:00" + "time": "2024-01-17T16:50:36+00:00" }, { "name": "norkunas/youtube-dl-php", @@ -9540,16 +9540,16 @@ }, { "name": "spatie/laravel-backup", - "version": "8.5.0", + "version": "8.5.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-backup.git", - "reference": "6d7740f2e4b353ab1e3c514c18ecbb53c71ec66c" + "reference": "4e97ff2c8b65835037e746755941bf05430e191d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-backup/zipball/6d7740f2e4b353ab1e3c514c18ecbb53c71ec66c", - "reference": "6d7740f2e4b353ab1e3c514c18ecbb53c71ec66c", + "url": "https://api.github.com/repos/spatie/laravel-backup/zipball/4e97ff2c8b65835037e746755941bf05430e191d", + "reference": "4e97ff2c8b65835037e746755941bf05430e191d", "shasum": "" }, "require": { @@ -9623,7 +9623,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-backup/issues", - "source": "https://github.com/spatie/laravel-backup/tree/8.5.0" + "source": "https://github.com/spatie/laravel-backup/tree/8.5.1" }, "funding": [ { @@ -9635,7 +9635,7 @@ "type": "other" } ], - "time": "2024-01-11T08:55:19+00:00" + "time": "2024-01-23T08:57:08+00:00" }, { "name": "spatie/laravel-googletagmanager", @@ -16002,16 +16002,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.15", + "version": "9.6.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1" + "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1", - "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3767b2c56ce02d01e3491046f33466a1ae60a37f", + "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f", "shasum": "" }, "require": { @@ -16085,7 +16085,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.16" }, "funding": [ { @@ -16101,7 +16101,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T16:55:19+00:00" + "time": "2024-01-19T07:03:14+00:00" }, { "name": "psy/psysh", @@ -17532,5 +17532,5 @@ "ext-zlib": "*" }, "platform-dev": [], - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.6.0" }