From 8db84d51349cab40a504d8204adbce3e344661f1 Mon Sep 17 00:00:00 2001 From: sabelo Date: Tue, 30 Jul 2024 14:58:32 -0300 Subject: [PATCH] rework from legacy code on legacy container with php 5 --- api/contact.php | 76 -- api/register.php | 135 --- composer.json | 35 +- composer.lock | 2487 ++++++++++++++---------------------------- nginx.template.conf | 45 + src/dependencies.php | 83 +- src/middleware.php | 9 +- src/routes.php | 377 ++++--- 8 files changed, 1109 insertions(+), 2138 deletions(-) delete mode 100644 api/contact.php delete mode 100644 api/register.php create mode 100755 nginx.template.conf diff --git a/api/contact.php b/api/contact.php deleted file mode 100644 index 760be04..0000000 --- a/api/contact.php +++ /dev/null @@ -1,76 +0,0 @@ - '6LeLxy4UAAAAABClplWLJUjZ1_nhX_-SI7CuNcm8', - 'response' => $_POST["g-recaptcha-response"] - ); - $options = array( - 'http' => array ( - 'header' => 'Content-Type: application/x-www-form-urlencoded\r\n', - 'method' => 'POST', - 'content' => http_build_query($data) - ) - ); - $context = stream_context_create($options); - $verify = file_get_contents($url, false, $context); - $captcha_success=json_decode($verify); - return $captcha_success; -} -// process.php - -$errors = array(); // array to hold validation errors -$data = array(); // array to pass back data - -// validate the variables ====================================================== - // if any of these variables don't exist, add an error to our $errors array - - if (empty($_POST['nombre'])) - $errors['nombre'] = 'Name is required.'; - - if (empty($_POST['email'])) - $errors['email'] = 'Email is required.'; - - if (empty($_POST['mensage'])) - $errors['mensage'] = 'Mensaje is required.'; - - if(empty($_POST['g-recaptcha-response'])){ - $errors['recaptcha'] = 'Debe validar el captcha'; - } - else if(!verifyCaptcha()){ - $errors['recaptcha'] = 'Error en la validación de ReCaptcha'; - } - -// return a response =========================================================== - - // if there are any errors in our errors array, return a success boolean of false - if ( ! empty($errors)) { - - // if there are items in our errors array, return those errors - $data['success'] = false; - $data['errors'] = $errors; - } else { - - // if there are no errors process our form, then return a message - - // DO ALL YOUR FORM PROCESSING HERE - // THIS CAN BE WHATEVER YOU WANT TO DO (LOGIN, SAVE, UPDATE, WHATEVER) - - // show a message of success and provide a true success variable - $nombre = $_POST['nombre']; - $mail = $_POST['email']; - $msg = $_POST['mensage']; - $headers = 'From: ' . $mail . "\r\n" . - 'Reply-To: ' . $mail . "\r\n" . - 'X-Mailer: PHP/' . phpversion(); - mail('6coloquio@cmat.edu.uy', 'Contacto de ' . $nombre, $msg, $headers); - - $data['success'] = true; - $data['message'] = 'Mensaje enviado,
A la brevedad el comite organizador se pondrá en contacto con usted.'; - - } - - // return all our data to an AJAX call - echo json_encode($data); - -?> diff --git a/api/register.php b/api/register.php deleted file mode 100644 index cf157f1..0000000 --- a/api/register.php +++ /dev/null @@ -1,135 +0,0 @@ - '6LesRDsUAAAAAA6t3UgL4U4Foc9njmXX-8HIiLj_', - 'response' => $_POST["g-recaptcha-response"] - ); - $options = array( - 'http' => array ( - 'header' => 'Content-Type: application/x-www-form-urlencoded\r\n', - 'method' => 'POST', - 'content' => http_build_query($data) - ) - ); - $context = stream_context_create($options); - $verify = file_get_contents($url, false, $context); - $captcha_success=json_decode($verify); - return $captcha_success; -} - -/*function verifyExistance($doc,$mail){ - $fp = fopen("2021y22.csv", 'r'); - fclose($fp); -}*/ - -/*function setheaders() { - $fp = fopen("2021y22.csv", 'w'); - $cabezal = array('Nombre', 'Apellido','TipoDoc','Documento', - 'Direccion','Pais','Ciudad', 'Telefono', 'Email', - 'Profesión','Trabaja en','Financiación','Detalle Financiación'); - if($fp){ - fputcsv($fp,$cabezal); - fclose($fp); - } - else{ - die("unable to open file"); - } -}*/ - -/*function registrar($fila) { - $fp = fopen("2021y22.csv", 'a'); - if($fp){ - fputcsv($fp,$fila); - fclose($fp); - - } - else{ - die("unable to open file"); - } - -} - -function bkpregister(){ - $fecha = date("d-m-H:i:s"); - $filebkp = "bkp/registro-".$fecha.".bak.csv"; - copy("2021y22.csv",$filebkp); -}*/ - -$errors = array(); // array to hold validation errors -$data = array(); // array to pass back data - - -// validate the variables ====================================================== -$data['nombre'] = $_POST['nombre']; -$data['apellido'] = $_POST['apellido']; -$data['titulo'] = $_POST['titulo']; -$data['afiliacion'] = $_POST['afiliacion']; -$data['ciudad'] = $_POST['ciudad']; -$data['pais'] = $_POST['pais']; -$data['email'] = $_POST['email']; -$data['fechaLlegada'] = $_POST['bda']; -$data['fechaPartida'] = $_POST['eda']; -$data['financiacion'] = $_POST['financiacion']; -$data['invitado'] = $_POST['invited']; -$data['cartaInvitacion'] = $_POST['letterinvited']; -$data['roomingPref'] = $_POST['roomtype']; -$data['roommate'] = $_POST['roomate']; -$data['fechaRegistro'] = date("Y-m-d H:i:s"); -$fila = $data; - -if (empty($_POST['nombre'])) - $errors['nombre'] = 'Nombre is required.'; - -if (empty($_POST['apellido'])) - $errors['apellido'] = 'Apellido is required.'; - -if (empty($_POST['email'])) - $errors['email'] = 'E-Mail de contacto vacio o incorrecto'; - -if(empty($_POST['g-recaptcha-response'])){ - $errors['recaptcha'] = 'Debe validar el captcha'; -} -else if(!verifyCaptcha()){ - $errors['recaptcha'] = 'Error en la validación de ReCaptcha'; -} - -/*GUAMBIA ACAAA!!!!*/ -$errors=array(); -/* NO GILEAR!!!!!*/ - -if ( !empty($errors)) { - - // if there are items in our errors array, return those errors - $data['success'] = false; - $data['errors'] = $errors; -} -else { - $data['success'] = true; - $db->insert($fila); - /* - $mail = $data["email"]; - $nombre = $data["nombre"] . " " . $data["apellido"]; - $msg = "Hi ". $data["nombre"] ."!\n\n". - "You have been Successfully registered to the workshop on Groups, Geometry and Dynamics!\n\n". - "For any question, write us to: ggdworkshop@cmat.edu.uy\n\n". - "Regards,\n\n". - "Organizing Commite, GGD Workshop."; - $headers = 'From: ' . "ggdworkshop@cmat.edu.uy" . "\r\n" . - 'Reply-To: ' . "ggdworkshop@cmat.edu.uy" . "\r\n" . - 'Content-Type: ' . "text/plain; charset=UTF-8". "\r\n" . - 'X-Mailer: PHP/' . phpversion(); - mail($mail, 'Registration confirmation for GGDWorkshop', $msg, $headers); - */ - $data['message'] = "Registration Successfully!"; - -} - -// return all our data to an AJAX call -echo json_encode($data); - -?> \ No newline at end of file diff --git a/composer.json b/composer.json index 4393f80..c2108f4 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,14 @@ { "name": "slim/slim-skeleton", "description": "Groups Geometry and Dynamics, ICM2018 Satellite, Web Project", - "keywords": ["ICM2018", "GGDWorkshop", "Montevideo","Math","Groups","Geometry"], + "keywords": [ + "ICM2018", + "GGDWorkshop", + "Montevideo", + "Math", + "Groups", + "Geometry" + ], "homepage": "https://ggdworkshop.cmat.edu.uy", "license": "GPLv2", "authors": [ @@ -12,31 +19,21 @@ } ], "require": { - "php": ">=5.5.0", - "slim/slim": "^3.1", + "php": ">=8.2", + "slim/slim": "^4.14", "monolog/monolog": "^1.17", - "slim/twig-view": "^2.3", + "slim/twig-view": "^3.4", "google/recaptcha": "^1.1", - "kanellov/slim-twig-flash": "^0.2.0", - "phpmailer/phpmailer": "~6.0", - "tuupola/slim-basic-auth": "^3.2", - "symfony/yaml": "^5.0" - - }, - "require-dev": { - "phpunit/phpunit": ">=4.8 < 6.0" - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } + "slim/flash": "^0.4.0", + "slim/psr7": "^1.7", + "php-di/php-di": "^7.0", + "symfony/yaml": "^7.1" }, "config": { - "process-timeout" : 0 + "process-timeout": 0 }, "scripts": { "start": "php -S localhost:8080 -t public index.php", "test": "phpunit" } - } diff --git a/composer.lock b/composer.lock index e49e85f..7a1d2bc 100644 --- a/composer.lock +++ b/composer.lock @@ -4,66 +4,90 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "39b38af13b004d514b8fa19e295ad0d9", + "content-hash": "a0e70f50cfe9bfd09af2cfd52f922872", "packages": [ { - "name": "container-interop/container-interop", - "version": "1.2.0", + "name": "fig/http-message-util", + "version": "1.1.5", "source": { "type": "git", - "url": "https://github.com/container-interop/container-interop.git", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" + "url": "https://github.com/php-fig/http-message-util.git", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", "shasum": "" }, "require": { - "psr/container": "^1.0" + "php": "^5.3 || ^7.0 || ^8.0" + }, + "suggest": { + "psr/http-message": "The package containing the PSR-7 interfaces" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, "autoload": { "psr-4": { - "Interop\\Container\\": "src/Interop/Container/" + "Fig\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", - "homepage": "https://github.com/container-interop/container-interop", - "abandoned": "psr/container", - "time": "2017-02-14T19:40:03+00:00" + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "issues": "https://github.com/php-fig/http-message-util/issues", + "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" + }, + "time": "2020-11-24T22:02:12+00:00" }, { "name": "google/recaptcha", - "version": "1.2.3", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/google/recaptcha.git", - "reference": "98c4a6573b27e8b0990ea8789c74ea378795134c" + "reference": "d59a801e98a4e9174814a6d71bbc268dff1202df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/google/recaptcha/zipball/98c4a6573b27e8b0990ea8789c74ea378795134c", - "reference": "98c4a6573b27e8b0990ea8789c74ea378795134c", + "url": "https://api.github.com/repos/google/recaptcha/zipball/d59a801e98a4e9174814a6d71bbc268dff1202df", + "reference": "d59a801e98a4e9174814a6d71bbc268dff1202df", "shasum": "" }, "require": { - "php": ">=5.5" + "php": ">=8" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.2.20|^2.15", - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^4.8.36|^5.7.27|^6.59|^7.5.11" + "friendsofphp/php-cs-fixer": "^3.14", + "php-coveralls/php-coveralls": "^2.5", + "phpunit/phpunit": "^10" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { @@ -83,75 +107,85 @@ "recaptcha", "spam" ], - "time": "2019-08-16T15:48:25+00:00" + "support": { + "forum": "https://groups.google.com/forum/#!forum/recaptcha", + "issues": "https://github.com/google/recaptcha/issues", + "source": "https://github.com/google/recaptcha" + }, + "time": "2023-02-18T17:41:46+00:00" }, { - "name": "kanellov/slim-twig-flash", - "version": "0.2.0", + "name": "laravel/serializable-closure", + "version": "v1.3.3", "source": { "type": "git", - "url": "https://github.com/kanellov/slim-twig-flash.git", - "reference": "14a96919cfb116aa528b6ce9a611f544ac6d6a01" + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kanellov/slim-twig-flash/zipball/14a96919cfb116aa528b6ce9a611f544ac6d6a01", - "reference": "14a96919cfb116aa528b6ce9a611f544ac6d6a01", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", "shasum": "" }, "require": { - "php": ">=5.5.0", - "slim/flash": ">=0.1.0", - "twig/twig": ">=1.18" + "php": "^7.3|^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "1.*", - "phpunit/phpcov": "2.*", - "phpunit/phpunit": "4.8.0", - "satooshi/php-coveralls": "dev-master" + "nesbot/carbon": "^2.61", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, "autoload": { "psr-4": { - "Knlv\\Slim\\Views\\": "src" + "Laravel\\SerializableClosure\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "GNU GPLv3" + "MIT" ], "authors": [ { - "name": "Vassilis Kanellopoulos", - "email": "contact@kanellov.com", - "homepage": "http://kanellov.com" + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" } ], - "description": "A Twig extension to access Slim Flash messages in templates", + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", "keywords": [ - "extension", - "flash", - "framework", - "message", - "provider", - "slim", - "twig", - "view" + "closure", + "laravel", + "serializable" ], - "time": "2016-12-29T22:07:19+00:00" + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2023-11-08T14:08:06+00:00" }, { "name": "monolog/monolog", - "version": "1.25.2", + "version": "1.27.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "d5e2fb341cb44f7e2ab639d12a1e5901091ec287" + "reference": "904713c5929655dc9b97288b69cfeedad610c9a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/d5e2fb341cb44f7e2ab639d12a1e5901091ec287", - "reference": "d5e2fb341cb44f7e2ab639d12a1e5901091ec287", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/904713c5929655dc9b97288b69cfeedad610c9a1", + "reference": "904713c5929655dc9b97288b69cfeedad610c9a1", "shasum": "" }, "require": { @@ -165,11 +199,10 @@ "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", "graylog2/gelf-php": "~1.0", - "jakub-onderka/php-parallel-lint": "0.9", "php-amqplib/php-amqplib": "~2.4", "php-console/php-console": "^3.1.3", + "phpstan/phpstan": "^0.12.59", "phpunit/phpunit": "~4.5", - "phpunit/phpunit-mock-objects": "2.3.0", "ruflin/elastica": ">=0.90 <3.0", "sentry/sentry": "^0.13", "swiftmailer/swiftmailer": "^5.3|^6.0" @@ -188,11 +221,6 @@ "sentry/sentry": "Allow sending log messages to a Sentry server" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "autoload": { "psr-4": { "Monolog\\": "src/Monolog" @@ -216,7 +244,21 @@ "logging", "psr-3" ], - "time": "2019-11-13T10:00:05+00:00" + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/1.27.1" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2022-06-09T08:53:42+00:00" }, { "name": "nikic/fast-route", @@ -240,12 +282,12 @@ }, "type": "library", "autoload": { - "psr-4": { - "FastRoute\\": "src/" - }, "files": [ "src/functions.php" - ] + ], + "psr-4": { + "FastRoute\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -262,141 +304,161 @@ "router", "routing" ], + "support": { + "issues": "https://github.com/nikic/FastRoute/issues", + "source": "https://github.com/nikic/FastRoute/tree/master" + }, "time": "2018-02-13T20:26:39+00:00" }, { - "name": "phpmailer/phpmailer", - "version": "v6.1.3", + "name": "php-di/invoker", + "version": "2.3.4", "source": { "type": "git", - "url": "https://github.com/PHPMailer/PHPMailer.git", - "reference": "a25ae38e03de4ee4031725498a600012364787c7" + "url": "https://github.com/PHP-DI/Invoker.git", + "reference": "33234b32dafa8eb69202f950a1fc92055ed76a86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/a25ae38e03de4ee4031725498a600012364787c7", - "reference": "a25ae38e03de4ee4031725498a600012364787c7", + "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/33234b32dafa8eb69202f950a1fc92055ed76a86", + "reference": "33234b32dafa8eb69202f950a1fc92055ed76a86", "shasum": "" }, "require": { - "ext-ctype": "*", - "ext-filter": "*", - "php": ">=5.5.0" + "php": ">=7.3", + "psr/container": "^1.0|^2.0" }, "require-dev": { - "doctrine/annotations": "^1.2", - "friendsofphp/php-cs-fixer": "^2.2", - "phpunit/phpunit": "^4.8 || ^5.7" - }, - "suggest": { - "ext-mbstring": "Needed to send email in multibyte encoding charset", - "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication", - "league/oauth2-google": "Needed for Google XOAUTH2 authentication", - "psr/log": "For optional PSR-3 debug logging", - "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication", - "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)" + "athletic/athletic": "~0.1.8", + "mnapoli/hard-mode": "~0.3.0", + "phpunit/phpunit": "^9.0" }, "type": "library", "autoload": { "psr-4": { - "PHPMailer\\PHPMailer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-2.1-only" - ], - "authors": [ - { - "name": "Marcus Bointon", - "email": "phpmailer@synchromedia.co.uk" - }, - { - "name": "Jim Jagielski", - "email": "jimjag@gmail.com" - }, - { - "name": "Andy Prevost", - "email": "codeworxtech@users.sourceforge.net" - }, - { - "name": "Brent R. Matzelle" - } - ], - "description": "PHPMailer is a full-featured email creation and transfer class for PHP", - "time": "2019-11-21T09:37:46+00:00" - }, - { - "name": "pimple/pimple", - "version": "v3.2.3", - "source": { - "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/9e403941ef9d65d20cba7d54e29fe906db42cf32", - "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "psr/container": "^1.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2.x-dev" - } - }, - "autoload": { - "psr-0": { - "Pimple": "src/" + "Invoker\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ + "description": "Generic and extensible callable invoker", + "homepage": "https://github.com/PHP-DI/Invoker", + "keywords": [ + "callable", + "dependency", + "dependency-injection", + "injection", + "invoke", + "invoker" + ], + "support": { + "issues": "https://github.com/PHP-DI/Invoker/issues", + "source": "https://github.com/PHP-DI/Invoker/tree/2.3.4" + }, + "funding": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "url": "https://github.com/mnapoli", + "type": "github" } ], - "description": "Pimple, a simple Dependency Injection Container", - "homepage": "http://pimple.sensiolabs.org", - "keywords": [ - "container", - "dependency injection" - ], - "time": "2018-01-21T07:42:36+00:00" + "time": "2023-09-08T09:24:21+00:00" }, { - "name": "psr/container", - "version": "1.0.0", + "name": "php-di/php-di", + "version": "7.0.7", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + "url": "https://github.com/PHP-DI/PHP-DI.git", + "reference": "e87435e3c0e8f22977adc5af0d5cdcc467e15cf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/e87435e3c0e8f22977adc5af0d5cdcc467e15cf1", + "reference": "e87435e3c0e8f22977adc5af0d5cdcc467e15cf1", "shasum": "" }, "require": { - "php": ">=5.3.0" + "laravel/serializable-closure": "^1.0", + "php": ">=8.0", + "php-di/invoker": "^2.0", + "psr/container": "^1.1 || ^2.0" + }, + "provide": { + "psr/container-implementation": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3", + "friendsofphp/proxy-manager-lts": "^1", + "mnapoli/phpunit-easymock": "^1.3", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.6" + }, + "suggest": { + "friendsofphp/proxy-manager-lts": "Install it if you want to use lazy injection (version ^1)" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "DI\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The dependency injection container for humans", + "homepage": "https://php-di.org/", + "keywords": [ + "PSR-11", + "container", + "container-interop", + "dependency injection", + "di", + "ioc", + "psr11" + ], + "support": { + "issues": "https://github.com/PHP-DI/PHP-DI/issues", + "source": "https://github.com/PHP-DI/PHP-DI/tree/7.0.7" + }, + "funding": [ + { + "url": "https://github.com/mnapoli", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/php-di/php-di", + "type": "tidelift" + } + ], + "time": "2024-07-21T15:55:45+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -411,7 +473,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", @@ -423,25 +485,29 @@ "container-interop", "psr" ], - "time": "2017-02-14T16:28:37+00:00" + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" }, { "name": "psr/http-factory", - "version": "1.0.1", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", "shasum": "" }, "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0" + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -461,10 +527,10 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], - "description": "Common interfaces for PSR-7 HTTP message factories", + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", "keywords": [ "factory", "http", @@ -475,29 +541,32 @@ "request", "response" ], - "time": "2019-04-30T12:38:16+00:00" + "support": { + "source": "https://github.com/php-fig/http-factory" + }, + "time": "2024-04-15T12:06:14+00:00" }, { "name": "psr/http-message", - "version": "1.0.1", + "version": "2.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -512,7 +581,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -525,25 +594,28 @@ "request", "response" ], - "time": "2016-08-06T14:39:51+00:00" + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" }, { "name": "psr/http-server-handler", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/http-server-handler.git", - "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7" + "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7", - "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7", + "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/84c4fb66179be4caaf8e97bd239203245302e7d4", + "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4", "shasum": "" }, "require": { "php": ">=7.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -563,7 +635,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP server-side request handler", @@ -578,25 +650,28 @@ "response", "server" ], - "time": "2018-10-30T16:46:14+00:00" + "support": { + "source": "https://github.com/php-fig/http-server-handler/tree/1.0.2" + }, + "time": "2023-04-10T20:06:20+00:00" }, { "name": "psr/http-server-middleware", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/http-server-middleware.git", - "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5" + "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5", - "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5", + "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/c1481f747daaa6a0782775cd6a8c26a1bf4a3829", + "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829", "shasum": "" }, "require": { "php": ">=7.0", - "psr/http-message": "^1.0", + "psr/http-message": "^1.0 || ^2.0", "psr/http-server-handler": "^1.0" }, "type": "library", @@ -617,7 +692,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP server-side middleware", @@ -631,20 +706,24 @@ "request", "response" ], - "time": "2018-10-30T17:12:04+00:00" + "support": { + "issues": "https://github.com/php-fig/http-server-middleware/issues", + "source": "https://github.com/php-fig/http-server-middleware/tree/1.0.2" + }, + "time": "2023-04-11T06:14:47+00:00" }, { "name": "psr/log", - "version": "1.1.2", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", - "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "" }, "require": { @@ -668,7 +747,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for logging libraries", @@ -678,7 +757,54 @@ "psr", "psr-3" ], - "time": "2019-11-01T11:05:21+00:00" + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.4" + }, + "time": "2021-05-03T11:20:27+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": "slim/flash", @@ -726,39 +852,142 @@ "provider", "slim" ], + "support": { + "issues": "https://github.com/slimphp/Slim-Flash/issues", + "source": "https://github.com/slimphp/Slim-Flash/tree/master" + }, "time": "2017-10-22T10:35:05+00:00" }, { - "name": "slim/slim", - "version": "3.12.2", + "name": "slim/psr7", + "version": "1.7.0", "source": { "type": "git", - "url": "https://github.com/slimphp/Slim.git", - "reference": "200c6143f15baa477601879b64ab2326847aac0b" + "url": "https://github.com/slimphp/Slim-Psr7.git", + "reference": "753e9646def5ff4db1a06e5cf4ef539bfd30f467" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slimphp/Slim/zipball/200c6143f15baa477601879b64ab2326847aac0b", - "reference": "200c6143f15baa477601879b64ab2326847aac0b", + "url": "https://api.github.com/repos/slimphp/Slim-Psr7/zipball/753e9646def5ff4db1a06e5cf4ef539bfd30f467", + "reference": "753e9646def5ff4db1a06e5cf4ef539bfd30f467", "shasum": "" }, "require": { - "container-interop/container-interop": "^1.2", - "ext-json": "*", - "ext-libxml": "*", - "ext-simplexml": "*", - "nikic/fast-route": "^1.0", - "php": ">=5.5.0", - "pimple/pimple": "^3.0", - "psr/container": "^1.0", - "psr/http-message": "^1.0" + "fig/http-message-util": "^1.1.5", + "php": "^8.0", + "psr/http-factory": "^1.1", + "psr/http-message": "^1.0 || ^2.0", + "ralouphie/getallheaders": "^3.0", + "symfony/polyfill-php80": "^1.29" }, "provide": { - "psr/http-message-implementation": "1.0" + "psr/http-factory-implementation": "^1.0", + "psr/http-message-implementation": "^1.0 || ^2.0" }, "require-dev": { - "phpunit/phpunit": "^4.0", - "squizlabs/php_codesniffer": "^2.5" + "adriansuter/php-autoload-override": "^1.4", + "ext-json": "*", + "http-interop/http-factory-tests": "^1.1.0", + "php-http/psr7-integration-tests": "1.3.0", + "phpspec/prophecy": "^1.19", + "phpspec/prophecy-phpunit": "^2.2", + "phpstan/phpstan": "^1.11", + "phpunit/phpunit": "^9.6", + "squizlabs/php_codesniffer": "^3.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "Slim\\Psr7\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "http://joshlockhart.com" + }, + { + "name": "Andrew Smith", + "email": "a.smith@silentworks.co.uk", + "homepage": "http://silentworks.co.uk" + }, + { + "name": "Rob Allen", + "email": "rob@akrabat.com", + "homepage": "http://akrabat.com" + }, + { + "name": "Pierre Berube", + "email": "pierre@lgse.com", + "homepage": "http://www.lgse.com" + } + ], + "description": "Strict PSR-7 implementation", + "homepage": "https://www.slimframework.com", + "keywords": [ + "http", + "psr-7", + "psr7" + ], + "support": { + "issues": "https://github.com/slimphp/Slim-Psr7/issues", + "source": "https://github.com/slimphp/Slim-Psr7/tree/1.7.0" + }, + "time": "2024-06-08T14:48:17+00:00" + }, + { + "name": "slim/slim", + "version": "4.14.0", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Slim.git", + "reference": "5943393b88716eb9e82c4161caa956af63423913" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Slim/zipball/5943393b88716eb9e82c4161caa956af63423913", + "reference": "5943393b88716eb9e82c4161caa956af63423913", + "shasum": "" + }, + "require": { + "ext-json": "*", + "nikic/fast-route": "^1.3", + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "psr/http-factory": "^1.1", + "psr/http-message": "^1.1 || ^2.0", + "psr/http-server-handler": "^1.0", + "psr/http-server-middleware": "^1.0", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "adriansuter/php-autoload-override": "^1.4", + "ext-simplexml": "*", + "guzzlehttp/psr7": "^2.6", + "httpsoft/http-message": "^1.1", + "httpsoft/http-server-request": "^1.1", + "laminas/laminas-diactoros": "^2.17 || ^3", + "nyholm/psr7": "^1.8", + "nyholm/psr7-server": "^1.1", + "phpspec/prophecy": "^1.19", + "phpspec/prophecy-phpunit": "^2.1", + "phpstan/phpstan": "^1.11", + "phpunit/phpunit": "^9.6", + "slim/http": "^1.3", + "slim/psr7": "^1.6", + "squizlabs/php_codesniffer": "^3.10", + "vimeo/psalm": "^5.24" + }, + "suggest": { + "ext-simplexml": "Needed to support XML format in BodyParsingMiddleware", + "ext-xml": "Needed to support XML format in BodyParsingMiddleware", + "php-di/php-di": "PHP-DI is the recommended container library to be used with Slim", + "slim/psr7": "Slim PSR-7 implementation. See https://www.slimframework.com/docs/v4/start/installation.html for more information." }, "type": "library", "autoload": { @@ -786,6 +1015,11 @@ "email": "rob@akrabat.com", "homepage": "http://akrabat.com" }, + { + "name": "Pierre Berube", + "email": "pierre@lgse.com", + "homepage": "http://www.lgse.com" + }, { "name": "Gabriel Manricks", "email": "gmanricks@me.com", @@ -793,37 +1027,62 @@ } ], "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs", - "homepage": "https://slimframework.com", + "homepage": "https://www.slimframework.com", "keywords": [ "api", "framework", "micro", "router" ], - "time": "2019-08-20T18:46:05+00:00" + "support": { + "docs": "https://www.slimframework.com/docs/v4/", + "forum": "https://discourse.slimframework.com/", + "irc": "irc://irc.freenode.net:6667/slimphp", + "issues": "https://github.com/slimphp/Slim/issues", + "rss": "https://www.slimframework.com/blog/feed.rss", + "slack": "https://slimphp.slack.com/", + "source": "https://github.com/slimphp/Slim", + "wiki": "https://github.com/slimphp/Slim/wiki" + }, + "funding": [ + { + "url": "https://opencollective.com/slimphp", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/slim/slim", + "type": "tidelift" + } + ], + "time": "2024-06-13T08:54:48+00:00" }, { "name": "slim/twig-view", - "version": "2.5.0", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/slimphp/Twig-View.git", - "reference": "06ef39b58d60b11a9546893fd0b7fff2bd901798" + "reference": "1b351536b9a07ed90a3563ee9d71a987c5d74610" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slimphp/Twig-View/zipball/06ef39b58d60b11a9546893fd0b7fff2bd901798", - "reference": "06ef39b58d60b11a9546893fd0b7fff2bd901798", + "url": "https://api.github.com/repos/slimphp/Twig-View/zipball/1b351536b9a07ed90a3563ee9d71a987c5d74610", + "reference": "1b351536b9a07ed90a3563ee9d71a987c5d74610", "shasum": "" }, "require": { - "php": ">=5.5.0", - "psr/http-message": "^1.0", - "twig/twig": "^1.38|^2.7" + "php": "^7.4 || ^8.0", + "psr/http-message": "^1.1 || ^2.0", + "slim/slim": "^4.12", + "symfony/polyfill-php81": "^1.29", + "twig/twig": "^3.8" }, "require-dev": { - "phpunit/phpunit": "^4.8|^5.7", - "slim/slim": "^3.10" + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/phpstan": "^1.10.59", + "phpunit/phpunit": "^9.6", + "psr/http-factory": "^1.0", + "squizlabs/php_codesniffer": "^3.9" }, "type": "library", "autoload": { @@ -840,10 +1099,15 @@ "name": "Josh Lockhart", "email": "hello@joshlockhart.com", "homepage": "http://joshlockhart.com" + }, + { + "name": "Pierre Berube", + "email": "pierre@lgse.com", + "homepage": "http://www.lgse.com" } ], - "description": "Slim Framework 3 view helper built on top of the Twig 2 templating component", - "homepage": "http://slimframework.com", + "description": "Slim Framework 4 view helper built on top of the Twig 3 templating component", + "homepage": "https://www.slimframework.com", "keywords": [ "framework", "slim", @@ -851,41 +1115,116 @@ "twig", "view" ], - "time": "2019-04-06T16:34:38+00:00" + "support": { + "issues": "https://github.com/slimphp/Twig-View/issues", + "source": "https://github.com/slimphp/Twig-View/tree/3.4.0" + }, + "time": "2024-04-28T20:36:39+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.12.0", + "name": "symfony/deprecation-contracts", + "version": "v3.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "550ebaac289296ce228a706d0867afc34687e3f4" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4", - "reference": "550ebaac289296ce228a706d0867afc34687e3f4", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-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.5.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": "2024-04-18T09:32:20+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.30.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "0424dff1c58f028c451efff2045f5d92410bd540" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540", + "reference": "0424dff1c58f028c451efff2045f5d92410bd540", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" }, "suggest": { "ext-ctype": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.12-dev" + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -909,41 +1248,62 @@ "polyfill", "portable" ], - "time": "2019-08-06T08:03:45+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.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": "2024-05-31T15:07:36+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.12.0", + "version": "v1.30.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17" + "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17", - "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", + "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" }, "suggest": { "ext-mbstring": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.12-dev" + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -968,378 +1328,59 @@ "portable", "shim" ], - "time": "2019-08-06T08:03:45+00:00" - }, - { - "name": "tuupola/callable-handler", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/tuupola/callable-handler.git", - "reference": "8b9d87f88056d4234af317d65612d7b6307a747a" + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tuupola/callable-handler/zipball/8b9d87f88056d4234af317d65612d7b6307a747a", - "reference": "8b9d87f88056d4234af317d65612d7b6307a747a", - "shasum": "" - }, - "require": { - "php": "^7.1", - "psr/http-server-middleware": "^1.0" - }, - "require-dev": { - "codedungeon/phpunit-result-printer": "^0.4.4", - "overtrue/phplint": "^1.0", - "phpunit/phpunit": "^6.5", - "squizlabs/php_codesniffer": "^3.2", - "tuupola/http-factory": "^0.4.0|^1.0", - "zendframework/zend-diactoros": "^1.6.0|^2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Tuupola\\Middleware\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ { - "name": "Mika Tuupola", - "email": "tuupola@appelsiini.net", - "homepage": "https://appelsiini.net/", - "role": "Developer" - } - ], - "description": "Compatibility layer for PSR-7 double pass and PSR-15 middlewares.", - "homepage": "https://github.com/tuupola/callable-handler", - "keywords": [ - "middleware", - "psr-15", - "psr-7" - ], - "time": "2018-10-12T09:59:35+00:00" - }, - { - "name": "tuupola/http-factory", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/tuupola/http-factory.git", - "reference": "5fbde4c65a10d09a85652684a6e569542265a749" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tuupola/http-factory/zipball/5fbde4c65a10d09a85652684a6e569542265a749", - "reference": "5fbde4c65a10d09a85652684a6e569542265a749", - "shasum": "" - }, - "require": { - "php": "^7.1", - "psr/http-factory": "^1.0" - }, - "conflict": { - "nyholm/psr7": "<1.0" - }, - "provide": { - "psr/http-factory-implementation": "^1.0" - }, - "require-dev": { - "http-interop/http-factory-tests": "^0.5.0", - "overtrue/phplint": "^1.0", - "phpunit/phpunit": "^6.0|^7.0", - "squizlabs/php_codesniffer": "^3.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Tuupola\\Http\\Factory\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mika Tuupola", - "email": "tuupola@appelsiini.net", - "homepage": "https://appelsiini.net/", - "role": "Developer" - } - ], - "description": "Lightweight autodiscovering PSR-17 HTTP factories", - "homepage": "https://github.com/tuupola/http-factory", - "keywords": [ - "http", - "psr-17", - "psr-7" - ], - "time": "2019-08-07T07:10:58+00:00" - }, - { - "name": "tuupola/slim-basic-auth", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/tuupola/slim-basic-auth.git", - "reference": "40f5efe991ac4e2441ee05b830375c02432ff3f8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tuupola/slim-basic-auth/zipball/40f5efe991ac4e2441ee05b830375c02432ff3f8", - "reference": "40f5efe991ac4e2441ee05b830375c02432ff3f8", - "shasum": "" - }, - "require": { - "php": "^7.1", - "psr/http-message": "^1.0.1", - "psr/http-server-middleware": "^1.0", - "tuupola/callable-handler": "^0.3.0|^0.4.0|^1.0", - "tuupola/http-factory": "^0.4.0|^1.0" - }, - "require-dev": { - "codedungeon/phpunit-result-printer": "^0.19.14", - "equip/dispatch": "^2.0", - "overtrue/phplint": "^1.1", - "phpstan/phpstan": "^0.9.2", - "phpunit/phpunit": "^7.0", - "squizlabs/php_codesniffer": "^3.2", - "zendframework/zend-diactoros": "^1.3|^2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Tuupola\\Middleware\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mika Tuupola", - "email": "tuupola@appelsiini.net", - "homepage": "https://appelsiini.net/" - } - ], - "description": "PSR-7 and PSR-15 HTTP Basic Authentication Middleware", - "homepage": "https://appelsiini.net/projects/slim-basic-auth", - "keywords": [ - "auth", - "middleware", - "psr-15", - "psr-7" - ], - "time": "2018-10-15T12:48:00+00:00" - }, - { - "name": "twig/twig", - "version": "v2.12.2", - "source": { - "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "d761fd1f1c6b867ae09a7d8119a6d95d06dc44ed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/d761fd1f1c6b867ae09a7d8119a6d95d06dc44ed", - "reference": "d761fd1f1c6b867ae09a7d8119a6d95d06dc44ed", - "shasum": "" - }, - "require": { - "php": "^7.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" - }, - "require-dev": { - "psr/container": "^1.0", - "symfony/debug": "^3.4|^4.2", - "symfony/phpunit-bridge": "^4.4@dev|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.12-dev" - } - }, - "autoload": { - "psr-0": { - "Twig_": "lib/" - }, - "psr-4": { - "Twig\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" + "url": "https://symfony.com/sponsor", + "type": "custom" }, { - "name": "Twig Team", - "homepage": "https://twig.symfony.com/contributors", - "role": "Contributors" + "url": "https://github.com/fabpot", + "type": "github" }, { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", - "keywords": [ - "templating" - ], - "time": "2019-11-11T16:52:09+00:00" - } - ], - "packages-dev": [ - { - "name": "doctrine/instantiator", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-shim": "^0.11", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "time": "2019-10-21T16:45:58+00:00" + "time": "2024-06-19T12:30:46+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.9.3", + "name": "symfony/polyfill-php80", + "version": "v1.30.0", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "77fa7995ac1b21ab60769b7323d600a991a90433" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/007c053ae6f31bba39dfa19a7726f56e9763bbea", - "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "time": "2019-08-09T12:45:53+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433", + "reference": "77fa7995ac1b21ab60769b7323d600a991a90433", "shasum": "" }, "require": { "php": ">=7.1" }, - "require-dev": { - "phpunit/phpunit": "~6" - }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.x-dev" + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1347,58 +1388,79 @@ ], "authors": [ { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" + "compatibility", + "polyfill", + "portable", + "shim" ], - "time": "2018-08-07T13:53:10+00:00" + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.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": "2024-05-31T15:07:36+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "4.3.2", + "name": "symfony/polyfill-php81", + "version": "v1.30.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e", - "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/3fb075789fb91f9ad9af537c4012d523085bd5af", + "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af", "shasum": "" }, "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", - "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", - "webmozart/assert": "^1.0" - }, - "require-dev": { - "doctrine/instantiator": "^1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" + "php": ">=7.1" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "4.x-dev" + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1406,1060 +1468,69 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2019-09-12T14:27:41+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", - "shasum": "" - }, - "require": { - "php": "^7.1", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "^7.1", - "mockery/mockery": "~1", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2019-08-22T18:11:29+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/f6811d96d97bdf400077a0cc100ae56aa32b9203", - "reference": "f6811d96d97bdf400077a0cc100ae56aa32b9203", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.1|^2.0|^3.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" - }, - "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" + "compatibility", + "polyfill", + "portable", + "shim" ], - "time": "2019-10-03T11:07:50+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "4.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.30.0" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-xmlwriter": "*", - "php": "^5.6 || ^7.0", - "phpunit/php-file-iterator": "^1.3", - "phpunit/php-text-template": "^1.2", - "phpunit/php-token-stream": "^1.4.2 || ^2.0", - "sebastian/code-unit-reverse-lookup": "^1.0", - "sebastian/environment": "^1.3.2 || ^2.0", - "sebastian/version": "^1.0 || ^2.0" - }, - "require-dev": { - "ext-xdebug": "^2.1.4", - "phpunit/phpunit": "^5.7" - }, - "suggest": { - "ext-xdebug": "^2.5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ + "funding": [ { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "time": "2017-04-02T07:44:40+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "1.4.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "time": "2017-11-27T13:52:08+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "time": "2015-06-21T13:50:34+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "1.0.9", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "time": "2017-02-26T11:10:40+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2017-11-27T05:48:46+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "5.7.27", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", - "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "myclabs/deep-copy": "~1.3", - "php": "^5.6 || ^7.0", - "phpspec/prophecy": "^1.6.2", - "phpunit/php-code-coverage": "^4.0.4", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "^3.2", - "sebastian/comparator": "^1.2.4", - "sebastian/diff": "^1.4.3", - "sebastian/environment": "^1.3.4 || ^2.0", - "sebastian/exporter": "~2.0", - "sebastian/global-state": "^1.1", - "sebastian/object-enumerator": "~2.0", - "sebastian/resource-operations": "~1.0", - "sebastian/version": "^1.0.6|^2.0.1", - "symfony/yaml": "~2.1|~3.0|~4.0" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2" - }, - "require-dev": { - "ext-pdo": "*" - }, - "suggest": { - "ext-xdebug": "*", - "phpunit/php-invoker": "~1.1" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.7.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2018-02-01T05:50:59+00:00" - }, - { - "name": "phpunit/phpunit-mock-objects", - "version": "3.4.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.6 || ^7.0", - "phpunit/php-text-template": "^1.2", - "sebastian/exporter": "^1.2 || ^2.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.4" - }, - "suggest": { - "ext-soap": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" - } - ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "abandoned": true, - "time": "2017-06-30T09:13:00+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" - }, - { - "name": "sebastian/comparator", - "version": "1.2.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" + "url": "https://symfony.com/sponsor", + "type": "custom" }, { - "name": "Volker Dusch", - "email": "github@wallbash.com" + "url": "https://github.com/fabpot", + "type": "github" }, { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" } ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "time": "2017-01-29T09:50:25+00:00" - }, - { - "name": "sebastian/diff", - "version": "1.4.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff" - ], - "time": "2017-05-22T07:24:03+00:00" - }, - { - "name": "sebastian/environment", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "time": "2016-11-26T07:53:53+00:00" - }, - { - "name": "sebastian/exporter", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~2.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "time": "2016-11-19T08:54:04+00:00" - }, - { - "name": "sebastian/global-state", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "time": "2015-10-12T03:26:01+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "sebastian/recursion-context": "~2.0" - }, - "require-dev": { - "phpunit/phpunit": "~5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-02-18T15:18:39+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "2.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-11-19T07:33:16+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "shasum": "" - }, - "require": { - "php": ">=5.6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" - }, - { - "name": "sebastian/version", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" + "time": "2024-06-19T12:30:46+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.0", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "76de473358fe802578a415d5bb43c296cf09d211" + "reference": "fa34c77015aa6720469db7003567b9f772492bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/76de473358fe802578a415d5bb43c296cf09d211", - "reference": "76de473358fe802578a415d5bb43c296cf09d211", + "url": "https://api.github.com/repos/symfony/yaml/zipball/fa34c77015aa6720469db7003567b9f772492bf2", + "reference": "fa34c77015aa6720469db7003567b9f772492bf2", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=8.2", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<3.4" + "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "symfony/console": "^6.4|^7.0" }, + "bin": [ + "Resources/bin/yaml-lint" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Yaml\\": "" @@ -2482,68 +1553,116 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Yaml Component", + "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", - "time": "2019-11-12T14:51:11+00:00" + "support": { + "source": "https://github.com/symfony/yaml/tree/v7.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": "2024-05-31T14:57:53+00:00" }, { - "name": "webmozart/assert", - "version": "1.5.0", + "name": "twig/twig", + "version": "v3.10.3", "source": { "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4" + "url": "https://github.com/twigphp/Twig.git", + "reference": "67f29781ffafa520b0bbfbd8384674b42db04572" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/88e6d84706d09a236046d686bbea96f07b3a34f4", - "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/67f29781ffafa520b0bbfbd8384674b42db04572", + "reference": "67f29781ffafa520b0bbfbd8384674b42db04572", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0", - "symfony/polyfill-ctype": "^1.8" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php80": "^1.22" }, "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^7.5.13" + "psr/container": "^1.0|^2.0", + "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, "autoload": { + "files": [ + "src/Resources/core.php", + "src/Resources/debug.php", + "src/Resources/escaper.php", + "src/Resources/string_loader.php" + ], "psr-4": { - "Webmozart\\Assert\\": "src/" + "Twig\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" } ], - "description": "Assertions to validate method input/output with nice error messages.", + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", "keywords": [ - "assert", - "check", - "validate" + "templating" ], - "time": "2019-08-24T08:43:50+00:00" + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v3.10.3" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2024-05-16T10:04:27+00:00" } ], + "packages-dev": [], "aliases": [], "minimum-stability": "stable", "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=5.5.0" + "php": ">=8.2" }, - "platform-dev": [] + "platform-dev": [], + "plugin-api-version": "2.6.0" } diff --git a/nginx.template.conf b/nginx.template.conf new file mode 100755 index 0000000..997cfc1 --- /dev/null +++ b/nginx.template.conf @@ -0,0 +1,45 @@ +worker_processes 5; +daemon off; + +worker_rlimit_nofile 8192; + +events { + worker_connections 4096; # Default: 1024 +} + +http { + include $!{nginx}/conf/mime.types; + index index.html index.htm index.php; + + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] $status ' + '"$request" $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + access_log /dev/stdout; + error_log /dev/stdout; + sendfile on; + tcp_nopush on; + server_names_hash_bucket_size 128; # this seems to be required for some vhosts + + server { + listen 80; + server_name localhost; + index index.php index.html index.html; + add_header X-Frame-Options "SAMEORIGIN"; + add_header X-Content-Type-Options "nosniff"; + charset utf-8; + root /app/public; + location / { + try_files $uri /index.php$is_args$args; + } + location ~ \.php$ { + try_files $uri =404; + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass 127.0.0.1:9000; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; + include $!{nginx}/conf/fastcgi_params; + include $!{nginx}/conf/fastcgi.conf; + } + } +} \ No newline at end of file diff --git a/src/dependencies.php b/src/dependencies.php index bce0d45..95123ac 100644 --- a/src/dependencies.php +++ b/src/dependencies.php @@ -1,33 +1,36 @@ getContainer(); +use DI\Container; +use Slim\Flash\Messages; -$container['flash'] = function($c){ +$container = new Container(); + +$container->set('flash', function($c){ return new \Slim\Flash\Messages(); -}; +}); -$container['renderer'] = function ($c) { - $settings = $c->get('settings')['renderer']; +// $container['renderer'] = function ($c) { +// $settings = $c->get('settings')['renderer']; - $view = new Slim\Views\Twig($settings['template_path'],[ - 'cache' => $settings['cache_path'], +// $view = new Slim\Views\Twig($settings['template_path'],[ +// 'cache' => $settings['cache_path'], - ]); +// ]); - $view->addExtension(new Knlv\Slim\Views\TwigMessages( - $c->get('flash') - )); - $noticias = Yaml::parseFile(__DIR__."/../data/noticias.yml"); - $sponsors = Yaml::parseFile(__DIR__."/../data/sponsors.yml"); - $view->getEnvironment()->addGlobal('noticias',$noticias); - $view->getEnvironment()->addGlobal('sponsors',$sponsors); +// $view->addExtension(new Knlv\Slim\Views\TwigMessages( +// $c->get('flash') +// )); +// $noticias = Yaml::parseFile(__DIR__."/../data/noticias.yml"); +// $sponsors = Yaml::parseFile(__DIR__."/../data/sponsors.yml"); +// $view->getEnvironment()->addGlobal('noticias',$noticias); +// $view->getEnvironment()->addGlobal('sponsors',$sponsors); - return $view; -}; +// return $view; +// }; -$container['db'] = function ($c) { +$container -> set('db', function ($c) { $dbconf = $c->get('settings')['db']; try{ $pdo = new PDO('sqlite:'.$dbconf['path']); @@ -44,16 +47,38 @@ $container['db'] = function ($c) { echo $e->getMessage(); } return $db; -}; -// monolog -$container['logger'] = function ($c) { - $settings = $c->get('settings')['logger']; - $logger = new Monolog\Logger($settings['name']); - $logger->pushProcessor(new Monolog\Processor\UidProcessor()); - $logger->pushHandler(new Monolog\Handler\StreamHandler($settings['path'], $settings['level'])); - return $logger; -}; +}); -/*$container['mailer'] =function ($c){ -};*/ +$container->set('settings', function(){ + return [ + 'displayErrorDetails' => true, // set to false in production + 'addContentLengthHeader' => false, // Allow the web server to send the content-length header + 'debug' => false, + 'testing' => false, + 'close_registration' => true, + + // Renderer settings + 'renderer' => [ + 'template_path' => __DIR__ . '/../templates/', + //'cache_path' => __DIR__.'/../templates/.cache/', + 'cache_path' => false, + 'autoreload' => true, + 'debug' => true + ], + + + 'db' => [ + 'path' => __DIR__."/../db/surfaces2018.db", + 'schema' => __DIR__."/../db/schema.sql", + 'load_schema' => __DIR__."/../db/.schema.lock" + ], + 'recaptcha' => [ + 'secret' => "6LesRDsUAAAAAA6t3UgL4U4Foc9njmXX-8HIiLj_", + 'secrettest' => "6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe", + 'sitekey' => "6LesRDsUAAAAAJvyoODvjiza9u75qEGJmbKHEV6s", + 'sitekeytest' => "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI" + ], + + ]; +}); diff --git a/src/middleware.php b/src/middleware.php index 116a0ff..4a6fcdd 100644 --- a/src/middleware.php +++ b/src/middleware.php @@ -1,4 +1,11 @@ add(new \Slim\Csrf\Guard); +use Slim\Views\Twig; +use Slim\Views\TwigMiddleware; + +// Create Twig +$twig = Twig::create(__DIR__ . '/../templates', ['cache' => false]); + +// Add Twig-View Middleware +$app->add(TwigMiddleware::create($app, $twig)); \ No newline at end of file diff --git a/src/routes.php b/src/routes.php index 9fd4f8a..0a0d312 100644 --- a/src/routes.php +++ b/src/routes.php @@ -1,231 +1,220 @@ add(new Tuupola\Middleware\HttpBasicAuthentication([ - "path" => ["/inscriptos", "inscriptoscsv"], /* or ["/admin", "/api"] */ - "realm" => "Protected", - "secure" => false, - "users" => [ - "admin" => "puntofijo" - ] -])); + $app->get('/', function (Request $request, Response $response, array $args) { - $this->logger->info("GDDWorkshop '/' route"); - return $this->renderer->render($response, 'index.html', $args); + // $this->logger->info("GDDWorkshop '/' route"); + $view = Twig::fromRequest($request); + return $view->render($response, 'index.html', $args); }); $app->get('/descripcion', function (Request $request, Response $response, array $args) { - $this->logger->info("GDDWorkshop '/descripcion' route"); - return $this->renderer->render($response, 'descripcion.html', $args); + // $this->logger->info("GDDWorkshop '/descripcion' route"); + $view = Twig::fromRequest($request); + return $view->render($response, 'descripcion.html', $args); }); -$app->get('/registrarse', function (Request $request, Response $response, array $args) { - $this->logger->info("GDDWorkshop '/registrtion' route"); - $recapsitekey = $this->settings["recaptcha"]["sitekey"]; - if($this->settings["testing"]){ - $recapsitekey = $this->settings["recaptcha"]["sitekeytest"]; - } - return $this->renderer->render($response, 'registration.html', - [ - 'closed' => $this->settings['close_registration'], - 'sitekey' => $recapsitekey - ]); -}); +// $app->get('/registrarse', function (Request $request, Response $response, array $args) { +// // $this->logger->info("GDDWorkshop '/registrtion' route"); + +// $recapsitekey = $this->settings["recaptcha"]["sitekey"]; +// if($this->get('settings')["testing"]){ +// $recapsitekey = $this->settings["recaptcha"]["sitekeytest"]; +// } +// $view = Twig::fromRequest($request); +// return $view->render($response, 'descripcion.html', +// [ +// 'closed' => $this->settings['close_registration'], +// 'sitekey' => $recapsitekey +// ]); +// }); -$app->get('/participantes', function (Request $request, Response $response, array $args) { - $this->logger->info("GDDWorkshop '/participants' route"); - $db = $this->db; - $data = $db->getAll(); - return $this->renderer->render($response, 'participants.html', ['registros' => $data]); -}); +// $app->get('/participantes', function (Request $request, Response $response, array $args) { +// // $this->logger->info("GDDWorkshop '/participants' route"); +// $db = $this->get('db'); +// $data = $db->getAll(); +// $view = Twig::fromRequest($request); +// return $view->render($response, 'participants.html', ['registros' => $data]); +// }); -$app->get('/comites', function (Request $request, Response $response, array $args) { - $this->logger->info("GDDWorkshop '/committess' route"); - $comites = Yaml::parseFile(__DIR__."/../data/comites.yml"); - //$strcomites = file_get_contents(__DIR__."/../data/comites.json"); - //$comites = json_decode($strcomites,true); - //echo "
".var_export($comites,true)."
"; - return $this->renderer->render($response, 'committess.html',['comites' => $comites]); -}); +// $app->get('/comites', function (Request $request, Response $response, array $args) { +// // $this->logger->info("GDDWorkshop '/committess' route"); +// $comites = Yaml::parseFile(__DIR__."/../data/comites.yml"); +// //$strcomites = file_get_contents(__DIR__."/../data/comites.json"); +// //$comites = json_decode($strcomites,true); +// //echo "
".var_export($comites,true)."
"; +// $view = Twig::fromRequest($request); +// return $view->render($response, 'committess.html',['comites' => $comites]); +// }); -$app->get('/informacion-practica', function (Request $request, Response $response, array $args) { - $this->logger->info("GDDWorkshop '/practicalinfo' route"); - return $this->renderer->render($response, 'practicalinfo.html', $args); -}); +// $app->get('/informacion-practica', function (Request $request, Response $response, array $args) { +// // $this->logger->info("GDDWorkshop '/practicalinfo' route"); +// $view = Twig::fromRequest($request); +// return $view->render($response, 'practicalinfo.html', $args); +// }); -$app->get('/conferencias', function (Request $request, Response $response, array $args) { - $this->logger->info("GDDWorkshop '/charlas' route"); - //$strcharlas = file_get_contents(__DIR__."/../data/conferencias.json"); - - $charlas = Yaml::parseFile(__DIR__."/../data/conferencias.yml"); - //echo "
".var_export($charlasyml,true)."
"; - //$charlas = json_decode($strcharlas,true); - /*function cmp($a, $b){ - $aArray = explode(" ", $a.no); - $bArray = explode(" ", $b); - $aApellido = $a - if($a == $b){ - return 0; - } - return ($a<$b)?-1:1; - } */ - return $this->renderer->render($response, 'conferencias.html', - ['charlas' => $charlas]); -}); +// $app->get('/conferencias', function (Request $request, Response $response, array $args) { +// $charlas = Yaml::parseFile(__DIR__."/../data/conferencias.yml"); +// $view = Twig::fromRequest($request); +// return $view->render($response, 'conferencias.html', +// ['charlas' => $charlas]); +// }); -$app->get('/sesiones', function (Request $request, Response $response, array $args) { - $this->logger->info("GDDWorkshop '/sesiones' route"); - $sesiones = Yaml::parseFile(__DIR__."/../data/sesiones.yml"); - //$strsesiones = file_get_contents(__DIR__."/../data/sesiones.json"); - //$sesiones = json_decode($strsesiones,true); +// $app->get('/sesiones', function (Request $request, Response $response, array $args) { +// // $this->logger->info("GDDWorkshop '/sesiones' route"); +// $sesiones = Yaml::parseFile(__DIR__."/../data/sesiones.yml"); - function removeAccents($string) { - return strtolower(trim(preg_replace('~[^0-9a-z]+~i', '-', preg_replace('~&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8'))), ' ')); - } +// function removeAccents($string) { +// return strtolower(trim(preg_replace('~[^0-9a-z]+~i', '-', preg_replace('~&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8'))), ' ')); +// } - usort($sesiones,function($s1,$s2){ - $a = removeAccents($s1['titulo']); - $b = removeAccents($s2['titulo']); - return strcasecmp($a,$b)<0?-1:1; - }); +// usort($sesiones,function($s1,$s2){ +// $a = removeAccents($s1['titulo']); +// $b = removeAccents($s2['titulo']); +// return strcasecmp($a,$b)<0?-1:1; +// }); - //echo "
".var_export($sesiones,true)."
"; - return $this->renderer->render($response, 'sesiones.html', ["sesiones"=>array_chunk($sesiones,8,true)]); -}); +// //echo "
".var_export($sesiones,true)."
"; +// $view = Twig::fromRequest($request); +// return $view->render($response, 'sesiones.html', ["sesiones"=>array_chunk($sesiones,8,true)]); +// }); -$app->get('/programa', function (Request $request, Response $response, array $args) { - $this->logger->info("GDDWorkshop '/program' route"); - return $this->renderer->render($response, 'program.html', $args); -}); +// $app->get('/programa', function (Request $request, Response $response, array $args) { +// // $this->logger->info("GDDWorkshop '/program' route"); +// $view = Twig::fromRequest($request); +// return $view->render($response, 'program.html', $args); +// }); -$app->get('/inscriptos', function(Request $request, Response $response, array $args){ - $this->logger->info("GDDWorkshop '/practicalinfo' route"); - $db = $this->db; - $data = $db->getAll(); - return $this->renderer->render($response, 'inscriptos.html', ["registros" => $data]); -}); +// $app->get('/inscriptos', function(Request $request, Response $response, array $args){ +// // $this->logger->info("GDDWorkshop '/practicalinfo' route"); +// $db = $this->get('db'); +// $data = $db->getAll(); +// $view = Twig::fromRequest($request); +// return $view->render($response, 'inscriptos.html', ["registros" => $data]); +// }); -$app->get('/inscriptoscsv', function(Request $request, Response $response, array $args){ - $this->logger->info("GDDWorkshop '/practicalinfo' route"); - $dbfile = $this->settings['db']['path']; - $file = 'inscriptos-surface2018.csv'; - exec('sqlite3 -header -csv '.$dbfile.' "select * from registro" > "'.$file.'"'); +// $app->get('/inscriptoscsv', function(Request $request, Response $response, array $args){ +// // $this->logger->info("GDDWorkshop '/practicalinfo' route"); +// $dbfile = $this->get('settings')['db']['path']; +// $file = 'inscriptos-surface2018.csv'; +// exec('sqlite3 -header -csv '.$dbfile.' "select * from registro" > "'.$file.'"'); - $fh = fopen($file,"rb"); - $stream = new \Slim\Http\Stream($fh); - return $response->withHeader('Content-Type', 'application/force-download') - ->withHeader('Content-Type', 'application/octet-stream') - ->withHeader('Content-Type', 'application/download') - ->withHeader('Content-Description', 'File Transfer') - ->withHeader('Content-Transfer-Encoding', 'binary') - ->withHeader('Content-Disposition', 'attachment; filename="' . basename($file) . '"') - ->withHeader('Expires', '0') - ->withHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0') - ->withHeader('Pragma', 'public') - ->withBody($stream); -}); +// $fh = fopen($file,"rb"); +// $stream = new \Slim\Http\Stream($fh); +// return $response->withHeader('Content-Type', 'application/force-download') +// ->withHeader('Content-Type', 'application/octet-stream') +// ->withHeader('Content-Type', 'application/download') +// ->withHeader('Content-Description', 'File Transfer') +// ->withHeader('Content-Transfer-Encoding', 'binary') +// ->withHeader('Content-Disposition', 'attachment; filename="' . basename($file) . '"') +// ->withHeader('Expires', '0') +// ->withHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0') +// ->withHeader('Pragma', 'public') +// ->withBody($stream); +// }); -$mw = function ($request, $response, $next) { - $response->getBody()->write('BEFORE'); - $response = $next($request, $response); - $response->getBody()->write('AFTER'); +// $mw = function ($request, $response, $next) { +// $response->getBody()->write('BEFORE'); +// $response = $next($request, $response); +// $response->getBody()->write('AFTER'); - return $response; -}; +// return $response; +// }; -// API ROUTES -$app->group('/api', function($app){ +// // API ROUTES +// $app->group('/api', function($app){ - $app->get("/test", function(Request $request, Response $response, array $args) { - $this->logger->info("GDDWorkshop '/api/test' route"); - return var_dump($request); +// $app->get("/test", function(Request $request, Response $response, array $args) { +// // $this->logger->info("GDDWorkshop '/api/test' route"); +// return var_dump($request); - }); +// }); - $app->post('/register', function (Request $request, Response $response, array $args) { - $messages = $this->flash; - $data = $request->getParsedBody(); - $db = $this->db; - if($this->settings['close_registration']){ - $messages->addMessageNow("submit-register-err", "Registration has benn closed"); - } - else{ +// $app->post('/register', function (Request $request, Response $response, array $args) { +// $messages = $this->flash; +// $data = $request->getParsedBody(); +// $db = $this->db; +// if($this->settings['close_registration']){ +// $messages->addMessageNow("submit-register-err", "Registration has benn closed"); +// } +// else{ - if(!isset($data['nombre'])||empty($data['nombre'])) - $messages->addMessageNow("submit-register-err", "First name could not be empty"); - if(!isset($data['apellido'])||empty($data['apellido'])) - $messages->addMessageNow("submit-register-err", "Last name could not be empty"); - if(!isset($data['email'])||empty($data['email'])) - $messages->addMessageNow("submit-register-err", "E-mail could not be empty"); - if(!isset($data['letterinvited'])||!is_numeric($data['letterinvited'])) - $messages->addMessageNow("submit-register-err", "Question about needing a letter of invitation must have a selected answer"); +// if(!isset($data['nombre'])||empty($data['nombre'])) +// $messages->addMessageNow("submit-register-err", "First name could not be empty"); +// if(!isset($data['apellido'])||empty($data['apellido'])) +// $messages->addMessageNow("submit-register-err", "Last name could not be empty"); +// if(!isset($data['email'])||empty($data['email'])) +// $messages->addMessageNow("submit-register-err", "E-mail could not be empty"); +// if(!isset($data['letterinvited'])||!is_numeric($data['letterinvited'])) +// $messages->addMessageNow("submit-register-err", "Question about needing a letter of invitation must have a selected answer"); - //ReCaptcha Validation - if(!isset($data['g-recaptcha-response'])||empty($data['g-recaptcha-response'])){ - $messages->addMessageNow("submit-register-err", "Please validate captcha!"); - } - else { - $recapsecret = $this->settings['recaptcha']['secret']; - if($this->settings['testing']){ - $recapsecret = $this->settings['recaptcha']['secrettest']; - } +// //ReCaptcha Validation +// if(!isset($data['g-recaptcha-response'])||empty($data['g-recaptcha-response'])){ +// $messages->addMessageNow("submit-register-err", "Please validate captcha!"); +// } +// else { +// $recapsecret = $this->settings['recaptcha']['secret']; +// if($this->settings['testing']){ +// $recapsecret = $this->settings['recaptcha']['secrettest']; +// } - $recaptcha = new ReCaptcha\ReCaptcha($recapsecret); - //get remote ip from request header TODO - $resp = $recaptcha->verify($data['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']); - if(!$resp->isSuccess()){ - $messages->addMessageNow("submit-register-err", "ReCaptcha validation error " . implode($resp->getErrorCodes())); - } - else { - unset($data['g-recaptcha-response']); - } - } +// $recaptcha = new ReCaptcha\ReCaptcha($recapsecret); +// //get remote ip from request header TODO +// $resp = $recaptcha->verify($data['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']); +// if(!$resp->isSuccess()){ +// $messages->addMessageNow("submit-register-err", "ReCaptcha validation error " . implode($resp->getErrorCodes())); +// } +// else { +// unset($data['g-recaptcha-response']); +// } +// } - try{ - if($db->findByMail($data['email'])) - $messages->addMessageNow("submit-register-err", $data['email']." is already registered
" - ."Please contact: surfacedynamics2018@cmat.edu.uy"); - }catch (Exception $e){ - $this->logger->debug("Submit register DB error: ".$e->getMessage()); - $messages->addMessageNow("submit-register-err", "DB error: ".$e->getMessage()); - } - } +// try{ +// if($db->findByMail($data['email'])) +// $messages->addMessageNow("submit-register-err", $data['email']." is already registered
" +// ."Please contact: surfacedynamics2018@cmat.edu.uy"); +// }catch (Exception $e){ +// $this->logger->debug("Submit register DB error: ".$e->getMessage()); +// $messages->addMessageNow("submit-register-err", "DB error: ".$e->getMessage()); +// } +// } - if($messages->hasMessage("submit-register-err")){ - $arrayresponse = array("success" => false, - "msg"=>"You registration could not be completed:\n", - "errors"=>$messages->getMessage("submit-register-err"), "data"=>$data); - } +// if($messages->hasMessage("submit-register-err")){ +// $arrayresponse = array("success" => false, +// "msg"=>"You registration could not be completed:\n", +// "errors"=>$messages->getMessage("submit-register-err"), "data"=>$data); +// } - else { - try{ - $db->insert($data); - }catch (Exception $e){ - $this->logger->debug("Submit register DB error: ".$e->getMessage()); - $messages->addMessageNow("submit-register-err", "DB error: ".$e->getMessage()); - } - $arrayresponse = array("success" => true, - "msg"=>"You have been successfully registered to Workshop on Surface Dynamics 2018", - "data"=>$data); - $mailbody = "Hello ".$data["nombre"]." ".$data["apellido"].",\n\n". - "You have been successfully registered to the Workshop on Surface Dynamics 2018!\n\n". - "If you need to change the information you have provided and for any ". - "questions please contact surfacedynamics2018@cmat.edu.uy\n\n". - "Best!\n\n"; - $headers = 'From: ' . "surfacedynamics2018@cmat.edu.uy" . "\r\n" . - 'Reply-To: ' . "surfacedynamics2018@edu.uy" . "\r\n" . - 'Content-Type: ' . "text/plain; charset=UTF-8". "\r\n" . - 'X-Mailer: PHP/' . phpversion(); - mail($data['email'], 'Successfully registered to the Surface Dynamics 2018 Workshop', $mailbody, $headers); - } - $newres = $response->withJson($arrayresponse); - return $newres; - }); +// else { +// try{ +// $db->insert($data); +// }catch (Exception $e){ +// $this->logger->debug("Submit register DB error: ".$e->getMessage()); +// $messages->addMessageNow("submit-register-err", "DB error: ".$e->getMessage()); +// } +// $arrayresponse = array("success" => true, +// "msg"=>"You have been successfully registered to Workshop on Surface Dynamics 2018", +// "data"=>$data); +// $mailbody = "Hello ".$data["nombre"]." ".$data["apellido"].",\n\n". +// "You have been successfully registered to the Workshop on Surface Dynamics 2018!\n\n". +// "If you need to change the information you have provided and for any ". +// "questions please contact surfacedynamics2018@cmat.edu.uy\n\n". +// "Best!\n\n"; +// $headers = 'From: ' . "surfacedynamics2018@cmat.edu.uy" . "\r\n" . +// 'Reply-To: ' . "surfacedynamics2018@edu.uy" . "\r\n" . +// 'Content-Type: ' . "text/plain; charset=UTF-8". "\r\n" . +// 'X-Mailer: PHP/' . phpversion(); +// mail($data['email'], 'Successfully registered to the Surface Dynamics 2018 Workshop', $mailbody, $headers); +// } +// $newres = $response->withJson($arrayresponse); +// return $newres; +// }); -}); +// });