diff --git a/.env.dist b/.env.dist new file mode 100644 index 0000000000000000000000000000000000000000..091eedb3920706fc4029524018946ea34571fa92 --- /dev/null +++ b/.env.dist @@ -0,0 +1 @@ +AMQP_HOST=amqp_host \ No newline at end of file diff --git a/.gitignore b/.gitignore index ba9cc1f051aaab68663bcccc2ba0916e3d7164ee..42f6b3e013c632ebd483fa6d4f34fefdacc00e62 100644 --- a/.gitignore +++ b/.gitignore @@ -14,4 +14,5 @@ cache .project .settings .phpunit* -anis_v3.sqlite \ No newline at end of file +anis_v3.sqlite +.env \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7b895a7b19c8578eaf588083bd632c2f0b590c33..44888d0ff21dea01c5a3038d1d8a8073f90956a7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,10 +4,13 @@ stages: - metrics-deploy - install - test + - sonar - build - deploy variables: + VERSION: "3.0" + SONARQUBE_URL: https://sonarqube.lam.fr METRICS_IMAGE: portus.lam.fr/anis/anis-server-metrics CONTAINER_IMAGE: portus.lam.fr/anis/anis-server @@ -58,7 +61,7 @@ install: image: jakzal/phpqa stage: install script: - - composer install + - composer install --ignore-platform-reqs cache: paths: - vendor @@ -71,10 +74,24 @@ phpunit: image: jakzal/phpqa stage: test script: - - phpdbg -qrr ./vendor/bin/phpunit --bootstrap ./tests/bootstrap.php --whitelist src --coverage-text --colors=never ./tests + - phpdbg -qrr ./vendor/bin/phpunit --bootstrap ./tests/bootstrap.php --whitelist src --coverage-clover ./coverage/clover.xml --log-junit ./coverage/junit-logfile.xml --colors=never ./tests cache: paths: - vendor + - coverage + policy: pull-push + only: + refs: + - develop + +sonar_scanner: + image: portus.lam.fr/ci-tools/sonar-scanner:latest + stage: sonar + script: + - sonar-scanner -Dsonar.projectKey=anis-server -Dsonar.sources=src -Dsonar.projectVersion=$VERSION -Dsonar.host.url=$SONARQUBE_URL -Dsonar.login=$SONAR_TOKEN -Dsonar.php.tests.reportPath=./coverage/junit-logfile.xml -Dsonar.php.coverage.reportPaths=./coverage/clover.xml + cache: + paths: + - coverage policy: pull only: refs: diff --git a/Dockerfile b/Dockerfile index 9d1d2d6abf4359d7c3b4f29112625dccf1d420f5..15e3de701d1a084f392ca11e3d9bbcecd2d70a7a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM php:7.2-apache +FROM php:7.3-apache # Install modules RUN apt-get update \ diff --git a/LICENSE b/LICENSE index 5b4626c2a5a1fb1bd614592f0b0f0e4bd25b5806..7fb812efcda5d227ea9311d81c216c6fbccbd7cd 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,13 @@ AstroNomical Information System - Server API - Copyright @ François Agneray & Chrystel Moreau + Copyright: François Agneray & Chrystel Moreau 2012 - 2019 + Address: Centre de donneeS Astrophysique de Marseille (CeSAM) + Laboratoire d'Astrophysique de Marseille + Ple de l'Etoile, site de Chteau-Gombert + 38, rue Frdric Joliot-Curie + 13388 Marseille cedex 13 France + CNRS U.M.R 7326 ANIS Server API is governed by the CeCILL license under French law and abiding by the rules of distribution of free software. You can use, diff --git a/Makefile b/Makefile index 181ad5eec3985344dfc32addabdd53c8c5eb8124..beda1b59624247f826fb48d7556278d8f6d7647d 100644 --- a/Makefile +++ b/Makefile @@ -1,28 +1,30 @@ -UID := $(shell id -u) -GID := $(shell id -g) +UID := $(id -u) +GID := $(id -g) list: @echo "" @echo "Useful targets:" @echo "" - @echo " install > install php composer dependancies" - @echo " up > build php image and start anis-v3-server containers for dev only (php + mailer)" - @echo " start > start anis-v3-server containers" - @echo " restart > restart anis-v3-server containers" - @echo " stop > stop and kill running anis-v3-server containers" - @echo " log > display anis-v3-server containers logs" - @echo " debug > shell into php anis-v3-server container" - @echo " phpunit > run php unit test suite" - @echo " phpcs > run php code sniffer test suite" - @echo " init-db > generate a new metadata database (anis-v3-server containers running needed)" - @echo " validate-db > validate the doctrine mapping entity files (anis-v3-server containers running needed)" + @echo " install > install php composer dependancies" + @echo " up > build php image and start anis-server containers for dev only (php + mailer)" + @echo " start > start anis-server containers" + @echo " restart > restart anis-server containers" + @echo " stop > stop and kill running anis-server containers" + @echo " logs > display anis-server containers logs" + @echo " shell > shell into php anis-server container" + @echo " phpunit > run php unit test suite" + @echo " phpcs > run php code sniffer test suite" + @echo " anis-init > generate a new anis admin database and a default metamodel database (anis-server containers running needed)" + @echo " dev-init > add metadata datasets for devlopment purpose" + @echo " remove-pgdata > remove the metadata database" + @echo " gen-key > generate a new encryption key that you can use to encrypt data (see anis server config file)" @echo "" install: @docker run --init -it --rm --user $(UID):$(GID) \ -e COMPOSER_CACHE_DIR=/dev/null \ -v $(CURDIR):/project \ - -w /project jakzal/phpqa composer install + -w /project jakzal/phpqa composer install --ignore-platform-reqs up: @docker-compose up --build -d @@ -36,11 +38,11 @@ stop: @docker-compose kill @docker-compose rm -v --force -log: +logs: @docker-compose logs -f -t -debug: - @docker-compose run php bash +shell: + @docker-compose exec php bash phpunit: @docker run --init -it --rm --user $(UID):$(GID) \ @@ -51,10 +53,16 @@ phpunit: phpcs: @docker run --init -it --rm --user $(UID):$(GID) \ -v $(CURDIR):/project \ - -w /project jakzal/phpqa phpcs --standard=PSR2 --extensions=php -n --colors src + -w /project jakzal/phpqa phpcs --standard=PSR2 --extensions=php --colors src tests -init-db: - @docker-compose run php ./vendor/bin/doctrine orm:schema-tool:create +anis-init: + @docker-compose exec php sh ./conf-dev/anis_init.sh -validate-db: - @docker-compose run php ./vendor/bin/doctrine orm:validate-schema \ No newline at end of file +dev-init: + @docker-compose exec php sh ./conf-dev/dev-init.sh + +remove-pgdata: + @docker volume rm anis-server_pgdata + +gen-key: + @docker-compose exec php php ./conf-dev/generate_encryption_key.php \ No newline at end of file diff --git a/README.md b/README.md index b69f57d7e045ae4a3cbc370e89de74f3aca2671c..64ec38156a35fc99ce120f38ea14350d7da53170 100644 --- a/README.md +++ b/README.md @@ -1,295 +1,126 @@ -# ANIS V3 SERVER +# Anis Server ## Introduction -AstroNomical Information System est un outil web générique qui vise à faciliter -la mise à disposition de données (Astrophysiques), accessible depuis -une base de données, à une communauté de scientifiques. +AstroNomical Information System is a generic web tool that aims to facilitate the provision of data (Astrophysics), accessible from a database, for the scientific community. -ANIS-V3-SERVER est un composant de ANIS-V3 qui permet de piloter une ou plusieurs -bases de données liées à des projets en astronomie uniquement via des URLS. +This software allows you to control one or more databases related to astronomical projects and allows access to datasets via URLs. -ANIS permet de rechercher et visualiser des données à partir de formulaires de -recherche générés automatiquement par l'application. Le scientifique à la -possibilité de visualiser ces données sous la forme d'un tableau HTML interactif, -il à également la possibilité de visualiser des données issues d'images -astronomiques, de spectres ou de fichier FITS. +Anis is protected by the `CeCILL` licence (see LICENCE file at the software root). -## Auteurs +## Authors + +Here is the list of people involved in the development: * `François Agneray` : Laboratoire d'Astrophysique de Marseille (CNRS) * `Chrystel Moreau` : Laboratoire d'Astrophysique de Marseille (CNRS) +* `Tifenn Guillas` : Laboratoire d'Astrophysique de Marseille (CNRS) -# Guide d'installation - -## Dépendances - -Cette application requiert les dépendances suivantes pour fonctionner: - - "slim/slim": "^3.8", - "doctrine/orm": "^2.5" - "monolog/monolog": "^1.23", - "lcobucci/jwt": "^3.2", - "swiftmailer/swiftmailer": "^6.0" - -Ces dépendances sont installées via le logiciel `composer.phar` et le fichier de -configuration `composer.json` disponible à la racine de l'application. - -## Dépendances : installation - -Pour lancer l'installation des dépendances, il faut utiliser la commande suivante -à la racine du projet ANIS : - -> php composer.phar install - -`Composer.phar` va utiliser automatique le fichier `composer.json` pour télécharger -les dépendances et les placer dans le dossier `vendor` à la racine du projet. - -## Base de données metamodel : création de la base - -Une instance ANIS nécessite une base de données de `metamodel` pour fonctionner. -Commencer par créer une base de données vierge avec un utilisateur en mode lecture -écriture pouvant s'y connecter. - -## Base de données metamodel : fichier de configuration - -La configuration pour la connexion à la base de données `metamodel` se trouve dans -le fichier `settings.php` dans le dossier `app` du projet. - -Le fichier `settings.php` contient un tableau de clé => valeur. Les options de -connexion se trouvent dnas la partie settings => metadata => connection_options. - -Mettez les options de connexion correspondant à la base de données `metamodel` -vierge préalablement créée. - -## Base de données metamodel: génération des tables +# Installation guide -Pour générer les tables de la la base de données `metamodel` qui correspondent aux -fichier `Entity` (voir la doc `Doctrine2` pour plus d'information), il faut utiliser -l'utilitaire en ligne de commande fournit par `Doctrine 2` disponible dans le dossier `vendor` : +## Prerequisites -> ./vendor/bin/doctrine +Before to start to install the anis-server you must make sure that you have the following commands installed on your computer: -Doctrine 2 permet de valider le schéma qui correpond aux fichiers `entity` : +1. `make` +2. `docker` +3. `docker-compose` -> ./vendor/bin/doctrine orm:validate-schema +You also need an Internet connection to download packages and dependancies. -Si le schéma est valide, Doctrine 2 permet de générer automatiquement la base de données : +## List of commands -> ./vendor/bin/doctrine orm:schema-tool:create - -## Lancement de l'application en mode docker : - -Vous pouvez lancer l'application en mode docker gràce au fichier docker-compose.yml se trouvant à la racine du projet. - -Pour ce faire vous devez avoir installé docker et docker-compose sur votre machine puis lancer la commande suivante : - -> make build -> make start - -Le container une fois lancé va rédiriger l'application su le port 8080 de votre machine. Rendez-vous sur l'URL http://localhost:8080 de votre machine pour vous assurez que l'application fonctionne. - -## Liens - -* `Slim` : [http://www.slimframework.com/](http://www.slimframework.com/) -* `Doctrine 2` : [https://www.doctrine-project.org/](https://www.doctrine-project.org/) -* `Swiftmailer` : [https://swiftmailer.symfony.com/](https://swiftmailer.symfony.com/) -* `Monolog` : [https://seldaek.github.io/monolog/](https://seldaek.github.io/monolog/) -* `Composer` : [https://getcomposer.org/](https://getcomposer.org/) -* `PHP-FIG` : [http://www.php-fig.org/](http://www.php-fig.org/) -* `PHP-Unit` : [http://phpunit.de/](http://phpunit.de/) -* `GIT` : [http://git-scm.com/](http://git-scm.com/) +The `Makefile` at the root of the project provides a list of commands available to manage the application in a development mode. -## Répertoires +To see the list of commands just open a terminal in the root of the project and type: -* `config`: Répèrtoire qui contient le fichier de configuration nécéssaire pour l'utilitaire doctrine en ligne de commande -* `documentation`: Contient le MCD de la base de données metamodel ainsi que la documentation des URL disponibles -* `public`: Racine du serveur web -* `src`: Code source de l'application -* `test`: Tests de l'application avec `phpunit` -* `vendor`: Dépendances de l'application +> make -## Fichiers clés +**Warning**: The `docker-compose.yml` and the` Makefile` commands must be used only for development or testing but no in production mode. -* `public/index.php`: Fichier de démarrage de l'application -* `src/settings.php`: Configuration de l'application -* `src/dependencies.php`: Configuration des services disponibles dans Pimple -* `src/middleware.php`: Configuration des middlewares -* `src/routes.php`: Configuration des routes de l'application (URL) +## Dependancies installation -# Guide d'utilisation des URLS +To start installing dependancies, use the following command at the software root: -# Vérification du service +> make install -* [/](documentation/api/root.md) => `GET` +The `Composer.phar` software will be downloaded and it will automatically use the `composer.json` and `composer.lock` files to download all the dependancies and save them to the `vendor` directory at the root of the application. -# Login +After that anis-server can work! -Création d'un nouvel utilisateur : - - [/register](documentation/api/register.md) => `POST` - - [/activate-account](documentation/api/activate-account.md) => `GET` +## Start anis-server -Connexion et récupération d'un jeton d'authentification - - [/login](documentation/api/login.md) => `POST` +Anis server has been developed to be used with docker containers. If you open the `docker-compose.yml` file you can see all containers needed for the **development or test configuration** of anis server. -Changement de mot de passe - - [/new-password](documentation/api/new-password.md) => `POST` - - [/change-password](documentation/change-password.md) => `POST` +`Makefile` provides a command to build install and run all the containers that you need for a fresh installation of anis-server software: -# Pilotage de la base metamodel +> make up -La base de données metamodel se pilote via une API REST et fonctionne avec les -méthodes `GET`, `POST`, `PUT` et `DELETE` +**Note:** This command use `docker-compose` to work. These operations may take a few minutes as it is necessary to download docker images -* `GET`: Récupération d'un ou plusieurs enregistrements -* `POST`: Ajout d'un enregistrement -* `PUT`: Modification d'un enregistrement -* `DELETE`: Suppression d'un enregistrement +If you want to list all anis stack containers running: -Voici la liste des URLS et méthodes disponibles: +> docker-compose ps -* Information sur les bases de données métiers {name} = nom de la base et {tname} = nom de la table: - - [/metadata/database](documentation/api/database-list.md) => `GET`, `POST` - - [/metadata/database/{name}](documentation/api/database.md) => `GET`, `PUT`, `DELETE` - - [/metadata/database/{name}/table](documentation/api/tables-available.md) => `GET` +And if you want to print anis stack logs: -* Information sur les projets {name} = nom du projet: - - [/metadata/project](documentation/api/project-list.md) => `GET`, `POST` - - [/metadata/project/{name}](documentation/api/project.md) => `GET`, `PUT`, `DELETE` - -* Information sur les jeux de données {name} = nom du dataset: - - [/metadata/dataset](documentation/api/dataset-list.md) => `GET`, `POST` - - [/metadata/dataset/{name}](documentation/api/dataset.md) => `GET`, `PUT`, `DELETE` - - [/metadata/dataset/{name}/file](documentation/api/file-list.md) => `GET`, `POST` (fichiers associés au jeux de données) - - /metadata/dataset/{name}/attribute => `GET`, `PUT` (attributs associés au jeux de données) - - /metadata/dataset/{name}/attribute/option => `GET` +> make logs -* Information sur un fichier d'un jeu de données {id} = identifiant du fichier - - [/metadata/file/{id}](documentation/api/file.md) => `GET`, `PUT`, `DELETE` +## Databases installation -* Information sur une categorie {id} = identifiant de la catégorie - - [/metadata/category](documentation/api/category-list.md) => `GET`, `POST` - - [/metadata/cayegory/{id}](documentation/api/category.md) => `GET`, `PUT`, `DELETE` - -* Information sur les groupes d'utilisateur {name} = nom du groupe - - [/metadata/group](documentation/api/group-list.md) => `GET`, `POST` - - [/metadata/group/{id}](documentation/api/group.md) => `GET`, `PUT`, `DELETE` - -* Information sur les utilisateurs {login} = login de l'utilisateur - - [/metadata/user](documentation/api/user-list.md) => `GET`, `POST` - - [/metadata/user/{login}](documentation/api/user.md) => `GET`, `PUT`, `DELETE` +Anis server need at least two databases to work: -# Effectuer une recherche dans un dataset +1. An admin database to store users and the list of available metamodel databases. +2. A default metamodel database to store information about business databases, projects and datasets availables. -* URL d'interrogation: /search -* Le paramètre `d` est obligatoire est doit contenir le nom du dataset à interroger +Our `Makefile` provides a command to generate these two databases: -## Recherche par `critères` +> make anis-init -* `c`: Le paramètre `c` est un tableau qui contient la liste des critères de -recherche -* Un critère de recherche doit contenir trois paramètres séparés par le caractère `-` - - Le premier paramètre contient l'`id` de l'attribut sur lequel le critère s'applique - - Le deuxième paramètre contient le type de critère sous la forme de deux lettres - - Le troisième paramètre contient les information nécessaires pour la création du critère -* Exemple: c[]=78-bw-102.49334|102.49540 +## Datasets for beginning to use -## Liste des `critères` de recherche disponible +Our `Makefile` also provides a command to add a business database and configure datasets into the default metamodel database to beginning to test or develop the anis-server. To install the test datasets type: -* Between (`bw`) : - 1. Le troisième paramètre doit contenir les `valeurs` séparés par le caractère `|` - 2. Exemple: 78-bw-`102.49334|102.49540` +> make dev-init -* Date range (`dr`) paramètres : - 1. Le troisième paramètre doit contenir les `dates` séparés par le caractère `|` +## Anis server is now ready to use -* Field (`fd`) paramètres : - 1. Le troisième paramètre doit contenir l'`opérateur` et la `valeur` séparés par le caractère `|` +Open a browser and go => [http://localhost:8080/](http://localhost:8080/) -* Combobox (`co`) paramètres : - 1. TODO +Few examples: -* Radio (`ra`) paramètre : - 1. TODO +* To list all datasets available in the default instance => [http://localhost:8080/metadata/default/dataset](http://localhost:8080/metadata/default/dataset) +* To print all data for the obs_cat dataset with column 1, 2 and 3 => [http://localhost:8080/search/default/data/obs_cat?a=1;2;3](http://localhost:8080/search/default/data/obs_cat?a=1;2;3) +* To print only 3 obs_cat data (search by id) => [http://localhost:8080/search/default/data/obs_cat?a=1;2;3&c=1::in::104600094|104600095|104600108](http://localhost:8080/search/default/data/obs_cat?a=1;2;3&c=1::in::104600094|104600095|104600108) -* Datalist (`dl`) paramètre : - 1. TODO +# More about Anis-Server -* Select (`se`) paramètre : - 1. TODO +First of all, you will find the user manual at the root of the project: [MANUAL.md](MANUAL.md) -* Checkbox (`ch`) paramètre : - 1. TODO +## Software directories -## Recherche par `cone-search` +* `conf-dev`: Configuration files used by make commands and docker-compose to work +* `public`: Web server root (index.php) +* `src`: Source code of Anis Server +* `test`: Anis Unit Tests `phpunit` -* Fonction de recherche spatiale -* Paramètres du `cone-search` : - 1. `RA`: Ascension droite en degré - 2. `DE`: Déclinaison en degré - 3. `SR`: Rayon du `cone-search` en arc seconde +## Key files -## Affichage des `colonnes de sortie` +* `public/index.php`: Bootstrap file for starting application (file used by an http web server like nginx or apache) +* `src/settings.php`: Anis server configuration file +* `src/routes.php`: Anis server configured routes (list all availables URL) -* Le choix d'affichage des colonnes de sortie s'applique à tous les types de recherche -* `a`: Le paramètre `a` doit contenir une liste d'identifiants d'attribut séparés par un `|` -* Exemple: `a`=1|2|5|8 +## Technologies -## `Ordre` d'affichage des enregistrements +You can see here just a few direct links about softwares or dependancies used by anis-team for the devlopment of anis-server: -* Par défaut les enregistrements sont triés par l'attribut contenant le search_flag `ID` -* Si l'utilisateur veut un ordre d'affichage précis il doit utiliser le paramètre `o` avec -comme valeur l'identifiant d'attribut souhaité ainsi que le sens -* `a` pour ascendant et `d` pour descendant -* Exemple: `o=5-a` - -## Choix du `format` de sortie -* Le choix du format de sortie s'applique également à tous les types de recherche -* `f`: Le paramètre `f` doit contenir un format de sortie disponible (`json`,`csv`,`ascii`) -* Si le format `json` est sélectionné les paramètres de pagination sont obligatoires : - - `p[s]`: Contient le nombre d'objets par page - - `p[c]`: Contient le numéro de la page courante - -# Guide développeur - -# phpunit - -* Permet d'éffectuer des tests unitaires sur le code source - -> ./vendor/bin/phpunit --bootstrap ./test/bootstrap.php --colors ./test - -# phpdoc - -* Permet de fabriquer la documentation à partir des sources PHP - -`$ php phpDocumentor.phar -d app/ -t ./build/api --ignore *library/*,*tests/*,*utils/*,*build/*,*js/*,*drupal/*,*bin/*` - -# phpcpd - -* Permet de détecter les copier coller (duplication) dans le code source - -`$ ./vendor/bin/phpcpd app/` - -# phploc - -* Permet de mesurer la taille et d'analyser la structure du code source d'un projet PHP - -`$ ./vendor/bin/phploc --progress app/` - -# PHP_CodeSniffer - -* Permet de valider le code à la norme de codage PSR-2 - -`$ ./vendor/bin/phpcs --report=full --standard=PSR2 --extensions=php --ignore=*library/*,*tests/*,*utils/*,*build/*,*js/*,*drupal/*,*bin/* ./app` - -# PhpMetrics - -* Donne des informations statistiques sur un projet PHP - -`$ ./vendor/bin/phpmetrics --report-html=./build/phpmetrics.html app/ -` -# PHP Mess Detector - -* Permet d'évaluer la qualité de code source PHP - -`$ ./vendor/bin/phpmd ./app html cleancode,codesize,controversial,design,naming,unusedcode --reportfile ./build/pmd.html --exclude *library/*,*tests/*,*utils/*,*build/*,*js/*,*drupal/*,*bin/*` +* `Slim` : [http://www.slimframework.com/](http://www.slimframework.com/) +* `Doctrine 2` : [https://www.doctrine-project.org/](https://www.doctrine-project.org/) +* `Swiftmailer` : [https://swiftmailer.symfony.com/](https://swiftmailer.symfony.com/) +* `Monolog` : [https://seldaek.github.io/monolog/](https://seldaek.github.io/monolog/) +* `Composer` : [https://getcomposer.org/](https://getcomposer.org/) +* `PHP-FIG` : [http://www.php-fig.org/](http://www.php-fig.org/) +* `PHP-Unit` : [http://phpunit.de/](http://phpunit.de/) +* `Docker` : [https://www.docker.com/](https://www.docker.com/) +* `GIT` : [http://git-scm.com/](http://git-scm.com/) +* `CeCILL`: [http://www.cecill.info/index.en.html](http://www.cecill.info/index.en.html) \ No newline at end of file diff --git a/VERSION b/VERSION index 56fea8a08d2faa60fec80b40241566d3c39744f7..282895a8f8f1dfb20803bb88975624aed751fc24 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.0.0 \ No newline at end of file +3.0.3 \ No newline at end of file diff --git a/anis-server.yaml b/anis-server.yaml new file mode 100644 index 0000000000000000000000000000000000000000..142348fb391960e8fc11699ff3977258dcb17772 --- /dev/null +++ b/anis-server.yaml @@ -0,0 +1,1009 @@ +openapi: 3.0.1 +info: + title: Anis Server API + description: 'AstroNomical Information System is a generic web tool that aims to facilitate the provision of data (Astrophysics), accessible from a database, to a community of scientists.' + contact: + email: anis@lam.fr + license: + name: CeCILL 2.1 + url: http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html + version: 3.0.0 +servers: +- url: https://anis-dev.lam.fr/ +tags: +- name: root + description: Anis Server API root path +- name: login + description: Set of actions about the user (registration, token, ...) +- name: metadata + description: Set of actions about metamodel database management +- name: search + description: Access to the data +- name: settings + description: Stores data to help the administrator fill the metamodel +paths: + /: + get: + tags: + - root + summary: Ensures that the service works + responses: + 200: + description: Ensures that the service works + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + + /register: + post: + tags: + - login + summary: Add a new Anis user + description: Action to register a new Anis user. An email with a code is send by the server to activate this new account. + operationId: register + requestBody: + description: Login object that needs to add a new anis user + content: + application/json: + schema: + $ref: '#/components/schemas/Login' + required: true + responses: + 201: + description: New user correctly added + content: + application/json: + schema: + $ref: '#/components/schemas/AnisUser' + 400: + description: Invalid input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + + /activate-account: + get: + tags: + - login + summary: Activate a new account + description: Activate a new registered user with the code sended by the server + operationId: activate + parameters: + - name: email + in: query + description: The email adress of the account to be activated + required: true + schema: + type: string + - name: activation_key + in: query + description: The activation code sended by the server + required: true + schema: + type: string + responses: + 200: + description: Account successfully activated + content: + application/json: + schema: + $ref: '#/components/schemas/AnisUser' + 400: + description: Invalid input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + + /login: + post: + tags: + - login + summary: Get an Anis user token + description: Request a json web token (jwt) to the Anis Server with a couple of email and password + operationId: login + requestBody: + description: Login object that needs to get a new token + content: + application/json: + schema: + $ref: '#/components/schemas/Login' + required: true + responses: + 200: + description: Returns a new token + content: + application/json: + schema: + $ref: '#/components/schemas/Token' + 400: + description: Invalid input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + + /new-password: + post: + tags: + - login + summary: Ask for a new password + description: Request the generation of a new password that will be sent by email + operationId: newPassword + requestBody: + description: The email address of the account for which the new password will be generated + content: + application/json: + schema: + properties: + email: + type: string + example: user@provider.fr + required: true + responses: + 200: + description: New password generated + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + 400: + description: Invalid input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + + /change-password: + post: + tags: + - login + summary: Anis user can change his account password + description: Ask anis server with the actual and the new password + operationId: changePassword + requestBody: + description: The email address and the actual password of the account for which the new password will be change + the new password + content: + application/json: + schema: + $ref: '#/components/schemas/ChangePassword' + required: true + responses: + 200: + description: Password changed + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + 400: + description: Invalid input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + + /metadata/database: + get: + tags: + - metadata + summary: List all available databases + description: Anis can connect to databases (PostgreSQL, MySQL, SQLite, Oracle ...). This action lists the databases already registered and where anis can connect. + operationId: getDatabaseList + responses: + 200: + description: Databases list + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Database' + post: + tags: + - metadata + summary: Add a new database + description: Anis can connect to databases (PostgreSQL, MySQL, SQLite, Oracle ...). This action add a new data source. + operationId: addDatabase + requestBody: + description: Database form object that needs to be added to the store + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseForm' + required: true + responses: + 200: + description: Database added + content: + application/json: + schema: + $ref: '#/components/schemas/Database' + 400: + description: Invalid input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + + /metadata/database/{id}: + get: + tags: + - metadata + summary: Find a database by ID + description: Returns a single database registered + operationId: getDatabase + parameters: + - name: id + in: path + description: ID of database to return + required: true + schema: + type: integer + responses: + 200: + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Database' + 404: + description: Database not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + put: + tags: + - metadata + summary: Updates a database with form data + operationId: editDatabase + parameters: + - name: id + in: path + description: ID of database to return + required: true + schema: + type: integer + requestBody: + description: Database form object that needs to be added to the store + content: + application/json: + schema: + $ref: '#/components/schemas/DatabaseForm' + required: true + responses: + 200: + description: Database edited + content: + application/json: + schema: + $ref: '#/components/schemas/Database' + 400: + description: Invalid input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + 404: + description: Database not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + delete: + tags: + - metadata + summary: Delete a registered database + operationId: deleteDatabase + parameters: + - name: id + in: path + description: ID of database to return + required: true + schema: + type: integer + responses: + 200: + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + 404: + description: Database not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + + /metadata/database/{id}/table: + get: + tags: + - metadata + summary: Get tables and views list + description: Get tables and views listed in the database identified by the ID parameter + operationId: tableListDatabase + parameters: + - name: id + in: path + description: ID of database to return + required: true + schema: + type: integer + responses: + 200: + description: Tables and views list + content: + application/json: + schema: + type: array + items: + type: string + 404: + description: Database not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + + /metadata/project: + get: + tags: + - metadata + summary: List all available projects + description: All searchable datasets are listed in one or more projects and a project is attached to a database + operationId: getProjectList + responses: + 200: + description: Project list + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Project' + post: + tags: + - metadata + summary: Add a new project + description: All searchable datasets are listed in one or more projects and a project is attached to a database. This action add a new data project. + operationId: addProject + requestBody: + description: Project form object that needs to be added to the store + content: + application/json: + schema: + $ref: '#/components/schemas/Project' + required: true + responses: + 200: + description: Project added + content: + application/json: + schema: + $ref: '#/components/schemas/Project' + 400: + description: Invalid input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + + /metadata/project/{name}: + get: + tags: + - metadata + summary: Find a project by name + description: Returns a single project registered + operationId: getProject + parameters: + - name: name + in: path + description: Name of project to return + required: true + schema: + type: string + responses: + 200: + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Project' + 404: + description: Project not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + put: + tags: + - metadata + summary: Updates a project with form data + operationId: editProject + parameters: + - name: name + in: path + description: Name of project to return + required: true + schema: + type: string + requestBody: + description: Project form object that needs to be edited to the store + content: + application/json: + schema: + $ref: '#/components/schemas/Project' + required: true + responses: + 200: + description: Project edited + content: + application/json: + schema: + $ref: '#/components/schemas/Project' + 400: + description: Invalid input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + 404: + description: Project not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + delete: + tags: + - metadata + summary: Delete a registered project + operationId: deleteProject + parameters: + - name: name + in: path + description: Name of project to return + required: true + schema: + type: string + responses: + 200: + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + 404: + description: Project not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + + /metadata/dataset: + get: + tags: + - metadata + summary: List all available datasets + description: Get all searchable datasets + operationId: getDatasetList + responses: + 200: + description: Dataset list + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Dataset' + post: + tags: + - metadata + summary: Add a new dataset + description: Add a new dataset. This action add automatically the associated attributes (columns) + operationId: addDataset + requestBody: + description: Dataset form object that needs to be added to the store + content: + application/json: + schema: + $ref: '#/components/schemas/Dataset' + required: true + responses: + 200: + description: Dataset added + content: + application/json: + schema: + $ref: '#/components/schemas/Dataset' + 400: + description: Invalid input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + + /metadata/dataset/{name}: + get: + tags: + - metadata + summary: Find a dataset by name + description: Returns a single dataset registered + operationId: getDataset + parameters: + - name: name + in: path + description: Name of dataset to return + required: true + schema: + type: string + responses: + 200: + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/Dataset' + 404: + description: Dataset not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + put: + tags: + - metadata + summary: Updates a dataset with form data + operationId: editDataset + parameters: + - name: name + in: path + description: Name of dataset to return + required: true + schema: + type: string + requestBody: + description: Dataset form object that needs to be edited to the store + content: + application/json: + schema: + $ref: '#/components/schemas/Dataset' + required: true + responses: + 200: + description: Dataset edited + content: + application/json: + schema: + $ref: '#/components/schemas/Dataset' + 400: + description: Invalid input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + 404: + description: Dataset not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + delete: + tags: + - metadata + summary: Delete a registered dataset + operationId: deleteDataset + parameters: + - name: name + in: path + description: Name of dataset to return + required: true + schema: + type: string + responses: + 200: + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/ApiResponse' + 404: + description: Dataset not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + + /metadata/dataset/{name}/attribute: + get: + tags: + - metadata + summary: Retrieve all attributes for a dataset + operationId: getAttributes + parameters: + - name: name + in: path + description: Name of dataset to return + required: true + schema: + type: string + responses: + 200: + description: Successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Attribute' + 404: + description: Dataset not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + + put: + tags: + - metadata + summary: Updates all attributes for a dataset + operationId: editAttributes + parameters: + - name: name + in: path + description: Name of dataset to return + required: true + schema: + type: string + responses: + 200: + description: Successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Attribute' + 404: + description: Dataset not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + + /search/meta/{dname}: + get: + tags: + - search + summary: Retrieve all metdata of a search + parameters: + - name: dname + in: path + description: Name of dataset about the search + required: true + schema: + type: string + - name: c + in: query + description: Search criteria list separated by a semicolon + required: true + schema: + type: string + responses: + 200: + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/MetaResponse' + 400: + description: Invalid input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + 404: + description: Dataset not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + + /search/data/{dname}: + get: + tags: + - search + summary: Retrieve all data of a search + parameters: + - name: dname + in: path + description: Name of dataset about the search + required: true + schema: + type: string + - name: c + in: query + description: Search criteria list separated by a semicolon + required: true + schema: + type: string + - name: a + in: query + description: Search id attributes output list separated by a semicolon + required: true + schema: + type: string + - name: o + in: query + description: Display order list of the search separated by a semicolon. This parameter is mandatory for pagination (p) + required: false + schema: + type: string + - name: p + in: query + description: Pagination settings separated by a colon + required: false + schema: + type: string + responses: + 200: + description: Successful operation + content: + application/json: + schema: + type: array + items: + type: object + 400: + description: Invalid input + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + 404: + description: Dataset not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + +components: + schemas: + ApiResponse: + type: object + properties: + code: + type: integer + format: int32 + type: + type: string + message: + type: string + ErrorResponse: + type: object + properties: + error: + type: string + example: Invalid request + error_description: + type: string + example: Param email needed to register a new user + Token: + type: object + properties: + email: + type: string + example: user@provider.fr + token: + type: string + Login: + type: object + properties: + email: + type: string + example: user@provider.fr + password: + type: string + example: my_password + AnisUser: + type: object + properties: + email: + type: string + example: user@provider.fr + activated: + type: boolean + example: false + adminsi: + type: boolean + example: false + superuser: + type: boolean + example: false + id_group: + type: integer + example: 1 + ChangePassword: + type: object + properties: + email: + type: string + example: user@provider.fr + password: + type: string + example: my_password + new_password: + type: string + example: my_new_password + DatabaseForm: + type: object + properties: + label: + type: string + example: Database + dbname: + type: string + example: db1 + dbtype: + type: string + example: pgsql + dbhost: + type: string + example: dbserver + dbport: + type: integer + example: 5432 + dblogin: + type: string + example: dbuser + dbpassword: + type: string + example: dbpassword + Database: + allOf: + - type: object + properties: + id: + type: string + example: 1 + - $ref: '#/components/schemas/DatabaseForm' + Project: + type: object + properties: + name: + type: string + example: my_project + label: + type: string + example: My Project + description: + type: string + example: Project description + link: + type: string + example: http://myproject-website.com + manager: + type: string + example: M. Dupont + id_database: + type: integer + example: 1 + Dataset: + type: object + properties: + name: + type: string + example: my_dataset + table_ref: + type: string + example: database_table_name + label: + type: string + example: My dataset + description: + type: string + example: My dataset description + display: + type: integer + example: 10 + count: + type: integer + example: 1500 + vo: + type: boolean + example: true + data_path: + type: string + example: /mnt/my_data + project_name: + type: string + example: my_project + id_dataset_family: + type: integer + example: 1 + Attribute: + type: object + properties: + id: + type: integer + example: 1 + name: + type: string + example: ra + table_name: + type: string + example: obs_cat + label: + type: string + example: Main_catalog + form_label: + type: string + example: Main obervations catalog + description: + type: string + example: Description for this catalog + output_display: + type: integer + criteria_display: + type: integer + search_flag: + type: string + search_type: + type: string + type: + type: string + operator: + type: string + min: + type: number + max: + type: number + placeholder_min: + type: string + placeholder_max: + type: string + uri_action: + type: string + renderer: + type: string + display_detail: + type: string + selected: + type: boolean + order_by: + type: boolean + order_display: + type: integer + detail: + type: boolean + renderer_detail: + type: string + vo_utype: + type: string + vo_ucd: + type: string + vo_unit: + type: string + vo_description: + type: string + vo_datatype: + type: string + vo_size: + type: integer + id_criteria_family: + type: integer + id_output_family: + type: integer + id_category: + type: integer + MetaResponse: + type: object + properties: + dataset-selected: + type: string + total-items: + type: integer + url: + type: string \ No newline at end of file diff --git a/cli-config.php b/cli-config.php index 7cbcd70bfec01333920f5dd58baf091aa1badf48..4039d69e54b33ac2840e777cf3ed0e3baebd88f8 100644 --- a/cli-config.php +++ b/cli-config.php @@ -3,20 +3,20 @@ require 'vendor/autoload.php'; $settings = require './src/settings.php'; -$metadata = $settings['settings']['metadata']; +$adminDb = $settings['settings']['admin_db']; -$c = \Doctrine\ORM\Tools\Setup::createAnnotationMetadataConfiguration($metadata['entity_path'], $metadata['dev_mode']); -$c->setProxyDir(getcwd() . '/' . $metadata['path_proxy']); -if ($metadata['dev_mode']) { - $c->setAutoGenerateProxyClasses(true); +$c = \Doctrine\ORM\Tools\Setup::createAnnotationMetadataConfiguration(array('src/Entity/Admin'), $adminDb['dev_mode']); +$c->setProxyDir(getcwd() . '/' . $adminDb['path_proxy']); +if ($adminDb['dev_mode']) { + $c->setAutoGenerateProxyClasses(true); } else { - $c->setAutoGenerateProxyClasses(false); + $c->setAutoGenerateProxyClasses(false); } -$em = \Doctrine\ORM\EntityManager::create($metadata['connection_options'], $c); +$em = \Doctrine\ORM\EntityManager::create($adminDb['connection_options'], $c); $helpers = new Symfony\Component\Console\Helper\HelperSet(array( - 'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($em->getConnection()), - 'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($em) + 'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($em->getConnection()), + 'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($em) )); return \Doctrine\ORM\Tools\Console\ConsoleRunner::createHelperSet($em); diff --git a/composer.json b/composer.json index e9093f818b3dae43e541724b2bbad5603de4b254..d0c4c1871e4af441ff3a623f75c64080312d7097 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,8 @@ "doctrine/orm": "^2.5", "monolog/monolog": "^1.23", "lcobucci/jwt": "^3.2", - "swiftmailer/swiftmailer": "^6.0" + "swiftmailer/swiftmailer": "^6.0", + "php-amqplib/php-amqplib": "^2.10" }, "require-dev": { "phpunit/phpunit": "^7.2", diff --git a/composer.lock b/composer.lock index 47f6d3517bca1d2fa5656837e91cb9e9fc1593c0..e02f7106d10b30e7b38f9730cc5b1771dc80476a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "cac388830bd53338d35745df4a70336c", + "content-hash": "a2184ef90f51603d72f1a7f49ec35c4a", "packages": [ { "name": "container-interop/container-interop", @@ -39,16 +39,16 @@ }, { "name": "doctrine/annotations", - "version": "v1.6.0", + "version": "v1.7.0", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5" + "reference": "fa4c4e861e809d6a1103bd620cce63ed91aedfeb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", - "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/fa4c4e861e809d6a1103bd620cce63ed91aedfeb", + "reference": "fa4c4e861e809d6a1103bd620cce63ed91aedfeb", "shasum": "" }, "require": { @@ -57,12 +57,12 @@ }, "require-dev": { "doctrine/cache": "1.*", - "phpunit/phpunit": "^6.4" + "phpunit/phpunit": "^7.5@dev" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.7.x-dev" } }, "autoload": { @@ -75,6 +75,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -83,10 +87,6 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" @@ -103,7 +103,7 @@ "docblock", "parser" ], - "time": "2017-12-06T07:11:42+00:00" + "time": "2019-08-08T18:11:40+00:00" }, { "name": "doctrine/cache", @@ -182,34 +182,36 @@ }, { "name": "doctrine/collections", - "version": "v1.5.0", + "version": "v1.6.2", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf" + "reference": "c5e0bc17b1620e97c968ac409acbff28b8b850be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf", - "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf", + "url": "https://api.github.com/repos/doctrine/collections/zipball/c5e0bc17b1620e97c968ac409acbff28b8b850be", + "reference": "c5e0bc17b1620e97c968ac409acbff28b8b850be", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1.3" }, "require-dev": { - "doctrine/coding-standard": "~0.1@dev", - "phpunit/phpunit": "^5.7" + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan-shim": "^0.9.2", + "phpunit/phpunit": "^7.0", + "vimeo/psalm": "^3.2.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "1.6.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Collections\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" } }, "notification-url": "https://packagist.org/downloads/", @@ -238,27 +240,28 @@ "email": "schmittjoh@gmail.com" } ], - "description": "Collections Abstraction library", - "homepage": "http://www.doctrine-project.org", + "description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.", + "homepage": "https://www.doctrine-project.org/projects/collections.html", "keywords": [ "array", "collections", - "iterator" + "iterators", + "php" ], - "time": "2017-07-22T10:37:32+00:00" + "time": "2019-06-09T13:48:14+00:00" }, { "name": "doctrine/common", - "version": "v2.10.0", + "version": "v2.11.0", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "30e33f60f64deec87df728c02b107f82cdafad9d" + "reference": "b8ca1dcf6b0dc8a2af7a09baac8d0c48345df4ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/30e33f60f64deec87df728c02b107f82cdafad9d", - "reference": "30e33f60f64deec87df728c02b107f82cdafad9d", + "url": "https://api.github.com/repos/doctrine/common/zipball/b8ca1dcf6b0dc8a2af7a09baac8d0c48345df4ff", + "reference": "b8ca1dcf6b0dc8a2af7a09baac8d0c48345df4ff", "shasum": "" }, "require": { @@ -274,14 +277,16 @@ }, "require-dev": { "doctrine/coding-standard": "^1.0", - "phpunit/phpunit": "^6.3", + "phpstan/phpstan": "^0.11", + "phpstan/phpstan-phpunit": "^0.11", + "phpunit/phpunit": "^7.0", "squizlabs/php_codesniffer": "^3.0", "symfony/phpunit-bridge": "^4.0.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.10.x-dev" + "dev-master": "2.11.x-dev" } }, "autoload": { @@ -294,6 +299,10 @@ "MIT" ], "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, { "name": "Roman Borschel", "email": "roman@code-factory.org" @@ -302,10 +311,6 @@ "name": "Benjamin Eberlei", "email": "kontakt@beberlei.de" }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, { "name": "Jonathan Wage", "email": "jonwage@gmail.com" @@ -326,7 +331,7 @@ "doctrine", "php" ], - "time": "2018-11-21T01:24:55+00:00" + "time": "2019-09-10T10:10:14+00:00" }, { "name": "doctrine/dbal", @@ -553,27 +558,29 @@ }, { "name": "doctrine/instantiator", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + "reference": "a2c590166b2133a4633738648b6b064edae0814a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", + "reference": "a2c590166b2133a4633738648b6b064edae0814a", "shasum": "" }, "require": { "php": "^7.1" }, "require-dev": { - "athletic/athletic": "~0.1.8", + "doctrine/coding-standard": "^6.0", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2" + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { @@ -598,39 +605,44 @@ } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ "constructor", "instantiate" ], - "time": "2017-07-22T11:58:36+00:00" + "time": "2019-03-17T17:37:11+00:00" }, { "name": "doctrine/lexer", - "version": "v1.0.1", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + "reference": "e17f069ede36f7534b95adec71910ed1b49c74ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/e17f069ede36f7534b95adec71910ed1b49c74ea", + "reference": "e17f069ede36f7534b95adec71910ed1b49c74ea", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^7.2" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan": "^0.11.8", + "phpunit/phpunit": "^8.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" } }, "notification-url": "https://packagist.org/downloads/", @@ -638,26 +650,29 @@ "MIT" ], "authors": [ - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, { "name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com" }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, { "name": "Johannes Schmitt", "email": "schmittjoh@gmail.com" } ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", "keywords": [ + "annotations", + "docblock", "lexer", - "parser" + "parser", + "php" ], - "time": "2014-09-09T13:34:57+00:00" + "time": "2019-07-30T19:33:28+00:00" }, { "name": "doctrine/orm", @@ -743,16 +758,16 @@ }, { "name": "doctrine/persistence", - "version": "v1.1.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38" + "reference": "3da7c9d125591ca83944f477e65ed3d7b4617c48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38", - "reference": "c0f1c17602afc18b4cbd8e1c8125f264c9cf7d38", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/3da7c9d125591ca83944f477e65ed3d7b4617c48", + "reference": "3da7c9d125591ca83944f477e65ed3d7b4617c48", "shasum": "" }, "require": { @@ -821,7 +836,7 @@ "orm", "persistence" ], - "time": "2018-11-21T00:33:13+00:00" + "time": "2019-04-23T08:28:24+00:00" }, { "name": "doctrine/reflection", @@ -900,16 +915,16 @@ }, { "name": "egulias/email-validator", - "version": "2.1.7", + "version": "2.1.11", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "709f21f92707308cdf8f9bcfa1af4cb26586521e" + "reference": "92dd169c32f6f55ba570c309d83f5209cefb5e23" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/709f21f92707308cdf8f9bcfa1af4cb26586521e", - "reference": "709f21f92707308cdf8f9bcfa1af4cb26586521e", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/92dd169c32f6f55ba570c309d83f5209cefb5e23", + "reference": "92dd169c32f6f55ba570c309d83f5209cefb5e23", "shasum": "" }, "require": { @@ -919,7 +934,8 @@ "require-dev": { "dominicsayers/isemail": "dev-master", "phpunit/phpunit": "^4.8.35||^5.7||^6.0", - "satooshi/php-coveralls": "^1.0.1" + "satooshi/php-coveralls": "^1.0.1", + "symfony/phpunit-bridge": "^4.4@dev" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -927,7 +943,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.1.x-dev" } }, "autoload": { @@ -953,37 +969,34 @@ "validation", "validator" ], - "time": "2018-12-04T22:38:24+00:00" + "time": "2019-08-13T17:33:27+00:00" }, { "name": "lcobucci/jwt", - "version": "3.2.5", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/lcobucci/jwt.git", - "reference": "82be04b4753f8b7693b62852b7eab30f97524f9b" + "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lcobucci/jwt/zipball/82be04b4753f8b7693b62852b7eab30f97524f9b", - "reference": "82be04b4753f8b7693b62852b7eab30f97524f9b", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/a11ec5f4b4d75d1fcd04e133dede4c317aac9e18", + "reference": "a11ec5f4b4d75d1fcd04e133dede4c317aac9e18", "shasum": "" }, "require": { + "ext-mbstring": "*", "ext-openssl": "*", - "php": ">=5.5" + "php": "^5.6 || ^7.0" }, "require-dev": { - "mdanter/ecc": "~0.3.1", "mikey179/vfsstream": "~1.5", "phpmd/phpmd": "~2.2", "phpunit/php-invoker": "~1.1", - "phpunit/phpunit": "~4.5", + "phpunit/phpunit": "^5.7 || ^7.3", "squizlabs/php_codesniffer": "~2.3" }, - "suggest": { - "mdanter/ecc": "Required to use Elliptic Curves based algorithms." - }, "type": "library", "extra": { "branch-alias": { @@ -1011,20 +1024,20 @@ "JWS", "jwt" ], - "time": "2018-11-11T12:22:26+00:00" + "time": "2019-05-24T18:30:49+00:00" }, { "name": "monolog/monolog", - "version": "1.24.0", + "version": "1.25.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266" + "reference": "70e65a5470a42cfec1a7da00d30edb6e617e8dcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", - "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/70e65a5470a42cfec1a7da00d30edb6e617e8dcf", + "reference": "70e65a5470a42cfec1a7da00d30edb6e617e8dcf", "shasum": "" }, "require": { @@ -1089,7 +1102,7 @@ "logging", "psr-3" ], - "time": "2018-11-05T09:00:11+00:00" + "time": "2019-09-06T13:49:17+00:00" }, { "name": "nikic/fast-route", @@ -1137,6 +1150,80 @@ ], "time": "2018-02-13T20:26:39+00:00" }, + { + "name": "php-amqplib/php-amqplib", + "version": "v2.10.0", + "source": { + "type": "git", + "url": "https://github.com/php-amqplib/php-amqplib.git", + "reference": "04e5366f032906d5f716890427e425e71307d3a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/04e5366f032906d5f716890427e425e71307d3a8", + "reference": "04e5366f032906d5f716890427e425e71307d3a8", + "shasum": "" + }, + "require": { + "ext-bcmath": "*", + "ext-sockets": "*", + "php": ">=5.6" + }, + "replace": { + "videlalvaro/php-amqplib": "self.version" + }, + "require-dev": { + "ext-curl": "*", + "nategood/httpful": "^0.2.20", + "phpdocumentor/phpdocumentor": "dev-master", + "phpunit/phpunit": "^5.7|^6.5|^7.0", + "squizlabs/php_codesniffer": "^2.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.10-dev" + } + }, + "autoload": { + "psr-4": { + "PhpAmqpLib\\": "PhpAmqpLib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Alvaro Videla", + "role": "Original Maintainer" + }, + { + "name": "John Kelly", + "role": "Maintainer", + "email": "johnmkelly86@gmail.com" + }, + { + "name": "Raúl Araya", + "role": "Maintainer", + "email": "nubeiro@gmail.com" + }, + { + "name": "Luke Bakken", + "role": "Maintainer", + "email": "luke@bakken.io" + } + ], + "description": "Formerly videlalvaro/php-amqplib. This library is a pure PHP implementation of the AMQP protocol. It's been tested against RabbitMQ.", + "homepage": "https://github.com/php-amqplib/php-amqplib/", + "keywords": [ + "message", + "queue", + "rabbitmq" + ], + "time": "2019-08-08T18:28:18+00:00" + }, { "name": "pimple/pimple", "version": "v3.2.3", @@ -1335,20 +1422,23 @@ }, { "name": "slim/slim", - "version": "3.12.0", + "version": "3.12.2", "source": { "type": "git", "url": "https://github.com/slimphp/Slim.git", - "reference": "f4947cc900b6e51cbfda58b9f1247bca2f76f9f0" + "reference": "200c6143f15baa477601879b64ab2326847aac0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slimphp/Slim/zipball/f4947cc900b6e51cbfda58b9f1247bca2f76f9f0", - "reference": "f4947cc900b6e51cbfda58b9f1247bca2f76f9f0", + "url": "https://api.github.com/repos/slimphp/Slim/zipball/200c6143f15baa477601879b64ab2326847aac0b", + "reference": "200c6143f15baa477601879b64ab2326847aac0b", "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", @@ -1373,25 +1463,25 @@ "MIT" ], "authors": [ - { - "name": "Rob Allen", - "email": "rob@akrabat.com", - "homepage": "http://akrabat.com" - }, { "name": "Josh Lockhart", "email": "hello@joshlockhart.com", "homepage": "https://joshlockhart.com" }, - { - "name": "Gabriel Manricks", - "email": "gmanricks@me.com", - "homepage": "http://gabrielmanricks.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": "Gabriel Manricks", + "email": "gmanricks@me.com", + "homepage": "http://gabrielmanricks.com" } ], "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs", @@ -1402,29 +1492,32 @@ "micro", "router" ], - "time": "2019-01-15T13:21:25+00:00" + "time": "2019-08-20T18:46:05+00:00" }, { "name": "swiftmailer/swiftmailer", - "version": "v6.1.3", + "version": "v6.2.1", "source": { "type": "git", "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "8ddcb66ac10c392d3beb54829eef8ac1438595f4" + "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8ddcb66ac10c392d3beb54829eef8ac1438595f4", - "reference": "8ddcb66ac10c392d3beb54829eef8ac1438595f4", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a", + "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a", "shasum": "" }, "require": { "egulias/email-validator": "~2.0", - "php": ">=7.0.0" + "php": ">=7.0.0", + "symfony/polyfill-iconv": "^1.0", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" }, "require-dev": { "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "~3.3@dev" + "symfony/phpunit-bridge": "^3.4.19|^4.1.8" }, "suggest": { "ext-intl": "Needed to support internationalized email addresses", @@ -1433,7 +1526,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.1-dev" + "dev-master": "6.2-dev" } }, "autoload": { @@ -1461,29 +1554,31 @@ "mail", "mailer" ], - "time": "2018-09-11T07:12:52+00:00" + "time": "2019-04-21T09:21:45+00:00" }, { "name": "symfony/console", - "version": "v4.2.3", + "version": "v4.3.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4" + "reference": "de63799239b3881b8a08f8481b22348f77ed7b36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4", - "reference": "1f0ad51dfde4da8a6070f06adc58b4e37cbb37a4", + "url": "https://api.github.com/repos/symfony/console/zipball/de63799239b3881b8a08f8481b22348f77ed7b36", + "reference": "de63799239b3881b8a08f8481b22348f77ed7b36", "shasum": "" }, "require": { "php": "^7.1.3", - "symfony/contracts": "^1.0", - "symfony/polyfill-mbstring": "~1.0" + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/service-contracts": "^1.1" }, "conflict": { "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<4.3", "symfony/process": "<3.3" }, "provide": { @@ -1493,9 +1588,10 @@ "psr/log": "~1.0", "symfony/config": "~3.4|~4.0", "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/event-dispatcher": "^4.3", "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0" + "symfony/process": "~3.4|~4.0", + "symfony/var-dumper": "^4.3" }, "suggest": { "psr/log": "For using the console logger", @@ -1506,7 +1602,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -1533,48 +1629,40 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2019-01-25T14:35:16+00:00" + "time": "2019-08-26T08:26:39+00:00" }, { - "name": "symfony/contracts", - "version": "v1.0.2", + "name": "symfony/polyfill-iconv", + "version": "v1.12.0", "source": { "type": "git", - "url": "https://github.com/symfony/contracts.git", - "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf" + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "685968b11e61a347c18bf25db32effa478be610f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/contracts/zipball/1aa7ab2429c3d594dd70689604b5cf7421254cdf", - "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/685968b11e61a347c18bf25db32effa478be610f", + "reference": "685968b11e61a347c18bf25db32effa478be610f", "shasum": "" }, "require": { - "php": "^7.1.3" - }, - "require-dev": { - "psr/cache": "^1.0", - "psr/container": "^1.0" + "php": ">=5.3.3" }, "suggest": { - "psr/cache": "When using the Cache contracts", - "psr/container": "When using the Service contracts", - "symfony/cache-contracts-implementation": "", - "symfony/service-contracts-implementation": "", - "symfony/translation-contracts-implementation": "" + "ext-iconv": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.12-dev" } }, "autoload": { "psr-4": { - "Symfony\\Contracts\\": "" + "Symfony\\Polyfill\\Iconv\\": "" }, - "exclude-from-classmap": [ - "**/Tests/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1591,30 +1679,91 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "A set of abstractions extracted out of the Symfony components", + "description": "Symfony polyfill for the Iconv extension", "homepage": "https://symfony.com", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "time": "2019-08-06T08:03:45+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.12.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6af626ae6fa37d396dc90a399c0ff08e5cfc45b2", + "reference": "6af626ae6fa37d396dc90a399c0ff08e5cfc45b2", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php72": "^1.9" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.12-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" ], - "time": "2018-12-05T08:06:11+00:00" + "time": "2019-08-06T08:03:45+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.10.0", + "version": "v1.12.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" + "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b42a2f66e8f1b15ccf25652c3424265923eb4f17", + "reference": "b42a2f66e8f1b15ccf25652c3424265923eb4f17", "shasum": "" }, "require": { @@ -1626,7 +1775,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.12-dev" } }, "autoload": { @@ -1660,22 +1809,193 @@ "portable", "shim" ], - "time": "2018-09-21T13:07:52+00:00" + "time": "2019-08-06T08:03:45+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.12.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "04ce3335667451138df4307d6a9b61565560199e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/04ce3335667451138df4307d6a9b61565560199e", + "reference": "04ce3335667451138df4307d6a9b61565560199e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.12-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-08-06T08:03:45+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.12.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188", + "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.12-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-08-06T08:03:45+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v1.1.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "ea7263d6b6d5f798b56a45a5b8d686725f2719a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ea7263d6b6d5f798b56a45a5b8d686725f2719a3", + "reference": "ea7263d6b6d5f798b56a45a5b8d686725f2719a3", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "psr/container": "^1.0" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-08-20T14:44:19+00:00" } ], "packages-dev": [ { "name": "myclabs/deep-copy", - "version": "1.8.1", + "version": "1.9.3", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" + "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/007c053ae6f31bba39dfa19a7726f56e9763bbea", + "reference": "007c053ae6f31bba39dfa19a7726f56e9763bbea", "shasum": "" }, "require": { @@ -1710,7 +2030,7 @@ "object", "object graph" ], - "time": "2018-06-11T23:09:50+00:00" + "time": "2019-08-09T12:45:53+00:00" }, { "name": "phar-io/manifest", @@ -1816,35 +2136,33 @@ }, { "name": "phpdocumentor/reflection-common", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", "shasum": "" }, "require": { - "php": ">=5.5" + "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "^4.6" + "phpunit/phpunit": "~6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1866,30 +2184,30 @@ "reflection", "static analysis" ], - "time": "2017-09-11T18:02:19+00:00" + "time": "2018-08-07T13:53:10+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.0", + "version": "4.3.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e", + "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e", "shasum": "" }, "require": { "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.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", + "doctrine/instantiator": "^1.0.5", "mockery/mockery": "^1.0", "phpunit/phpunit": "^6.4" }, @@ -1917,41 +2235,40 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-30T07:14:17+00:00" + "time": "2019-09-12T14:27:41+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.4.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" + "php": "^7.1", + "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" + "ext-tokenizer": "^7.1", + "mockery/mockery": "~1", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1964,20 +2281,21 @@ "email": "me@mikevanriel.com" } ], - "time": "2017-07-14T14:27:02+00:00" + "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.8.0", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76", + "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76", "shasum": "" }, "require": { @@ -1998,8 +2316,8 @@ } }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" + "psr-4": { + "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", @@ -2027,7 +2345,7 @@ "spy", "stub" ], - "time": "2018-08-05T17:53:17+00:00" + "time": "2019-06-13T12:50:23+00:00" }, { "name": "phpunit/dbunit", @@ -2238,16 +2556,16 @@ }, { "name": "phpunit/php-timer", - "version": "2.0.0", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f" + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8b8454ea6958c3dee38453d3bd571e023108c91f", - "reference": "8b8454ea6958c3dee38453d3bd571e023108c91f", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", "shasum": "" }, "require": { @@ -2259,7 +2577,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.1-dev" } }, "autoload": { @@ -2283,20 +2601,20 @@ "keywords": [ "timer" ], - "time": "2018-02-01T13:07:23+00:00" + "time": "2019-06-07T04:22:29+00:00" }, { "name": "phpunit/php-token-stream", - "version": "3.0.1", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18" + "reference": "e899757bb3df5ff6e95089132f32cd59aac2220a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/c99e3be9d3e85f60646f152f9002d46ed7770d18", - "reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e899757bb3df5ff6e95089132f32cd59aac2220a", + "reference": "e899757bb3df5ff6e95089132f32cd59aac2220a", "shasum": "" }, "require": { @@ -2309,7 +2627,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -2332,20 +2650,20 @@ "keywords": [ "tokenizer" ], - "time": "2018-10-30T05:52:18+00:00" + "time": "2019-07-25T05:29:42+00:00" }, { "name": "phpunit/phpunit", - "version": "7.5.3", + "version": "7.5.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "2cb759721e53bc05f56487f628c6b9fbb6c18746" + "reference": "d79c053d972856b8b941bb233e39dc521a5093f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2cb759721e53bc05f56487f628c6b9fbb6c18746", - "reference": "2cb759721e53bc05f56487f628c6b9fbb6c18746", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d79c053d972856b8b941bb233e39dc521a5093f0", + "reference": "d79c053d972856b8b941bb233e39dc521a5093f0", "shasum": "" }, "require": { @@ -2363,7 +2681,7 @@ "phpunit/php-code-coverage": "^6.0.7", "phpunit/php-file-iterator": "^2.0.1", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.0", + "phpunit/php-timer": "^2.1", "sebastian/comparator": "^3.0", "sebastian/diff": "^3.0", "sebastian/environment": "^4.0", @@ -2416,7 +2734,7 @@ "testing", "xunit" ], - "time": "2019-02-01T05:24:07+00:00" + "time": "2019-08-21T07:05:16+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -2585,16 +2903,16 @@ }, { "name": "sebastian/environment", - "version": "4.1.0", + "version": "4.2.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "6fda8ce1974b62b14935adc02a9ed38252eca656" + "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6fda8ce1974b62b14935adc02a9ed38252eca656", - "reference": "6fda8ce1974b62b14935adc02a9ed38252eca656", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/f2a2c8e1c97c11ace607a7a667d73d47c19fe404", + "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404", "shasum": "" }, "require": { @@ -2609,7 +2927,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -2634,20 +2952,20 @@ "environment", "hhvm" ], - "time": "2019-02-01T05:27:49+00:00" + "time": "2019-05-05T09:05:15+00:00" }, { "name": "sebastian/exporter", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" + "reference": "06a9a5947f47b3029d76118eb5c22802e5869687" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/06a9a5947f47b3029d76118eb5c22802e5869687", + "reference": "06a9a5947f47b3029d76118eb5c22802e5869687", "shasum": "" }, "require": { @@ -2674,6 +2992,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -2682,17 +3004,13 @@ "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" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], "description": "Provides the functionality to export PHP variables for visualization", @@ -2701,7 +3019,7 @@ "export", "exporter" ], - "time": "2017-04-03T13:19:02+00:00" + "time": "2019-08-11T12:43:14+00:00" }, { "name": "sebastian/global-state", @@ -2986,16 +3304,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.10.0", + "version": "v1.12.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + "reference": "550ebaac289296ce228a706d0867afc34687e3f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4", + "reference": "550ebaac289296ce228a706d0867afc34687e3f4", "shasum": "" }, "require": { @@ -3007,7 +3325,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.12-dev" } }, "autoload": { @@ -3024,12 +3342,12 @@ ], "authors": [ { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { - "name": "Gert de Pagter", - "email": "backendtea@gmail.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill for ctype functions", @@ -3040,20 +3358,20 @@ "polyfill", "portable" ], - "time": "2018-08-06T14:22:27+00:00" + "time": "2019-08-06T08:03:45+00:00" }, { "name": "symfony/yaml", - "version": "v4.2.3", + "version": "v4.3.4", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "d461670ee145092b7e2a56c1da7118f19cadadb0" + "reference": "5a0b7c32dc3ec56fd4abae8a4a71b0cf05013686" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/d461670ee145092b7e2a56c1da7118f19cadadb0", - "reference": "d461670ee145092b7e2a56c1da7118f19cadadb0", + "url": "https://api.github.com/repos/symfony/yaml/zipball/5a0b7c32dc3ec56fd4abae8a4a71b0cf05013686", + "reference": "5a0b7c32dc3ec56fd4abae8a4a71b0cf05013686", "shasum": "" }, "require": { @@ -3072,7 +3390,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.3-dev" } }, "autoload": { @@ -3099,20 +3417,20 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2019-01-16T20:35:37+00:00" + "time": "2019-08-20T14:27:59+00:00" }, { "name": "theseer/tokenizer", - "version": "1.1.0", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", "shasum": "" }, "require": { @@ -3134,25 +3452,25 @@ "authors": [ { "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" + "role": "Developer", + "email": "arne@blankerts.de" } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2017-04-07T12:08:54+00:00" + "time": "2019-06-13T22:48:21+00:00" }, { "name": "webmozart/assert", - "version": "1.4.0", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" + "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", + "url": "https://api.github.com/repos/webmozart/assert/zipball/88e6d84706d09a236046d686bbea96f07b3a34f4", + "reference": "88e6d84706d09a236046d686bbea96f07b3a34f4", "shasum": "" }, "require": { @@ -3160,8 +3478,7 @@ "symfony/polyfill-ctype": "^1.8" }, "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" + "phpunit/phpunit": "^4.8.36 || ^7.5.13" }, "type": "library", "extra": { @@ -3190,7 +3507,7 @@ "check", "validate" ], - "time": "2018-12-25T11:19:39+00:00" + "time": "2019-08-24T08:43:50+00:00" } ], "aliases": [], diff --git a/conf-dev/Dockerfile b/conf-dev/Dockerfile index 9f6480b573f6e75e4307ebb84cce0195de526c34..4b383499a701e3493fd7d8198f26080eae7d4cc8 100644 --- a/conf-dev/Dockerfile +++ b/conf-dev/Dockerfile @@ -1,9 +1,9 @@ -FROM php:7.2-apache +FROM php:7.3-apache # Install modules RUN apt-get update \ && apt-get install -y zlib1g zlib1g-dev libpq-dev libpq5 libzip-dev zip unzip \ - && docker-php-ext-install pgsql pdo_pgsql zip + && docker-php-ext-install pgsql pdo_pgsql zip bcmath # Install pecl modules RUN pecl install xdebug \ diff --git a/conf-dev/anis_init.sh b/conf-dev/anis_init.sh new file mode 100755 index 0000000000000000000000000000000000000000..b29cf08e481a98f40f5c31c9f5cbad0b201d6fa0 --- /dev/null +++ b/conf-dev/anis_init.sh @@ -0,0 +1,72 @@ +#!/bin/sh +set -e + +# Create the anis admin database (only tables) +./vendor/bin/doctrine orm:schema-tool:create + +# Add the first anis superuser +curl -d '{"email":"admin@anis.fr","password":"admin"}' -H "Content-Type: application/json" -X POST http://localhost/login/register +curl -d '{"adminsi":true,"superuser":true,"activated":true}' -H "Content-Type: application/json" -X PUT http://localhost/admin/user/admin@anis.fr + +# Add settings for admin inteface +curl -d '{"name":"search_flag","label":"Search flag"}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/select +curl -d '{"name":"search_type","label":"Search Type"}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/select +curl -d '{"name":"operator","label":"Operator"}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/select +curl -d '{"name":"renderer","label":"Renderer"}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/select +curl -d '{"name":"renderer_detail","label":"Renderer detail"}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/select + +curl -d '{"label":"ID","value":"ID","display":10,"id_settings_select":1}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"RA","value":"RA","display":20,"id_settings_select":1}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"DEC","value":"DEC","display":30,"id_settings_select":1}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option + +curl -d '{"label":"Field","value":"field","display":10,"id_settings_select":2}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"Between","value":"between","display":20,"id_settings_select":2}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"Select","value":"select","display":30,"id_settings_select":2}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"Select multiple","value":"select-multiple","display":40,"id_settings_select":2}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"Datalist","value":"datalist","display":50,"id_settings_select":2}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"Radio","value":"radio","display":60,"id_settings_select":2}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"Checkbox","value":"checkbox","display":70,"id_settings_select":2}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"Between date","value":"between-date","display":80,"id_settings_select":2}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"Date","value":"date","display":90,"id_settings_select":2}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"Time","value":"time","display":100,"id_settings_select":2}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"Date time","value":"date-time","display":110,"id_settings_select":2}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"JSON","value":"json","display":120,"id_settings_select":2}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option + +curl -d '{"label":"=","value":"eq","display":10,"id_settings_select":3}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"≠","value":"neq","display":20,"id_settings_select":3}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"between","value":"bw","display":30,"id_settings_select":3}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":">","value":"gt","display":40,"id_settings_select":3}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":">=","value":"gte","display":50,"id_settings_select":3}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"<","value":"lt","display":60,"id_settings_select":3}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"<=","value":"lte","display":70,"id_settings_select":3}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"like","value":"lk","display":80,"id_settings_select":3}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"not like","value":"nlk","display":90,"id_settings_select":3}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"in","value":"in","display":100,"id_settings_select":3}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"not in","value":"nin","display":110,"id_settings_select":3}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"null","value":"nl","display":120,"id_settings_select":3}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"not null","value":"nnl","display":130,"id_settings_select":3}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"json","value":"js","display":140,"id_settings_select":3}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option + +curl -d '{"label":"Image","value":"img","display":10,"id_settings_select":4}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"Thumbnail","value":"thumbnail","display":20,"id_settings_select":4}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"Link","value":"link","display":30,"id_settings_select":4}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"Button","value":"btn","display":40,"id_settings_select":4}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"Detail link","value":"detail-link","display":50,"id_settings_select":4}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"Detail button","value":"detail-btn","display":60,"id_settings_select":4}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"Download","value":"download","display":70,"id_settings_select":4}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option +curl -d '{"label":"JSON","value":"json","display":80,"id_settings_select":4}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option + +curl -d '{"label":"Image","value":"img","display":10,"id_settings_select":5}' -H "Content-Type: application/json" -X POST http://localhost/admin/settings/option + +# Generate default metamodel +curl -d '{"name":"default","label":"Default instance","dev_mode":true,"driver":"pdo_pgsql","path":"","host":"db","port":5432,"login":"anis","password":"anis","path_proxy":"/tmp/doctrine_proxy","dbname":"anis_metamodel"}' -H "Content-Type: application/json" -X POST http://localhost/admin/instance +curl -X GET http://localhost/admin/instance/default/create-database + +# Add admin group to the default metamodel +curl -d '{"label":"Admin"}' -H "Content-Type: application/json" -X POST http://localhost/metadata/default/group + +# Add all default families +curl -d '{"label":"Default dataset family","display":10}' -H "Content-Type: application/json" -X POST http://localhost/metadata/default/family/dataset +curl -d '{"label":"Default criteria family","display":10}' -H "Content-Type: application/json" -X POST http://localhost/metadata/default/family/criteria +curl -d '{"label":"Default output family","display":10}' -H "Content-Type: application/json" -X POST http://localhost/metadata/default/family/output +curl -d '{"label":"Default output category","display":10,"id_output_family":1}' -H "Content-Type: application/json" -X POST http://localhost/metadata/default/output-category \ No newline at end of file diff --git a/conf-dev/dev-init.sh b/conf-dev/dev-init.sh new file mode 100644 index 0000000000000000000000000000000000000000..f178091231f4f38c0bcd028d74a0cab3912db857 --- /dev/null +++ b/conf-dev/dev-init.sh @@ -0,0 +1,8 @@ +#!/bin/sh +set -e + +curl -d '{"label":"Test","dbname":"anis_test","dbtype":"pdo_pgsql","dbhost":"db","dbport":5432,"dblogin":"anis","dbpassword":"anis"}' -H "Content-Type: application/json" -X POST http://localhost/metadata/default/database +curl -d '{"name":"anis_project","label":"Anis Project Test","description":"Project used for testing","link":"http://project.com","manager":"M. Durand","id_database":1}' -H "Content-Type: application/json" -X POST http://localhost/metadata/default/project + +curl -d '{"name":"obs_cat","table_ref":"obs_cat","label":"ObsCat dataset","description":"ObsCat","display":"10","count":"10000","vo":false,"data_path":"/mnt/mount","selectable_row":true,"project_name":"anis_project","id_dataset_family":1}' -H "Content-Type: application/json" -X POST http://localhost/metadata/default/dataset +curl -d '{"name":"observations","table_ref":"observations_info","label":"Observations dataset","description":"Observations","display":"20","count":"177454","vo":false,"data_path":"/mnt/mount","selectable_row":false,"project_name":"anis_project","id_dataset_family":1}' -H "Content-Type: application/json" -X POST http://localhost/metadata/default/dataset diff --git a/conf-dev/dev-php.ini b/conf-dev/dev-php.ini index b0f07dc9010b03c0b19917860fd1c5fb538d2b70..070e35e60fbb40026b7e79e9da1bf8f7e696f79a 100644 --- a/conf-dev/dev-php.ini +++ b/conf-dev/dev-php.ini @@ -3,7 +3,7 @@ error_reporting=E_ALL date.timezone=Europe/Paris [xdebug] -zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20170718/xdebug.so +zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so xdebug.remote_enable=1 xdebug.remote_autostart=1 xdebug.remote_port=9900 diff --git a/conf-dev/generate_encryption_key.php b/conf-dev/generate_encryption_key.php new file mode 100644 index 0000000000000000000000000000000000000000..6ca7ab6f13017fb9e50fb12eb471081eaf4a5edd --- /dev/null +++ b/conf-dev/generate_encryption_key.php @@ -0,0 +1,2 @@ +