diff --git a/.dockerignore b/.dockerignore index 9754e0bf0b..95d7045edf 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,12 +1,35 @@ -.circleci -.git +.idea .settings -nodes_modules -vendor - - - - - - - +/*.md +/.circleci +/.dockerignore +/.env +/.env.* +/env.* +/.git +/.travis.yml +/AUTHORS +/CONTRIBUTORS +/Dockerfile +/LICENSE +/bin +!/bin/console +!/bin/developer +!/bin/setup +/cache +/config/configuration.yml +/config/configuration-compiled.php +!/config/configuration.sample.yml +/datas +/docker-compose.* +/logs +/node_modules +/plugins +/tmp +/vendor +/volumes +/www/assets +/www/custom +/www/plugins +/www/thumbnails +npm-debug.log diff --git a/.env b/.env new file mode 100644 index 0000000000..75c614e5d6 --- /dev/null +++ b/.env @@ -0,0 +1,80 @@ +PHRASEANET_PROJECT_NAME=Phraseanet +# Registry from where you pull Docker images +PHRASEANET_DOCKER_REGISTRY=local +# Tag of the Docker images +PHRASEANET_DOCKER_TAG=latest +# APPLICATION PORT +PHRASEANET_APP_PORT=8082 +# RabbitMQ configuration +RABBITMQ_DEFAULT_USER=alchemy +RABBITMQ_DEFAULT_PASS=vdh4dpe5Wy3R +RABBITMQ_MANAGEMENT_PORT=10811 +# Mysql configuration +MYSQL_ROOT_PASSWORD=root +SERVER_NAME=phraseanet-docker + + +# --------------- APPLICATION CONFIGURATION -------------------- + +# Max upload size +MAX_BODY_SIZE=2G +# Max input var +MAX_INPUT_VARS=12000 + +# Enable opcache ? (0/1) +OPCACHE_ENABLED=1 +# session cache limiter (off/on) +SESSION_CACHE_LIMITER=off + +# PHP LOG LEVEL : Possible Values: alert, error, warning, notice, debug +PHP_LOG_LEVEL=warning + +# --------------- APPLICATION STARTUP CONFIGURATION -------------------- + +# These variables are only used if the configuration.yml file is not present, in order to automate the installation procedure + +# set here the first user / email couple +INSTALL_ACCOUNT_EMAIL=admin@alchemy.fr +INSTALL_ACCOUNT_PASSWORD=iJRqXU0MwbyJewQLBbra6IWHsWly +# Database parameters +INSTALL_DB_HOST=db +INSTALL_DB_PORT=3306 +INSTALL_DB_USER=root +INSTALL_DB_PASSWORD=root +INSTALL_DB_TEMPLATE=en-simple +INSTALL_APPBOX=ab_master +INSTALL_DATABOX=db_databox1 +INSTALL_SERVER_NAME=localhost + +# Mysql max allowed packet +MYSQL_MAX_ALLOWED_PACKET=16M + + +# --- DEV purpose --- + +# PhpMyAdmin port +PHRASEANET_PHPMYADMIN_PORT=8089 + +# Xdebug +XDEBUG_ENABLED=1 +XDEBUG_PROFILER_ENABLED=0 +IDE_KEY=PHPSTORM +PHRASEANET_SUBNET_IPS=172.32.0.0/16 +XDEBUG_REMOTE_HOST=172.32.0.1 +PHP_IDE_CONFIG=serverName=docker-server-phraseanet + +# Volumes location for dev +PHRASEANET_CONFIG_DIR=./config +PHRASEANET_LOGS_DIR=./logs +PHRASEANET_DATA_DIR=./datas +PHRASEANET_DB_DIR=./volumes/db +PHRASEANET_ELASTICSEARCH_DIR=./volumes/elasticsearch +PHRASEANET_THUMBNAILS_DIR=./www/thumbnails +PHRASEANET_TMP_DIR=./tmp + +# For dev who don't have SSH_AUTH_SOCK (avoid an empty volume name) +SSH_AUTH_SOCK=/dev/null + +# Plugin support +PHRASEANET_PLUGINS= +PHRASEANET_SSH_PRIVATE_KEY= diff --git a/.gitignore b/.gitignore index dc81372af0..ead2712de2 100644 --- a/.gitignore +++ b/.gitignore @@ -71,3 +71,7 @@ playbook.retry npm-debug.log /Phrasea_datas + +.env.* +env.local +/volumes diff --git a/Dockerfile b/Dockerfile index 418e8e812d..3feefd2d3b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,3 @@ - ######################################################################### # This image contains every build tools that will be used by the builder and # the app images (usefull in dev mode) @@ -11,7 +10,8 @@ RUN apt-get update \ ca-certificates \ gnupg2 \ && apt-get update \ - && apt-get install -y --no-install-recommends zlib1g-dev \ + && apt-get install -y --no-install-recommends \ + zlib1g-dev \ git \ ghostscript \ gpac \ @@ -34,20 +34,40 @@ RUN apt-get update \ unoconv \ unzip \ xpdf \ + libreoffice-base-core \ + libreoffice-impress \ + libreoffice-calc \ + libreoffice-math \ + libreoffice-writer \ + libreoffice-pdfimport \ && update-locale "LANG=fr_FR.UTF-8 UTF-8" \ && dpkg-reconfigure --frontend noninteractive locales \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* - -RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ - && docker-php-source extract \ + && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install -j$(nproc) gd \ && docker-php-ext-install zip exif iconv mbstring pcntl sockets xsl intl pdo_mysql gettext bcmath mcrypt \ - && pecl install redis amqp-1.9.3 zmq-beta imagick-beta \ + && pecl install \ + redis \ + amqp-1.9.3 \ + zmq-beta \ + imagick-beta \ + xdebug-2.6.1 \ && docker-php-ext-enable redis amqp zmq imagick \ && pecl clear-cache \ && docker-php-source delete \ - && rm -rf /var/lib/apt/lists/* + && apt-get clean \ + && rm -rf /var/lib/apt/lists \ + && mkdir /entrypoint /var/alchemy \ + && useradd -u 1000 app \ + && mkdir -p /home/app/.composer \ + && chown -R app: /home/app /var/alchemy + +ENV XDEBUG_ENABLED=0 + +######################################################################### +# This image is used to build the apps +######################################################################### + +FROM phraseanet-system as builder COPY --from=composer:1.9.1 /usr/bin/composer /usr/bin/composer @@ -56,73 +76,62 @@ COPY --from=composer:1.9.1 /usr/bin/composer /usr/bin/composer # https://linuxize.com/post/how-to-install-node-js-on-ubuntu-18.04/ # https://yarnpkg.com/lang/en/docs/install/#debian-stable RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \ - && apt install -y nodejs \ && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \ && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \ - && apt-get update && apt-get install -y --no-install-recommends yarn \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + nodejs \ + yarn \ + nano \ + vim \ + iputils-ping \ + zsh \ + ssh \ + telnet \ + autoconf \ + libtool \ + python \ + pkg-config \ && apt-get clean \ - && rm -rf /var/lib/apt/lists/ + && rm -rf /var/lib/apt/lists \ + && git clone https://github.com/robbyrussell/oh-my-zsh.git /bootstrap/.oh-my-zsh \ + && mkdir -p /var/alchemy/Phraseanet \ + && chown -R app:app /var/alchemy -RUN mkdir /entrypoint /var/alchemy \ - && useradd -u 1000 app \ - && mkdir -p /home/app/.composer \ - && chown -R app: /home/app /var/alchemy +WORKDIR /var/alchemy/Phraseanet -######################################################################### -# This image is used to build the apps -######################################################################### +USER app -FROM phraseanet-system as builder +# Warm up composer cache for faster builds +COPY docker/caching/composer.* ./ +RUN composer install --prefer-dist --no-dev --no-progress --no-suggest --classmap-authoritative --no-interaction --no-scripts \ + && rm -rf vendor composer.* +# End warm up -WORKDIR /var/alchemy/ +COPY --chown=app . . -# Files that are needed at build stage +RUN make install -COPY gulpfile.js /var/alchemy/ -COPY www/include /var/alchemy/www/include -COPY www/scripts/apps /var/alchemy/www/scripts/apps -COPY Makefile /var/alchemy/ -COPY package.json /var/alchemy/ -COPY phpunit.xml.dist /var/alchemy/ -COPY yarn.lock /var/alchemy/ -COPY bin /var/alchemy/bin -COPY composer.json /var/alchemy/ -COPY composer.lock /var/alchemy/ -RUN make install_composer -COPY resources /var/alchemy/resources +ADD ./docker/builder/root / -# Application build phase +# SSH Private repo +ARG SSH_PRIVATE_KEY +ARG PHRASEANET_PLUGINS -RUN make clean_assets -RUN make install_asset_dependencies -RUN make install_assets +RUN ( \ + test ! -z "${SSH_PRIVATE_KEY}" \ + && mkdir -p ~/.ssh \ + && echo "${SSH_PRIVATE_KEY}" > ~/.ssh/id_rsa \ + # make sure github domain.com is accepted + && ssh-keyscan -H github.com >> ~/.ssh/known_hosts \ + && chmod 600 ~/.ssh/id_rsa \ + ) || echo "Skip SSH key" -# Application code +RUN ./docker/phraseanet/plugins/console install -COPY www /var/alchemy/www -ADD ./docker/phraseanet/ / -COPY lib /var/alchemy/lib -COPY tmp /var/alchemy/tmp -COPY config /var/alchemy/config -COPY grammar /var/alchemy/grammar -COPY templates-profiler /var/alchemy/templates-profiler -COPY templates /var/alchemy/templates -COPY tests /var/alchemy/tests +ENTRYPOINT ["/bootstrap/entrypoint.sh"] -# Create needed folders - -RUN mkdir -p /var/alchemy/Phraseanet/logs \ - && chmod -R 777 /var/alchemy/Phraseanet/logs \ - && mkdir -p /var/alchemy/Phraseanet/cache \ - && chmod -R 777 /var/alchemy/Phraseanet/cache \ - && mkdir -p /var/alchemy/Phraseanet/datas \ - && chmod -R 777 /var/alchemy/Phraseanet/datas \ - && mkdir -p /var/alchemy/Phraseanet/tmp \ - && chmod -R 777 /var/alchemy/Phraseanet/tmp \ - && mkdir -p /var/alchemy/Phraseanet/www/custom \ - && chmod -R 777 /var/alchemy/Phraseanet/www/custom \ - && mkdir -p /var/alchemy/Phraseanet/config \ - && chmod -R 777 /var/alchemy/Phraseanet/config +CMD [] ######################################################################### # Phraseanet web application image @@ -130,31 +139,29 @@ RUN mkdir -p /var/alchemy/Phraseanet/logs \ FROM phraseanet-system as phraseanet-fpm -RUN docker-php-source extract \ - && pecl install xdebug-2.9.0 \ - && docker-php-ext-enable xdebug \ - #&& pecl clear-cache \ - && docker-php-source delete - -COPY --from=builder --chown=app /var/alchemy /var/alchemy/Phraseanet -ADD ./docker/phraseanet/ / +COPY --from=builder --chown=app /var/alchemy/Phraseanet /var/alchemy/Phraseanet +ADD ./docker/phraseanet/root / WORKDIR /var/alchemy/Phraseanet -ENTRYPOINT ["/phraseanet-entrypoint.sh"] -CMD ["/boot.sh"] +ENTRYPOINT ["docker/phraseanet/entrypoint.sh"] +CMD ["php-fpm", "-F"] ######################################################################### # Phraseanet worker application image ######################################################################### FROM phraseanet-fpm as phraseanet-worker -CMD ["/worker-boot.sh"] +ENTRYPOINT ["docker/phraseanet/worker/entrypoint.sh"] +CMD ["bin/console", "task-manager:scheduler:run"] ######################################################################### # phraseanet-nginx ######################################################################### -FROM nginx:1.15 as phraseanet-nginx -RUN useradd -u 1000 app -ADD ./docker/nginx/ / -COPY --from=builder /var/alchemy/www /var/alchemy/Phraseanet/www -CMD ["/boot.sh"] +FROM nginx:1.17.8-alpine as phraseanet-nginx +RUN adduser --uid 1000 --disabled-password app +ADD ./docker/nginx/root / +COPY --from=builder /var/alchemy/Phraseanet/www /var/alchemy/Phraseanet/www + +ENTRYPOINT ["/entrypoint.sh"] + +CMD ["nginx", "-g", "daemon off;"] diff --git a/Makefile b/Makefile index 192ae889bb..1627d6356d 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,10 @@ install: make install_assets install_composer: - composer install --ignore-platform-reqs + composer install --ignore-platform-reqs --no-dev --no-suggest --classmap-authoritative --no-interaction + +install_composer_dev: + composer install install_asset_dependencies: yarn install diff --git a/README.md b/README.md index 0105de60fa..f394ace118 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,152 @@ You can also download a testing pre installed Virtual Machine in OVA format here https://www.phraseanet.com/download/ -# Development : +# With Docker + +## Prerequisites + +- docker-compose +- docker >=v18.01-ce + +## Get started + +You should review the default env variables defined in `.env` file. +Use `export` to override these values. + +i.e: +```bash +export PHRASEANET_DOCKER_TAG=latest +export INSTALL_ACCOUNT_EMAIL=foo@bar.com +export INSTALL_ACCOUNT_PASSWORD=$3cr3t! +export PHRASEANET_APP_PORT=8082 +``` + +### Using a env.local (custom .env) + +It may be easier to deal with a local file to manage our env variables. + +You can add your `env.local` at the root of this project and define a command function in your `~/.bashrc`: + +```bash +# ~/.bashrc or ~/.zshrc +function dc() { + if [ -f env.local ]; then + env $(cat env.local | grep -v '#' | tr '\n' ' ') docker-compose $@ + else + docker-compose $@ + fi +} +``` + +### Running the application + +If you are not interested in the development of Phraseanet, you can ignore everything in `.env` after the `DEV Purpose` part. + + docker-compose -f docker-compose.yml up -d + +Why this option `-f docker-compose.yml`? +The development and integration concerns are separated using a `docker-compose.override.yml`. By default, `docker-compose` will include this files if it exists. +If you don't work on phraseanet development, avoiding this `-f docker-compose.yml` parameters will throw errors. So you have to add this options on every `docker-compose` commands to avoid this inclusion. + +> You can also delete the `docker-compose.override.yml` to get free from this behavior. + +#### Running workers + +```bash +docker-compose -f docker-compose.yml run --rm worker +``` + +Where `` can be: +- `bin/console task-manager:scheduler:run` (default) +- `bin/console worker:execute -m 2` +- ... + + +The default parameters allow you to reach the app with : `http://localhost:8082` + +## Development mode + +The development mode uses the `docker-compose-override.yml` file. + +You can run it with: + + docker-compose up -d + +The environment is not ready yet: you have to fetch all dependencies. + +This can be made easily from the builder container: + + docker-compose run --rm -u app builder make install install_composer_dev + +> Please note that the phraseanet image does not contain nor `composer` neither `node` tools. This allow the final image to be slim. +> If you need to use dev tools, ensure you are running the `builder` image! + +### Developer shell + +You can also obtain a shell access in builder container: + +```bash +docker-compose run --rm builder /bin/bash +# or +docker-compose run --rm builder /bin/zsh +``` + +In this container you will have the same libraries (PHP, Node, composer, ...) that are used to build images. +Also you have utils for development like telnet, ping, ssh, git, ... +Your $HOME/.ssh directory is also mounted to builder's home with your ssh agent. + +### Using Xdebug + +Xdebug is enabled by default with the `docker-compose.override.yml` +You can disable it by setting: + +```bash +export XDEBUG_ENABLED=0 +``` + +Remote host is fixed because of the subnet network from compose. + +You need to configure file mapping in your IDE. +For PhpStorm, you can follow this example: + +![PhpStorm mapping](https://i.ibb.co/GMb43Cv/image.png) + +> Configure the `Absolute path on the server` to `/var/alchemy/Phraseanet` at the project root path (i.e. `~/projects/Phraseanet`). + +#### Xdebug on MacOS + +You have to set the following env: +```bash +XDEBUG_REMOTE_HOST=host.docker.internal +``` + +> Don't forget to recreate your container (`docker-compose up -d phraseanet`) + +### Build images with plugins + +Plugins can be installed during build if you set the `PHRASEANET_PLUGINS` env var as follows: + +```bash +PHRASEANET_PLUGINS="git@github.com:alchemy-fr/Phraseanet-plugin-webgallery.git" + +# You can optionally precise the branch to install +# If not precised, the main branch will be pulled +PHRASEANET_PLUGINS="git@github.com:alchemy-fr/Phraseanet-plugin-webgallery.git(custom-branch)" + +# Plugins are separated by spaces +PHRASEANET_PLUGINS="git@github.com:foo/bar.git(branch-1) git@github.com:baz/42.git" +``` + +If you install private plugins, make sure you export your SSH private key content in order to allow docker build to access the GIT repository: +```bash +export PHRASEANET_SSH_PRIVATE_KEY=$(cat ~/.ssh/id_rsa) +# or if your private key is protected by a passphrase: +export PHRASEANET_SSH_PRIVATE_KEY=$(openssl rsa -in ~/.ssh/id_rsa -out /tmp/id_rsa_raw && cat /tmp/id_rsa_raw && rm /tmp/id_rsa_raw) +``` + +# With Vagrant (deprecated) + +## Development : For development purpose Phraseanet is shipped with ready to use development environments using vagrant. You can easily choose betweeen a complete build or a prebuild box, with a specific PHP version. @@ -50,29 +195,3 @@ Ex: For development with Phraseanet API see https://docs.phraseanet.com/4.0/en/Devel/index.html - - -# Docker build - -WARNING : still in a work-in-progress status and can be used only for test purposes. - -The docker distribution come with 3 differents containers : -* An nginx that act as the front http server. -* The php-fpm who serves the php files through nginx. -* The worker who execute Phraseanet scheduler. - -## How to build - -You can build all the images with the following command at the root directory, choosing an arbirary TAG name : - - ./build.sh - -It will build and tag the following images : - - local/phraseanet-worker: - local/phraseanet-fpm: - local/phraseanet-nginx: - -# Deploy the application - -Once the images are built, you can deploy the entire phraseanet stack using the repository : https://github.com/alchemy-fr/phraseanet-docker and follow the instruction inside its `README.md` file. diff --git a/bin/console b/bin/console index c973195ff6..0f315afa68 100755 --- a/bin/console +++ b/bin/console @@ -23,14 +23,19 @@ use Alchemy\Phrasea\Command\SearchEngine\IndexPopulateCommand; use Alchemy\Phrasea\Command\Thesaurus\FindConceptsCommand; use Alchemy\Phrasea\Core\Version; use Alchemy\Phrasea\Command\CreateCollection; +use Alchemy\Phrasea\Command\Collection\UnPublishCollectionCommand; +use Alchemy\Phrasea\Command\Collection\PublishCollectionCommand; use Alchemy\Phrasea\Command\Collection\ListCollectionCommand; use Alchemy\Phrasea\Command\Databox\CreateDataboxCommand; +use Alchemy\Phrasea\Command\Databox\UnMountDataboxCommand; +use Alchemy\Phrasea\Command\Databox\MountDataboxCommand; use Alchemy\Phrasea\Command\Databox\ListDataboxCommand; use Alchemy\Phrasea\Command\MailTest; use Alchemy\Phrasea\Command\Compile\Configuration; use Alchemy\Phrasea\Command\RecordAdd; use Alchemy\Phrasea\Command\RescanTechnicalDatas; use Alchemy\Phrasea\CLI; +use Alchemy\Phrasea\Command\User\UserApplicationsCommand; use Alchemy\Phrasea\Command\Plugin\AddPlugin; use Alchemy\Phrasea\Command\Plugin\RemovePlugin; use Alchemy\Phrasea\Command\CheckConfig; @@ -49,7 +54,7 @@ use Alchemy\Phrasea\Command\Task\TaskStart; use Alchemy\Phrasea\Command\Task\TaskState; use Alchemy\Phrasea\Command\Task\TaskStop; use Alchemy\Phrasea\Command\User\UserCreateCommand; -use Alchemy\Phrasea\Command\User\UserSetPasswordCommand; +use Alchemy\Phrasea\Command\User\UserPasswordCommand; use Alchemy\Phrasea\Command\User\UserListCommand; use Alchemy\Phrasea\Command\UpgradeDBDatas; @@ -112,15 +117,22 @@ $cli->command(new \module_console_fieldsDelete('fields:delete')); $cli->command(new \module_console_fieldsRename('fields:rename')); $cli->command(new \module_console_fieldsMerge('fields:merge')); +$cli->command(new UserApplicationsCommand('user:applications')); + $cli->command(new CreateCollection('collection:create')); +$cli->command(new UnPublishCollectionCommand('collection:unpublish')); +$cli->command(new PublishCollectionCommand('collection:publish')); $cli->command(new ListCollectionCommand('collection:list')); $cli->command(new ListDataboxCommand('databox:list')); $cli->command(new CreateDataboxCommand('databox:create')); +$cli->command(new UnMountDataboxCommand('databox:unmount')); +$cli->command(new MountDataboxCommand('databox:mount')); + $cli->command(new UserCreateCommand('user:create')); -$cli->command(new UserSetPasswordCommand('user:set-password')); +$cli->command(new UserPasswordCommand('user:password')); $cli->command(new UserListCommand('user:list')); @@ -148,9 +160,9 @@ $cli->command(new QueryParseCommand()); $cli->command(new QuerySampleCommand()); $cli->command(new FindConceptsCommand()); -$cli->command($cli['alchemy_worker.commands.run_dispatcher_command']); -$cli->command($cli['alchemy_worker.commands.run_worker_command']); -$cli->command($cli['alchemy_worker.commands.show_configuration']); +//$cli->command($cli['alchemy_worker.commands.run_dispatcher_command']); +//$cli->command($cli['alchemy_worker.commands.run_worker_command']); +//$cli->command($cli['alchemy_worker.commands.show_configuration']); $cli->loadPlugins(); diff --git a/build.sh b/build.sh deleted file mode 100755 index 60e95a3b7d..0000000000 --- a/build.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -set -xe - -# nginx server -docker build --target phraseanet-nginx -t local/phraseanet-nginx:$1 . - -# php-fpm application -docker build --target phraseanet-fpm -t local/phraseanet-fpm:$1 . - -# worker -docker build --target phraseanet-worker -t local/phraseanet-worker:$1 . - diff --git a/docker-compose.override.yml b/docker-compose.override.yml new file mode 100644 index 0000000000..7e2b3dd2b8 --- /dev/null +++ b/docker-compose.override.yml @@ -0,0 +1,99 @@ +version: "3.4" +services: + phpmyadmin: + image: phpmyadmin/phpmyadmin + restart: on-failure + ports: + - ${PHRASEANET_PHPMYADMIN_PORT}:80 + depends_on: + - db + + gateway: + volumes: + - ../:/var/alchemy + - .:/var/alchemy/Phraseanet + - ./docker/nginx/root/entrypoint.sh:/entrypoint.sh + - ${PHRASEANET_DATA_DIR}:/var/alchemy/Phraseanet/datas:rw + - ${PHRASEANET_THUMBNAILS_DIR}:/var/alchemy/Phraseanet/www/thumbnails:rw + - ${PHRASEANET_TMP_DIR}:/var/alchemy/Phraseanet/tmp:rw + + builder: + build: + context: . + target: builder + args: + - SSH_PRIVATE_KEY=${PHRASEANET_SSH_PRIVATE_KEY} + - PHRASEANET_PLUGINS=${PHRASEANET_PLUGINS} + stdin_open: true + tty: true + volumes: + - ../:/var/alchemy + - .:/var/alchemy/Phraseanet + - ${PHRASEANET_CONFIG_DIR}:/var/alchemy/Phraseanet/config:rw + - ${PHRASEANET_LOGS_DIR}:/var/alchemy/Phraseanet/logs:rw + - ${PHRASEANET_DATA_DIR}:/var/alchemy/Phraseanet/datas:rw + - ${PHRASEANET_THUMBNAILS_DIR}:/var/alchemy/Phraseanet/www/thumbnails:rw + - ${SSH_AUTH_SOCK}:/ssh-auth-sock + - ${HOME}/.ssh:/home/app/.ssh + - dev_vol:/home/app + environment: + - PHRASEANET_PROJECT_NAME + + phraseanet: + environment: + - XDEBUG_ENABLED + - XDEBUG_CONFIG=remote_host=${XDEBUG_REMOTE_HOST} idekey=${IDE_KEY} remote_enable=1 profiler_enable=${XDEBUG_PROFILER_ENABLED} profiler_output_dir=/var/alchemy/Phraseanet/cache/profiler + - PHP_IDE_CONFIG + volumes: + - ../:/var/alchemy + - .:/var/alchemy/Phraseanet + - ${PHRASEANET_CONFIG_DIR}:/var/alchemy/Phraseanet/config:rw + - ${PHRASEANET_LOGS_DIR}:/var/alchemy/Phraseanet/logs:rw + - ${PHRASEANET_DATA_DIR}:/var/alchemy/Phraseanet/datas:rw + - ${PHRASEANET_THUMBNAILS_DIR}:/var/alchemy/Phraseanet/www/thumbnails:rw + - ${PHRASEANET_TMP_DIR}:/var/alchemy/Phraseanet/tmp:rw + + worker: + volumes: + - ../:/var/alchemy + - .:/var/alchemy/Phraseanet + - ${PHRASEANET_CONFIG_DIR}:/var/alchemy/Phraseanet/config:rw + - ${PHRASEANET_LOGS_DIR}:/var/alchemy/Phraseanet/logs:rw + - ${PHRASEANET_DATA_DIR}:/var/alchemy/Phraseanet/datas:rw + - ${PHRASEANET_THUMBNAILS_DIR}:/var/alchemy/Phraseanet/www/thumbnails:rw + - ${PHRASEANET_TMP_DIR}:/var/alchemy/Phraseanet/tmp:rw + + rabbitmq: + ports: + - ${RABBITMQ_MANAGEMENT_PORT}:15672 + + db: + volumes: + - ${PHRASEANET_DB_DIR}:/var/lib/mysql:rw + + mailhog: + image: mailhog/mailhog + ports: + - 1025:1025 + - 8025:8025 + + elasticsearch: + ports: + - 9200:9200 + volumes: + - ${PHRASEANET_ELASTICSEARCH_DIR}:/usr/share/elasticsearch/data:rw + + kibana: + image: kibana:4.6.6 + ports: + - 5601:5601 + +networks: + default: + ipam: + config: + - subnet: $PHRASEANET_SUBNET_IPS + +volumes: + dev_vol: + driver: local diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000..e0bd547fbb --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,134 @@ +version: "3.4" + +services: + gateway: + build: + context: . + target: phraseanet-nginx + args: + - SSH_PRIVATE_KEY=${PHRASEANET_SSH_PRIVATE_KEY} + - PHRASEANET_PLUGINS=${PHRASEANET_PLUGINS} + image: $PHRASEANET_DOCKER_REGISTRY/phraseanet-nginx:$PHRASEANET_DOCKER_TAG + restart: on-failure + volumes: + - data_vol:/var/alchemy/Phraseanet/datas:rw + - thumbnails_vol:/var/alchemy/Phraseanet/www/thumbnails:rw + depends_on: + - phraseanet + environment: + - MAX_BODY_SIZE + ports: + - ${PHRASEANET_APP_PORT}:80 + + phraseanet: + build: + context: . + target: phraseanet-fpm + args: + - SSH_PRIVATE_KEY=${PHRASEANET_SSH_PRIVATE_KEY} + - PHRASEANET_PLUGINS=${PHRASEANET_PLUGINS} + image: $PHRASEANET_DOCKER_REGISTRY/phraseanet-fpm:$PHRASEANET_DOCKER_TAG + restart: on-failure + depends_on: + - db + - redis + - rabbitmq + - elasticsearch + environment: + - PHRASEANET_PROJECT_NAME + - MAX_BODY_SIZE + - MAX_INPUT_VARS + - OPCACHE_ENABLED + - SESSION_CACHE_LIMITER + - PHP_LOG_LEVEL + - INSTALL_ACCOUNT_EMAIL + - INSTALL_ACCOUNT_PASSWORD + - INSTALL_DB_HOST + - INSTALL_DB_PORT + - INSTALL_DB_USER + - INSTALL_DB_PASSWORD + - INSTALL_DB_TEMPLATE + - INSTALL_APPBOX + - INSTALL_DATABOX + - INSTALL_SERVER_NAME + - INSTALL_RABBITMQ_USER=$RABBITMQ_DEFAULT_USER + - INSTALL_RABBITMQ_PASSWORD=$RABBITMQ_DEFAULT_PASS + volumes: + - config_vol:/var/alchemy/Phraseanet/config:rw + - data_vol:/var/alchemy/Phraseanet/datas:rw + - tmp_vol:/var/alchemy/Phraseanet/tmp:rw + - logs_vol:/var/alchemy/Phraseanet/logs:rw + - thumbnails_vol:/var/alchemy/Phraseanet/www/thumbnails:rw + + worker: + build: + context: . + target: phraseanet-worker + args: + - SSH_PRIVATE_KEY=${PHRASEANET_SSH_PRIVATE_KEY} + - PHRASEANET_PLUGINS=${PHRASEANET_PLUGINS} + image: $PHRASEANET_DOCKER_REGISTRY/phraseanet-worker:$PHRASEANET_DOCKER_TAG + restart: on-failure + depends_on: + - db + - redis + - rabbitmq + - elasticsearch + environment: + - PHRASEANET_PROJECT_NAME + - MAX_BODY_SIZE + - MAX_INPUT_VARS + - OPCACHE_ENABLED + - SESSION_CACHE_LIMITER + - PHP_LOG_LEVEL + volumes: + - config_vol:/var/alchemy/Phraseanet/config:rw + - data_vol:/var/alchemy/Phraseanet/datas:rw + - tmp_vol:/var/alchemy/Phraseanet/tmp:rw + - logs_vol:/var/alchemy/Phraseanet/logs:rw + - thumbnails_vol:/var/alchemy/Phraseanet/www/thumbnails:rw + + db: + image: $PHRASEANET_DOCKER_REGISTRY/phraseanet-db:$PHRASEANET_DOCKER_TAG + build: ./docker/db + restart: on-failure + environment: + - MYSQL_ROOT_PASSWORD + - MYSQL_MAX_ALLOWED_PACKET + volumes: + - db_vol:/var/lib/mysql + + rabbitmq: + image: rabbitmq:3-management + restart: on-failure + environment: + - RABBITMQ_DEFAULT_USER + - RABBITMQ_DEFAULT_PASS + + redis: + image: redis + restart: on-failure + + elasticsearch: + image: $PHRASEANET_DOCKER_REGISTRY/phraseanet-elasticsearch:$PHRASEANET_DOCKER_TAG + build: ./docker/elasticsearch + restart: on-failure + volumes: + - elasticsearch_vol:/usr/share/elasticsearch/data + +volumes: + config_vol: + driver: local + data_vol: + driver: local + tmp_vol: + driver: local + db_vol: + driver: local + elasticsearch_vol: + driver: local + thumbnails_vol: + driver: local + # to be replacer by stdout/stderr + logs_vol: + driver: local diff --git a/docker/builder/root/bootstrap/.oh-my-zsh/themes/alchemy.zsh-theme b/docker/builder/root/bootstrap/.oh-my-zsh/themes/alchemy.zsh-theme new file mode 100644 index 0000000000..807e8b6ef7 --- /dev/null +++ b/docker/builder/root/bootstrap/.oh-my-zsh/themes/alchemy.zsh-theme @@ -0,0 +1,7 @@ +local ret_status="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ %s)" +PROMPT='%* %{$fg_bold[green]%}%n%{$fg[grey]%}@%m%{$fg_bold[green]%}%u ${ret_status}%{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}' + +ZSH_THEME_GIT_PROMPT_PREFIX="[%{$fg[red]%}" +ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}] %{$fg[yellow]%}✗%{$reset_color%}" +ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%}]" diff --git a/docker/builder/root/bootstrap/.zshrc b/docker/builder/root/bootstrap/.zshrc new file mode 100644 index 0000000000..ae18e5a4ef --- /dev/null +++ b/docker/builder/root/bootstrap/.zshrc @@ -0,0 +1,56 @@ +export LC_ALL=en_US.UTF-8 +export LANG=en_US.UTF-8 + +export ZSH=$HOME/.oh-my-zsh + +ZSH_THEME="alchemy" + +# Uncomment the following line to use case-sensitive completion. +# CASE_SENSITIVE="true" + +# Uncomment the following line to use hyphen-insensitive completion. Case +# sensitive completion must be off. _ and - will be interchangeable. +# HYPHEN_INSENSITIVE="true" + +# Uncomment the following line to disable bi-weekly auto-update checks. +# DISABLE_AUTO_UPDATE="true" + +# Uncomment the following line to change how often to auto-update (in days). +# export UPDATE_ZSH_DAYS=13 + +# Uncomment the following line to disable colors in ls. +# DISABLE_LS_COLORS="true" + +# Uncomment the following line to disable auto-setting terminal title. +# DISABLE_AUTO_TITLE="true" + +# Uncomment the following line to enable command auto-correction. +# ENABLE_CORRECTION="true" + +# Uncomment the following line to display red dots whilst waiting for completion. +# COMPLETION_WAITING_DOTS="true" + +# Uncomment the following line if you want to disable marking untracked files +# under VCS as dirty. This makes repository status check for large repositories +# much, much faster. +# DISABLE_UNTRACKED_FILES_DIRTY="true" + +# Uncomment the following line if you want to change the command execution time +# stamp shown in the history command output. +# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" +# HIST_STAMPS="mm/dd/yyyy" + +# Would you like to use another custom folder than $ZSH/custom? +# ZSH_CUSTOM=/path/to/new-custom-folder + +# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*) +# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ +# Example format: plugins=(rails git textmate ruby lighthouse) +# Add wisely, as too many plugins slow down shell startup. +plugins=(git symfony2) + +# User configuration + +source $ZSH/oh-my-zsh.sh + +alias ll='ls -alFh' diff --git a/docker/builder/root/bootstrap/entrypoint.d/ohmyzsh.sh b/docker/builder/root/bootstrap/entrypoint.d/ohmyzsh.sh new file mode 100644 index 0000000000..aded04c7c7 --- /dev/null +++ b/docker/builder/root/bootstrap/entrypoint.d/ohmyzsh.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +if [ ! -d "$HOME/.oh-my-zsh" ]; then + cp -r "/bootstrap/.oh-my-zsh" "$HOME/.oh-my-zsh" +fi diff --git a/docker/builder/root/bootstrap/entrypoint.d/zshrc.sh b/docker/builder/root/bootstrap/entrypoint.d/zshrc.sh new file mode 100644 index 0000000000..71d47ed475 --- /dev/null +++ b/docker/builder/root/bootstrap/entrypoint.d/zshrc.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +ZSH_FILE="$HOME/.zshrc" + +if [ ! -f "$HOME/.zshrc" ]; then + cp "/bootstrap/.zshrc" "$HOME/.zshrc" +fi diff --git a/docker/builder/root/bootstrap/entrypoint.sh b/docker/builder/root/bootstrap/entrypoint.sh new file mode 100755 index 0000000000..c8bff0d1bb --- /dev/null +++ b/docker/builder/root/bootstrap/entrypoint.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -d /bootstrap/entrypoint.d ]; then + for i in /bootstrap/entrypoint.d/*.sh; do + if [ -r $i ]; then + . $i + fi + done + unset i +fi + +if [ ! -t 1 ] ; then + echo "No tty available." + exit 0 +fi + +exec "$@" diff --git a/docker/caching/composer.json b/docker/caching/composer.json new file mode 100644 index 0000000000..46ff98203e --- /dev/null +++ b/docker/caching/composer.json @@ -0,0 +1,154 @@ +{ + "name": "phraseanet/phraseanet", + "description": "Phraseanet", + "license": "GPL-3.0", + "config": { + "bin-dir": "bin/" + }, + "repositories": [ + { + "type": "package", + "package": { + "name": "facebook/php-sdk", + "version": "3.2.3", + "source": { + "url": "https://github.com/facebookarchive/facebook-php-sdk.git", + "type": "git", + "reference": "3.2.3" + } + } + }, + { + "type": "package", + "package": { + "name": "exiftool/exiftool", + "version": "11", + "source": { + "url": "https://github.com/exiftool/exiftool.git", + "type": "git", + "reference": "11.84" + } + } + }, + { + "type": "vcs", + "url": "https://github.com/alchemy-fr/tcpdf-clone" + }, + { + "type": "git", + "url": "https://github.com/romainneutron/ProcessManager.git" + }, + { + "type": "vcs", + "url": "https://github.com/alchemy-fr/imagine" + }, + { + "type": "vcs", + "url": "https://github.com/alchemy-fr/JMSTranslationBundle" + }, + { + "type": "vcs", + "url": "https://github.com/alchemy-fr/embed-bundle.git" + }, + { + "type": "git", + "url": "https://github.com/alchemy-fr/fractal.git" + } + ], + "require": { + "php": ">=5.5.9", + "ext-intl": "*", + "alchemy-fr/tcpdf-clone": "~6.0", + "alchemy/embed-bundle": "^2.0.7", + "alchemy/geonames-api-consumer": "~0.1.0", + "alchemy/mediavorus": "^0.4.4", + "alchemy/oauth2php": "1.1.0", + "alchemy/phlickr": "0.2.9", + "alchemy/phpexiftool": "^0.7.0", + "alchemy/rest-bundle": "^0.0.5", + "alchemy/symfony-cors": "^0.1.0", + "alchemy/task-manager": "2.0.x-dev@dev", + "alchemy/zippy": "^0.3.0", + "beberlei/assert": "^2.3", + "cocur/slugify": "^2.0", + "dailymotion/sdk": "~1.5", + "data-uri/data-uri": "~0.1.0", + "dflydev/doctrine-orm-service-provider": "~1.0", + "doctrine/cache": "1.6.x-dev", + "doctrine/dbal": "^2.4.0", + "doctrine/migrations": "^1.0.0", + "doctrine/orm": "^2.4.0", + "elasticsearch/elasticsearch": "~2.0", + "firebase/php-jwt": "^3.0.0", + "gedmo/doctrine-extensions": "~2.3.0", + "goodby/csv": "^1.3.0", + "google/apiclient": "^2.0", + "guzzle/guzzle": "~3.0", + "hoa/compiler": "~2.0", + "hoa/console": "~2.0", + "hoa/dispatcher": "~0.0", + "hoa/router": "~2.0", + "igorw/get-in": "~1.0", + "imagine/imagine": "0.6.x-dev", + "jms/serializer": "~0.10", + "jms/translation-bundle": "dev-rebase-2015-10-20", + "justinrainbow/json-schema": "2.0.3 as 1.6.1", + "league/flysystem": "^1.0", + "league/flysystem-aws-s3-v2": "^1.0", + "league/fractal": "dev-webgalleries#af1acc0275438571bc8c1d08a05a4b5af92c9f97 as 0.13.0", + "media-alchemyst/media-alchemyst": "^0.5.5", + "monolog/monolog": "~1.3", + "mrclay/minify": "~2.1.6", + "neutron/process-manager": "2.0.x-dev@dev", + "neutron/recaptcha": "~0.1.0", + "neutron/silex-filesystem-provider": "~1.0", + "neutron/silex-imagine-provider": "~0.1.0", + "neutron/temporary-filesystem": "~2.1", + "pagerfanta/pagerfanta": "^1.0", + "php-ffmpeg/php-ffmpeg": "~0.5.0", + "php-xpdf/php-xpdf": "~0.2.1", + "exiftool/exiftool": "^11", + "ramsey/uuid": "^3.0", + "roave/security-advisories": "dev-master", + "silex/silex": "^1.3.0", + "silex/web-profiler": "~1.0", + "simple-bus/doctrine-orm-bridge": "^4.0", + "simple-bus/jms-serializer-bridge": "^1.0", + "simple-bus/message-bus": "^2.1", + "simple-bus/serialization": "^2.0", + "sorien/silex-dbal-profiler": "^1.1", + "sorien/silex-pimple-dumper": "^1.0", + "swiftmailer/swiftmailer": "~5.4.5", + "symfony/symfony": "~2.7.10|~2.8.3", + "themattharris/tmhoauth": "~0.7", + "twig/extensions": "^1.2.0", + "twig/twig": "~1.14, >=1.14.2", + "vierbergenlars/php-semver": "~2.1", + "webmozart/json": "^1.1", + "willdurand/negotiation": "^2.0.0-alpha1", + "zend/gdata": "~1.12.1", + "alchemy/worker-bundle": "^0.1.6", + "alchemy/queue-bundle": "^0.1.5", + "google/recaptcha": "^1.1", + "facebook/graph-sdk": "^5.6", + "box/spout": "^2.7", + "paragonie/random-lib": "^2.0", + "czproject/git-php": "^3.17" + }, + "require-dev": { + "mikey179/vfsstream": "~1.5", + "phpunit/phpunit": "^4.8|^5.0" + }, + "autoload": { + "psr-0": { + "Alchemy\\": "lib", + "": "lib/classes" + } + }, + "include-path": ["vendor/zend/gdata/library"], + "extra": { + "branch-alias": { + "dev-master": "4.1.x-dev" + } + } +} diff --git a/docker/caching/composer.lock b/docker/caching/composer.lock new file mode 100644 index 0000000000..41a8b05beb --- /dev/null +++ b/docker/caching/composer.lock @@ -0,0 +1,8839 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "5a4a0be62b13071a6b06893b7ce08372", + "packages": [ + { + "name": "alchemy-fr/tcpdf-clone", + "version": "6.0.039", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/tcpdf-clone.git", + "reference": "2ba0248a7187f1626df6c128750650416267f0e7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/tcpdf-clone/zipball/2ba0248a7187f1626df6c128750650416267f0e7", + "reference": "2ba0248a7187f1626df6c128750650416267f0e7", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "fonts", + "config", + "include", + "tcpdf.php", + "tcpdf_parser.php", + "tcpdf_import.php", + "tcpdf_barcodes_1d.php", + "tcpdf_barcodes_2d.php", + "include/tcpdf_colors.php", + "include/tcpdf_filters.php", + "include/tcpdf_font_data.php", + "include/tcpdf_fonts.php", + "include/tcpdf_images.php", + "include/tcpdf_static.php", + "include/barcodes/datamatrix.php", + "include/barcodes/pdf417.php", + "include/barcodes/qrcode.php" + ] + }, + "license": [ + "LGPLv3" + ], + "authors": [ + { + "name": "Nicola Asuni", + "email": "info@tecnick.com", + "homepage": "http://nicolaasuni.tecnick.com" + } + ], + "description": "TCPDF is a PHP class for generating PDF documents.", + "homepage": "http://www.tcpdf.org/", + "keywords": [ + "PDF", + "PDFD32000-2008", + "barcodes", + "datamatrix", + "pdf417", + "qrcode", + "tcpdf" + ], + "support": { + "source": "https://github.com/alchemy-fr/tcpdf-clone/tree/6.0.039", + "issues": "https://github.com/alchemy-fr/tcpdf-clone/issues" + }, + "time": "2013-10-13T16:11:17+00:00" + }, + { + "name": "alchemy/binary-driver", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/BinaryDriver.git", + "reference": "80c6633890afb71d2417ae851d0ad167d8b00b95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/BinaryDriver/zipball/80c6633890afb71d2417ae851d0ad167d8b00b95", + "reference": "80c6633890afb71d2417ae851d0ad167d8b00b95", + "shasum": "" + }, + "require": { + "evenement/evenement": "^2.0|^1.0", + "monolog/monolog": "^1.3", + "php": ">=5.5", + "psr/log": "^1.0", + "symfony/process": "^2.0|^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0|^5.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Alchemy": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Neutron", + "email": "imprec@gmail.com", + "homepage": "http://www.lickmychip.com/" + }, + { + "name": "Phraseanet Team", + "email": "info@alchemy.fr", + "homepage": "http://www.phraseanet.com/" + }, + { + "name": "Nicolas Le Goff", + "email": "legoff.n@gmail.com" + } + ], + "description": "A set of tools to build binary drivers", + "keywords": [ + "binary", + "driver" + ], + "time": "2016-03-02T13:49:15+00:00" + }, + { + "name": "alchemy/embed-bundle", + "version": "2.0.9", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/embed-bundle.git", + "reference": "8cdb9612a9e3edd998b68f0803eacca8e0f50775" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/embed-bundle/zipball/8cdb9612a9e3edd998b68f0803eacca8e0f50775", + "reference": "8cdb9612a9e3edd998b68f0803eacca8e0f50775", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "^4.7", + "silex/silex": "^1.0.0", + "squizlabs/php_codesniffer": "^2.3", + "symfony/symfony": "~2.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Alchemy\\Embed\\": "src/Component", + "Alchemy\\EmbedBundle\\": "src/Bundle", + "Alchemy\\EmbedProvider\\": "src/Provider" + } + }, + "autoload-dev": { + "psr-4": { + "Alchemy\\EmbedBundle\\Tests\\": "tests/unit/Bundle" + } + }, + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Florian Blouet", + "email": "florian.blouet@gmail.com" + } + ], + "description": "Embed resources bundle", + "support": { + "source": "https://github.com/alchemy-fr/embed-bundle/tree/2.0.9", + "issues": "https://github.com/alchemy-fr/embed-bundle/issues" + }, + "time": "2020-02-04T14:53:00+00:00" + }, + { + "name": "alchemy/geonames-api-consumer", + "version": "0.1.2", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/GeonamesServer-PHP-Plugin.git", + "reference": "111a38233da7a5503f86e96877e044381698f647" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/GeonamesServer-PHP-Plugin/zipball/111a38233da7a5503f86e96877e044381698f647", + "reference": "111a38233da7a5503f86e96877e044381698f647", + "shasum": "" + }, + "require": { + "guzzle/guzzle": "~3.5", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~3.7", + "silex/silex": "~1.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Alchemy": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A connector to a geonames server", + "keywords": [ + "geonames" + ], + "time": "2014-02-05T15:29:39+00:00" + }, + { + "name": "alchemy/ghostscript", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/Ghostscript-PHP.git", + "reference": "a5d40c29efa4c4e4016a1f83cd5645300ad602d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/Ghostscript-PHP/zipball/a5d40c29efa4c4e4016a1f83cd5645300ad602d7", + "reference": "a5d40c29efa4c4e4016a1f83cd5645300ad602d7", + "shasum": "" + }, + "require": { + "alchemy/binary-driver": "~1.5", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~3.7", + "sami/sami": "~1.0", + "silex/silex": "~1.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Ghostscript": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Neutron", + "email": "imprec@gmail.com", + "homepage": "http://www.lickmychip.com/" + }, + { + "name": "Phraseanet Team", + "email": "info@alchemy.fr", + "homepage": "http://www.phraseanet.com/" + } + ], + "description": "Ghostscript PDF, a library to handle PDF through ghostscript", + "keywords": [ + "ghostscript", + "pdf" + ], + "time": "2013-06-25T09:12:58+00:00" + }, + { + "name": "alchemy/mediavorus", + "version": "0.4.10", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/MediaVorus.git", + "reference": "3e235eb1efb528aea2973c946f4bf47630b98985" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/MediaVorus/zipball/3e235eb1efb528aea2973c946f4bf47630b98985", + "reference": "3e235eb1efb528aea2973c946f4bf47630b98985", + "shasum": "" + }, + "require": { + "alchemy/phpexiftool": "~0.1", + "doctrine/collections": "~1.0", + "monolog/monolog": "~1.0", + "php": ">=5.3.0", + "php-ffmpeg/php-ffmpeg": "~0.3", + "symfony/http-foundation": "~2.0" + }, + "replace": { + "mediavorus/mediavorus": "<=0.4.4" + }, + "require-dev": { + "jms/serializer": "~0.12.0", + "phpunit/phpunit": "^4.0|^5.0", + "silex/silex": "~1.0", + "symfony/yaml": "~2.0" + }, + "suggest": { + "jms/serializer": "To serialize Medias", + "symfony/yaml": "To serialize Medias in Yaml format" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "MediaVorus": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Neutron", + "email": "imprec@gmail.com", + "homepage": "http://www.lickmychip.com/" + } + ], + "description": "MediaVorus", + "keywords": [ + "metadata" + ], + "time": "2020-02-18T13:37:45+00:00" + }, + { + "name": "alchemy/oauth2php", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/oauth2-php.git", + "reference": "801510972240555fa182813851efd96659d37a68" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/oauth2-php/zipball/801510972240555fa182813851efd96659d37a68", + "reference": "801510972240555fa182813851efd96659d37a68", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "time": "2019-01-17T14:34:10+00:00" + }, + { + "name": "alchemy/phlickr", + "version": "0.2.9", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/Phlickr.git", + "reference": "f9af93e27e9235db43e61ce2f9588d8ce9859b68" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/Phlickr/zipball/f9af93e27e9235db43e61ce2f9588d8ce9859b68", + "reference": "f9af93e27e9235db43e61ce2f9588d8ce9859b68", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-0": { + "Phlickr_": "./" + } + }, + "notification-url": "https://packagist.org/downloads/", + "time": "2014-12-15T14:27:57+00:00" + }, + { + "name": "alchemy/phpexiftool", + "version": "0.7.3", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/PHPExiftool.git", + "reference": "0b22e7d7cc40f2a6b9c85c0cfbd968a39a31dab2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/PHPExiftool/zipball/0b22e7d7cc40f2a6b9c85c0cfbd968a39a31dab2", + "reference": "0b22e7d7cc40f2a6b9c85c0cfbd968a39a31dab2", + "shasum": "" + }, + "require": { + "doctrine/cache": "^1.0", + "doctrine/collections": "^1.0", + "exiftool/exiftool": "^11", + "monolog/monolog": "^1.3", + "php": ">=5.5.9", + "symfony/console": "^2.1|^3.0", + "symfony/process": "^2.1|^3.0" + }, + "require-dev": { + "jms/serializer": "~0.10|^1.0", + "phpunit/phpunit": "^4.0|^5.0", + "silex/silex": "~1.0", + "symfony/css-selector": "^2.1|^3.0", + "symfony/dom-crawler": "^2.1|^3.0", + "symfony/finder": "^2.1|^3.0", + "symfony/yaml": "^2.1|^3.0" + }, + "suggest": { + "jms/serializer": "To serialize tags", + "symfony/yaml": "To serialize tags in Yaml format" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.5.x-dev" + } + }, + "autoload": { + "psr-0": { + "PHPExiftool\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Neutron", + "email": "imprec@gmail.com", + "homepage": "http://www.lickmychip.com/" + }, + { + "name": "Benoit Burnichon", + "email": "bburnichon@alchemy.fr", + "role": "Lead Developer" + } + ], + "description": "Exiftool driver for PHP", + "keywords": [ + "exiftool", + "metadata" + ], + "time": "2020-01-17T14:28:33+00:00" + }, + { + "name": "alchemy/queue-bundle", + "version": "0.1.5", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/queue-bundle.git", + "reference": "dcc64ac5e888250cf29a80570df66cdb5dc3857f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/queue-bundle/zipball/dcc64ac5e888250cf29a80570df66cdb5dc3857f", + "reference": "dcc64ac5e888250cf29a80570df66cdb5dc3857f", + "shasum": "" + }, + "require": { + "alchemy/queue-component": "^0.1.4", + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4|^5", + "silex/silex": "^1.3.0", + "symfony/symfony": "^2.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Alchemy\\QueueBundle\\": "src/QueueBundle", + "Alchemy\\QueueProvider\\": "src/QueueProvider" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Thibaud Fabre", + "email": "thibaud@aztech.io" + } + ], + "description": "Symfony bundle for alchemy/queue-component", + "time": "2016-10-04T14:19:39+00:00" + }, + { + "name": "alchemy/queue-component", + "version": "0.1.5", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/queue-component.git", + "reference": "5506445a5770e23075e78e02510752106ee284b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/queue-component/zipball/5506445a5770e23075e78e02510752106ee284b0", + "reference": "5506445a5770e23075e78e02510752106ee284b0", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "psr/log": "^1.0", + "ramsey/uuid": "^3.3" + }, + "require-dev": { + "empi89/php-amqp-stubs": "dev-master", + "mikey179/vfsstream": "^1.6", + "phpunit/phpunit": "^4.0|^5.0" + }, + "suggest": { + "ext-amqp": "To use the AMQP extension adapters" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Alchemy\\Queue\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Message queue component", + "time": "2016-10-05T10:41:36+00:00" + }, + { + "name": "alchemy/rest-bundle", + "version": "0.0.5", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/rest-bundle.git", + "reference": "e795b3cd565086d575ee919d1b23279656c982ad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/rest-bundle/zipball/e795b3cd565086d575ee919d1b23279656c982ad", + "reference": "e795b3cd565086d575ee919d1b23279656c982ad", + "shasum": "" + }, + "require": { + "league/fractal": "^0.12.0|^0.13.0", + "php": ">=5.4", + "willdurand/negotiation": "~2.0@dev" + }, + "require-dev": { + "pagerfanta/pagerfanta": "^1.0.3", + "phpunit/phpunit": "^4.7", + "silex/silex": "^1.0.0", + "squizlabs/php_codesniffer": "^2.3", + "symfony/symfony": "~2.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Alchemy\\Rest\\": "src/Component", + "Alchemy\\RestBundle\\": "src/Bundle", + "Alchemy\\RestProvider\\": "src/Provider" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Thibaud Fabre", + "email": "thibaud@aztech.io" + } + ], + "description": "Simple REST utility bundle", + "time": "2016-05-16T09:37:34+00:00" + }, + { + "name": "alchemy/symfony-cors", + "version": "0.1.1", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/symfony-cors.git", + "reference": "dbf7fcff1ce9fc1265db12955476ff169eab7375" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/symfony-cors/zipball/dbf7fcff1ce9fc1265db12955476ff169eab7375", + "reference": "dbf7fcff1ce9fc1265db12955476ff169eab7375", + "shasum": "" + }, + "require": { + "symfony/http-kernel": "^2.3.0|^3.0.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0", + "silex/silex": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Alchemy\\Cors\\": "src/Component/", + "Alchemy\\CorsProvider\\": "src/Provider/", + "Alchemy\\CorsBundle\\": "src/Bundle/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Benoît Burnichon", + "email": "bburnichon@alchemy.fr" + } + ], + "description": "A library that adds CORS services to Silex/Symfony Applications", + "time": "2015-12-17T15:34:43+00:00" + }, + { + "name": "alchemy/task-manager", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/task-manager.git", + "reference": "6185ab425922580c3f7a6f0ae1b364e6a4626aae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/task-manager/zipball/6185ab425922580c3f7a6f0ae1b364e6a4626aae", + "reference": "6185ab425922580c3f7a6f0ae1b364e6a4626aae", + "shasum": "" + }, + "require": { + "ext-zmq": "*", + "neutron/process-manager": "2.0.x-dev@dev", + "neutron/signal-handler": "~1.0", + "php": ">=5.3.3", + "symfony/event-dispatcher": "~2.0", + "symfony/process": "~2.4" + }, + "require-dev": { + "monolog/monolog": "~1.0", + "phpunit/phpunit": "~3.7|^4.0|^5.0", + "symfony/console": "~2.3", + "symfony/finder": "~2.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-0": { + "Alchemy": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Neutron", + "email": "imprec@gmail.com", + "homepage": "http://www.lickmychip.com/" + }, + { + "name": "Phraseanet Team", + "email": "info@alchemy.fr", + "homepage": "http://www.phraseanet.com/" + } + ], + "description": "A manager for running parallel PHP processes command line.", + "keywords": [ + "cli", + "parallel", + "process" + ], + "time": "2016-11-30T13:34:30+00:00" + }, + { + "name": "alchemy/worker-bundle", + "version": "0.1.6", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/worker-bundle.git", + "reference": "a4911cc4a4c9ccf1195c78a11ca5899c9077b1df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/worker-bundle/zipball/a4911cc4a4c9ccf1195c78a11ca5899c9077b1df", + "reference": "a4911cc4a4c9ccf1195c78a11ca5899c9077b1df", + "shasum": "" + }, + "require": { + "alchemy/queue-bundle": "^0.1.5", + "alchemy/worker-component": "^0.1.0", + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^5.4", + "silex/silex": "^1.3.0", + "symfony/symfony": "^2.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Alchemy\\WorkerBundle\\": "src/WorkerBundle", + "Alchemy\\WorkerProvider\\": "src/WorkerProvider" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Thibaud Fabre", + "email": "thibaud@aztech.io" + } + ], + "description": "Symfony bundle for alchemy/worker-component", + "time": "2016-12-06T10:39:58+00:00" + }, + { + "name": "alchemy/worker-component", + "version": "0.1.4", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/worker-component.git", + "reference": "239927775b9097e6f1a540a975d2ea49bda550f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/worker-component/zipball/239927775b9097e6f1a540a975d2ea49bda550f4", + "reference": "239927775b9097e6f1a540a975d2ea49bda550f4", + "shasum": "" + }, + "require": { + "alchemy/queue-component": "^0.1.4", + "php": ">=5.5", + "psr/log": "^1.0", + "ramsey/uuid": "^3.3" + }, + "require-dev": { + "empi89/php-amqp-stubs": "dev-master", + "mikey179/vfsstream": "^1.6", + "phpunit/phpunit": "^4.0|^5.0" + }, + "suggest": { + "ext-amqp": "To use the AMQP extension adapters" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Alchemy\\Worker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Message queue worker component", + "time": "2016-11-14T16:41:16+00:00" + }, + { + "name": "alchemy/zippy", + "version": "0.3.5", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/Zippy.git", + "reference": "92c773f7bbe47fdb30c61dbaea3dcbf4dd13a40a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/Zippy/zipball/92c773f7bbe47fdb30c61dbaea3dcbf4dd13a40a", + "reference": "92c773f7bbe47fdb30c61dbaea3dcbf4dd13a40a", + "shasum": "" + }, + "require": { + "doctrine/collections": "~1.0", + "ext-mbstring": "*", + "php": ">=5.3.3", + "symfony/filesystem": "^2.0.5|^3.0", + "symfony/process": "^2.1|^3.0" + }, + "require-dev": { + "ext-zip": "*", + "guzzle/guzzle": "~3.0", + "phpunit/phpunit": "^4.0|^5.0", + "symfony/finder": "^2.0.5|^3.0" + }, + "suggest": { + "ext-zip": "To use the ZipExtensionAdapter", + "guzzle/guzzle": "To use the GuzzleTeleporter" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Alchemy\\Zippy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alchemy", + "email": "dev.team@alchemy.fr", + "homepage": "http://www.alchemy.fr/" + } + ], + "description": "Zippy, the archive manager companion", + "keywords": [ + "bzip", + "compression", + "tar", + "zip" + ], + "time": "2016-02-15T22:46:40+00:00" + }, + { + "name": "aws/aws-sdk-php", + "version": "2.8.31", + "source": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-php.git", + "reference": "64fa4b07f056e338a5f0f29eece75babaa83af68" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/64fa4b07f056e338a5f0f29eece75babaa83af68", + "reference": "64fa4b07f056e338a5f0f29eece75babaa83af68", + "shasum": "" + }, + "require": { + "guzzle/guzzle": "~3.7", + "php": ">=5.3.3" + }, + "require-dev": { + "doctrine/cache": "~1.0", + "ext-openssl": "*", + "monolog/monolog": "~1.4", + "phpunit/phpunit": "~4.0", + "phpunit/phpunit-mock-objects": "2.3.1", + "symfony/yaml": "~2.1" + }, + "suggest": { + "doctrine/cache": "Adds support for caching of credentials and responses", + "ext-apc": "Allows service description opcode caching, request and response caching, and credentials caching", + "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", + "monolog/monolog": "Adds support for logging HTTP requests and responses", + "symfony/yaml": "Eases the ability to write manifests for creating jobs in AWS Import/Export" + }, + "type": "library", + "autoload": { + "psr-0": { + "Aws": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Amazon Web Services", + "homepage": "http://aws.amazon.com" + } + ], + "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", + "homepage": "http://aws.amazon.com/sdkforphp", + "keywords": [ + "amazon", + "aws", + "cloud", + "dynamodb", + "ec2", + "glacier", + "s3", + "sdk" + ], + "time": "2016-07-25T18:03:20+00:00" + }, + { + "name": "beberlei/assert", + "version": "v2.7.3", + "source": { + "type": "git", + "url": "https://github.com/beberlei/assert.git", + "reference": "5972776d6a9eedfd3c55216341434e19cb50418f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/beberlei/assert/zipball/5972776d6a9eedfd3c55216341434e19cb50418f", + "reference": "5972776d6a9eedfd3c55216341434e19cb50418f", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.0", + "phpunit/phpunit": "@stable" + }, + "type": "library", + "autoload": { + "psr-4": { + "Assert\\": "lib/Assert" + }, + "files": [ + "lib/Assert/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de", + "role": "Lead Developer" + }, + { + "name": "Richard Quadling", + "email": "rquadling@gmail.com", + "role": "Collaborator" + } + ], + "description": "Thin assertion library for input validation in business models.", + "keywords": [ + "assert", + "assertion", + "validation" + ], + "time": "2017-01-24T15:14:39+00:00" + }, + { + "name": "behat/transliterator", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/Behat/Transliterator.git", + "reference": "868e05be3a9f25ba6424c2dd4849567f50715003" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Transliterator/zipball/868e05be3a9f25ba6424c2dd4849567f50715003", + "reference": "868e05be3a9f25ba6424c2dd4849567f50715003", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Transliterator": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Artistic-1.0" + ], + "description": "String transliterator", + "keywords": [ + "i18n", + "slug", + "transliterator" + ], + "time": "2015-09-28T16:26:35+00:00" + }, + { + "name": "box/spout", + "version": "v2.7.3", + "source": { + "type": "git", + "url": "https://github.com/box/spout.git", + "reference": "3681a3421a868ab9a65da156c554f756541f452b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/box/spout/zipball/3681a3421a868ab9a65da156c554f756541f452b", + "reference": "3681a3421a868ab9a65da156c554f756541f452b", + "shasum": "" + }, + "require": { + "ext-xmlreader": "*", + "ext-zip": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.0" + }, + "suggest": { + "ext-iconv": "To handle non UTF-8 CSV files (if \"php-intl\" is not already installed or is too limited)", + "ext-intl": "To handle non UTF-8 CSV files (if \"iconv\" is not already installed)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Box\\Spout\\": "src/Spout" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Adrien Loison", + "email": "adrien@box.com" + } + ], + "description": "PHP Library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way", + "homepage": "https://www.github.com/box/spout", + "keywords": [ + "OOXML", + "csv", + "excel", + "memory", + "odf", + "ods", + "office", + "open", + "php", + "read", + "scale", + "spreadsheet", + "stream", + "write", + "xlsx" + ], + "time": "2017-09-25T19:44:35+00:00" + }, + { + "name": "cocur/slugify", + "version": "v2.3", + "source": { + "type": "git", + "url": "https://github.com/cocur/slugify.git", + "reference": "57a00e06a382928e350cc7bbb13b19f1b8f4e73a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cocur/slugify/zipball/57a00e06a382928e350cc7bbb13b19f1b8f4e73a", + "reference": "57a00e06a382928e350cc7bbb13b19f1b8f4e73a", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "require-dev": { + "laravel/framework": "~5.1", + "latte/latte": "~2.2", + "league/container": "^2.2.0", + "mikey179/vfsstream": "~1.6", + "mockery/mockery": "~0.9", + "nette/di": "~2.2", + "phpunit/phpunit": "~4.8|~5.2", + "pimple/pimple": "~1.1", + "plumphp/plum": "~0.1", + "silex/silex": "~1.3", + "symfony/config": "~2.4|~3.0", + "symfony/dependency-injection": "~2.4|~3.0", + "symfony/http-kernel": "~2.4|~3.0", + "twig/twig": "~1.12", + "zendframework/zend-modulemanager": "~2.2", + "zendframework/zend-servicemanager": "~2.2", + "zendframework/zend-view": "~2.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cocur\\Slugify\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ivo Bathke", + "email": "ivo.bathke@gmail.com" + }, + { + "name": "Florian Eckerstorfer", + "email": "florian@eckerstorfer.co", + "homepage": "https://florian.ec" + } + ], + "description": "Converts a string into a slug.", + "keywords": [ + "slug", + "slugify" + ], + "time": "2016-08-09T20:10:17+00:00" + }, + { + "name": "czproject/git-php", + "version": "v3.17.0", + "source": { + "type": "git", + "url": "https://github.com/czproject/git-php.git", + "reference": "a7b911b81a2fe626f748a4ac8955353c5777bc6c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/czproject/git-php/zipball/a7b911b81a2fe626f748a4ac8955353c5777bc6c", + "reference": "a7b911b81a2fe626f748a4ac8955353c5777bc6c", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "nette/tester": "^1.1" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jan Pecha", + "email": "janpecha@email.cz" + } + ], + "description": "Library for work with Git repository in PHP.", + "keywords": [ + "git" + ], + "time": "2019-02-09T13:11:36+00:00" + }, + { + "name": "dailymotion/sdk", + "version": "1.6.5", + "source": { + "type": "git", + "url": "https://github.com/dailymotion/dailymotion-sdk-php.git", + "reference": "0f558978785f9a6ab9e59c393041d4896550973b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dailymotion/dailymotion-sdk-php/zipball/0f558978785f9a6ab9e59c393041d4896550973b", + "reference": "0f558978785f9a6ab9e59c393041d4896550973b", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "Dailymotion.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Dailymotion PHP SDK", + "homepage": "http://dailymotion.com", + "keywords": [ + "api", + "dailymotion", + "sdk" + ], + "time": "2015-11-20T11:18:32+00:00" + }, + { + "name": "data-uri/data-uri", + "version": "0.1.1", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/PHP-dataURI.git", + "reference": "6b84ac5b57af163d30a18cdb145928a1b90526ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/PHP-dataURI/zipball/6b84ac5b57af163d30a18cdb145928a1b90526ac", + "reference": "6b84ac5b57af163d30a18cdb145928a1b90526ac", + "shasum": "" + }, + "require": { + "php": ">=5.3.2", + "symfony/http-foundation": "~2.0" + }, + "require-dev": { + "sami/sami": "dev-master" + }, + "type": "library", + "autoload": { + "psr-0": { + "DataURI": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "nlegoff", + "email": "legoff.n@gmail.com" + } + ], + "description": "PHP DataURI component", + "keywords": [ + "data", + "data-uri", + "uri" + ], + "time": "2014-08-22T15:01:57+00:00" + }, + { + "name": "dflydev/doctrine-orm-service-provider", + "version": "v1.0.7", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-doctrine-orm-service-provider.git", + "reference": "68f6805bbbedfdebccb9f24802f0484204b6a17d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-doctrine-orm-service-provider/zipball/68f6805bbbedfdebccb9f24802f0484204b6a17d", + "reference": "68f6805bbbedfdebccb9f24802f0484204b6a17d", + "shasum": "" + }, + "require": { + "doctrine/orm": "~2.3", + "php": ">=5.3.3", + "pimple/pimple": "1.*@dev" + }, + "require-dev": { + "cilex/cilex": "1.*@dev", + "cilex/console-service-provider": "@dev", + "silex/silex": "1.*@dev" + }, + "suggest": { + "dflydev/psr0-resource-locator-service-provider": "1.0.*@dev" + }, + "type": "library", + "autoload": { + "psr-0": { + "Dflydev\\Cilex\\Provider\\DoctrineOrm": "src", + "Dflydev\\Pimple\\Provider\\DoctrineOrm": "src", + "Dflydev\\Silex\\Provider\\DoctrineOrm": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + } + ], + "description": "Doctrine ORM Service Provider", + "homepage": "http://dflydev.com/projects/doctrine-orm-service-provider/", + "keywords": [ + "cilex", + "doctrine", + "orm", + "pimple", + "silex" + ], + "time": "2015-09-07T12:16:54+00:00" + }, + { + "name": "doctrine/annotations", + "version": "v1.2.7", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535", + "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": ">=5.3.2" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "4.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Annotations\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2015-08-31T12:32:49+00:00" + }, + { + "name": "doctrine/cache", + "version": "1.6.x-dev", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "b6f544a20f4807e81f7044d31e679ccbb1866dc3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/b6f544a20f4807e81f7044d31e679ccbb1866dc3", + "reference": "b6f544a20f4807e81f7044d31e679ccbb1866dc3", + "shasum": "" + }, + "require": { + "php": "~5.5|~7.0" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "phpunit/phpunit": "~4.8|~5.0", + "predis/predis": "~1.0", + "satooshi/php-coveralls": "~0.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Caching library offering an object-oriented API for many cache backends", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "cache", + "caching" + ], + "time": "2016-10-29T11:16:17+00:00" + }, + { + "name": "doctrine/collections", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a", + "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Collections\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Collections Abstraction library", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "array", + "collections", + "iterator" + ], + "time": "2015-04-14T22:21:58+00:00" + }, + { + "name": "doctrine/common", + "version": "v2.6.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/common.git", + "reference": "7bce00698899aa2c06fe7365c76e4d78ddb15fa3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/common/zipball/7bce00698899aa2c06fe7365c76e4d78ddb15fa3", + "reference": "7bce00698899aa2c06fe7365c76e4d78ddb15fa3", + "shasum": "" + }, + "require": { + "doctrine/annotations": "1.*", + "doctrine/cache": "1.*", + "doctrine/collections": "1.*", + "doctrine/inflector": "1.*", + "doctrine/lexer": "1.*", + "php": "~5.5|~7.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8|~5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "lib/Doctrine/Common" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Common Library for Doctrine projects", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "collections", + "eventmanager", + "persistence", + "spl" + ], + "time": "2016-11-30T16:50:46+00:00" + }, + { + "name": "doctrine/dbal", + "version": "v2.5.10", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "fc376f7a61498e18520cd6fa083752a4ca08072b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/fc376f7a61498e18520cd6fa083752a4ca08072b", + "reference": "fc376f7a61498e18520cd6fa083752a4ca08072b", + "shasum": "" + }, + "require": { + "doctrine/common": ">=2.4,<2.8-dev", + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "4.*", + "symfony/console": "2.*||^3.0" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\DBAL\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Database Abstraction Layer", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "dbal", + "persistence", + "queryobject" + ], + "time": "2017-01-23T23:17:10+00:00" + }, + { + "name": "doctrine/inflector", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", + "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "4.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Inflector\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Common String Manipulations with regard to casing and singular/plural rules.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "inflection", + "pluralize", + "singularize", + "string" + ], + "time": "2015-11-06T14:35:42+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "shasum": "" + }, + "require": { + "php": ">=5.3,<8.0-DEV" + }, + "require-dev": { + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2015-06-14T21:17:01+00:00" + }, + { + "name": "doctrine/lexer", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Lexer\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "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", + "keywords": [ + "lexer", + "parser" + ], + "time": "2014-09-09T13:34:57+00:00" + }, + { + "name": "doctrine/migrations", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/migrations.git", + "reference": "c81147c0f2938a6566594455367e095150547f72" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/c81147c0f2938a6566594455367e095150547f72", + "reference": "c81147c0f2938a6566594455367e095150547f72", + "shasum": "" + }, + "require": { + "doctrine/dbal": "~2.2", + "ocramius/proxy-manager": "^1.0|^2.0", + "php": "^5.5|^7.0", + "symfony/console": "~2.3|~3.0", + "symfony/yaml": "~2.3|~3.0" + }, + "require-dev": { + "doctrine/coding-standard": "dev-master", + "doctrine/orm": "2.*", + "jdorn/sql-formatter": "~1.1", + "johnkary/phpunit-speedtrap": "~1.0@dev", + "mikey179/vfsstream": "^1.6", + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "~4.7", + "satooshi/php-coveralls": "^1.0" + }, + "suggest": { + "jdorn/sql-formatter": "Allows to generate formatted SQL with the diff command." + }, + "bin": [ + "bin/doctrine-migrations" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "v1.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\DBAL\\Migrations\\": "lib/Doctrine/DBAL/Migrations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1" + ], + "authors": [ + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Michael Simonson", + "email": "contact@mikesimonson.com" + } + ], + "description": "Database Schema migrations using Doctrine DBAL", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "migrations" + ], + "time": "2016-12-25T22:54:00+00:00" + }, + { + "name": "doctrine/orm", + "version": "v2.5.6", + "source": { + "type": "git", + "url": "https://github.com/doctrine/orm.git", + "reference": "e6c434196c8ef058239aaa0724b4aadb0107940b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/orm/zipball/e6c434196c8ef058239aaa0724b4aadb0107940b", + "reference": "e6c434196c8ef058239aaa0724b4aadb0107940b", + "shasum": "" + }, + "require": { + "doctrine/cache": "~1.4", + "doctrine/collections": "~1.2", + "doctrine/common": ">=2.5-dev,<2.8-dev", + "doctrine/dbal": ">=2.5-dev,<2.6-dev", + "doctrine/instantiator": "~1.0.1", + "ext-pdo": "*", + "php": ">=5.4", + "symfony/console": "~2.5|~3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0", + "symfony/yaml": "~2.3|~3.0" + }, + "suggest": { + "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" + }, + "bin": [ + "bin/doctrine", + "bin/doctrine.php" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\ORM\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Object-Relational-Mapper for PHP", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "database", + "orm" + ], + "time": "2016-12-18T15:42:34+00:00" + }, + { + "name": "elasticsearch/elasticsearch", + "version": "v2.3.0", + "source": { + "type": "git", + "url": "https://github.com/elastic/elasticsearch-php.git", + "reference": "12a400656e4cf4c231d83cb56af3f50a27dcde93" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/12a400656e4cf4c231d83cb56af3f50a27dcde93", + "reference": "12a400656e4cf4c231d83cb56af3f50a27dcde93", + "shasum": "" + }, + "require": { + "guzzlehttp/ringphp": "~1.0", + "php": ">=5.4", + "psr/log": "~1.0" + }, + "require-dev": { + "cpliakas/git-wrapper": "~1.0", + "mockery/mockery": "0.9.4", + "phpunit/phpunit": "~4.7", + "sami/sami": "~3.2", + "symfony/yaml": "2.4.3 as 2.4.2", + "twig/twig": "1.*" + }, + "suggest": { + "ext-curl": "*", + "monolog/monolog": "Allows for client-level logging and tracing" + }, + "type": "library", + "autoload": { + "psr-4": { + "Elasticsearch\\": "src/Elasticsearch/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Zachary Tong" + } + ], + "description": "PHP Client for Elasticsearch", + "keywords": [ + "client", + "elasticsearch", + "search" + ], + "time": "2016-11-30T17:15:05+00:00" + }, + { + "name": "evenement/evenement", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/igorw/evenement.git", + "reference": "fa966683e7df3e5dd5929d984a44abfbd6bafe8d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/igorw/evenement/zipball/fa966683e7df3e5dd5929d984a44abfbd6bafe8d", + "reference": "fa966683e7df3e5dd5929d984a44abfbd6bafe8d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Evenement": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch", + "homepage": "http://wiedler.ch/igor/" + } + ], + "description": "Événement is a very simple event dispatching library for PHP 5.3", + "keywords": [ + "event-dispatcher" + ], + "time": "2012-05-30T15:01:08+00:00" + }, + { + "name": "exiftool/exiftool", + "version": "11", + "source": { + "type": "git", + "url": "https://github.com/exiftool/exiftool.git", + "reference": "11.84" + }, + "type": "library" + }, + { + "name": "facebook/graph-sdk", + "version": "5.6.1", + "source": { + "type": "git", + "url": "https://github.com/facebook/php-graph-sdk.git", + "reference": "2f9639c15ae043911f40ffe44080b32bac2c5280" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facebook/php-graph-sdk/zipball/2f9639c15ae043911f40ffe44080b32bac2c5280", + "reference": "2f9639c15ae043911f40ffe44080b32bac2c5280", + "shasum": "" + }, + "require": { + "php": "^5.4|^7.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "~5.0", + "mockery/mockery": "~0.8", + "phpunit/phpunit": "~4.0" + }, + "suggest": { + "guzzlehttp/guzzle": "Allows for implementation of the Guzzle HTTP client", + "paragonie/random_compat": "Provides a better CSPRNG option in PHP 5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Facebook\\": "src/Facebook/" + }, + "files": [ + "src/Facebook/polyfills.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Facebook Platform" + ], + "authors": [ + { + "name": "Facebook", + "homepage": "https://github.com/facebook/php-graph-sdk/contributors" + } + ], + "description": "Facebook SDK for PHP", + "homepage": "https://github.com/facebook/php-graph-sdk", + "keywords": [ + "facebook", + "sdk" + ], + "time": "2017-08-16T17:28:07+00:00" + }, + { + "name": "firebase/php-jwt", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "reference": "fa8a06e96526eb7c0eeaa47e4f39be59d21f16e1", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "time": "2015-07-22T18:31:08+00:00" + }, + { + "name": "gedmo/doctrine-extensions", + "version": "v2.3.12", + "source": { + "type": "git", + "url": "https://github.com/Atlantic18/DoctrineExtensions.git", + "reference": "c3ff3c73c95b01e107af33d4fe3abf80794e2df9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Atlantic18/DoctrineExtensions/zipball/c3ff3c73c95b01e107af33d4fe3abf80794e2df9", + "reference": "c3ff3c73c95b01e107af33d4fe3abf80794e2df9", + "shasum": "" + }, + "require": { + "behat/transliterator": "~1.0", + "doctrine/common": "~2.4", + "php": ">=5.3.2" + }, + "require-dev": { + "doctrine/mongodb-odm": ">=1.0.0-BETA11", + "doctrine/orm": "~2.4", + "phpunit/phpunit": "~4.4", + "phpunit/phpunit-mock-objects": "~2.3", + "symfony/yaml": "~2.3" + }, + "suggest": { + "doctrine/mongodb-odm": "to use the extensions with the MongoDB ODM", + "doctrine/orm": "to use the extensions with the ORM" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Gedmo\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "David Buchmann", + "email": "david@liip.ch" + }, + { + "name": "Gediminas Morkevicius", + "email": "gediminas.morkevicius@gmail.com" + }, + { + "name": "Gustavo Falco", + "email": "comfortablynumb84@gmail.com" + } + ], + "description": "Doctrine2 behavioral extensions", + "homepage": "http://gediminasm.org/", + "keywords": [ + "Blameable", + "behaviors", + "doctrine2", + "extensions", + "gedmo", + "loggable", + "nestedset", + "sluggable", + "sortable", + "timestampable", + "translatable", + "tree", + "uploadable" + ], + "time": "2015-02-24T21:41:37+00:00" + }, + { + "name": "goodby/csv", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/goodby/csv.git", + "reference": "e71217b8d6110f3d1ac3784ef9b8a2383c3398b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/goodby/csv/zipball/e71217b8d6110f3d1ac3784ef9b8a2383c3398b9", + "reference": "e71217b8d6110f3d1ac3784ef9b8a2383c3398b9", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.3.2" + }, + "require-dev": { + "mikey179/vfsstream": ">=1.1.0", + "mockery/mockery": ">=0.7.2", + "phpunit/phpunit": "3.7.*", + "suin/php-expose": ">=1.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Goodby\\CSV": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "suin", + "email": "suinyeze@gmail.com", + "homepage": "https://www.facebook.com/suinyeze", + "role": "Developer, Renaming Specialist" + }, + { + "name": "reoring", + "email": "mori.reo@gmail.com", + "homepage": "https://www.facebook.com/reoring", + "role": "Developer" + } + ], + "description": "CSV import/export library", + "homepage": "https://github.com/goodby/csv", + "keywords": [ + "csv", + "export", + "import" + ], + "time": "2015-06-29T10:28:19+00:00" + }, + { + "name": "google/apiclient", + "version": "v2.2.1", + "source": { + "type": "git", + "url": "https://github.com/googleapis/google-api-php-client.git", + "reference": "b69b8ac4bf6501793c389d4e013a79d09c85c5f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/googleapis/google-api-php-client/zipball/b69b8ac4bf6501793c389d4e013a79d09c85c5f2", + "reference": "b69b8ac4bf6501793c389d4e013a79d09c85c5f2", + "shasum": "" + }, + "require": { + "firebase/php-jwt": "~2.0|~3.0|~4.0|~5.0", + "google/apiclient-services": "~0.13", + "google/auth": "^1.0", + "guzzlehttp/guzzle": "~5.3.1|~6.0", + "guzzlehttp/psr7": "^1.2", + "monolog/monolog": "^1.17", + "php": ">=5.4", + "phpseclib/phpseclib": "~0.3.10|~2.0" + }, + "require-dev": { + "cache/filesystem-adapter": "^0.3.2", + "phpunit/phpunit": "~4", + "squizlabs/php_codesniffer": "~2.3", + "symfony/css-selector": "~2.1", + "symfony/dom-crawler": "~2.1" + }, + "suggest": { + "cache/filesystem-adapter": "For caching certs and tokens (using Google_Client::setCache)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-0": { + "Google_": "src/" + }, + "classmap": [ + "src/Google/Service/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Client library for Google APIs", + "homepage": "http://developers.google.com/api-client-library/php", + "keywords": [ + "google" + ], + "time": "2017-11-03T01:19:53+00:00" + }, + { + "name": "google/apiclient-services", + "version": "v0.36", + "source": { + "type": "git", + "url": "https://github.com/googleapis/google-api-php-client-services.git", + "reference": "2fd7d2876fbc0174faddba3241956a1393536159" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/2fd7d2876fbc0174faddba3241956a1393536159", + "reference": "2fd7d2876fbc0174faddba3241956a1393536159", + "shasum": "" + }, + "require": { + "php": ">=5.4" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "type": "library", + "autoload": { + "psr-0": { + "Google_Service_": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Client library for Google APIs", + "homepage": "http://developers.google.com/api-client-library/php", + "keywords": [ + "google" + ], + "time": "2017-11-25T00:23:12+00:00" + }, + { + "name": "google/auth", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/googleapis/google-auth-library-php.git", + "reference": "548d27d670f0236dc5258fa4cdde6e7b63464cfd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/googleapis/google-auth-library-php/zipball/548d27d670f0236dc5258fa4cdde6e7b63464cfd", + "reference": "548d27d670f0236dc5258fa4cdde6e7b63464cfd", + "shasum": "" + }, + "require": { + "firebase/php-jwt": "~2.0|~3.0|~4.0|~5.0", + "guzzlehttp/guzzle": "~5.3.1|~6.0", + "guzzlehttp/psr7": "~1.2", + "php": ">=5.4", + "psr/cache": "^1.0", + "psr/http-message": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^1.11", + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "Google\\Auth\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "Google Auth Library for PHP", + "homepage": "http://github.com/google/google-auth-library-php", + "keywords": [ + "Authentication", + "google", + "oauth2" + ], + "time": "2017-10-10T17:01:45+00:00" + }, + { + "name": "google/recaptcha", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/google/recaptcha.git", + "reference": "5a56d15ca10a7b75158178752b2ad8f755eb4f78" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/google/recaptcha/zipball/5a56d15ca10a7b75158178752b2ad8f755eb4f78", + "reference": "5a56d15ca10a7b75158178752b2ad8f755eb4f78", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "ReCaptcha\\": "src/ReCaptcha" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Client library for reCAPTCHA, a free service that protect websites from spam and abuse.", + "homepage": "http://www.google.com/recaptcha/", + "keywords": [ + "Abuse", + "captcha", + "recaptcha", + "spam" + ], + "time": "2017-03-09T18:44:34+00:00" + }, + { + "name": "guzzle/guzzle", + "version": "v3.9.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle3.git", + "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9", + "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": ">=5.3.3", + "symfony/event-dispatcher": "~2.1" + }, + "replace": { + "guzzle/batch": "self.version", + "guzzle/cache": "self.version", + "guzzle/common": "self.version", + "guzzle/http": "self.version", + "guzzle/inflection": "self.version", + "guzzle/iterator": "self.version", + "guzzle/log": "self.version", + "guzzle/parser": "self.version", + "guzzle/plugin": "self.version", + "guzzle/plugin-async": "self.version", + "guzzle/plugin-backoff": "self.version", + "guzzle/plugin-cache": "self.version", + "guzzle/plugin-cookie": "self.version", + "guzzle/plugin-curlauth": "self.version", + "guzzle/plugin-error-response": "self.version", + "guzzle/plugin-history": "self.version", + "guzzle/plugin-log": "self.version", + "guzzle/plugin-md5": "self.version", + "guzzle/plugin-mock": "self.version", + "guzzle/plugin-oauth": "self.version", + "guzzle/service": "self.version", + "guzzle/stream": "self.version" + }, + "require-dev": { + "doctrine/cache": "~1.3", + "monolog/monolog": "~1.0", + "phpunit/phpunit": "3.7.*", + "psr/log": "~1.0", + "symfony/class-loader": "~2.1", + "zendframework/zend-cache": "2.*,<2.3", + "zendframework/zend-log": "2.*,<2.3" + }, + "suggest": { + "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.9-dev" + } + }, + "autoload": { + "psr-0": { + "Guzzle": "src/", + "Guzzle\\Tests": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Guzzle Community", + "homepage": "https://github.com/guzzle/guzzle/contributors" + } + ], + "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "abandoned": "guzzlehttp/guzzle", + "time": "2015-03-18T18:23:50+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.3.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699", + "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.4", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.0 || ^5.0", + "psr/log": "^1.0" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2017-06-22T18:50:49+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-12-20T10:07:11+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "request", + "response", + "stream", + "uri", + "url" + ], + "time": "2017-03-20T17:10:46+00:00" + }, + { + "name": "guzzlehttp/ringphp", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/RingPHP.git", + "reference": "dbbb91d7f6c191e5e405e900e3102ac7f261bc0b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/dbbb91d7f6c191e5e405e900e3102ac7f261bc0b", + "reference": "dbbb91d7f6c191e5e405e900e3102ac7f261bc0b", + "shasum": "" + }, + "require": { + "guzzlehttp/streams": "~3.0", + "php": ">=5.4.0", + "react/promise": "~2.0" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "~4.0" + }, + "suggest": { + "ext-curl": "Guzzle will use specific adapters if cURL is present" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Ring\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Provides a simple API and specification that abstracts away the details of HTTP into a single PHP function.", + "abandoned": true, + "time": "2015-05-20T03:37:09+00:00" + }, + { + "name": "guzzlehttp/streams", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/streams.git", + "reference": "47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/streams/zipball/47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5", + "reference": "47aaa48e27dae43d39fc1cea0ccf0d84ac1a2ba5", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Stream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Provides a simple abstraction over streams of data", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "Guzzle", + "stream" + ], + "abandoned": true, + "time": "2014-10-12T19:18:40+00:00" + }, + { + "name": "hoa/compiler", + "version": "2.15.10.29", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Compiler.git", + "reference": "ec0849fd3c1472fbcd86c3c961981f0cfe1f8d39" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Compiler/zipball/ec0849fd3c1472fbcd86c3c961981f0cfe1f8d39", + "reference": "ec0849fd3c1472fbcd86c3c961981f0cfe1f8d39", + "shasum": "" + }, + "require": { + "hoa/core": "~2.0", + "hoa/file": "~0.0", + "hoa/iterator": "~1.0", + "hoa/math": "~0.0", + "hoa/regex": "~0.0", + "hoa/visitor": "~1.0" + }, + "require-dev": { + "hoa/json": "~1.0", + "hoa/test": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Compiler\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "http://hoa-project.net/" + } + ], + "description": "The Hoa\\Compiler library.", + "homepage": "http://hoa-project.net/", + "keywords": [ + "algebraic", + "ast", + "compiler", + "context-free", + "coverage", + "exhaustive", + "grammar", + "isotropic", + "language", + "lexer", + "library", + "ll1", + "llk", + "parser", + "pp", + "random", + "regular", + "rule", + "sampler", + "syntax", + "token", + "trace", + "uniform" + ], + "time": "2015-10-29T21:35:12+00:00" + }, + { + "name": "hoa/console", + "version": "2.15.07.27", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Console.git", + "reference": "3b871f5f1059a3664acb5380ebadd988daa7a0db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Console/zipball/3b871f5f1059a3664acb5380ebadd988daa7a0db", + "reference": "3b871f5f1059a3664acb5380ebadd988daa7a0db", + "shasum": "" + }, + "require": { + "hoa/core": "~2.0", + "hoa/stream": "~0.0", + "hoa/ustring": "~3.0" + }, + "require-dev": { + "hoa/test": "~1.0" + }, + "suggest": { + "ext-pcntl": "To enable hoa://Event/Console/Window:resize.", + "hoa/dispatcher": "To use the console kit.", + "hoa/router": "To use the console kit." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Console\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "http://hoa-project.net/" + } + ], + "description": "The Hoa\\Console library.", + "homepage": "http://hoa-project.net/", + "keywords": [ + "autocompletion", + "chrome", + "cli", + "console", + "cursor", + "getoption", + "library", + "option", + "parser", + "processus", + "readline", + "terminfo", + "tput", + "window" + ], + "time": "2015-07-27T07:52:10+00:00" + }, + { + "name": "hoa/core", + "version": "2.15.11.09", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Core.git", + "reference": "5538b1e90e2c66c90df5cc45e03fb85d047be900" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Core/zipball/5538b1e90e2c66c90df5cc45e03fb85d047be900", + "reference": "5538b1e90e2c66c90df5cc45e03fb85d047be900", + "shasum": "" + }, + "require": { + "ext-spl": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "hoa/test": "~1.0" + }, + "suggest": { + "ext-mbstring": "ext/mbstring must be present (or a third implementation).", + "hoa/cli": "To use the `hoa` script." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Core\\": "." + }, + "files": [ + "Core.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "http://hoa-project.net/" + } + ], + "description": "The Hoa\\Core library.", + "homepage": "http://hoa-project.net/", + "keywords": [ + "consistency", + "core", + "data", + "event", + "library", + "listener", + "parameter", + "protocol" + ], + "abandoned": "hoa/consistency", + "time": "2015-11-09T06:51:06+00:00" + }, + { + "name": "hoa/dispatcher", + "version": "0.15.11.09", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Dispatcher.git", + "reference": "45fd0484824b2a3a5059296eb2403399606627d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Dispatcher/zipball/45fd0484824b2a3a5059296eb2403399606627d9", + "reference": "45fd0484824b2a3a5059296eb2403399606627d9", + "shasum": "" + }, + "require": { + "hoa/core": "~2.0" + }, + "require-dev": { + "hoa/router": "~2.0", + "hoa/test": "~1.0", + "hoa/view": "~2.0" + }, + "suggest": { + "hoa/router": "Provide routers.", + "hoa/view": "Provide view interface." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Dispatcher\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "http://hoa-project.net/" + } + ], + "description": "The Hoa\\Dispatcher library.", + "homepage": "http://hoa-project.net/", + "keywords": [ + "dispatcher", + "kit", + "library" + ], + "time": "2015-11-09T06:52:08+00:00" + }, + { + "name": "hoa/file", + "version": "0.15.11.09", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/File.git", + "reference": "f46fe552ff79cb6c93a2ff9c25cfbc134fbd57ee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/File/zipball/f46fe552ff79cb6c93a2ff9c25cfbc134fbd57ee", + "reference": "f46fe552ff79cb6c93a2ff9c25cfbc134fbd57ee", + "shasum": "" + }, + "require": { + "hoa/core": "~2.0", + "hoa/iterator": "~1.0", + "hoa/stream": "~0.0" + }, + "require-dev": { + "hoa/test": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\File\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "http://hoa-project.net/" + } + ], + "description": "The Hoa\\File library.", + "homepage": "http://hoa-project.net/", + "keywords": [ + "Socket", + "directory", + "file", + "finder", + "library", + "link", + "temporary" + ], + "time": "2015-11-09T06:55:20+00:00" + }, + { + "name": "hoa/iterator", + "version": "1.15.10.29", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Iterator.git", + "reference": "a64ed9fd62579a34e4450134d6d1abdf77d54435" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Iterator/zipball/a64ed9fd62579a34e4450134d6d1abdf77d54435", + "reference": "a64ed9fd62579a34e4450134d6d1abdf77d54435", + "shasum": "" + }, + "require": { + "hoa/core": "~2.0" + }, + "require-dev": { + "hoa/test": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Iterator\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "http://hoa-project.net/" + } + ], + "description": "The Hoa\\Iterator library.", + "homepage": "http://hoa-project.net/", + "keywords": [ + "iterator", + "library" + ], + "time": "2015-10-29T21:37:16+00:00" + }, + { + "name": "hoa/math", + "version": "0.15.10.26", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Math.git", + "reference": "62631c65d9a4f1b8bb4c4a3d6cdff0e8971d684e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Math/zipball/62631c65d9a4f1b8bb4c4a3d6cdff0e8971d684e", + "reference": "62631c65d9a4f1b8bb4c4a3d6cdff0e8971d684e", + "shasum": "" + }, + "require": { + "hoa/compiler": "~2.0", + "hoa/core": "~2.0", + "hoa/iterator": "~1.0" + }, + "require-dev": { + "hoa/test": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Math\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "http://hoa-project.net/" + } + ], + "description": "The Hoa\\Math library.", + "homepage": "http://hoa-project.net/", + "keywords": [ + "arrangement", + "combination", + "combinatorics", + "counting", + "library", + "math", + "permutation", + "sampler", + "set" + ], + "time": "2015-10-26T15:22:52+00:00" + }, + { + "name": "hoa/regex", + "version": "0.15.08.13", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Regex.git", + "reference": "2ef8a77ef3885ca202fcd9c31a8e54c44cd04232" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Regex/zipball/2ef8a77ef3885ca202fcd9c31a8e54c44cd04232", + "reference": "2ef8a77ef3885ca202fcd9c31a8e54c44cd04232", + "shasum": "" + }, + "require": { + "hoa/core": "~2.0", + "hoa/math": "~0.0", + "hoa/ustring": "~3.0", + "hoa/visitor": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Regex\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "http://hoa-project.net/" + } + ], + "description": "The Hoa\\Regex library.", + "homepage": "http://hoa-project.net/", + "keywords": [ + "compiler", + "library", + "regex" + ], + "time": "2015-08-13T06:48:47+00:00" + }, + { + "name": "hoa/router", + "version": "2.15.10.21", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Router.git", + "reference": "6d9a39c5655660ea80d8196fddccdc02054ea3bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Router/zipball/6d9a39c5655660ea80d8196fddccdc02054ea3bd", + "reference": "6d9a39c5655660ea80d8196fddccdc02054ea3bd", + "shasum": "" + }, + "require": { + "hoa/core": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Router\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "http://hoa-project.net/" + } + ], + "description": "The Hoa\\Router library.", + "homepage": "http://hoa-project.net/", + "keywords": [ + "cli", + "http", + "library", + "router" + ], + "time": "2015-10-21T14:12:51+00:00" + }, + { + "name": "hoa/stream", + "version": "0.15.10.26", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Stream.git", + "reference": "3bc446bc00849bf51166adc415d77aa375d48d8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Stream/zipball/3bc446bc00849bf51166adc415d77aa375d48d8c", + "reference": "3bc446bc00849bf51166adc415d77aa375d48d8c", + "shasum": "" + }, + "require": { + "hoa/core": "~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Stream\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "http://hoa-project.net/" + } + ], + "description": "The Hoa\\Stream library.", + "homepage": "http://hoa-project.net/", + "keywords": [ + "Context", + "bucket", + "composite", + "filter", + "in", + "library", + "out", + "protocol", + "stream", + "wrapper" + ], + "time": "2015-10-26T12:21:43+00:00" + }, + { + "name": "hoa/ustring", + "version": "3.15.11.09", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Ustring.git", + "reference": "8506be4910212b1a2beb9014763a8a4fbd871001" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Ustring/zipball/8506be4910212b1a2beb9014763a8a4fbd871001", + "reference": "8506be4910212b1a2beb9014763a8a4fbd871001", + "shasum": "" + }, + "require": { + "hoa/core": "~2.0" + }, + "require-dev": { + "hoa/test": "~1.0" + }, + "suggest": { + "ext-iconv": "ext/iconv must be present (or a third implementation) to use Hoa\\Ustring::transcode().", + "ext-intl": "To get a better Hoa\\Ustring::toAscii() and Hoa\\Ustring::compareTo()." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Ustring\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "http://hoa-project.net/" + } + ], + "description": "The Hoa\\Ustring library.", + "homepage": "http://hoa-project.net/", + "keywords": [ + "library", + "search", + "string", + "unicode" + ], + "time": "2015-11-09T06:44:33+00:00" + }, + { + "name": "hoa/visitor", + "version": "1.15.08.17", + "source": { + "type": "git", + "url": "https://github.com/hoaproject/Visitor.git", + "reference": "e30bfff741f71979f6476a41548e34afe8053c67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hoaproject/Visitor/zipball/e30bfff741f71979f6476a41548e34afe8053c67", + "reference": "e30bfff741f71979f6476a41548e34afe8053c67", + "shasum": "" + }, + "require": { + "hoa/core": "~2.0" + }, + "require-dev": { + "hoa/test": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Hoa\\Visitor\\": "." + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Ivan Enderlin", + "email": "ivan.enderlin@hoa-project.net" + }, + { + "name": "Hoa community", + "homepage": "http://hoa-project.net/" + } + ], + "description": "The Hoa\\Visitor library.", + "homepage": "http://hoa-project.net/", + "keywords": [ + "library", + "structure", + "visit", + "visitor" + ], + "time": "2015-08-17T06:30:58+00:00" + }, + { + "name": "igorw/get-in", + "version": "v1.0.3", + "source": { + "type": "git", + "url": "https://github.com/igorw/get-in.git", + "reference": "170ded831f49abc6a6061f655aba9bdbcf7b8111" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/igorw/get-in/zipball/170ded831f49abc6a6061f655aba9bdbcf7b8111", + "reference": "170ded831f49abc6a6061f655aba9bdbcf7b8111", + "shasum": "" + }, + "require": { + "php": ">=5.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "files": [ + "src/get_in.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "Functions for for hash map (assoc array) traversal.", + "keywords": [ + "assoc-array", + "hash-map" + ], + "time": "2014-12-15T23:03:51+00:00" + }, + { + "name": "imagine/imagine", + "version": "0.6.x-dev", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/Imagine.git", + "reference": "6605d13e3b24f335fe80099c193546671158c041" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/Imagine/zipball/6605d13e3b24f335fe80099c193546671158c041", + "reference": "6605d13e3b24f335fe80099c193546671158c041", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "sami/sami": "dev-master" + }, + "suggest": { + "ext-gd": "to use the GD implementation", + "ext-gmagick": "to use the Gmagick implementation", + "ext-imagick": "to use the Imagick implementation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "0.7-dev" + } + }, + "autoload": { + "psr-0": { + "Imagine": "lib/" + } + }, + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bulat Shakirzyanov", + "email": "mallluhuct@gmail.com", + "homepage": "http://avalanche123.com" + } + ], + "description": "Image processing for PHP 5.3", + "homepage": "http://imagine.readthedocs.org/", + "keywords": [ + "drawing", + "graphics", + "image manipulation", + "image processing" + ], + "support": { + "source": "https://github.com/alchemy-fr/Imagine/tree/alchemy-0.6.2" + }, + "time": "2015-01-13T18:12:26+00:00" + }, + { + "name": "ircmaxell/password-compat", + "version": "v1.0.4", + "source": { + "type": "git", + "url": "https://github.com/ircmaxell/password_compat.git", + "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ircmaxell/password_compat/zipball/5c5cde8822a69545767f7c7f3058cb15ff84614c", + "reference": "5c5cde8822a69545767f7c7f3058cb15ff84614c", + "shasum": "" + }, + "require-dev": { + "phpunit/phpunit": "4.*" + }, + "type": "library", + "autoload": { + "files": [ + "lib/password.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Anthony Ferrara", + "email": "ircmaxell@php.net", + "homepage": "http://blog.ircmaxell.com" + } + ], + "description": "A compatibility library for the proposed simplified password hashing algorithm: https://wiki.php.net/rfc/password_hash", + "homepage": "https://github.com/ircmaxell/password_compat", + "keywords": [ + "hashing", + "password" + ], + "time": "2014-11-20T16:49:30+00:00" + }, + { + "name": "ircmaxell/security-lib", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/ircmaxell/SecurityLib.git", + "reference": "f3db6de12c20c9bcd1aa3db4353a1bbe0e44e1b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ircmaxell/SecurityLib/zipball/f3db6de12c20c9bcd1aa3db4353a1bbe0e44e1b5", + "reference": "f3db6de12c20c9bcd1aa3db4353a1bbe0e44e1b5", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "mikey179/vfsstream": "1.1.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "SecurityLib": "lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Anthony Ferrara", + "email": "ircmaxell@ircmaxell.com", + "homepage": "http://blog.ircmaxell.com" + } + ], + "description": "A Base Security Library", + "homepage": "https://github.com/ircmaxell/SecurityLib", + "time": "2015-03-20T14:31:23+00:00" + }, + { + "name": "jms/metadata", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/metadata.git", + "reference": "6a06970a10e0a532fb52d3959547123b84a3b3ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/6a06970a10e0a532fb52d3959547123b84a3b3ab", + "reference": "6a06970a10e0a532fb52d3959547123b84a3b3ab", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "doctrine/cache": "~1.0", + "symfony/cache": "~3.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5.x-dev" + } + }, + "autoload": { + "psr-0": { + "Metadata\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Class/method/property metadata management in PHP", + "keywords": [ + "annotations", + "metadata", + "xml", + "yaml" + ], + "time": "2016-12-05T10:18:33+00:00" + }, + { + "name": "jms/parser-lib", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/parser-lib.git", + "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/parser-lib/zipball/c509473bc1b4866415627af0e1c6cc8ac97fa51d", + "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d", + "shasum": "" + }, + "require": { + "phpoption/phpoption": ">=0.9,<2.0-dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "JMS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "description": "A library for easily creating recursive-descent parsers.", + "time": "2012-11-18T18:08:43+00:00" + }, + { + "name": "jms/serializer", + "version": "0.16.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/serializer.git", + "reference": "c8a171357ca92b6706e395c757f334902d430ea9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/c8a171357ca92b6706e395c757f334902d430ea9", + "reference": "c8a171357ca92b6706e395c757f334902d430ea9", + "shasum": "" + }, + "require": { + "doctrine/annotations": "1.*", + "jms/metadata": "~1.1", + "jms/parser-lib": "1.*", + "php": ">=5.3.2", + "phpcollection/phpcollection": "~0.1" + }, + "require-dev": { + "doctrine/orm": "~2.1", + "doctrine/phpcr-odm": "~1.0.1", + "jackalope/jackalope-doctrine-dbal": "1.0.*", + "propel/propel1": "~1.7", + "symfony/filesystem": "2.*", + "symfony/form": "~2.1", + "symfony/translation": "~2.0", + "symfony/validator": "~2.0", + "symfony/yaml": "2.*", + "twig/twig": ">=1.8,<2.0-dev" + }, + "suggest": { + "symfony/yaml": "Required if you'd like to serialize data to YAML format." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.15-dev" + } + }, + "autoload": { + "psr-0": { + "JMS\\Serializer": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh", + "role": "Developer of wrapped JMSSerializerBundle" + } + ], + "description": "Library for (de-)serializing data of any complexity; supports XML, JSON, and YAML.", + "homepage": "http://jmsyst.com/libs/serializer", + "keywords": [ + "deserialization", + "jaxb", + "json", + "serialization", + "xml" + ], + "time": "2014-03-18T08:39:00+00:00" + }, + { + "name": "jms/translation-bundle", + "version": "dev-rebase-2015-10-20", + "target-dir": "JMS/TranslationBundle", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/JMSTranslationBundle.git", + "reference": "aff66e65736d9fddbd17cac5a5f0c6fd044c6a92" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/JMSTranslationBundle/zipball/aff66e65736d9fddbd17cac5a5f0c6fd044c6a92", + "reference": "aff66e65736d9fddbd17cac5a5f0c6fd044c6a92", + "shasum": "" + }, + "require": { + "nikic/php-parser": "~1.4.1", + "symfony/console": "*", + "symfony/framework-bundle": "~2.1" + }, + "conflict": { + "twig/twig": "<1.12" + }, + "require-dev": { + "jms/di-extra-bundle": ">=1.1", + "sensio/framework-extra-bundle": "*", + "symfony/browser-kit": "*", + "symfony/class-loader": "*", + "symfony/css-selector": "*", + "symfony/expression-language": "~2.6", + "symfony/finder": "*", + "symfony/form": "*", + "symfony/process": "*", + "symfony/security": "*", + "symfony/twig-bundle": "*", + "symfony/validator": "*", + "symfony/yaml": "*" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev", + "dev-rebase-2015-10-20": "1.1-dev" + } + }, + "autoload": { + "psr-0": { + "JMS\\TranslationBundle": "" + } + }, + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Puts the Symfony2 Translation Component on steroids", + "homepage": "http://jmsyst.com/bundles/JMSTranslationBundle", + "keywords": [ + "extract", + "extraction", + "i18n", + "interface", + "multilanguage", + "translation", + "ui", + "webinterface" + ], + "support": { + "source": "https://github.com/alchemy-fr/JMSTranslationBundle/tree/rebase-2015-10-20" + }, + "time": "2015-11-04T15:09:44+00:00" + }, + { + "name": "justinrainbow/json-schema", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "c21534c635f03428e92254333fab4ae35b2cdfd9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/c21534c635f03428e92254333fab4ae35b2cdfd9", + "reference": "c21534c635f03428e92254333fab4ae35b2cdfd9", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "json-schema/json-schema-test-suite": "1.1.2", + "phpdocumentor/phpdocumentor": "~2", + "phpunit/phpunit": "^4.8.22" + }, + "bin": [ + "bin/validate-json" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "time": "2016-05-10T20:38:51+00:00" + }, + { + "name": "league/flysystem", + "version": "1.0.34", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "469ad53c13ea19a0e54e3e5d70f61227ddcc0299" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/469ad53c13ea19a0e54e3e5d70f61227ddcc0299", + "reference": "469ad53c13ea19a0e54e3e5d70f61227ddcc0299", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "conflict": { + "league/flysystem-sftp": "<1.0.6" + }, + "require-dev": { + "ext-fileinfo": "*", + "mockery/mockery": "~0.9", + "phpspec/phpspec": "^2.2", + "phpunit/phpunit": "~4.8" + }, + "suggest": { + "ext-fileinfo": "Required for MimeType", + "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", + "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", + "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", + "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", + "league/flysystem-copy": "Allows you to use Copy.com storage", + "league/flysystem-dropbox": "Allows you to use Dropbox storage", + "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", + "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", + "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", + "league/flysystem-webdav": "Allows you to use WebDAV storage", + "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Filesystem abstraction: Many filesystems, one API.", + "keywords": [ + "Cloud Files", + "WebDAV", + "abstraction", + "aws", + "cloud", + "copy.com", + "dropbox", + "file systems", + "files", + "filesystem", + "filesystems", + "ftp", + "rackspace", + "remote", + "s3", + "sftp", + "storage" + ], + "time": "2017-01-30T17:41:17+00:00" + }, + { + "name": "league/flysystem-aws-s3-v2", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-aws-s3-v2.git", + "reference": "e464a35e34abed572c76b76aa2f278d178e141c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v2/zipball/e464a35e34abed572c76b76aa2f278d178e141c6", + "reference": "e464a35e34abed572c76b76aa2f278d178e141c6", + "shasum": "" + }, + "require": { + "aws/aws-sdk-php": "~2.7", + "league/flysystem": "~1.0", + "php": ">=5.4.0" + }, + "require-dev": { + "mockery/mockery": "0.9.*", + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\AwsS3v2\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Flysystem adapter for AWS S3 SDK v2", + "time": "2015-10-15T15:55:48+00:00" + }, + { + "name": "league/fractal", + "version": "dev-webgalleries", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/fractal.git", + "reference": "af1acc0275438571bc8c1d08a05a4b5af92c9f97" + }, + "require": { + "php": ">=5.4" + }, + "require-dev": { + "illuminate/contracts": "~5.0", + "mockery/mockery": "~0.9", + "pagerfanta/pagerfanta": "~1.0.0", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~1.5", + "zendframework/zend-paginator": "~2.3" + }, + "suggest": { + "illuminate/pagination": "The Illuminate Pagination component.", + "pagerfanta/pagerfanta": "Pagerfanta Paginator", + "zendframework/zend-paginator": "Zend Framework Paginator" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.13-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Fractal\\": "src" + } + }, + "autoload-dev": { + "psr-4": { + "League\\Fractal\\Test\\": "test" + } + }, + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Phil Sturgeon", + "email": "me@philsturgeon.uk", + "homepage": "http://philsturgeon.uk/", + "role": "Developer" + } + ], + "description": "Handle the output of complex data structures ready for API output.", + "homepage": "http://fractal.thephpleague.com/", + "keywords": [ + "api", + "json", + "league", + "rest" + ], + "time": "2016-12-02T14:55:48+00:00" + }, + { + "name": "media-alchemyst/media-alchemyst", + "version": "0.5.5", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/Media-Alchemyst.git", + "reference": "3bd3204b69882f495adfb617383a077face92ed0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/Media-Alchemyst/zipball/3bd3204b69882f495adfb617383a077face92ed0", + "reference": "3bd3204b69882f495adfb617383a077face92ed0", + "shasum": "" + }, + "require": { + "alchemy/ghostscript": "~0.4.0", + "alchemy/mediavorus": "^0.4.4", + "imagine/imagine": "^0.6.2", + "monolog/monolog": "~1.0", + "neutron/temporary-filesystem": "^2.1.1", + "php": ">=5.3.3", + "php-ffmpeg/php-ffmpeg": ">=0.4.2,<0.6", + "php-mp4box/php-mp4box": "~0.3.0", + "php-unoconv/php-unoconv": "~0.3.1", + "pimple/pimple": "~1.0", + "swftools/swftools": "~0.3.0", + "symfony/console": "^2.1|^3.0", + "symfony/filesystem": "^2.1|^3.0", + "symfony/process": "^2.1.1|^3.0" + }, + "require-dev": { + "alchemy/phpexiftool": "^0.4.0|^0.5.0", + "neutron/silex-imagine-provider": "~0.1", + "phpunit/phpunit": "^4.1|^5.0", + "silex/silex": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.5.x-dev" + } + }, + "autoload": { + "psr-0": { + "MediaAlchemyst": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Neutron", + "email": "imprec@gmail.com", + "homepage": "http://www.lickmychip.com/" + }, + { + "name": "Phraseanet Team", + "email": "info@alchemy.fr", + "homepage": "http://www.phraseanet.com/" + } + ], + "description": "An Object Oriented wrapper for easy multimedia conversion, based on Imagine, FFMpeg, SwfTools, Unoconv and other libs", + "keywords": [ + "audio", + "audio processing", + "image", + "image processing", + "video", + "video processing" + ], + "time": "2019-12-11T07:20:45+00:00" + }, + { + "name": "monolog/monolog", + "version": "1.22.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "bad29cb8d18ab0315e6c477751418a82c850d558" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bad29cb8d18ab0315e6c477751418a82c850d558", + "reference": "bad29cb8d18ab0315e6c477751418a82c850d558", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "~5.3" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2016-11-26T00:15:39+00:00" + }, + { + "name": "mrclay/minify", + "version": "2.1.7", + "source": { + "type": "git", + "url": "https://github.com/mrclay/minify.git", + "reference": "db7fe244932ea77cf1438965693672ea12b33da8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mrclay/minify/zipball/db7fe244932ea77cf1438965693672ea12b33da8", + "reference": "db7fe244932ea77cf1438965693672ea12b33da8", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "php": ">=5.2.1" + }, + "type": "library", + "autoload": { + "classmap": [ + "min/lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Steve Clay", + "email": "steve@mrclay.org", + "homepage": "http://www.mrclay.org/", + "role": "Developer" + } + ], + "description": "Minify is a PHP5 app that helps you follow several rules for client-side performance. It combines multiple CSS or Javascript files, removes unnecessary whitespace and comments, and serves them with gzip encoding and optimal client-side cache headers", + "homepage": "http://code.google.com/p/minify/", + "time": "2013-07-23T19:58:28+00:00" + }, + { + "name": "neutron/process-manager", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/romainneutron/ProcessManager.git", + "reference": "2b3e2a4aa969ce82627199bcdd81fb2553ab25df" + }, + "require": { + "php": ">=5.3.3", + "symfony/process": "~2.4" + }, + "require-dev": { + "phpunit/phpunit": "~3.7", + "sami/sami": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-0": { + "Neutron": "src" + } + }, + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Neutron", + "email": "imprec@gmail.com", + "homepage": "http://www.lickmychip.com/" + } + ], + "time": "2014-02-13T20:27:33+00:00" + }, + { + "name": "neutron/recaptcha", + "version": "0.1.3", + "source": { + "type": "git", + "url": "https://github.com/romainneutron/ReCaptcha.git", + "reference": "f9de705c5b8631ec74353bb9f0b5077d50328ab2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/romainneutron/ReCaptcha/zipball/f9de705c5b8631ec74353bb9f0b5077d50328ab2", + "reference": "f9de705c5b8631ec74353bb9f0b5077d50328ab2", + "shasum": "" + }, + "require": { + "guzzle/guzzle": "~3.0" + }, + "require-dev": { + "silex/silex": "1.0.x-dev@dev", + "symfony/http-foundation": "~2.0" + }, + "suggest": { + "symfony/http-foundation": "To bind symfony request to ReCaptcha" + }, + "type": "library", + "autoload": { + "psr-0": { + "Neutron": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Neutron", + "email": "imprec@gmail.com", + "homepage": "http://www.lickmychip.com/" + } + ], + "description": "ReCaptcha Client", + "time": "2013-02-14T13:42:00+00:00" + }, + { + "name": "neutron/signal-handler", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/romainneutron/signal-handler.git", + "reference": "5f2069bf4a5901a65be51f57ea60779a279564c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/romainneutron/signal-handler/zipball/5f2069bf4a5901a65be51f57ea60779a279564c1", + "reference": "5f2069bf4a5901a65be51f57ea60779a279564c1", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~3.7" + }, + "type": "library", + "autoload": { + "psr-0": { + "Neutron": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Neutron", + "email": "imprec@gmail.com", + "homepage": "http://www.lickmychip.com/" + } + ], + "description": "A library to ease the use of signal handling.", + "keywords": [ + "signal" + ], + "time": "2014-01-15T17:24:13+00:00" + }, + { + "name": "neutron/silex-filesystem-provider", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/romainneutron/Silex-Filesystem-Service-Provider.git", + "reference": "98771524bba1ffa58373c4c06d438f5fb5442ff4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/romainneutron/Silex-Filesystem-Service-Provider/zipball/98771524bba1ffa58373c4c06d438f5fb5442ff4", + "reference": "98771524bba1ffa58373c4c06d438f5fb5442ff4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "silex/silex": ">=1.0", + "symfony/filesystem": ">=2.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Neutron": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Neutron", + "email": "imprec@gmail.com", + "homepage": "http://www.lickmychip.com/" + } + ], + "description": "A Silex Provider for Symfony Filesystem component", + "keywords": [ + "filesystem", + "silex", + "temporary-filesystem" + ], + "time": "2012-11-08T21:07:08+00:00" + }, + { + "name": "neutron/silex-imagine-provider", + "version": "0.1.2", + "source": { + "type": "git", + "url": "https://github.com/romainneutron/Imagine-Silex-Service-Provider.git", + "reference": "a8a7862ae90419f2b23746cd8436c2310e4eb084" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/romainneutron/Imagine-Silex-Service-Provider/zipball/a8a7862ae90419f2b23746cd8436c2310e4eb084", + "reference": "a8a7862ae90419f2b23746cd8436c2310e4eb084", + "shasum": "" + }, + "require": { + "imagine/imagine": "*", + "php": ">=5.3.3", + "silex/silex": "~1.0" + }, + "require-dev": { + "symfony/browser-kit": "~2.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Neutron": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Neutron", + "email": "imprec@gmail.com", + "homepage": "http://www.lickmychip.com/" + } + ], + "description": "A Silex service provider for Imagine Image Processing Library", + "keywords": [ + "image processing", + "imagine", + "silex" + ], + "time": "2013-05-03T18:48:51+00:00" + }, + { + "name": "neutron/temporary-filesystem", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/romainneutron/Temporary-Filesystem.git", + "reference": "0a72a1c858b95fd469d87baa333f627978504ea8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/romainneutron/Temporary-Filesystem/zipball/0a72a1c858b95fd469d87baa333f627978504ea8", + "reference": "0a72a1c858b95fd469d87baa333f627978504ea8", + "shasum": "" + }, + "require": { + "php": "^5.3.9 || ^7.0", + "symfony/filesystem": "^2.3 || ^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8" + }, + "type": "library", + "autoload": { + "psr-0": { + "Neutron": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Neutron", + "email": "imprec@gmail.com" + } + ], + "description": "Symfony filesystem extension to handle temporary files", + "time": "2016-03-05T10:22:50+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v1.4.1", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51", + "reference": "f78af2c9c86107aa1a34cd1dbb5bbe9eeb0d9f51", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "files": [ + "lib/bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "time": "2015-09-19T14:15:08+00:00" + }, + { + "name": "ocramius/proxy-manager", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/Ocramius/ProxyManager.git", + "reference": "57e9272ec0e8deccf09421596e0e2252df440e11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/57e9272ec0e8deccf09421596e0e2252df440e11", + "reference": "57e9272ec0e8deccf09421596e0e2252df440e11", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "zendframework/zend-code": ">2.2.5,<3.0" + }, + "require-dev": { + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "1.5.*" + }, + "suggest": { + "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects", + "zendframework/zend-json": "To have the JsonRpc adapter (Remote Object feature)", + "zendframework/zend-soap": "To have the Soap adapter (Remote Object feature)", + "zendframework/zend-stdlib": "To use the hydrator proxy", + "zendframework/zend-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "ProxyManager\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies", + "homepage": "https://github.com/Ocramius/ProxyManager", + "keywords": [ + "aop", + "lazy loading", + "proxy", + "proxy pattern", + "service proxies" + ], + "time": "2015-08-09T04:28:19+00:00" + }, + { + "name": "pagerfanta/pagerfanta", + "version": "v1.0.4", + "source": { + "type": "git", + "url": "https://github.com/whiteoctober/Pagerfanta.git", + "reference": "f846c5e06bb66df659a688ea4734aab49de589d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/whiteoctober/Pagerfanta/zipball/f846c5e06bb66df659a688ea4734aab49de589d6", + "reference": "f846c5e06bb66df659a688ea4734aab49de589d6", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "doctrine/orm": "~2.3", + "doctrine/phpcr-odm": "1.*", + "jackalope/jackalope-doctrine-dbal": "1.*", + "jmikola/geojson": "~1.0", + "mandango/mandango": "~1.0@dev", + "mandango/mondator": "~1.0@dev", + "phpunit/phpunit": "~4 | ~5", + "propel/propel1": "~1.6", + "ruflin/elastica": "~1.3", + "solarium/solarium": "~3.1" + }, + "suggest": { + "doctrine/mongodb-odm": "To use the DoctrineODMMongoDBAdapter.", + "doctrine/orm": "To use the DoctrineORMAdapter.", + "doctrine/phpcr-odm": "To use the DoctrineODMPhpcrAdapter. >= 1.1.0", + "mandango/mandango": "To use the MandangoAdapter.", + "propel/propel1": "To use the PropelAdapter", + "solarium/solarium": "To use the SolariumAdapter." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Pagerfanta\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Pablo Díez", + "email": "pablodip@gmail.com" + } + ], + "description": "Pagination for PHP 5.3", + "keywords": [ + "page", + "pagination", + "paginator", + "paging" + ], + "time": "2016-11-28T09:17:04+00:00" + }, + { + "name": "paragonie/random-lib", + "version": "v2.0.0", + "source": { + "type": "git", + "url": "https://github.com/paragonie/RandomLib.git", + "reference": "b73a1cb8eae7a346824ccee42298046dedbf2415" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/RandomLib/zipball/b73a1cb8eae7a346824ccee42298046dedbf2415", + "reference": "b73a1cb8eae7a346824ccee42298046dedbf2415", + "shasum": "" + }, + "require": { + "ircmaxell/security-lib": "^1.1", + "paragonie/random_compat": "^2", + "paragonie/sodium_compat": "^1.3", + "php": ">=5.3.2" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^1.11", + "mikey179/vfsstream": "^1.6", + "phpunit/phpunit": "^4.8 || >=5.0.0 <5.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "RandomLib": "lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Anthony Ferrara", + "email": "ircmaxell@ircmaxell.com", + "homepage": "http://blog.ircmaxell.com" + }, + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "A Library For Generating Secure Random Numbers", + "homepage": "https://github.com/ircmaxell/RandomLib", + "keywords": [ + "cryptography", + "random", + "random-numbers", + "random-strings" + ], + "time": "2017-10-06T23:34:21+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v2.0.4", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e", + "reference": "a9b97968bcde1c4de2a5ec6cbd06a0f6c919b46e", + "shasum": "" + }, + "require": { + "php": ">=5.2.0" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "autoload": { + "files": [ + "lib/random.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "pseudorandom", + "random" + ], + "time": "2016-11-07T23:38:38+00:00" + }, + { + "name": "paragonie/sodium_compat", + "version": "v1.9.1", + "source": { + "type": "git", + "url": "https://github.com/paragonie/sodium_compat.git", + "reference": "87125d5b265f98c4d1b8d83a1f0726607c229421" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/87125d5b265f98c4d1b8d83a1f0726607c229421", + "reference": "87125d5b265f98c4d1b8d83a1f0726607c229421", + "shasum": "" + }, + "require": { + "paragonie/random_compat": ">=1", + "php": "^5.2.4|^5.3|^5.4|^5.5|^5.6|^7|^8" + }, + "require-dev": { + "phpunit/phpunit": "^3|^4|^5" + }, + "suggest": { + "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.", + "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security." + }, + "type": "library", + "autoload": { + "files": [ + "autoload.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com" + }, + { + "name": "Frank Denis", + "email": "jedisct1@pureftpd.org" + } + ], + "description": "Pure PHP implementation of libsodium; uses the PHP extension if it exists", + "keywords": [ + "Authentication", + "BLAKE2b", + "ChaCha20", + "ChaCha20-Poly1305", + "Chapoly", + "Curve25519", + "Ed25519", + "EdDSA", + "Edwards-curve Digital Signature Algorithm", + "Elliptic Curve Diffie-Hellman", + "Poly1305", + "Pure-PHP cryptography", + "RFC 7748", + "RFC 8032", + "Salpoly", + "Salsa20", + "X25519", + "XChaCha20-Poly1305", + "XSalsa20-Poly1305", + "Xchacha20", + "Xsalsa20", + "aead", + "cryptography", + "ecdh", + "elliptic curve", + "elliptic curve cryptography", + "encryption", + "libsodium", + "php", + "public-key cryptography", + "secret-key cryptography", + "side-channel resistant" + ], + "time": "2019-03-20T17:19:05+00:00" + }, + { + "name": "php-ffmpeg/php-ffmpeg", + "version": "0.5.1", + "source": { + "type": "git", + "url": "https://github.com/PHP-FFMpeg/PHP-FFMpeg.git", + "reference": "c8949fe3df89edd7692368cc110a51a27971f28a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-FFMpeg/PHP-FFMpeg/zipball/c8949fe3df89edd7692368cc110a51a27971f28a", + "reference": "c8949fe3df89edd7692368cc110a51a27971f28a", + "shasum": "" + }, + "require": { + "alchemy/binary-driver": "~1.5", + "doctrine/cache": "~1.0", + "evenement/evenement": "~1.0", + "neutron/temporary-filesystem": "~2.1, >=2.1.1", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~3.7", + "sami/sami": "~1.0", + "silex/silex": "~1.0" + }, + "suggest": { + "php-ffmpeg/extras": "A compilation of common audio & video drivers for PHP-FFMpeg" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.5-dev" + } + }, + "autoload": { + "psr-0": { + "FFMpeg": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Neutron", + "email": "imprec@gmail.com", + "homepage": "http://www.lickmychip.com/" + }, + { + "name": "Phraseanet Team", + "email": "info@alchemy.fr", + "homepage": "http://www.phraseanet.com/" + } + ], + "description": "FFMpeg PHP, an Object Oriented library to communicate with AVconv / ffmpeg", + "keywords": [ + "audio", + "audio processing", + "avconv", + "avprobe", + "ffmpeg", + "ffprobe", + "video", + "video processing" + ], + "time": "2014-08-26T08:46:56+00:00" + }, + { + "name": "php-mp4box/php-mp4box", + "version": "0.3.0", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/PHP-MP4Box.git", + "reference": "baa466be3f6d0b46d27bc0e255e958a95cb7738c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/PHP-MP4Box/zipball/baa466be3f6d0b46d27bc0e255e958a95cb7738c", + "reference": "baa466be3f6d0b46d27bc0e255e958a95cb7738c", + "shasum": "" + }, + "require": { + "alchemy/binary-driver": "~1.5", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~3.7", + "silex/silex": "~1.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "MP4Box": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Neutron", + "email": "imprec@gmail.com", + "homepage": "http://www.lickmychip.com/" + }, + { + "name": "Phraseanet Team", + "email": "info@alchemy.fr", + "homepage": "http://www.phraseanet.com/" + } + ], + "description": "PHP MP4Box, an Object Oriented library for easy file conversion with MP4 Box", + "keywords": [ + "gpac", + "mp4box" + ], + "time": "2013-06-25T10:13:06+00:00" + }, + { + "name": "php-unoconv/php-unoconv", + "version": "0.3.1", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/PHP-Unoconv.git", + "reference": "8fa666972f6c13fe9703dfe894cd311a61f89f33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/PHP-Unoconv/zipball/8fa666972f6c13fe9703dfe894cd311a61f89f33", + "reference": "8fa666972f6c13fe9703dfe894cd311a61f89f33", + "shasum": "" + }, + "require": { + "alchemy/binary-driver": "~1.5", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~3.7", + "silex/silex": "~1.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Unoconv": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Neutron", + "email": "imprec@gmail.com", + "homepage": "http://www.lickmychip.com/" + }, + { + "name": "Phraseanet Team", + "email": "info@alchemy.fr", + "homepage": "http://www.phraseanet.com/" + } + ], + "description": "Unoconv PHP, an Object Oriented library for easy file conversion with LibreOffice's unoconv", + "keywords": [ + "unoconv" + ], + "time": "2019-09-16T09:54:30+00:00" + }, + { + "name": "php-xpdf/php-xpdf", + "version": "0.2.3", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/PHP-XPDF.git", + "reference": "d5e73960108704e0063b81ae777d01b8fb91ae08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/PHP-XPDF/zipball/d5e73960108704e0063b81ae777d01b8fb91ae08", + "reference": "d5e73960108704e0063b81ae777d01b8fb91ae08", + "shasum": "" + }, + "require": { + "alchemy/binary-driver": "~1.5", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~3.7", + "sami/sami": "~1.0", + "silex/silex": "~1.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "XPDF": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Neutron", + "email": "imprec@gmail.com", + "homepage": "http://www.lickmychip.com/" + }, + { + "name": "Phraseanet Team", + "email": "info@alchemy.fr", + "homepage": "http://www.phraseanet.com/" + } + ], + "description": "XPDF PHP, an Object Oriented library to manipulate XPDF", + "keywords": [ + "pdf", + "xpdf" + ], + "time": "2016-07-04T07:30:16+00:00" + }, + { + "name": "phpcollection/phpcollection", + "version": "0.5.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-collection.git", + "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-collection/zipball/f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6", + "reference": "f2bcff45c0da7c27991bbc1f90f47c4b7fb434a6", + "shasum": "" + }, + "require": { + "phpoption/phpoption": "1.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.4-dev" + } + }, + "autoload": { + "psr-0": { + "PhpCollection": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "General-Purpose Collection Library for PHP", + "keywords": [ + "collection", + "list", + "map", + "sequence", + "set" + ], + "time": "2015-05-17T12:39:23+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "4.7.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-0": { + "PhpOption\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "time": "2015-07-25T16:39:46+00:00" + }, + { + "name": "phpseclib/phpseclib", + "version": "2.0.7", + "source": { + "type": "git", + "url": "https://github.com/phpseclib/phpseclib.git", + "reference": "f4b6a522dfa1fd1e477c9cfe5909d5b31f098c0b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/f4b6a522dfa1fd1e477c9cfe5909d5b31f098c0b", + "reference": "f4b6a522dfa1fd1e477c9cfe5909d5b31f098c0b", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phing/phing": "~2.7", + "phpunit/phpunit": "~4.0", + "sami/sami": "~2.0", + "squizlabs/php_codesniffer": "~2.0" + }, + "suggest": { + "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", + "ext-libsodium": "SSH2/SFTP can make use of some algorithms provided by the libsodium-php extension.", + "ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.", + "ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations." + }, + "type": "library", + "autoload": { + "files": [ + "phpseclib/bootstrap.php" + ], + "psr-4": { + "phpseclib\\": "phpseclib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jim Wigginton", + "email": "terrafrost@php.net", + "role": "Lead Developer" + }, + { + "name": "Patrick Monnerat", + "email": "pm@datasphere.ch", + "role": "Developer" + }, + { + "name": "Andreas Fischer", + "email": "bantu@phpbb.com", + "role": "Developer" + }, + { + "name": "Hans-Jürgen Petrich", + "email": "petrich@tronic-media.com", + "role": "Developer" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "role": "Developer" + } + ], + "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", + "homepage": "http://phpseclib.sourceforge.net", + "keywords": [ + "BigInteger", + "aes", + "asn.1", + "asn1", + "blowfish", + "crypto", + "cryptography", + "encryption", + "rsa", + "security", + "sftp", + "signature", + "signing", + "ssh", + "twofish", + "x.509", + "x509" + ], + "time": "2017-10-23T05:04:54+00:00" + }, + { + "name": "pimple/pimple", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/silexphp/Pimple.git", + "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d", + "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Pimple": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Pimple is a simple Dependency Injection Container for PHP 5.3", + "homepage": "http://pimple.sensiolabs.org", + "keywords": [ + "container", + "dependency injection" + ], + "time": "2013-11-22T08:30:29+00:00" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "time": "2016-08-06T20:24:11+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/log", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-10-10T12:19:37+00:00" + }, + { + "name": "ramsey/uuid", + "version": "3.5.2", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "5677cfe02397dd6b58c861870dfaa5d9007d3954" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5677cfe02397dd6b58c861870dfaa5d9007d3954", + "reference": "5677cfe02397dd6b58c861870dfaa5d9007d3954", + "shasum": "" + }, + "require": { + "paragonie/random_compat": "^1.0|^2.0", + "php": ">=5.4" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "apigen/apigen": "^4.1", + "codeception/aspect-mock": "1.0.0", + "doctrine/annotations": "~1.2.0", + "goaop/framework": "1.0.0-alpha.2", + "ircmaxell/random-lib": "^1.1", + "jakub-onderka/php-parallel-lint": "^0.9.0", + "mockery/mockery": "^0.9.4", + "moontoast/math": "^1.1", + "php-mock/php-mock-phpunit": "^0.3|^1.1", + "phpunit/phpunit": "^4.7|>=5.0 <5.4", + "satooshi/php-coveralls": "^0.6.1", + "squizlabs/php_codesniffer": "^2.3" + }, + "suggest": { + "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", + "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", + "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", + "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marijn Huizendveld", + "email": "marijn.huizendveld@gmail.com" + }, + { + "name": "Thibaud Fabre", + "email": "thibaud@aztech.io" + }, + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", + "homepage": "https://github.com/ramsey/uuid", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "time": "2016-11-22T19:21:44+00:00" + }, + { + "name": "react/promise", + "version": "v2.5.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "2760f3898b7e931aa71153852dcd48a75c9b95db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/2760f3898b7e931aa71153852dcd48a75c9b95db", + "reference": "2760f3898b7e931aa71153852dcd48a75c9b95db", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "time": "2016-12-22T14:09:01+00:00" + }, + { + "name": "roave/security-advisories", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/Roave/SecurityAdvisories.git", + "reference": "0698207bf8a9bed212fdde2d8c7cdc77085660c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/0698207bf8a9bed212fdde2d8c7cdc77085660c4", + "reference": "0698207bf8a9bed212fdde2d8c7cdc77085660c4", + "shasum": "" + }, + "conflict": { + "adodb/adodb-php": "<5.20.6", + "amphp/artax": ">=2,<2.0.4|>0.7.1,<1.0.4", + "aws/aws-sdk-php": ">=3,<3.2.1", + "bugsnag/bugsnag-laravel": ">=2,<2.0.2", + "cakephp/cakephp": ">=3,<3.0.15|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=1.3,<1.3.18|>=2.7,<2.7.6|>=3.1,<3.1.4", + "cartalyst/sentry": "<2.1", + "codeigniter/framework": "<=3.0.6", + "composer/composer": "<=1.0.0-alpha11", + "contao-components/mediaelement": ">=2.14.2,<2.21.1", + "contao/core": ">=2.11,<3.5.15", + "doctrine/annotations": ">=1,<1.2.7", + "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", + "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", + "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2", + "doctrine/doctrine-bundle": "<1.5.2", + "doctrine/doctrine-module": "<=0.7.1", + "doctrine/mongodb-odm": ">=1,<1.0.2", + "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", + "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", + "dompdf/dompdf": ">=0.6,<0.6.2", + "drupal/core": ">=8,<8.2.3", + "drupal/drupal": ">=8,<8.2.3", + "firebase/php-jwt": "<2", + "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", + "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", + "gregwar/rst": "<1.0.3", + "guzzlehttp/guzzle": ">=6,<6.2.1|>=4.0.0-rc2,<4.2.4|>=5,<5.3.1", + "illuminate/auth": ">=4,<4.0.99|>=4.1,<4.1.26", + "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29", + "joomla/session": "<1.3.1", + "laravel/framework": ">=4,<4.0.99|>=4.1,<4.1.29", + "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", + "magento/magento2ce": ">=2,<2.2", + "monolog/monolog": ">=1.8,<1.12", + "namshi/jose": "<2.2", + "oro/crm": ">=1.7,<1.7.4", + "oro/platform": ">=1.7,<1.7.4", + "phpmailer/phpmailer": ">=5,<5.2.22", + "pusher/pusher-php-server": "<2.2.1", + "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", + "shopware/shopware": "<4.4|>=5,<5.2.15", + "silverstripe/cms": ">=3.1,<3.1.11|>=3,<=3.0.11", + "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", + "silverstripe/framework": ">=3,<3.3", + "silverstripe/userforms": "<3", + "simplesamlphp/saml2": "<1.8.1|>=1.9,<1.9.1|>=1.10,<1.10.3|>=2,<2.3.3", + "simplesamlphp/simplesamlphp": "<1.14.11", + "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", + "socalnick/scn-social-auth": "<1.15.2", + "swiftmailer/swiftmailer": ">=4,<5.4.5", + "symfony/dependency-injection": ">=2,<2.0.17", + "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.7", + "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2", + "symfony/http-foundation": ">=2,<2.3.27|>=2.4,<2.5.11|>=2.6,<2.6.6", + "symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8", + "symfony/routing": ">=2,<2.0.19", + "symfony/security": ">=2.3,<2.3.37|>=2.4,<2.6.13|>=2.7,<2.7.9|>=2,<2.0.25|>=2.1,<2.1.13|>=2.2,<2.2.9", + "symfony/security-core": ">=2.8,<2.8.6|>=3,<3.0.6|>=2.4,<2.6.13|>=2.7,<2.7.9", + "symfony/security-http": ">=2.4,<2.7.13|>=2.3,<2.3.41|>=2.8,<2.8.6|>=3,<3.0.6", + "symfony/serializer": ">=2,<2.0.11", + "symfony/symfony": ">=2,<2.3.41|>=2.4,<2.7.13|>=2.8,<2.8.6|>=3,<3.0.6", + "symfony/translation": ">=2,<2.0.17", + "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", + "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", + "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", + "thelia/backoffice-default-template": ">=2.1,<2.1.2", + "thelia/thelia": ">=2.1.0-beta1,<2.1.3|>=2.1,<2.1.2", + "twig/twig": "<1.20", + "typo3/cms": ">=6.2,<6.2.30|>=8,<8.4.1|>=7,<7.6.13", + "typo3/flow": ">=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5|>=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1", + "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4", + "willdurand/js-translation-bundle": "<2.1.1", + "yiisoft/yii": ">=1.1.14,<1.1.15", + "yiisoft/yii2": "<2.0.5", + "yiisoft/yii2-bootstrap": "<2.0.4", + "yiisoft/yii2-dev": "<2.0.4", + "yiisoft/yii2-gii": "<2.0.4", + "yiisoft/yii2-jui": "<2.0.4", + "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", + "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", + "zendframework/zend-diactoros": ">=1,<1.0.4", + "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-http": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.3,<2.3.8|>=2.4,<2.4.1", + "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", + "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", + "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", + "zendframework/zend-validator": ">=2.3,<2.3.6", + "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zendframework": ">=2,<2.4.11|>=2.5,<2.5.1", + "zendframework/zendframework1": "<1.12.20", + "zendframework/zendopenid": ">=2,<2.0.2", + "zendframework/zendxml": ">=1,<1.0.1", + "zf-commons/zfc-user": "<1.2.2", + "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", + "zfr/zfr-oauth2-server-module": "<0.1.2" + }, + "type": "metapackage", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "role": "maintainer" + } + ], + "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", + "time": "2017-01-24T18:32:04+00:00" + }, + { + "name": "seld/jsonlint", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "19495c181d6d53a0a13414154e52817e3b504189" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/19495c181d6d53a0a13414154e52817e3b504189", + "reference": "19495c181d6d53a0a13414154e52817e3b504189", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0" + }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ], + "time": "2016-11-14T17:59:58+00:00" + }, + { + "name": "silex/silex", + "version": "v1.3.5", + "source": { + "type": "git", + "url": "https://github.com/silexphp/Silex.git", + "reference": "374c7e04040a6f781c90f7d746726a5daa78e783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/silexphp/Silex/zipball/374c7e04040a6f781c90f7d746726a5daa78e783", + "reference": "374c7e04040a6f781c90f7d746726a5daa78e783", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "pimple/pimple": "~1.0", + "symfony/event-dispatcher": "~2.3|3.0.*", + "symfony/http-foundation": "~2.3|3.0.*", + "symfony/http-kernel": "~2.3|3.0.*", + "symfony/routing": "~2.3|3.0.*" + }, + "require-dev": { + "doctrine/dbal": "~2.2", + "monolog/monolog": "^1.4.1", + "swiftmailer/swiftmailer": "~5", + "symfony/browser-kit": "~2.3|3.0.*", + "symfony/config": "~2.3|3.0.*", + "symfony/css-selector": "~2.3|3.0.*", + "symfony/debug": "~2.3|3.0.*", + "symfony/dom-crawler": "~2.3|3.0.*", + "symfony/finder": "~2.3|3.0.*", + "symfony/form": "~2.3|3.0.*", + "symfony/locale": "~2.3|3.0.*", + "symfony/monolog-bridge": "~2.3|3.0.*", + "symfony/options-resolver": "~2.3|3.0.*", + "symfony/phpunit-bridge": "~2.7", + "symfony/process": "~2.3|3.0.*", + "symfony/security": "~2.3|3.0.*", + "symfony/serializer": "~2.3|3.0.*", + "symfony/translation": "~2.3|3.0.*", + "symfony/twig-bridge": "~2.3|3.0.*", + "symfony/validator": "~2.3|3.0.*", + "twig/twig": "~1.8|~2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Silex\\": "src/Silex" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "The PHP micro-framework based on the Symfony Components", + "homepage": "http://silex.sensiolabs.org", + "keywords": [ + "microframework" + ], + "abandoned": "symfony/flex", + "time": "2016-01-06T14:59:35+00:00" + }, + { + "name": "silex/web-profiler", + "version": "v1.0.8", + "target-dir": "Silex/Provider", + "source": { + "type": "git", + "url": "https://github.com/silexphp/Silex-WebProfiler.git", + "reference": "3b767e6c9006a542cac737474f02671bdf2909cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/silexphp/Silex-WebProfiler/zipball/3b767e6c9006a542cac737474f02671bdf2909cb", + "reference": "3b767e6c9006a542cac737474f02671bdf2909cb", + "shasum": "" + }, + "require": { + "silex/silex": "~1.1", + "symfony/stopwatch": "~2.2", + "symfony/web-profiler-bundle": "~2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Silex\\Provider\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "A WebProfiler for Silex", + "homepage": "http://silex.sensiolabs.org/", + "abandoned": "symfony/web-profiler-bundle", + "time": "2016-01-10T11:39:13+00:00" + }, + { + "name": "simple-bus/doctrine-orm-bridge", + "version": "v4.0.0", + "source": { + "type": "git", + "url": "https://github.com/SimpleBus/DoctrineORMBridge.git", + "reference": "46df998f26940d9525f8e35c40641328c679dbfe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SimpleBus/DoctrineORMBridge/zipball/46df998f26940d9525f8e35c40641328c679dbfe", + "reference": "46df998f26940d9525f8e35c40641328c679dbfe", + "shasum": "" + }, + "require": { + "beberlei/assert": "~2.0", + "doctrine/orm": "~2.2", + "php": ">=5.4", + "simple-bus/message-bus": "~2.0" + }, + "require-dev": { + "matthiasnoback/doctrine-orm-test-service-provider": "~2.0", + "phpunit/phpunit": "~4.5", + "satooshi/php-coveralls": "~0.6" + }, + "suggest": { + "simple-bus/symfony-bridge": "Bridge for using command buses and event buses with Symfony" + }, + "type": "library", + "autoload": { + "psr-4": { + "SimpleBus\\DoctrineORMBridge\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthias Noback", + "email": "matthiasnoback@gmail.com", + "homepage": "http://php-and-symfony.matthiasnoback.nl" + } + ], + "description": "Doctrine ORM bridge for using command and event buses", + "homepage": "http://github.com/SimpleBus/DoctrineORMBridge", + "keywords": [ + "command bus", + "doctrine", + "event bus" + ], + "time": "2015-04-29T12:27:27+00:00" + }, + { + "name": "simple-bus/jms-serializer-bridge", + "version": "v1.0.3", + "source": { + "type": "git", + "url": "https://github.com/SimpleBus/JMSSerializerBridge.git", + "reference": "6292dc9537311100725f5b926d434b0495c03fad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SimpleBus/JMSSerializerBridge/zipball/6292dc9537311100725f5b926d434b0495c03fad", + "reference": "6292dc9537311100725f5b926d434b0495c03fad", + "shasum": "" + }, + "require": { + "jms/serializer": "~0.12||~1.0", + "php": ">=5.4", + "simple-bus/serialization": ">=1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0", + "satooshi/php-coveralls": "~0.6" + }, + "type": "bundle", + "autoload": { + "psr-4": { + "SimpleBus\\JMSSerializerBridge\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthias Noback", + "email": "matthiasnoback@gmail.com", + "homepage": "http://php-and-symfony.matthiasnoback.nl" + } + ], + "description": "Bridge for using JMSSerializer as message serializer for SimpleBus/Asynchronous", + "homepage": "http://github.com/SimpleBus/JMSSerializerBridge", + "keywords": [ + "asynchronous", + "message", + "serialization" + ], + "time": "2015-07-29T07:48:42+00:00" + }, + { + "name": "simple-bus/message-bus", + "version": "v2.2.2", + "source": { + "type": "git", + "url": "https://github.com/SimpleBus/MessageBus.git", + "reference": "723bf20b93e17e9e87e83032ec21d8b2452328cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SimpleBus/MessageBus/zipball/723bf20b93e17e9e87e83032ec21d8b2452328cf", + "reference": "723bf20b93e17e9e87e83032ec21d8b2452328cf", + "shasum": "" + }, + "require": { + "beberlei/assert": "~2.0", + "php": ">=5.4", + "psr/log": "~1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0", + "satooshi/php-coveralls": "~0.6" + }, + "type": "library", + "autoload": { + "psr-4": { + "SimpleBus\\Message\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthias Noback", + "email": "matthiasnoback@gmail.com", + "homepage": "http://php-and-symfony.matthiasnoback.nl" + } + ], + "description": "Generic classes and interfaces for messages and message buses", + "homepage": "http://github.com/SimpleBus/MessageBus", + "keywords": [ + "command bus", + "event bus", + "message", + "message bus" + ], + "time": "2016-02-12T08:35:53+00:00" + }, + { + "name": "simple-bus/serialization", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/SimpleBus/Serialization.git", + "reference": "df7a5704d4a9c3057184be09ce8dc6d442785618" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SimpleBus/Serialization/zipball/df7a5704d4a9c3057184be09ce8dc6d442785618", + "reference": "df7a5704d4a9c3057184be09ce8dc6d442785618", + "shasum": "" + }, + "require": { + "beberlei/assert": "~2.0", + "php": ">=5.4" + }, + "require-dev": { + "phpunit/phpunit": "~4.0", + "satooshi/php-coveralls": "~0.6" + }, + "type": "library", + "autoload": { + "psr-4": { + "SimpleBus\\Serialization\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthias Noback", + "email": "matthiasnoback@gmail.com", + "homepage": "http://php-and-symfony.matthiasnoback.nl" + } + ], + "description": "Generic classes and interfaces for serializing messages", + "homepage": "http://github.com/SimpleBus/Serialization", + "keywords": [ + "SimpleBus", + "messages", + "serialization" + ], + "time": "2015-05-08T13:34:17+00:00" + }, + { + "name": "sorien/silex-dbal-profiler", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/Sorien/silex-dbal-profiler.git", + "reference": "1df811da6cc2eb4abec4562e8000ca9eb998f7dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Sorien/silex-dbal-profiler/zipball/1df811da6cc2eb4abec4562e8000ca9eb998f7dd", + "reference": "1df811da6cc2eb4abec4562e8000ca9eb998f7dd", + "shasum": "" + }, + "require": { + "silex/silex": "~1.0", + "silex/web-profiler": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Sorien": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Stanislav Turza", + "role": "Developer" + } + ], + "description": "Doctrine DBAL Profiler for Silex", + "keywords": [ + "dbal", + "doctrine", + "profiler", + "silex" + ], + "abandoned": true, + "time": "2016-10-26T11:08:02+00:00" + }, + { + "name": "sorien/silex-pimple-dumper", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/Sorien/silex-pimple-dumper.git", + "reference": "867b47181aab86b79cc78bad953419c1a327b2c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Sorien/silex-pimple-dumper/zipball/867b47181aab86b79cc78bad953419c1a327b2c6", + "reference": "867b47181aab86b79cc78bad953419c1a327b2c6", + "shasum": "" + }, + "require-dev": { + "silex/silex": "~1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Sorien\\Provider\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Stanislav Turza", + "role": "Developer" + } + ], + "description": "Pimple File Dumper - Helper Provider for Silex Idea Plugin", + "keywords": [ + "dumper", + "idea", + "plugin", + "silex" + ], + "abandoned": true, + "time": "2015-11-11T07:16:28+00:00" + }, + { + "name": "swftools/swftools", + "version": "0.3.1", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/PHPSwftools.git", + "reference": "5a0fefbd5a518c9b1ec2ba247640aadbab4cc396" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/PHPSwftools/zipball/5a0fefbd5a518c9b1ec2ba247640aadbab4cc396", + "reference": "5a0fefbd5a518c9b1ec2ba247640aadbab4cc396", + "shasum": "" + }, + "require": { + "alchemy/binary-driver": "~1.5", + "php": ">=5.3.3", + "pimple/pimple": "~1.0" + }, + "require-dev": { + "phpunit/phpunit": "~3.7", + "sami/sami": "~1.0", + "silex/silex": "~1.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "SwfTools": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Romain Neutron", + "email": "imprec@gmail.com", + "homepage": "http://www.lickmychip.com/" + }, + { + "name": "Phraseanet Team", + "email": "info@alchemy.fr", + "homepage": "http://www.phraseanet.com/" + } + ], + "description": "PHP SwfTools", + "keywords": [ + "adobe flash", + "flash", + "swf" + ], + "time": "2013-07-03T13:11:36+00:00" + }, + { + "name": "swiftmailer/swiftmailer", + "version": "v5.4.5", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "cd142238a339459b10da3d8234220963f392540c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/cd142238a339459b10da3d8234220963f392540c", + "reference": "cd142238a339459b10da3d8234220963f392540c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "mockery/mockery": "~0.9.1", + "symfony/phpunit-bridge": "~3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.4-dev" + } + }, + "autoload": { + "files": [ + "lib/swift_required.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Corbyn" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "http://swiftmailer.org", + "keywords": [ + "email", + "mail", + "mailer" + ], + "time": "2016-12-29T10:02:40+00:00" + }, + { + "name": "symfony/polyfill-apcu", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-apcu.git", + "reference": "5d4474f447403c3348e37b70acc2b95475b7befa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/5d4474f447403c3348e37b70acc2b95475b7befa", + "reference": "5d4474f447403c3348e37b70acc2b95475b7befa", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "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 apcu_* functions to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "apcu", + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2016-11-14T01:06:16+00:00" + }, + { + "name": "symfony/polyfill-intl-icu", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-icu.git", + "reference": "2d6e2b20d457603eefb6e614286c22efca30fdb4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/2d6e2b20d457603eefb6e614286c22efca30fdb4", + "reference": "2d6e2b20d457603eefb6e614286c22efca30fdb4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/intl": "~2.3|~3.0" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's ICU-related data and classes", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "icu", + "intl", + "polyfill", + "portable", + "shim" + ], + "time": "2016-11-14T01:06:16+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4", + "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2016-11-14T01:06:16+00:00" + }, + { + "name": "symfony/polyfill-php54", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php54.git", + "reference": "90e085822963fdcc9d1c5b73deb3d2e5783b16a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/90e085822963fdcc9d1c5b73deb3d2e5783b16a0", + "reference": "90e085822963fdcc9d1c5b73deb3d2e5783b16a0", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php54\\": "" + }, + "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 5.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2016-11-14T01:06:16+00:00" + }, + { + "name": "symfony/polyfill-php55", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php55.git", + "reference": "03e3f0350bca2220e3623a0e340eef194405fc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/03e3f0350bca2220e3623a0e340eef194405fc67", + "reference": "03e3f0350bca2220e3623a0e340eef194405fc67", + "shasum": "" + }, + "require": { + "ircmaxell/password-compat": "~1.0", + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php55\\": "" + }, + "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 5.5+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2016-11-14T01:06:16+00:00" + }, + { + "name": "symfony/polyfill-php56", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php56.git", + "reference": "1dd42b9b89556f18092f3d1ada22cb05ac85383c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/1dd42b9b89556f18092f3d1ada22cb05ac85383c", + "reference": "1dd42b9b89556f18092f3d1ada22cb05ac85383c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-util": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php56\\": "" + }, + "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 5.6+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2016-11-14T01:06:16+00:00" + }, + { + "name": "symfony/polyfill-php70", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "13ce343935f0f91ca89605a2f6ca6f5c2f3faac2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/13ce343935f0f91ca89605a2f6ca6f5c2f3faac2", + "reference": "13ce343935f0f91ca89605a2f6ca6f5c2f3faac2", + "shasum": "" + }, + "require": { + "paragonie/random_compat": "~1.0|~2.0", + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php70\\": "" + }, + "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.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2016-11-14T01:06:16+00:00" + }, + { + "name": "symfony/polyfill-util", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-util.git", + "reference": "746bce0fca664ac0a575e465f65c6643faddf7fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/746bce0fca664ac0a575e465f65c6643faddf7fb", + "reference": "746bce0fca664ac0a575e465f65c6643faddf7fb", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Util\\": "" + } + }, + "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 utilities for portability of PHP codes", + "homepage": "https://symfony.com", + "keywords": [ + "compat", + "compatibility", + "polyfill", + "shim" + ], + "time": "2016-11-14T01:06:16+00:00" + }, + { + "name": "symfony/security-acl", + "version": "v3.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-acl.git", + "reference": "053b49bf4aa333a392c83296855989bcf88ddad1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-acl/zipball/053b49bf4aa333a392c83296855989bcf88ddad1", + "reference": "053b49bf4aa333a392c83296855989bcf88ddad1", + "shasum": "" + }, + "require": { + "php": ">=5.5.9", + "symfony/security-core": "~2.8|~3.0" + }, + "require-dev": { + "doctrine/common": "~2.2", + "doctrine/dbal": "~2.2", + "psr/log": "~1.0", + "symfony/phpunit-bridge": "~2.8|~3.0" + }, + "suggest": { + "doctrine/dbal": "For using the built-in ACL implementation", + "symfony/class-loader": "For using the ACL generateSql script", + "symfony/finder": "For using the ACL generateSql script" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Acl\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Security Component - ACL (Access Control List)", + "homepage": "https://symfony.com", + "time": "2015-12-28T09:39:46+00:00" + }, + { + "name": "symfony/symfony", + "version": "v2.8.16", + "source": { + "type": "git", + "url": "https://github.com/symfony/symfony.git", + "reference": "9fef72a3ab561c4bfa703a70369db028dec387d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/symfony/zipball/9fef72a3ab561c4bfa703a70369db028dec387d2", + "reference": "9fef72a3ab561c4bfa703a70369db028dec387d2", + "shasum": "" + }, + "require": { + "doctrine/common": "~2.4", + "php": ">=5.3.9", + "psr/log": "~1.0", + "symfony/polyfill-apcu": "~1.1", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php54": "~1.0", + "symfony/polyfill-php55": "~1.0", + "symfony/polyfill-php56": "~1.0", + "symfony/polyfill-php70": "~1.0", + "symfony/polyfill-util": "~1.0", + "symfony/security-acl": "~2.7|~3.0.0", + "twig/twig": "~1.28|~2.0" + }, + "conflict": { + "phpdocumentor/reflection": "<1.0.7" + }, + "replace": { + "symfony/asset": "self.version", + "symfony/browser-kit": "self.version", + "symfony/class-loader": "self.version", + "symfony/config": "self.version", + "symfony/console": "self.version", + "symfony/css-selector": "self.version", + "symfony/debug": "self.version", + "symfony/debug-bundle": "self.version", + "symfony/dependency-injection": "self.version", + "symfony/doctrine-bridge": "self.version", + "symfony/dom-crawler": "self.version", + "symfony/event-dispatcher": "self.version", + "symfony/expression-language": "self.version", + "symfony/filesystem": "self.version", + "symfony/finder": "self.version", + "symfony/form": "self.version", + "symfony/framework-bundle": "self.version", + "symfony/http-foundation": "self.version", + "symfony/http-kernel": "self.version", + "symfony/intl": "self.version", + "symfony/ldap": "self.version", + "symfony/locale": "self.version", + "symfony/monolog-bridge": "self.version", + "symfony/options-resolver": "self.version", + "symfony/process": "self.version", + "symfony/property-access": "self.version", + "symfony/property-info": "self.version", + "symfony/proxy-manager-bridge": "self.version", + "symfony/routing": "self.version", + "symfony/security": "self.version", + "symfony/security-bundle": "self.version", + "symfony/security-core": "self.version", + "symfony/security-csrf": "self.version", + "symfony/security-guard": "self.version", + "symfony/security-http": "self.version", + "symfony/serializer": "self.version", + "symfony/stopwatch": "self.version", + "symfony/swiftmailer-bridge": "self.version", + "symfony/templating": "self.version", + "symfony/translation": "self.version", + "symfony/twig-bridge": "self.version", + "symfony/twig-bundle": "self.version", + "symfony/validator": "self.version", + "symfony/var-dumper": "self.version", + "symfony/web-profiler-bundle": "self.version", + "symfony/yaml": "self.version" + }, + "require-dev": { + "doctrine/data-fixtures": "1.0.*", + "doctrine/dbal": "~2.4", + "doctrine/doctrine-bundle": "~1.2", + "doctrine/orm": "~2.4,>=2.4.5", + "egulias/email-validator": "~1.2,>=1.2.1", + "monolog/monolog": "~1.11", + "ocramius/proxy-manager": "~0.4|~1.0|~2.0", + "phpdocumentor/reflection": "^1.0.7", + "symfony/phpunit-bridge": "~3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/", + "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/", + "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/", + "Symfony\\Bridge\\Swiftmailer\\": "src/Symfony/Bridge/Swiftmailer/", + "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/", + "Symfony\\Bundle\\": "src/Symfony/Bundle/", + "Symfony\\Component\\": "src/Symfony/Component/" + }, + "classmap": [ + "src/Symfony/Component/Intl/Resources/stubs" + ], + "exclude-from-classmap": [ + "**/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "The Symfony PHP framework", + "homepage": "https://symfony.com", + "keywords": [ + "framework" + ], + "time": "2017-01-12T20:27:46+00:00" + }, + { + "name": "themattharris/tmhoauth", + "version": "0.8.4", + "source": { + "type": "git", + "url": "https://github.com/themattharris/tmhOAuth.git", + "reference": "455552d6c57549632644b6c9ac9204766be2b5ee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/themattharris/tmhOAuth/zipball/455552d6c57549632644b6c9ac9204766be2b5ee", + "reference": "455552d6c57549632644b6c9ac9204766be2b5ee", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "tmhOAuth": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "themattharris", + "email": "matt@themattharris.com", + "role": "Developer" + } + ], + "description": "An OAuth library written in PHP by @themattharris", + "keywords": [ + "oauth", + "twitter" + ], + "time": "2014-08-06T22:29:35+00:00" + }, + { + "name": "twig/extensions", + "version": "v1.4.1", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig-extensions.git", + "reference": "f0bb8431c8691f5a39f1017d9a5967a082bf01ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig-extensions/zipball/f0bb8431c8691f5a39f1017d9a5967a082bf01ff", + "reference": "f0bb8431c8691f5a39f1017d9a5967a082bf01ff", + "shasum": "" + }, + "require": { + "twig/twig": "~1.20|~2.0" + }, + "require-dev": { + "symfony/translation": "~2.3" + }, + "suggest": { + "symfony/translation": "Allow the time_diff output to be translated" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_Extensions_": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Common additional features for Twig that do not directly belong in core", + "homepage": "http://twig.sensiolabs.org/doc/extensions/index.html", + "keywords": [ + "i18n", + "text" + ], + "time": "2016-10-25T17:34:14+00:00" + }, + { + "name": "twig/twig", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "ddc9e3e20ee9c0b6908f401ac8353635b750eca7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/ddc9e3e20ee9c0b6908f401ac8353635b750eca7", + "reference": "ddc9e3e20ee9c0b6908f401ac8353635b750eca7", + "shasum": "" + }, + "require": { + "php": ">=5.2.7" + }, + "require-dev": { + "symfony/debug": "~2.7", + "symfony/phpunit-bridge": "~3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.31-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "http://twig.sensiolabs.org/contributors", + "role": "Contributors" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "http://twig.sensiolabs.org", + "keywords": [ + "templating" + ], + "time": "2017-01-11T19:36:15+00:00" + }, + { + "name": "vierbergenlars/php-semver", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/vierbergenlars/php-semver.git", + "reference": "6b16f72b8c2d3aa00368f9fa612b2218a96245fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vierbergenlars/php-semver/zipball/6b16f72b8c2d3aa00368f9fa612b2218a96245fc", + "reference": "6b16f72b8c2d3aa00368f9fa612b2218a96245fc", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "vierbergenlars/simpletest": "1.1.*" + }, + "bin": [ + "bin/semver", + "bin/update-versions" + ], + "type": "library", + "autoload": { + "psr-0": { + "vierbergenlars\\SemVer": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Vierbergen", + "email": "vierbergenlars@gmail.com" + } + ], + "description": "The Semantic Versioner for PHP", + "keywords": [ + "semantic", + "semver", + "versioning" + ], + "time": "2013-09-20T10:41:27+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2016-11-23T20:04:58+00:00" + }, + { + "name": "webmozart/json", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/webmozart/json.git", + "reference": "a1fb3da904b8364e3db47eed68f76bfb6cd0031a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/json/zipball/a1fb3da904b8364e3db47eed68f76bfb6cd0031a", + "reference": "a1fb3da904b8364e3db47eed68f76bfb6cd0031a", + "shasum": "" + }, + "require": { + "justinrainbow/json-schema": "^1.6", + "php": "^5.3.3|^7.0", + "seld/jsonlint": "^1.0", + "webmozart/path-util": "^2.3" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1", + "symfony/filesystem": "^2.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Json\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "A robust JSON decoder/encoder with support for schema validation.", + "time": "2016-01-14T12:11:46+00:00" + }, + { + "name": "webmozart/path-util", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/path-util.git", + "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", + "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "webmozart/assert": "~1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\PathUtil\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", + "time": "2015-12-17T08:42:14+00:00" + }, + { + "name": "willdurand/negotiation", + "version": "v2.2.1", + "source": { + "type": "git", + "url": "https://github.com/willdurand/Negotiation.git", + "reference": "1f210db45723b21edd69f39794662b8d64656b93" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/1f210db45723b21edd69f39794662b8d64656b93", + "reference": "1f210db45723b21edd69f39794662b8d64656b93", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + } + }, + "autoload": { + "psr-4": { + "Negotiation\\": "src/Negotiation" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "William Durand", + "email": "will+git@drnd.me" + } + ], + "description": "Content Negotiation tools for PHP provided as a standalone library.", + "homepage": "http://williamdurand.fr/Negotiation/", + "keywords": [ + "accept", + "content", + "format", + "header", + "negotiation" + ], + "time": "2016-10-14T09:17:47+00:00" + }, + { + "name": "zend/gdata", + "version": "1.12.1", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/gdata.git", + "reference": "4ae96d26cec159d74ced57c89ebdcde754ece35d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/gdata/zipball/4ae96d26cec159d74ced57c89ebdcde754ece35d", + "reference": "4ae96d26cec159d74ced57c89ebdcde754ece35d", + "shasum": "" + }, + "require": { + "php": ">5.2.4" + }, + "type": "library", + "autoload": { + "psr-0": { + "Zend_": "library" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "New BSD" + ], + "authors": [ + { + "name": "Zend Contributors", + "homepage": "http://framework.zend.com/community/contributors" + } + ], + "description": "The Google Data APIs are a set of web services for read/write access to applications hosted by Google", + "homepage": "http://framework.zend.com/download/webservices", + "keywords": [ + "gdata", + "zend" + ], + "time": "2013-01-30T15:31:21+00:00" + }, + { + "name": "zendframework/zend-code", + "version": "2.6.3", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-code.git", + "reference": "95033f061b083e16cdee60530ec260d7d628b887" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-code/zipball/95033f061b083e16cdee60530ec260d7d628b887", + "reference": "95033f061b083e16cdee60530ec260d7d628b887", + "shasum": "" + }, + "require": { + "php": "^5.5 || 7.0.0 - 7.0.4 || ^7.0.6", + "zendframework/zend-eventmanager": "^2.6 || ^3.0" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "^4.8.21", + "zendframework/zend-stdlib": "^2.7 || ^3.0" + }, + "suggest": { + "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", + "zendframework/zend-stdlib": "Zend\\Stdlib component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev", + "dev-develop": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Code\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides facilities to generate arbitrary code using an object oriented interface", + "homepage": "https://github.com/zendframework/zend-code", + "keywords": [ + "code", + "zf2" + ], + "abandoned": "laminas/laminas-code", + "time": "2016-04-20T17:26:42+00:00" + }, + { + "name": "zendframework/zend-eventmanager", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-eventmanager.git", + "reference": "5c80bdee0e952be112dcec0968bad770082c3a6e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/5c80bdee0e952be112dcec0968bad770082c3a6e", + "reference": "5c80bdee0e952be112dcec0968bad770082c3a6e", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0" + }, + "require-dev": { + "athletic/athletic": "^0.1", + "container-interop/container-interop": "^1.1.0", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "^2.0", + "zendframework/zend-stdlib": "^2.7.3 || ^3.0" + }, + "suggest": { + "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature", + "zendframework/zend-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev", + "dev-develop": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\EventManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Trigger and listen to events within a PHP application", + "homepage": "https://github.com/zendframework/zend-eventmanager", + "keywords": [ + "event", + "eventmanager", + "events", + "zf2" + ], + "abandoned": "laminas/laminas-eventmanager", + "time": "2016-02-18T20:53:00+00:00" + } + ], + "packages-dev": [ + { + "name": "mikey179/vfsStream", + "version": "v1.6.4", + "source": { + "type": "git", + "url": "https://github.com/bovigo/vfsStream.git", + "reference": "0247f57b2245e8ad2e689d7cee754b45fbabd592" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/0247f57b2245e8ad2e689d7cee754b45fbabd592", + "reference": "0247f57b2245e8ad2e689d7cee754b45fbabd592", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "org\\bovigo\\vfs\\": "src/main/php" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Frank Kleine", + "homepage": "http://frankkleine.de/", + "role": "Developer" + } + ], + "description": "Virtual file system to mock the real file system in unit tests.", + "homepage": "http://vfs.bovigo.org/", + "time": "2016-07-18T14:02:57+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2015-12-27T11:43:31+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.2.0", + "webmozart/assert": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2016-09-30T07:12:33+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "0.2.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "shasum": "" + }, + "require": { + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0" + }, + "require-dev": { + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "time": "2016-11-25T06:54:22+00:00" + }, + { + "name": "phpexiftool/exiftool", + "version": "10.10", + "source": { + "type": "git", + "url": "https://github.com/alchemy-fr/exiftool.git", + "reference": "0833cab894c890353192a83011428525a318bedf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/alchemy-fr/exiftool/zipball/0833cab894c890353192a83011428525a318bedf", + "reference": "0833cab894c890353192a83011428525a318bedf", + "shasum": "" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Perl Licensing" + ], + "authors": [ + { + "name": "Phil Harvey", + "email": "phil@owl.phy.queensu.ca", + "homepage": "http://www.sno.phy.queensu.ca/~phil/exiftool/" + } + ], + "description": "Exiftool is a library for reading, writing and editing meta information. This package is not PHP, but required for the main PHP driver : PHP Exiftool", + "keywords": [ + "exiftool", + "metadatas" + ], + "time": "2016-01-25T11:10:14+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "v1.6.2", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "6c52c2722f8460122f96f86346600e1077ce22cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/6c52c2722f8460122f96f86346600e1077ce22cb", + "reference": "6c52c2722f8460122f96f86346600e1077ce22cb", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "sebastian/comparator": "^1.1", + "sebastian/recursion-context": "^1.0|^2.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.0", + "phpunit/phpunit": "^4.8 || ^5.6.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-0": { + "Prophecy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "time": "2016-11-21T14:58:47+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "2.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.2", + "phpunit/php-token-stream": "~1.3", + "sebastian/environment": "^1.3.2", + "sebastian/version": "~1.0" + }, + "require-dev": { + "ext-xdebug": ">=2.1.4", + "phpunit/phpunit": "~4" + }, + "suggest": { + "ext-dom": "*", + "ext-xdebug": ">=2.2.1", + "ext-xmlwriter": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "time": "2015-10-06T15:47:00+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "time": "2016-10-03T07:40:28+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "time": "2015-06-21T13:50:34+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260", + "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4|~5" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "time": "2016-05-12T18:03:57+00:00" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3b402f65a4cc90abf6e1104e388b896ce209631b", + "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "time": "2016-11-15T14:06:22+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "4.8.34", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "7eb45205d27edd94bd2b3614085ea158bd1e2bca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7eb45205d27edd94bd2b3614085ea158bd1e2bca", + "reference": "7eb45205d27edd94bd2b3614085ea158bd1e2bca", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=5.3.3", + "phpspec/prophecy": "^1.3.1", + "phpunit/php-code-coverage": "~2.1", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "~2.3", + "sebastian/comparator": "~1.2.2", + "sebastian/diff": "~1.2", + "sebastian/environment": "~1.3", + "sebastian/exporter": "~1.2", + "sebastian/global-state": "~1.0", + "sebastian/version": "~1.0", + "symfony/yaml": "~2.1|~3.0" + }, + "suggest": { + "phpunit/php-invoker": "~1.1" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.8.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "time": "2017-01-26T16:15:36+00:00" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "2.3.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": ">=5.3.3", + "phpunit/php-text-template": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "suggest": { + "ext-soap": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "abandoned": true, + "time": "2015-10-02T06:51:40+00:00" + }, + { + "name": "sebastian/comparator", + "version": "1.2.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2017-01-29T09:50:25+00:00" + }, + { + "name": "sebastian/diff", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "time": "2015-12-08T07:14:41+00:00" + }, + { + "name": "sebastian/environment", + "version": "1.3.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "time": "2016-08-18T05:49:44+00:00" + }, + { + "name": "sebastian/exporter", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", + "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~1.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2016-06-17T09:04:28+00:00" + }, + { + "name": "sebastian/global-state", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "time": "2015-10-12T03:26:01+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "913401df809e99e4f47b27cdd781f4a258d58791" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/913401df809e99e4f47b27cdd781f4a258d58791", + "reference": "913401df809e99e4f47b27cdd781f4a258d58791", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2015-11-11T19:50:13+00:00" + }, + { + "name": "sebastian/version", + "version": "1.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "shasum": "" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2015-06-21T13:59:46+00:00" + } + ], + "aliases": [ + { + "alias": "1.6.1", + "alias_normalized": "1.6.1.0", + "version": "2.0.3.0", + "package": "justinrainbow/json-schema" + }, + { + "alias": "0.13.0", + "alias_normalized": "0.13.0.0", + "version": "dev-webgalleries", + "package": "league/fractal" + } + ], + "minimum-stability": "stable", + "stability-flags": { + "alchemy/task-manager": 20, + "doctrine/cache": 20, + "imagine/imagine": 20, + "jms/translation-bundle": 20, + "league/fractal": 20, + "neutron/process-manager": 20, + "roave/security-advisories": 20, + "willdurand/negotiation": 15 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": ">=5.5.9", + "ext-intl": "*" + }, + "platform-dev": [] +} diff --git a/docker/db/Dockerfile b/docker/db/Dockerfile new file mode 100644 index 0000000000..7330ff91c0 --- /dev/null +++ b/docker/db/Dockerfile @@ -0,0 +1,12 @@ +FROM mariadb:10.4.5 + +RUN apt-get update && \ + apt-get install -y \ + gettext \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/ + +ADD ./docker/ / + +ENTRYPOINT ["/phraseanet-entrypoint.sh"] +CMD ["mysqld","--sql_mode="] diff --git a/docker/db/docker/custom.cnf b/docker/db/docker/custom.cnf new file mode 100644 index 0000000000..850a93e19c --- /dev/null +++ b/docker/db/docker/custom.cnf @@ -0,0 +1,3 @@ +[mysqld] + +max_allowed_packet=$MYSQL_MAX_ALLOWED_PACKET diff --git a/docker/db/docker/docker-entrypoint-initdb.d/01-create_databases.sql b/docker/db/docker/docker-entrypoint-initdb.d/01-create_databases.sql new file mode 100644 index 0000000000..a868d9f35c --- /dev/null +++ b/docker/db/docker/docker-entrypoint-initdb.d/01-create_databases.sql @@ -0,0 +1,5 @@ +CREATE DATABASE ab_master CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +CREATE DATABASE db_databox1 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +CREATE DATABASE db_unitTest CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +CREATE DATABASE db_dataset1 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; +CREATE DATABASE db_dataset2 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; \ No newline at end of file diff --git a/docker/db/docker/phraseanet-entrypoint.sh b/docker/db/docker/phraseanet-entrypoint.sh new file mode 100755 index 0000000000..a12ab6629e --- /dev/null +++ b/docker/db/docker/phraseanet-entrypoint.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +set -eo pipefail +shopt -s nullglob + +envsubst < /custom.cnf > /etc/mysql/conf.d/custom.cnf +docker-entrypoint.sh "$@" diff --git a/docker/elasticsearch/Dockerfile b/docker/elasticsearch/Dockerfile new file mode 100644 index 0000000000..5847b7448f --- /dev/null +++ b/docker/elasticsearch/Dockerfile @@ -0,0 +1,3 @@ +FROM elasticsearch:2.4 + +RUN /usr/share/elasticsearch/bin/plugin install analysis-icu diff --git a/docker/nginx/boot.sh b/docker/nginx/boot.sh deleted file mode 100755 index 2684d8c0f7..0000000000 --- a/docker/nginx/boot.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -set -xe - -cat nginx.conf.sample | sed "s/\$MAX_BODY_SIZE/$MAX_BODY_SIZE/g" > /etc/nginx/conf.d/default.conf -nginx -g "daemon off;" diff --git a/docker/nginx/root/entrypoint.sh b/docker/nginx/root/entrypoint.sh new file mode 100755 index 0000000000..e46ea44296 --- /dev/null +++ b/docker/nginx/root/entrypoint.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -xe + +cat /nginx.conf.sample | sed "s/\$MAX_BODY_SIZE/$MAX_BODY_SIZE/g" > /etc/nginx/conf.d/default.conf + +exec "$@" diff --git a/docker/nginx/etc/nginx/nginx.conf b/docker/nginx/root/etc/nginx/nginx.conf similarity index 100% rename from docker/nginx/etc/nginx/nginx.conf rename to docker/nginx/root/etc/nginx/nginx.conf diff --git a/docker/nginx/nginx.conf.sample b/docker/nginx/root/nginx.conf.sample similarity index 100% rename from docker/nginx/nginx.conf.sample rename to docker/nginx/root/nginx.conf.sample diff --git a/docker/phraseanet-debug/entrypoint.sh b/docker/phraseanet-debug/entrypoint.sh deleted file mode 100644 index a7a9f915b1..0000000000 --- a/docker/phraseanet-debug/entrypoint.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -set -e - -if [ ! -z ${DOCKER_XDEBUG_ENABLED} ]; then - . usr-bin/docker-xdebug-enable -fi - -exec "$@" diff --git a/docker/phraseanet-debug/usr/bin/docker-get-host-ip b/docker/phraseanet-debug/usr/bin/docker-get-host-ip deleted file mode 100644 index 752c1566ea..0000000000 --- a/docker/phraseanet-debug/usr/bin/docker-get-host-ip +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -/sbin/ip route|awk '/default/ { print $3 }' -# TODO support MacOS & Windows host IP diff --git a/docker/phraseanet-debug/usr/bin/docker-xdebug-disable b/docker/phraseanet-debug/usr/bin/docker-xdebug-disable deleted file mode 100644 index 7d9de59329..0000000000 --- a/docker/phraseanet-debug/usr/bin/docker-xdebug-disable +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -unset HOST_IP -unset XDEBUG_CONFIG -unset XDEBUG_REMOTE_HOST diff --git a/docker/phraseanet-debug/usr/bin/docker-xdebug-enable b/docker/phraseanet-debug/usr/bin/docker-xdebug-enable deleted file mode 100644 index 24b7fcd97b..0000000000 --- a/docker/phraseanet-debug/usr/bin/docker-xdebug-enable +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -set -e - -HOST_IP=$(docker-get-host-ip); - -export HOST_IP -export XDEBUG_CONFIG="remote_enable=1 remote_host=${HOST_IP} idekey=PHPSTORM"; -export XDEBUG_REMOTE_HOST="${HOST_IP}"; diff --git a/docker/phraseanet/auto-install.sh b/docker/phraseanet/auto-install.sh index 00e8601edb..5ad05e134c 100755 --- a/docker/phraseanet/auto-install.sh +++ b/docker/phraseanet/auto-install.sh @@ -2,12 +2,12 @@ set -xe -if [ $INSTALL_ACCOUNT_EMAIL = ""]; then +if [ -z "$INSTALL_ACCOUNT_EMAIL" ]; then echo "INSTALL_ACCOUNT_EMAIL var is not set." exit 1 fi -if [ $INSTALL_ACCOUNT_PASSWORD = ""]; then +if [ -z "$INSTALL_ACCOUNT_PASSWORD" ]; then echo "INSTALL_ACCOUNT_PASSWORD var is not set." exit 1 fi @@ -35,11 +35,10 @@ fi ## Redis /var/alchemy/Phraseanet/bin/setup system:config set main.cache.options.host redis /var/alchemy/Phraseanet/bin/setup system:config set main.cache.options.port 6379 -/var/alchemy/Phraseanet/bin/setup system:config set main.cache.options.domain $INSTALL_SERVER_NAME +/var/alchemy/Phraseanet/bin/setup system:config set main.cache.options.namespace $INSTALL_SERVER_NAME /var/alchemy/Phraseanet/bin/setup system:config set main.cache.type redis # RabbitMQ - bin/setup system:config set rabbitmq.server.host rabbitmq bin/setup system:config set rabbitmq.server.port 5672 bin/setup system:config set rabbitmq.server.user $INSTALL_RABBITMQ_USER diff --git a/docker/phraseanet/boot.sh b/docker/phraseanet/boot.sh deleted file mode 100755 index 578da3a8da..0000000000 --- a/docker/phraseanet/boot.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -set -xe - -chown -R app:app /var/alchemy/Phraseanet/config -chown -R app:app /var/alchemy/Phraseanet/datas -chown -R app:app /var/alchemy/Phraseanet/tmp -chown -R app:app /var/alchemy/Phraseanet/www/thumbnails -FILE=/var/alchemy/Phraseanet/config/configuration.yml -if [ -f "$FILE" ]; then - echo "$FILE exist, skip setup." -else - echo "$FILE doesn't exist, entering setup..." - runuser app -c '/auto-install.sh' -fi - -php-fpm -F diff --git a/docker/phraseanet/entrypoint.sh b/docker/phraseanet/entrypoint.sh new file mode 100755 index 0000000000..037fe0aa02 --- /dev/null +++ b/docker/phraseanet/entrypoint.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +set -e + +envsubst < "docker/phraseanet/php.ini.sample" > /usr/local/etc/php/php.ini +envsubst < "docker/phraseanet/php-fpm.conf.sample" > /usr/local/etc/php-fpm.conf + +chown -R app:app \ + config \ + datas \ + tmp \ + logs \ + www/thumbnails + +FILE=config/configuration.yml + +if [ -f "$FILE" ]; then + echo "$FILE exists, skip setup." +else + echo "$FILE doesn't exist, entering setup..." + runuser app -c docker/phraseanet/auto-install.sh +fi + +if [ ${XDEBUG_ENABLED} == "1" ]; then + echo "XDEBUG is enabled. YOU MAY KEEP THIS FEATURE DISABLED IN PRODUCTION." + docker-php-ext-enable xdebug +fi + +./docker/phraseanet/plugins/console init + +bash -e docker-php-entrypoint $@ diff --git a/docker/phraseanet/php.ini.sample b/docker/phraseanet/php.ini.sample index 774389b614..7f5fc97430 100644 --- a/docker/phraseanet/php.ini.sample +++ b/docker/phraseanet/php.ini.sample @@ -935,7 +935,7 @@ cli_server.color = On [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone -date.timezone = Europe/Paris +date.timezone = UTC ; http://php.net/date.default-latitude ;date.default_latitude = 31.7667 diff --git a/docker/phraseanet/phraseanet-entrypoint.sh b/docker/phraseanet/phraseanet-entrypoint.sh deleted file mode 100755 index 3040718c11..0000000000 --- a/docker/phraseanet/phraseanet-entrypoint.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash - -set -e - -envsubst < /php.ini.sample > /usr/local/etc/php/php.ini -envsubst < /php-fpm.conf.sample > /usr/local/etc/php-fpm.conf -echo "XDEBUG=$XDEBUG" -if [ $XDEBUG = "ON" ]; then - echo "XDEBUG IS ENABLED. YOU MAY KEEP THIS FEATURE DISABLED IN PRODUCTION." - echo "xdebug.remote_enable=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini - echo "xdebug.remote_autostart=1" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini - echo "xdebug.remote_host=$XDEBUG_SERVER" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini - echo "xdebug.remote_port=$XDEBUG_REMOTE_PORT" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini - echo "xdebug.remote_handler=dbgp" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini - echo "xdebug.remote_connect_back=0" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini - #echo "xdebug.idekey=11896" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini -fi - -bash -e docker-php-entrypoint $@ diff --git a/docker/phraseanet/plugins/InitCommand.php b/docker/phraseanet/plugins/InitCommand.php new file mode 100644 index 0000000000..23b7d644b7 --- /dev/null +++ b/docker/phraseanet/plugins/InitCommand.php @@ -0,0 +1,29 @@ +setName('init') + ->setDescription('Initialize plugins'); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + foreach (glob('./plugins/*') as $dir) { + if (is_dir($dir)) { + $output->writeln(sprintf('Init %s plugin', basename($dir))); + SubCommand::run(sprintf('bin/setup plugin:add %s', $dir)); + } + } + + return 0; + } +} diff --git a/docker/phraseanet/plugins/InstallCommand.php b/docker/phraseanet/plugins/InstallCommand.php new file mode 100644 index 0000000000..7b8a28c4cd --- /dev/null +++ b/docker/phraseanet/plugins/InstallCommand.php @@ -0,0 +1,64 @@ +setName('install') + ->setDescription('Install plugins'); + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $plugins = trim(getenv('PHRASEANET_PLUGINS')); + if (empty($plugins)) { + $output->writeln('No plugin to install... SKIP'); + + return 0; + } + + $pluginsDir = 'plugins'; + if (!is_dir($pluginsDir)) { + mkdir($pluginsDir); + } + + foreach (explode(' ', $plugins) as $key => $plugin) { + $plugin = trim($plugin); + $repo = $plugin; + $branch = 'master'; + if (1 === preg_match('#^(.+)\(([^)]+)\)$#', $plugin, $matches)) { + $repo = $matches[1]; + $branch = $matches[2]; + } + + $pluginPath = './plugin' . $key; + if (is_dir($pluginPath)) { + SubCommand::run(sprintf('rm -rf %s', $pluginPath)); + } + + $output->writeln(sprintf('Installing %s (branch: %s)', $repo, $branch)); + SubCommand::run(sprintf('git clone --single-branch --branch %s %s %s', $branch, $repo, $pluginPath)); + + $manifestSrc = $pluginPath.'/manifest.json'; + if (!file_exists($manifestSrc)) { + throw new \Exception(sprintf('Cannot install plugin %s: no manifest.json file found', $plugin)); + } + $pluginDestName = json_decode(file_get_contents($manifestSrc), true)['name']; + rename($pluginPath, $pluginsDir.'/'.$pluginDestName); + $pluginPath = $pluginsDir.'/'.$pluginDestName; + + if (file_exists($pluginPath.'/composer.json')) { + SubCommand::run(sprintf('cd %s && composer install --no-dev', $pluginPath)); + } + } + + return 0; + } +} diff --git a/docker/phraseanet/plugins/SubCommand.php b/docker/phraseanet/plugins/SubCommand.php new file mode 100644 index 0000000000..fd2dbc68a1 --- /dev/null +++ b/docker/phraseanet/plugins/SubCommand.php @@ -0,0 +1,26 @@ +add(new InstallCommand()); +$application->add(new InitCommand()); + +$application->run(); diff --git a/docker/phraseanet/usr/local/etc/php-fpm.d/www.conf.default b/docker/phraseanet/root/usr/local/etc/php-fpm.d/www.conf.default similarity index 100% rename from docker/phraseanet/usr/local/etc/php-fpm.d/www.conf.default rename to docker/phraseanet/root/usr/local/etc/php-fpm.d/www.conf.default diff --git a/docker/phraseanet/usr/local/etc/php-fpm.d/zz-docker.conf b/docker/phraseanet/root/usr/local/etc/php-fpm.d/zz-docker.conf similarity index 100% rename from docker/phraseanet/usr/local/etc/php-fpm.d/zz-docker.conf rename to docker/phraseanet/root/usr/local/etc/php-fpm.d/zz-docker.conf diff --git a/docker/phraseanet/worker-boot.sh b/docker/phraseanet/worker-boot.sh deleted file mode 100755 index 4c1b76b02f..0000000000 --- a/docker/phraseanet/worker-boot.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -mkdir /var/alchemy/Phraseanet/tmp/locks && chown -R app:app /var/alchemy/Phraseanet/tmp -runuser app -c 'php /var/alchemy/Phraseanet/bin/console task-manager:scheduler:run' diff --git a/docker/phraseanet/worker/entrypoint.sh b/docker/phraseanet/worker/entrypoint.sh new file mode 100755 index 0000000000..763a07d8ba --- /dev/null +++ b/docker/phraseanet/worker/entrypoint.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +set -e + +DOCKER_DIR="./docker/phraseanet" + +mkdir -p "${APP_DIR}/tmp/locks" \ + && chown -R app:app "${APP_DIR}/tmp" + +envsubst < "${DOCKER_DIR}/php.ini.sample" > /usr/local/etc/php/php.ini +envsubst < "${DOCKER_DIR}/php-fpm.conf.sample" > /usr/local/etc/php-fpm.conf + +if [ ${XDEBUG_ENABLED} == "1" ]; then + echo "XDEBUG is enabled. YOU MAY KEEP THIS FEATURE DISABLED IN PRODUCTION." + docker-php-ext-enable xdebug +fi + +runuser -u app -- $@ diff --git a/lib/Alchemy/Phrasea/Border/Manager.php b/lib/Alchemy/Phrasea/Border/Manager.php index d8abc9ac99..d017d206e6 100644 --- a/lib/Alchemy/Phrasea/Border/Manager.php +++ b/lib/Alchemy/Phrasea/Border/Manager.php @@ -14,6 +14,8 @@ namespace Alchemy\Phrasea\Border; use Alchemy\Phrasea\Application; use Alchemy\Phrasea\Border\Checker\CheckerInterface; use Alchemy\Phrasea\Border\Attribute\AttributeInterface; +use Alchemy\Phrasea\Core\Event\Record\RecordEvents; +use Alchemy\Phrasea\Core\Event\Record\SubdefinitionCreateEvent; use Alchemy\Phrasea\Exception\RuntimeException; use Alchemy\Phrasea\Metadata\Tag\TfArchivedate; use Alchemy\Phrasea\Metadata\Tag\TfQuarantine; @@ -333,7 +335,7 @@ class Manager $this->app['phraseanet.metadata-setter']->replaceMetadata($newMetadata, $element); if(!$nosubdef) { - $element->rebuild_subdefs(); + $this->app['dispatcher']->dispatch(RecordEvents::SUBDEFINITION_CREATE, new SubdefinitionCreateEvent($element, true)); } return $element; diff --git a/lib/Alchemy/Phrasea/Command/Collection/PublishCollectionCommand.php b/lib/Alchemy/Phrasea/Command/Collection/PublishCollectionCommand.php new file mode 100644 index 0000000000..6cfac3a388 --- /dev/null +++ b/lib/Alchemy/Phrasea/Command/Collection/PublishCollectionCommand.php @@ -0,0 +1,61 @@ +setDescription('Publish collection in Phraseanet') + ->addOption('collection_id', null, InputOption::VALUE_REQUIRED, 'The base_id of the collection to publish but keep with existing right into present in application box.') + ->setHelp(''); + + return $this; + } + + protected function doExecute(InputInterface $input, OutputInterface $output) + { + try { + + $collection = \collection::getByBaseId($this->container,(int)$input->getOption('collection_id')); + $dialog = $this->getHelperSet()->get('dialog'); + + do { + $continue = mb_strtolower($dialog->ask($output, ' Do you want really publish this collection? (y/N)', 'N')); + } while ( ! in_array($continue, ['y', 'n'])); + + if ($continue !== 'y') { + $output->writeln('Aborting !'); + + return; + } + + $collection->enable($this->container->getApplicationBox()); + $output->writeln('Publish collection successful'); + } catch (\Exception $e) { + $output->writeln('Publish collection failed : '.$e->getMessage().''); + } + + return 0; + } + +} diff --git a/lib/Alchemy/Phrasea/Command/Collection/UnPublishCollectionCommand.php b/lib/Alchemy/Phrasea/Command/Collection/UnPublishCollectionCommand.php new file mode 100644 index 0000000000..ef0fc9dae5 --- /dev/null +++ b/lib/Alchemy/Phrasea/Command/Collection/UnPublishCollectionCommand.php @@ -0,0 +1,61 @@ +setDescription('Unpublish collection in Phraseanet') + ->addOption('collection_id', null, InputOption::VALUE_REQUIRED, 'The base_id of the collection to unpublish, the base_id is the same id used in API.') + ->setHelp(''); + + return $this; + } + + protected function doExecute(InputInterface $input, OutputInterface $output) + { + try { + + $collection = \collection::getByBaseId($this->container,(int)$input->getOption('collection_id')); + $dialog = $this->getHelperSet()->get('dialog'); + + do { + $continue = mb_strtolower($dialog->ask($output, sprintf(" Do you want really unpublish the collection %s? (y/N)", $collection->get_name()), 'N')); + } while ( ! in_array($continue, ['y', 'n'])); + + if ($continue !== 'y') { + $output->writeln('Aborting !'); + + return; + } + + $collection->disable($this->container->getApplicationBox()); + $output->writeln('Unpublish collection successful'); + } catch (\Exception $e) { + $output->writeln('Unpublish collection failed : '.$e->getMessage().''); + } + + return 0; + } + +} diff --git a/lib/Alchemy/Phrasea/Command/Databox/MountDataboxCommand.php b/lib/Alchemy/Phrasea/Command/Databox/MountDataboxCommand.php index ce77c7dbb2..bcfe53ae4f 100644 --- a/lib/Alchemy/Phrasea/Command/Databox/MountDataboxCommand.php +++ b/lib/Alchemy/Phrasea/Command/Databox/MountDataboxCommand.php @@ -1,7 +1,16 @@ setName('databox:mount') - ->addArgument('databox', InputArgument::REQUIRED, 'Database name for the databox', null) - ->addArgument('owner', InputArgument::REQUIRED, 'Email of the databox admin user', null) - ->addOption('connection', 'c', InputOption::VALUE_NONE, 'Flag to set new database settings') - ->addOption('db-host', null, InputOption::VALUE_OPTIONAL, 'MySQL server host', 'localhost') - ->addOption('db-port', null, InputOption::VALUE_OPTIONAL, 'MySQL server port', 3306) - ->addOption('db-user', null, InputOption::VALUE_OPTIONAL, 'MySQL server user', 'phrasea') - ->addOption('db-password', null, InputOption::VALUE_OPTIONAL, 'MySQL server password', null); + parent::__construct('databox:mount'); + + $this->setDescription('Mount databox') + ->addArgument('databox', InputArgument::REQUIRED, 'Database name in Mysql', null) + ->addArgument('user_id', InputArgument::REQUIRED, 'The Id of user owner (this account became full admin on this databox)', null) + ->addOption('db-host', null, InputOption::VALUE_OPTIONAL, 'MySQL server host') + ->addOption('db-port', null, InputOption::VALUE_OPTIONAL, 'MySQL server port') + ->addOption('db-user', null, InputOption::VALUE_OPTIONAL, 'MySQL server user') + ->addOption('db-password', null, InputOption::VALUE_OPTIONAL, 'MySQL server password') + ; + + return $this; } protected function doExecute(InputInterface $input, OutputInterface $output) { - $databoxName = $input->getArgument('databox'); - $connectionSettings = $input->getOption('connection') == false ? null : new DataboxConnectionSettings( - $input->getOption('db-host'), - $input->getOption('db-port'), - $input->getOption('db-user'), - $input->getOption('db-password') - ); + try { - /** @var UserRepository $userRepository */ - $userRepository = $this->container['repo.users']; - /** @var DataboxService $databoxService */ - $databoxService = $this->container['databox.service']; + /** @var UserRepository $userRepository */ + $userRepository = $this->container['repo.users']; - $owner = $userRepository->findByEmail($input->getArgument('owner')); + $owner = $userRepository->find($input->getArgument('user_id')); - $databoxService->mountDatabox( - $databoxName, - $owner, - $connectionSettings - ); + if (empty($owner)) { + $output->writeln('User not found ! '); - $output->writeln('Databox mounted'); + return; + } + + if ($owner->isGuest() || !$this->container->getAclForUser($owner)->is_admin()) { + $output->writeln('Admin role is required for the owner ! '); + + return; + } + + $databoxName = $input->getArgument('databox'); + $dialog = $this->getHelperSet()->get('dialog'); + + $connectionSettings = new DataboxConnectionSettings( + $input->getOption('db-host')?:$this->container['conf']->get(['main', 'database', 'host']), + $input->getOption('db-port')?:$this->container['conf']->get(['main', 'database', 'port']), + $input->getOption('db-user')?:$this->container['conf']->get(['main', 'database', 'user']), + $input->getOption('db-password')?:$this->container['conf']->get(['main', 'database', 'password']) + ); + + do { + $continue = mb_strtolower($dialog->ask($output, ' Do you want really mount this databox? (y/N)', 'N')); + } + while ( ! in_array($continue, ['y', 'n'])); + + if ($continue !== 'y') { + $output->writeln('Aborting !'); + + return; + } + + /** @var DataboxService $databoxService */ + $databoxService = $this->container['databox.service']; + + \phrasea::clear_sbas_params($this->container); + + $databox = $databoxService->mountDatabox( + $databoxName, + $owner, + $connectionSettings + ); + + $output->writeln("\n\tData-Box ID ".$databox->get_sbas_id()." mounted successful !\n"); + } catch (\Exception $e) { + $output->writeln('Mount databox failed :'.$e->getMessage().''); + } + + return 0; } + } diff --git a/lib/Alchemy/Phrasea/Command/Databox/UnMountDataboxCommand.php b/lib/Alchemy/Phrasea/Command/Databox/UnMountDataboxCommand.php new file mode 100644 index 0000000000..42199a519f --- /dev/null +++ b/lib/Alchemy/Phrasea/Command/Databox/UnMountDataboxCommand.php @@ -0,0 +1,60 @@ +setDescription('Unmount databox') + ->addArgument('databox_id', InputArgument::REQUIRED, 'The id of the databox to unmount', null) + ; + + return $this; + } + + protected function doExecute(InputInterface $input, OutputInterface $output) + { + try { + $databox = $this->container->findDataboxById($input->getArgument('databox_id')); + $dialog = $this->getHelperSet()->get('dialog'); + + do { + $continue = mb_strtolower($dialog->ask($output, ' Do you want really unmount this databox? (y/N)', 'N')); + } while ( ! in_array($continue, ['y', 'n'])); + + if ($continue !== 'y') { + $output->writeln('Aborting !'); + + return; + } + + $databox->unmount_databox(); + $output->writeln('Unmount databox successful'); + } catch (\Exception $e) { + $output->writeln('Unmount databox failed : '.$e->getMessage().''); + } + + return 0; + } + +} diff --git a/lib/Alchemy/Phrasea/Command/Plugin/AbstractPluginCommand.php b/lib/Alchemy/Phrasea/Command/Plugin/AbstractPluginCommand.php index 2d9d211612..53e4ffed39 100644 --- a/lib/Alchemy/Phrasea/Command/Plugin/AbstractPluginCommand.php +++ b/lib/Alchemy/Phrasea/Command/Plugin/AbstractPluginCommand.php @@ -15,6 +15,21 @@ use Alchemy\Phrasea\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +function normalizePath($path) { + return array_reduce(explode('/', $path), function ($a, $b) { + if($a === 0) + $a = '/'; + + if($b === '' || $b === '.') + return $a; + + if($b === '..') + return dirname($a); + + return preg_replace('/\/+/', '/', "$a/$b"); + }, 0); +} + abstract class AbstractPluginCommand extends Command { protected function validatePlugins(InputInterface $input, OutputInterface $output) @@ -54,33 +69,42 @@ abstract class AbstractPluginCommand extends Command protected function doInstallPlugin($source, InputInterface $input, OutputInterface $output) { - $temporaryDir = $this->container['temporary-filesystem']->createTemporaryDirectory(); - - $output->write("Importing $source..."); - $this->container['plugins.importer']->import($source, $temporaryDir); - $output->writeln(" OK"); - $output->write("Validating plugin..."); - $manifest = $this->container['plugins.plugins-validator']->validatePlugin($temporaryDir); + $manifest = $this->container['plugins.plugins-validator']->validatePlugin($source); $output->writeln(" OK found ".$manifest->getName().""); $targetDir = $this->container['plugin.path'] . DIRECTORY_SEPARATOR . $manifest->getName(); + if (normalizePath($targetDir) !== normalizePath($source)) { + $temporaryDir = $this->container['temporary-filesystem']->createTemporaryDirectory(); + $output->write("Importing $source..."); + $this->container['plugins.importer']->import($source, $temporaryDir); + $output->writeln(" OK"); + $workingDir = $temporaryDir; + } else { + $workingDir = $targetDir; + } - $output->write("Setting up composer..."); - $this->container['plugins.composer-installer']->install($temporaryDir); - $output->writeln(" OK"); + if (!is_dir($workingDir.'/vendor')) { + $output->write("Setting up composer..."); + $this->container['plugins.composer-installer']->install($workingDir); + $output->writeln(" OK"); + } $output->write("Installing plugin ".$manifest->getName()."..."); - $this->container['filesystem']->mirror($temporaryDir, $targetDir); + if (isset($temporaryDir)) { + $this->container['filesystem']->mirror($temporaryDir, $targetDir); + } $output->writeln(" OK"); $output->write("Copying public files ".$manifest->getName()."..."); $this->container['plugins.assets-manager']->update($manifest); $output->writeln(" OK"); - $output->write("Removing temporary directory..."); - $this->container['filesystem']->remove($temporaryDir); - $output->writeln(" OK"); + if (isset($temporaryDir)) { + $output->write("Removing temporary directory..."); + $this->container['filesystem']->remove($temporaryDir); + $output->writeln(" OK"); + } $output->write("Activating plugin..."); $this->container['conf']->set(['plugins', $manifest->getName(), 'enabled'], true); diff --git a/lib/Alchemy/Phrasea/Command/User/UserApplicationsCommand.php b/lib/Alchemy/Phrasea/Command/User/UserApplicationsCommand.php new file mode 100644 index 0000000000..ef79b178b6 --- /dev/null +++ b/lib/Alchemy/Phrasea/Command/User/UserApplicationsCommand.php @@ -0,0 +1,329 @@ +setDescription('List, Create, Edit, Delete application in Phraseanet (experimental)') + ->addOption('list', null, InputOption::VALUE_NONE, 'List all applications or user applications if --user_id is set') + ->addOption('create', null, InputOption::VALUE_NONE, 'Create application for user in Phraseanet') + ->addOption('edit', null, InputOption::VALUE_NONE, 'Edit application in Phraseanet work only if app_id is set') + ->addOption('delete', null, InputOption::VALUE_NONE, 'Delete application in Phraseanet, require an app_id') + ->addOption('user_id', 'u', InputOption::VALUE_REQUIRED, 'The Id of user owner of application (user_id), required to Create, Edit and Delete.') + ->addOption('app_id', 'a', InputOption::VALUE_REQUIRED, 'The application ID, required for Edit and Delete') + ->addOption('name', null, InputOption::VALUE_REQUIRED, 'The desired name for application, required for Create and Edit.') + ->addOption('type', 't', InputOption::VALUE_OPTIONAL, 'The kind of application, Desktop or Web.',ApiApplication::WEB_TYPE) + ->addOption('description', 'd', InputOption::VALUE_REQUIRED, 'The desired description for application.') + ->addOption('website', 'w', InputOption::VALUE_OPTIONAL, 'The desired url, eg: -w "https://www.alchemy.fr".') + ->addOption('callback', 'c', InputOption::VALUE_OPTIONAL, 'The desired endpoint for callback, required for web kind eg: -c "https://www.alchemy.fr/callback"') + ->addOption('webhook_url', null, InputOption::VALUE_REQUIRED, 'The webhook url') + ->addOption('active', null, InputOption::VALUE_OPTIONAL, 'Activate or deactivate the app, values true or false', 'true') + ->addOption('generate_token', null, InputOption::VALUE_NONE, 'Generate or regenerate the access token') + ->addOption('password_oauth2_gt', null, InputOption::VALUE_OPTIONAL, 'Activate or deactivate password OAuth2 grant type , values true or false', 'false') + ->addOption('jsonformat', null, InputOption::VALUE_NONE, 'Output in json format') + + ->setHelp(''); + + return $this; + } + + protected function doExecute(InputInterface $input, OutputInterface $output) + { + $userId = $input->getOption('user_id'); + $appId = $input->getOption('app_id'); + $name = $input->getOption('name'); + $type = $input->getOption('type'); + $description = $input->getOption('description'); + $website = $input->getOption('website'); + $urlCallback = $input->getOption('callback'); + $webhookUrl = $input->getOption('webhook_url'); + $active = $input->getOption('active'); + $generateToken = $input->getOption('generate_token'); + $passwordOauth2Gt = $input->getOption('password_oauth2_gt'); + $create = $input->getOption('create'); + $edit = $input->getOption('edit'); + $delete = $input->getOption('delete'); + $list = $input->getOption('list'); + $jsonformat = $input->getOption('jsonformat'); + + $applicationManipulator = $this->container['manipulator.api-application']; + $apiOauthTokenManipulator = $this->container['manipulator.api-oauth-token']; + $accountRepository = $this->container['repo.api-accounts']; + $apiApllicationConverter = $this->container['converter.api-application']; + $userRepository = $this->container['repo.users']; + $apiOauthRepository = $this->container['repo.api-oauth-tokens']; + + if ($create) { + if (null === $user = $userRepository->find($userId)) { + $output->writeln('User not found'); + return 0; + } + + if (!$name) { + $output->writeln('Name of application must be provide with option --name.'); + return 0; + } + + if (!$description) { + $output->writeln('Desciption of application must be provide.'); + + return 0; + } + + try { + $application = $applicationManipulator + ->create( + $name, + $type, + $description, + $website, + $user, + $urlCallback + ); + + $apiAccountManipulator = $this->container['manipulator.api-account']; + $apiAccountManipulator->create($application, $user, V2::VERSION); + + $account = $accountRepository->findByUserAndApplication($user, $application); + + if ($generateToken) { + $apiOauthTokenManipulator->create($account); + } + + if ($passwordOauth2Gt) { + if (in_array($passwordOauth2Gt, ['true', 'false'])) { + $application->setGrantPassword(($passwordOauth2Gt == 'true') ? true : false); + $applicationManipulator->update($application); + } else { + $output->writeln(' Value of option --password_oauth2_gt should be "true" or "false"'); + + return 0; + } + } + + if ($webhookUrl) { + $applicationManipulator->setWebhookUrl($application, $webhookUrl); + $applicationManipulator->update($application); + } + + if ($active) { + if (in_array($active, ['true', 'false'])) { + $application->setActivated(($active == 'true') ? true : false); + $applicationManipulator->update($application); + } else { + $output->writeln('Value of option --active should be "true" or "false"'); + + return 0; + } + } else { + $application->setActivated(true); + $applicationManipulator->update($application); + } + + $this->showApllicationInformation($apiOauthRepository, $account, $application, $jsonformat, $output); + } catch (\Exception $e) { + $output->writeln('Create an application for user failed : '.$e->getMessage().''); + } + } elseif ($edit) { + if (!$appId) { + $output->writeln('ID of the application must be provided with option --app_id to edit the application.'); + + return 0; + } + + $application = $apiApllicationConverter->convert($appId); + $account = $accountRepository->findByUserAndApplication($application->getCreator(), $application); + + if (!$account) { + $output->writeln('ApiAccount not found!'); + + return 0; + } + + if ($name) { + $application->setName($name); + } + if ($type) { + $applicationManipulator->setType($application, $type); + if ($type == ApiApplication::DESKTOP_TYPE) { + $applicationManipulator->setRedirectUri($application, ApiApplication::NATIVE_APP_REDIRECT_URI); + } + } + if ($description) { + $application->setDescription($description); + } + if ($website) { + $applicationManipulator->setWebsiteUrl($application, $website); + } + if ($urlCallback) { + $applicationManipulator->setRedirectUri($application, $urlCallback); + } + if ($generateToken) { + if (null !== $devToken = $apiOauthRepository->findDeveloperToken($account)) { + $apiOauthTokenManipulator->renew($devToken); + } else { + $apiOauthTokenManipulator->create($account); + } + } + if ($passwordOauth2Gt) { + if (in_array($passwordOauth2Gt, ['true', 'false'])) { + $application->setGrantPassword(($passwordOauth2Gt == 'true') ? true : false); + } else { + $output->writeln(' Value of option --password_oauth2_gt should be "true" or "false"'); + + return 0; + } + } + if ($webhookUrl) { + $applicationManipulator->setWebhookUrl($application, $webhookUrl); + } + + if ($active) { + if (in_array($active, ['true', 'false'])) { + $application->setActivated(($active == 'true') ? true : false); + } else { + $output->writeln('Value of option --active should be "true" or "false"'); + + return 0; + } + } + + $applicationManipulator->update($application); + + $this->showApllicationInformation($apiOauthRepository, $account, $application, $jsonformat, $output); + } elseif ($list) { + if ($userId) { + if (null === $user = $userRepository->find($userId)) { + $output->writeln('User not found'); + + return 0; + } + + $accounts = $accountRepository->findByUser($user); + } else { + $accounts = $accountRepository->findAll(); + } + + $applicationList = []; + + foreach ($accounts as $account) { + $application = $account->getApplication(); + $token = $apiOauthRepository->findDeveloperToken($account); + + $applicationList[] = [ + $application->getId(), + $account->getUser()->getId(), + $application->getName(), + $application->getClientId(), + $application->getClientSecret(), + $application->getRedirectUri(), + ($token) ? $token->getOauthToken() : '-', + $application->isPasswordGranted() ? "true": "false" + ]; + } + + $applicationTable = $this->getHelperSet()->get('table'); + $headers = ['app_id', 'user_id', 'name', 'client_id', 'client_secret', 'callback_url', 'generated token', 'grant_password status']; + + if ($jsonformat ) { + foreach ($applicationList as $appList) { + $appInfo[] = array_combine($headers, $appList); + } + + echo json_encode($appInfo); + } else { + $applicationTable = $this->getHelperSet()->get('table'); + $applicationTable + ->setHeaders($headers) + ->setRows($applicationList) + ->render($output) + ; + } + } elseif ($delete) { + if (!$appId) { + $output->writeln('ID of the application must be provided with option --app_id to delete the app.'); + + return 0; + } + + $application = $apiApllicationConverter->convert($appId); + + if (is_null($application->getCreator())) { + /** @var DialogHelper $dialog */ + $dialog = $this->getHelperSet()->get('dialog'); + + $continue = $dialog->askConfirmation($output, "It's a special phraseanet application, do you want really to delete it? (N/y)", false); + + if (!$continue) { + $output->writeln("See you later !"); + + return 0; + } + } + + $applicationManipulator->delete($application); + + $output->writeln("Application ID $appId deleted successfully !"); + } + + return 0; + } + + private function showApllicationInformation($apiOauthRepository, ApiAccount $account, ApiApplication $application, $jsonformat, $output) + { + $token = $account ? $apiOauthRepository->findDeveloperToken($account) : null; + + $applicationCreated = [ + $application->getClientSecret(), + $application->getClientId(), + $this->container["conf"]->get("servername") . "api/oauthv2/authorize", + $this->container["conf"]->get("servername") . "api/oauthv2/token", + ($token) ? $token->getOauthToken() : '-', + $application->isPasswordGranted() ? "true": "false" + ]; + + $headers = ['client_secret', 'client_id', 'Authorize endpoint url', 'Access endpoint', 'generated token', 'grant_password status']; + if ($jsonformat ) { + $createdAppInfo = array_combine($headers, $applicationCreated); + echo json_encode($createdAppInfo); + } else { + $table = $this->getHelperSet()->get('table'); + $table + ->setHeaders($headers) + ->setRows([$applicationCreated]) + ->render($output) + ; + } + } +} diff --git a/lib/Alchemy/Phrasea/Command/User/UserListCommand.php b/lib/Alchemy/Phrasea/Command/User/UserListCommand.php index bf3f87e478..b88cd4c359 100644 --- a/lib/Alchemy/Phrasea/Command/User/UserListCommand.php +++ b/lib/Alchemy/Phrasea/Command/User/UserListCommand.php @@ -30,8 +30,8 @@ class UserListCommand extends Command { parent::__construct('user:list'); - $this->setDescription('List of all user (experimental)') - ->addOption('user_id', null, InputOption::VALUE_OPTIONAL, ' The id of user export only info this user ') + $this->setDescription('List of all user (experimental)') + ->addOption('user_id', null, InputOption::VALUE_OPTIONAL, 'The id of user export only info this user ') ->addOption('user_email', null, InputOption::VALUE_OPTIONAL, 'The mail of user export only info this user .') ->addOption('database_id', null, InputOption::VALUE_OPTIONAL, 'Id of database.') ->addOption('collection_id', null, InputOption::VALUE_OPTIONAL, 'Id of the collection.') @@ -39,7 +39,6 @@ class UserListCommand extends Command ->addOption('guest', null, InputOption::VALUE_NONE, 'Only guest user') ->addOption('created', null, InputOption::VALUE_OPTIONAL, 'Created at with operator,aaaa-mm-jj hh:mm:ss.') ->addOption('updated', null, InputOption::VALUE_OPTIONAL, 'Update at with operator,aaaa-mm-jj hh:mm:ss.') - ->addOption('application', null, InputOption::VALUE_NONE, 'List application of user work only if --user_id is set') ->addOption('right', null, InputOption::VALUE_NONE, 'Show right information') ->addOption('adress', null, InputOption::VALUE_NONE, 'Show adress information') ->addOption('models', null, InputOption::VALUE_NONE, "Show only defined models, if --user_id is set with --models it's the template owner") @@ -58,7 +57,6 @@ class UserListCommand extends Command $collectionId = $input->getOption('collection_id'); $lockStatus = $input->getOption('mail_lock_status'); $guest = $input->getOption('guest'); - $application = $input->getOption('application'); $withAdress = $input->getOption('adress'); $created = $input->getOption('created'); $updated = $input->getOption('updated'); @@ -77,11 +75,6 @@ class UserListCommand extends Command if($lockStatus && !$models) $query->addSqlFilter('Users.mail_locked = 1'); if($guest && !$models) $query->include_invite(true)->addSqlFilter('Users.guest = 1'); - if ($application and !$userId) { - $output->writeln('You must provide --user_id when using --application option'); - return 0; - } - /** @var UserRepository $userRepository */ $userRepository = $this->container['repo.users']; @@ -94,11 +87,7 @@ class UserListCommand extends Command } $userList = []; - $showApplication = false; foreach ($users as $key => $user) { - if ($userId and $application) { - $showApplication = true; - } $userList[] = $this->listUser($user, $withAdress, $withRight); $userListRaw[] = array_combine($this->headerTable($withAdress, $withRight), $this->listUser($user, $withAdress, $withRight)); @@ -113,15 +102,6 @@ class UserListCommand extends Command ->setRows($userList) ->render($output); ; - - - if ($showApplication) { - $applicationTable = $this->getHelperSet()->get('table'); - $applicationTable->setHeaders(array( - array(new TableCell('Applications', array('colspan' => 5))), - ['name','callback','client_secret','client_id','token'], - ))->setRows($this->getApplicationOfUser($users[0]))->render($output); - } } @@ -215,37 +195,6 @@ class UserListCommand extends Command ]; } - /** - * @param User $user - * @return array - */ - private function getApplicationOfUser(User $user) - { - $apiRepository = $this->container['repo.api-applications']; - $applications = $apiRepository->findByUser($user); - - if (empty($applications)) { - return []; - } - - $accountRepository = $this->container['repo.api-accounts']; - $apiOauthRepository = $this->container['repo.api-oauth-tokens']; - $usersApplication = []; - foreach ($applications as $application) { - $account = $accountRepository->findByUserAndApplication($user, $application); - $token = $account ? $apiOauthRepository->findDeveloperToken($account) : null; - $usersApplication[] = [ - $application->getName(), - $application->getRedirectUri(), - $application->getClientSecret(), - $application->getClientId(), - ($token) ? $token->getOauthToken() : '-' - ]; - } - - return $usersApplication; - } - /** * @param $withAdress * @param $withRight diff --git a/lib/Alchemy/Phrasea/Command/User/UserPasswordCommand.php b/lib/Alchemy/Phrasea/Command/User/UserPasswordCommand.php new file mode 100644 index 0000000000..94e400aa14 --- /dev/null +++ b/lib/Alchemy/Phrasea/Command/User/UserPasswordCommand.php @@ -0,0 +1,178 @@ +setDescription('Set user password in Phraseanet (experimental)') + ->addOption('user_id', null, InputOption::VALUE_REQUIRED, 'The id of user.') + ->addOption('generate', null, InputOption::VALUE_NONE, 'Generate and set with a random value') + ->addOption('password', null, InputOption::VALUE_OPTIONAL, 'Set the user password to the input value') + ->addOption('send_renewal_email', null, InputOption::VALUE_NONE, 'Send email link to user for password renewing, work only if --password or --generate are not define') + ->addOption('password_hash', null, InputOption::VALUE_OPTIONAL, 'Define a password hashed, work only with password_nonce') + ->addOption('password_nonce', null, InputOption::VALUE_OPTIONAL, 'Define a password nonce, work only with password_hash') + ->addOption('dump', null, InputOption::VALUE_NONE, 'Return the password hashed and nonce') + ->addOption('jsonformat', null, InputOption::VALUE_NONE, 'Output in json format') + ->addOption('yes', 'y', InputOption::VALUE_NONE, 'Answer yes to all questions') + + ->setHelp(''); + + return $this; + } + + protected function doExecute(InputInterface $input, OutputInterface $output) + { + $dialog = $this->getHelperSet()->get('dialog'); + $userRepository = $this->container['repo.users']; + $userManipulator = $this->container['manipulator.user']; + + $user = $userRepository->find($input->getOption('user_id')); + $password = $input->getOption('password'); + $generate = $input->getOption('generate'); + $sendRenewalEmail = $input->getOption('send_renewal_email'); + $dump = $input->getOption('dump'); + $passwordHash = $input->getOption('password_hash'); + $passwordNonce = $input->getOption('password_nonce'); + $jsonformat = $input->getOption('jsonformat'); + $yes = $input->getOption('yes'); + + + if ($user === null) { + $output->writeln('Not found User.'); + return 0; + } + + if ($passwordHash && $passwordNonce) { + $user->setNonce($passwordNonce); + $user->setPassword($passwordHash); + $userManipulator->updateUser($user); + + $output->writeln('password set with hashed pass'); + + return 0; + } + + if ($dump) { + $oldHash = $user->getPassword(); + $oldNonce = $user->getNonce(); + } + + if ($generate) { + $oldHash = $user->getPassword(); + $oldNonce = $user->getNonce(); + + $password = $this->container['random.medium']->generateString(64); + } else { + if (!$password && $sendRenewalEmail) { + $this->sendPasswordSetupMail($user); + $output->writeln('email link sended for password renewing!'); + + return 0; + } elseif (!$password && !$sendRenewalEmail && ! $dump) { + $output->writeln('choose one option to set a password!'); + + return 0; + } + } + + if ($password) { + if (!$yes) { + do { + $continue = mb_strtolower($dialog->ask($output, 'Do you want really set password to this user? (y/N)', 'N')); + } while (!in_array($continue, ['y', 'n'])); + + if ($continue !== 'y') { + $output->writeln('Aborting !'); + + return; + } + } + $oldHash = $user->getPassword(); + $oldNonce = $user->getNonce(); + + $userManipulator->setPassword($user,$password); + } + + if ($dump) { + if ($jsonformat) { + $hash['password_hash'] = $oldHash; + $hash['nonce'] = $oldNonce; + + echo json_encode($hash); + + return 0; + } else { + $output->writeln('password_hash :' . $oldHash); + $output->writeln('nonce :' . $oldNonce); + + return 0; + } + } + + if (($password || $generate)) { + if ($jsonformat) { + $hash['new_password'] = $password; + $hash['previous_password_hash'] = $oldHash; + $hash['previous_nonce'] = $oldNonce; + + echo json_encode($hash); + } else { + $output->writeln('new_password :' . $password); + $output->writeln('previous_password_hash :' . $oldHash); + $output->writeln('previous_nonce :' . $oldNonce); + } + } + + return 0; + } + + /** + * Send mail for renew password + * @param User $user + */ + private function sendPasswordSetupMail(User $user) + { + $this->setDelivererLocator(new LazyLocator($this->container, 'notification.deliverer')); + $receiver = Receiver::fromUser($user); + + $token = $this->container['manipulator.token']->createResetPasswordToken($user); + + $url = $this->container['url_generator']->generate('login_renew_password', [ 'token' => $token->getValue() ], true); + $mail = MailRequestPasswordUpdate::create($this->container, $receiver); + $servername = $this->container['conf']->get('servername'); + $mail->setButtonUrl($url); + $mail->setLogin($user->getLogin()); + $mail->setExpiration(new \DateTime('+1 day')); + + $this->deliver($mail); + } + +} diff --git a/lib/Alchemy/Phrasea/Command/User/UserSetPasswordCommand.php b/lib/Alchemy/Phrasea/Command/User/UserSetPasswordCommand.php deleted file mode 100644 index 963910db02..0000000000 --- a/lib/Alchemy/Phrasea/Command/User/UserSetPasswordCommand.php +++ /dev/null @@ -1,79 +0,0 @@ -setDescription('Set user password in Phraseanet') - ->addOption('user_id', null, InputOption::VALUE_REQUIRED, 'The id of user.') - ->addOption('generate', null, InputOption::VALUE_NONE, 'Generate the password') - ->addOption('password', null, InputOption::VALUE_OPTIONAL, 'The password') - ->setHelp(''); - - return $this; - } - - protected function doExecute(InputInterface $input, OutputInterface $output) - { - - $dialog = $this->getHelperSet()->get('dialog'); - $userRepository = $this->container['repo.users']; - $userManipulator = $this->container['manipulator.user']; - $user = $userRepository->find($input->getOption('user_id')); - $password = $input->getOption('password'); - $generate = $input->getOption('generate'); - - if ($user === null) { - $output->writeln('Not found User.'); - return 0; - } - - if ($generate) { - $password = $this->container['random.medium']->generateString(64); - } else { - if (!$password) { - $output->writeln('--password option not specified'); - return 0; - } - } - - do { - $continue = mb_strtolower($dialog->ask($output, 'Do you want really set password to this user? (y/N)', 'N')); - } while (!in_array($continue, ['y', 'n'])); - - if ($continue !== 'y') { - $output->writeln('Aborting !'); - - return; - } - - $userManipulator->setPassword($user,$password); - $output->writeln('New password: ' . $password . ''); - - return 0; - } - -} diff --git a/lib/Alchemy/Phrasea/Controller/Api/V1Controller.php b/lib/Alchemy/Phrasea/Controller/Api/V1Controller.php index 9b8f4ed04d..42339169d6 100644 --- a/lib/Alchemy/Phrasea/Controller/Api/V1Controller.php +++ b/lib/Alchemy/Phrasea/Controller/Api/V1Controller.php @@ -1573,9 +1573,9 @@ class V1Controller extends Controller $options->setFirstResult((int)($request->get('offset_start') ?: 0)); $options->setMaxResults((int)$request->get('per_page') ?: 10); - $this->getSearchEngine()->resetCache(); + $searchEngine = $this->getSearchEngine(); - $search_result = $this->getSearchEngine()->query((string)$request->get('query'), $options); + $search_result = $searchEngine->query((string)$request->get('query'), $options); $this->getUserManipulator()->logQuery($this->getAuthenticatedUser(), $search_result->getQueryText()); @@ -1583,12 +1583,12 @@ class V1Controller extends Controller $collectionsReferencesByDatabox = $options->getCollectionsReferencesByDatabox(); foreach ($collectionsReferencesByDatabox as $sbid => $references) { $databox = $this->findDataboxById($sbid); - $collectionsIds = array_map(function(CollectionReference $ref){return $ref->getCollectionId();}, $references); + $collectionsIds = array_map(function (CollectionReference $ref) { + return $ref->getCollectionId(); + }, $references); $this->getSearchEngineLogger()->log($databox, $search_result->getQueryText(), $search_result->getTotal(), $collectionsIds); } - $this->getSearchEngine()->clearCache(); - return $search_result; } diff --git a/lib/Alchemy/Phrasea/Controller/LightboxController.php b/lib/Alchemy/Phrasea/Controller/LightboxController.php index 30d7c81f65..19c7378c1f 100644 --- a/lib/Alchemy/Phrasea/Controller/LightboxController.php +++ b/lib/Alchemy/Phrasea/Controller/LightboxController.php @@ -450,6 +450,51 @@ class LightboxController extends Controller return $this->app->json($data); } + /** + * @param Basket $basket + * @return Response + */ + public function ajaxGetElementsAction(Basket $basket) + { + $ret = [ + 'error' => false, + 'datas' => [ + 'counts' => [ + 'yes' => 0, + 'no' => 0, + 'nul' => 0, + 'total' => 0 + ] + ] + ]; + try { + if (!$basket->getValidation()) { + throw new Exception('There is no validation session attached to this basket'); + } + foreach ($basket->getElements() as $element) { + $vd = $element->getUserValidationDatas($this->getAuthenticatedUser()); + if($vd->getAgreement() === true) { + $ret['datas']['counts']['yes']++; + } + elseif($vd->getAgreement() === false) { + $ret['datas']['counts']['no']++; + } + elseif($vd->getAgreement() === null) { + $ret['datas']['counts']['nul']++; + } + $ret['datas']['counts']['total']++; + } + } + catch (Exception $e) { + $ret = [ + 'error' => true, + 'datas' => $e->getMessage() + ]; + } + + return $this->app->json($ret); + } + /** * @param Basket $basket * @throws Exception diff --git a/lib/Alchemy/Phrasea/Controller/Prod/ExportController.php b/lib/Alchemy/Phrasea/Controller/Prod/ExportController.php index df6f2a9f19..f4692c99ac 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/ExportController.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/ExportController.php @@ -15,6 +15,7 @@ use Alchemy\Phrasea\Application\Helper\FilesystemAware; use Alchemy\Phrasea\Application\Helper\NotifierAware; use Alchemy\Phrasea\Controller\Controller; use Alchemy\Phrasea\Core\Event\ExportFailureEvent; +use Alchemy\Phrasea\Core\Event\ExportMailEvent; use Alchemy\Phrasea\Core\PhraseaEvents; use Alchemy\Phrasea\Exception\InvalidArgumentException; use Alchemy\Phrasea\Model\Manipulator\TokenManipulator; @@ -193,42 +194,26 @@ class ExportController extends Controller $token = $this->getTokenManipulator()->createEmailExportToken(serialize($list)); if (count($destMails) > 0) { - //zip documents - \set_export::build_zip( - $this->app, - $token, - $list, - $this->app['tmp.download.path'].'/'. $token->getValue() . '.zip' - ); + $emitterId = $this->getAuthenticatedUser()->getId(); - $remaingEmails = $destMails; + $tokenValue = $token->getValue(); $url = $this->app->url('prepare_download', ['token' => $token->getValue(), 'anonymous' => false, 'type' => \Session_Logger::EVENT_EXPORTMAIL]); - $user = $this->getAuthenticatedUser(); - $emitter = new Emitter($user->getDisplayName(), $user->getEmail()); + $params = [ + 'url' => $url, + 'textmail' => $request->request->get('textmail'), + 'reading_confirm' => !!$request->request->get('reading_confirm', false), + 'ssttid' => $ssttid = $request->request->get('ssttid', ''), + 'lst' => $lst = $request->request->get('lst', ''), + ]; - foreach ($destMails as $key => $mail) { - try { - $receiver = new Receiver(null, trim($mail)); - } catch (InvalidArgumentException $e) { - continue; - } - - $mail = MailRecordsExport::create($this->app, $receiver, $emitter, $request->request->get('textmail')); - $mail->setButtonUrl($url); - $mail->setExpiration($token->getExpiration()); - - $this->deliver($mail, !!$request->request->get('reading_confirm', false)); - unset($remaingEmails[$key]); - } - - //some mails failed - if (count($remaingEmails) > 0) { - foreach ($remaingEmails as $mail) { - $this->dispatch(PhraseaEvents::EXPORT_MAIL_FAILURE, new ExportFailureEvent($this->getAuthenticatedUser(), $ssttid, $lst, \eventsmanager_notify_downloadmailfail::MAIL_FAIL, $mail)); - } - } + $this->dispatch(PhraseaEvents::EXPORT_MAIL_CREATE, new ExportMailEvent( + $emitterId, + $tokenValue, + $destMails, + $params + )); } return $this->app->json([ diff --git a/lib/Alchemy/Phrasea/Controller/Prod/PushController.php b/lib/Alchemy/Phrasea/Controller/Prod/PushController.php index 6e650aefaa..c9726d5faf 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/PushController.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/PushController.php @@ -98,7 +98,7 @@ class PushController extends Controller $Basket->setUser($user_receiver); $Basket->setPusher($this->getAuthenticatedUser()); $Basket->markUnread(); - + $manager->persist($Basket); foreach ($pusher->get_elements() as $element) { @@ -600,6 +600,38 @@ class PushController extends Controller ); } + public function updateExpirationAction(Request $request) + { + $ret = [ + 'success' => false, + 'message' => $this->app->trans('Unable to save the expiration date') + ]; + if (is_null($request->request->get('date'))) { + $ret['message'] = $this->app->trans('The provided date is null!'); + return $this->app->json($ret); + } + $repository = $this->app['repo.baskets']; + $manager = $this->getEntityManager(); + $manager->beginTransaction(); + try { + $basket = $repository->findUserBasket($request->request->get('basket_id'), $this->app->getAuthenticatedUser(), true); + $date = new \DateTime($request->request->get('date') . " 23:59:59"); + $validation = $basket->getValidation(); + if (is_null($validation)) { + return $this->app->json($ret); + } + $validation->setExpires($date); + $manager->persist($validation); + $manager->flush(); + $manager->commit(); + $ret['message'] = $this->app->trans('Expiration date successfully updated!'); + } catch (\Exception $e) { + $ret['message'] = $e->getMessage(); + $manager->rollback(); + } + return $this->app->json($ret); + } + private function formatUser(User $user) { $subtitle = array_filter([$user->getJob(), $user->getCompany()]); @@ -734,4 +766,5 @@ class PushController extends Controller { return $this->app['random.medium']; } + } diff --git a/lib/Alchemy/Phrasea/Controller/Prod/RecordController.php b/lib/Alchemy/Phrasea/Controller/Prod/RecordController.php index 0a948d6d1d..8e9a609811 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/RecordController.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/RecordController.php @@ -14,6 +14,8 @@ use Alchemy\Phrasea\Application\Helper\EntityManagerAware; use Alchemy\Phrasea\Application\Helper\SearchEngineAware; use Alchemy\Phrasea\Controller\Controller; use Alchemy\Phrasea\Controller\RecordsRequest; +use Alchemy\Phrasea\Core\Event\Record\DeleteEvent; +use Alchemy\Phrasea\Core\Event\Record\RecordEvents; use Alchemy\Phrasea\Core\Event\RecordEdit; use Alchemy\Phrasea\Core\PhraseaEvents; use Alchemy\Phrasea\Model\Entities\BasketElement; @@ -234,7 +236,7 @@ class RecordController extends Controller if($trashCollectionsBySbasId[$sbasId] !== null) { if($record->getCollection()->get_coll_id() == $trashCollectionsBySbasId[$sbasId]->get_coll_id()) { // record is already in trash so delete it - $record->delete(); + $this->getEventDispatcher()->dispatch(RecordEvents::DELETE, new DeleteEvent($record)); } else { // move to trash collection $record->move_to_collection($trashCollectionsBySbasId[$sbasId], $this->getApplicationBox()); @@ -247,7 +249,7 @@ class RecordController extends Controller } } else { // no trash collection, delete - $record->delete(); + $this->getEventDispatcher()->dispatch(RecordEvents::DELETE, new DeleteEvent($record)); } } catch (\Exception $e) { } diff --git a/lib/Alchemy/Phrasea/Controller/Prod/StoryController.php b/lib/Alchemy/Phrasea/Controller/Prod/StoryController.php index 9a65ed61fa..a90f0a0ed1 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/StoryController.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/StoryController.php @@ -14,6 +14,8 @@ use Alchemy\Phrasea\Application\Helper\EntityManagerAware; use Alchemy\Phrasea\Controller\Controller; use Alchemy\Phrasea\Controller\RecordsRequest; use Alchemy\Phrasea\Controller\Exception as ControllerException; +use Alchemy\Phrasea\Core\Event\Record\RecordEvents; +use Alchemy\Phrasea\Core\Event\Record\SubdefinitionCreateEvent; use Alchemy\Phrasea\Core\Event\RecordEdit; use Alchemy\Phrasea\Core\PhraseaEvents; use Alchemy\Phrasea\Model\Entities\StoryWZ; @@ -68,7 +70,9 @@ class StoryController extends Controller break; } - $story->set_metadatas($metadatas)->rebuild_subdefs(); + $recordAdapter = $story->set_metadatas($metadatas); + // tell phraseanet to rebuild subdef + $this->dispatch(RecordEvents::SUBDEFINITION_CREATE, new SubdefinitionCreateEvent($recordAdapter)); $storyWZ = new StoryWZ(); $storyWZ->setUser($this->getAuthenticatedUser()); diff --git a/lib/Alchemy/Phrasea/Controller/Prod/ToolsController.php b/lib/Alchemy/Phrasea/Controller/Prod/ToolsController.php index 872f385455..65f72a8a36 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/ToolsController.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/ToolsController.php @@ -16,6 +16,7 @@ use Alchemy\Phrasea\Application\Helper\SubDefinitionSubstituerAware; use Alchemy\Phrasea\Controller\Controller; use Alchemy\Phrasea\Controller\RecordsRequest; use Alchemy\Phrasea\Core\Event\Record\RecordEvents; +use Alchemy\Phrasea\Core\Event\Record\SubdefinitionCreateEvent; use Alchemy\Phrasea\Exception\RuntimeException; use Alchemy\Phrasea\Metadata\PhraseanetMetadataReader; use Alchemy\Phrasea\Metadata\PhraseanetMetadataSetter; @@ -156,7 +157,7 @@ class ToolsController extends Controller } if (!$substituted || $force) { - $record->rebuild_subdefs(); + $this->dispatch(RecordEvents::SUBDEFINITION_CREATE, new SubdefinitionCreateEvent($record)); } } diff --git a/lib/Alchemy/Phrasea/ControllerProvider/Lightbox.php b/lib/Alchemy/Phrasea/ControllerProvider/Lightbox.php index c1485b862c..7e18fff788 100644 --- a/lib/Alchemy/Phrasea/ControllerProvider/Lightbox.php +++ b/lib/Alchemy/Phrasea/ControllerProvider/Lightbox.php @@ -105,6 +105,11 @@ class Lightbox implements ControllerProviderInterface, ServiceProviderInterface ->assert('basket', '\d+') ; + $controllers->get('/ajax/GET_ELEMENTS/{basket}/', 'controller.lightbox:ajaxGetElementsAction') + ->bind('lightbox_ajax_get_elements') + ->assert('basket', '\d+') + ; + return $controllers; } diff --git a/lib/Alchemy/Phrasea/ControllerProvider/Prod/Push.php b/lib/Alchemy/Phrasea/ControllerProvider/Prod/Push.php index 48352e1e39..40b93220c0 100644 --- a/lib/Alchemy/Phrasea/ControllerProvider/Prod/Push.php +++ b/lib/Alchemy/Phrasea/ControllerProvider/Prod/Push.php @@ -59,6 +59,9 @@ class Push implements ControllerProviderInterface, ServiceProviderInterface $controllers->post('/validate/', 'controller.prod.push:validateAction') ->bind('prod_push_validate'); + $controllers->post('/update-expiration/', 'controller.prod.push:updateExpirationAction') + ->bind('prod_push_do_update_expiration'); + $controllers->get('/user/{usr_id}/', 'controller.prod.push:getUserAction') ->assert('usr_id', '\d+'); diff --git a/lib/Alchemy/Phrasea/Core/Event/ExportMailEvent.php b/lib/Alchemy/Phrasea/Core/Event/ExportMailEvent.php new file mode 100644 index 0000000000..3acafb4c70 --- /dev/null +++ b/lib/Alchemy/Phrasea/Core/Event/ExportMailEvent.php @@ -0,0 +1,53 @@ +emitterUserId = $emitterUserId; + $this->tokenValue = $tokenValue; + $this->destinationMails = $destMails; + $this->params = $params; + } + + public function getTokenValue() + { + return $this->tokenValue; + } + + public function getDestinationMails() + { + return $this->destinationMails; + } + + public function getEmitterUserId() + { + return $this->emitterUserId; + } + + public function getParams() + { + return $this->params; + } +} diff --git a/lib/Alchemy/Phrasea/Core/Event/Record/DeleteEvent.php b/lib/Alchemy/Phrasea/Core/Event/Record/DeleteEvent.php new file mode 100644 index 0000000000..8d8bfdb379 --- /dev/null +++ b/lib/Alchemy/Phrasea/Core/Event/Record/DeleteEvent.php @@ -0,0 +1,7 @@ +isNewRecord = $isNewRecord; + } + + /** + * @return bool + */ + public function isNewRecord() + { + return $this->isNewRecord; + } +} diff --git a/lib/Alchemy/Phrasea/Core/Event/Subscriber/ExportSubscriber.php b/lib/Alchemy/Phrasea/Core/Event/Subscriber/ExportSubscriber.php index fca66dab4a..d3c05a64b6 100644 --- a/lib/Alchemy/Phrasea/Core/Event/Subscriber/ExportSubscriber.php +++ b/lib/Alchemy/Phrasea/Core/Event/Subscriber/ExportSubscriber.php @@ -12,7 +12,15 @@ namespace Alchemy\Phrasea\Core\Event\Subscriber; use Alchemy\Phrasea\Core\Event\ExportFailureEvent; +use Alchemy\Phrasea\Core\Event\ExportMailEvent; use Alchemy\Phrasea\Core\PhraseaEvents; +use Alchemy\Phrasea\Exception\InvalidArgumentException; +use Alchemy\Phrasea\Model\Entities\Token; +use Alchemy\Phrasea\Model\Repositories\TokenRepository; +use Alchemy\Phrasea\Model\Repositories\UserRepository; +use Alchemy\Phrasea\Notification\Emitter; +use Alchemy\Phrasea\Notification\Mail\MailRecordsExport; +use Alchemy\Phrasea\Notification\Receiver; class ExportSubscriber extends AbstractNotificationSubscriber { @@ -39,10 +47,65 @@ class ExportSubscriber extends AbstractNotificationSubscriber $this->app['event-manager']->notify($params['usr_id'], 'eventsmanager_notify_downloadmailfail', $datas, $mailed); } + public function onCreateExportMail(ExportMailEvent $event) + { + $destMails = $event->getDestinationMails(); + + $params = $event->getParams(); + + /** @var UserRepository $userRepository */ + $userRepository = $this->app['repo.users']; + + $user = $userRepository->find($event->getEmitterUserId()); + + /** @var TokenRepository $tokenRepository */ + $tokenRepository = $this->app['repo.tokens']; + + /** @var Token $token */ + $token = $tokenRepository->findValidToken($event->getTokenValue()); + + $list = unserialize($token->getData()); + + //zip documents + \set_export::build_zip( + $this->app, + $token, + $list, + $this->app['tmp.download.path'].'/'. $token->getValue() . '.zip' + ); + + $remaingEmails = $destMails; + + $emitter = new Emitter($user->getDisplayName(), $user->getEmail()); + + foreach ($destMails as $key => $mail) { + try { + $receiver = new Receiver(null, trim($mail)); + } catch (InvalidArgumentException $e) { + continue; + } + + $mail = MailRecordsExport::create($this->app, $receiver, $emitter, $params['textmail']); + $mail->setButtonUrl($params['url']); + $mail->setExpiration($token->getExpiration()); + + $this->deliver($mail, $params['reading_confirm']); + unset($remaingEmails[$key]); + } + + //some mails failed + if (count($remaingEmails) > 0) { + foreach ($remaingEmails as $mail) { + $this->app['dispatcher']->dispatch(PhraseaEvents::EXPORT_MAIL_FAILURE, new ExportFailureEvent($user, $params['ssttid'], $params['lst'], \eventsmanager_notify_downloadmailfail::MAIL_FAIL, $mail)); + } + } + } + public static function getSubscribedEvents() { return [ - PhraseaEvents::EXPORT_MAIL_FAILURE => 'onMailExportFailure' + PhraseaEvents::EXPORT_MAIL_FAILURE => 'onMailExportFailure', + PhraseaEvents::EXPORT_MAIL_CREATE => 'onCreateExportMail', ]; } } diff --git a/lib/Alchemy/Phrasea/Core/Event/Subscriber/RecordEditSubscriber.php b/lib/Alchemy/Phrasea/Core/Event/Subscriber/RecordEditSubscriber.php index d5c0c69f54..8307749eb5 100644 --- a/lib/Alchemy/Phrasea/Core/Event/Subscriber/RecordEditSubscriber.php +++ b/lib/Alchemy/Phrasea/Core/Event/Subscriber/RecordEditSubscriber.php @@ -11,8 +11,10 @@ namespace Alchemy\Phrasea\Core\Event\Subscriber; use Alchemy\Phrasea\Core\Event\Record\CollectionChangedEvent; +use Alchemy\Phrasea\Core\Event\Record\DeleteEvent; use Alchemy\Phrasea\Core\Event\Record\RecordEvent; use Alchemy\Phrasea\Core\Event\Record\RecordEvents; +use Alchemy\Phrasea\Core\Event\Record\SubdefinitionCreateEvent; use Alchemy\Phrasea\Core\Event\RecordEdit; use Alchemy\Phrasea\Core\PhraseaEvents; use Alchemy\Phrasea\Metadata\Tag\TfEditdate; @@ -26,10 +28,12 @@ class RecordEditSubscriber implements EventSubscriberInterface public static function getSubscribedEvents() { return array( - PhraseaEvents::RECORD_EDIT => 'onEdit', - PhraseaEvents::RECORD_UPLOAD => 'onEdit', - RecordEvents::ROTATE => 'onRecordChange', - RecordEvents::COLLECTION_CHANGED => 'onCollectionChanged', + PhraseaEvents::RECORD_EDIT => 'onEdit', + PhraseaEvents::RECORD_UPLOAD => 'onEdit', + RecordEvents::ROTATE => 'onRecordChange', + RecordEvents::COLLECTION_CHANGED => 'onCollectionChanged', + RecordEvents::SUBDEFINITION_CREATE => 'onSubdefinitionCreate', + RecordEvents::DELETE => 'onDelete', ); } @@ -49,6 +53,18 @@ class RecordEditSubscriber implements EventSubscriberInterface $recordAdapter->clearStampCache(); } + public function onSubdefinitionCreate(SubdefinitionCreateEvent $event) + { + $recordAdapter = $this->convertToRecordAdapter($event->getRecord()); + $recordAdapter->rebuild_subdefs(); + } + + public function onDelete(DeleteEvent $event) + { + $recordAdapter = $this->convertToRecordAdapter($event->getRecord()); + $recordAdapter->delete(); + } + public function onEdit(RecordEdit $event) { static $into = false; diff --git a/lib/Alchemy/Phrasea/Core/MetaProvider/DatabaseMetaProvider.php b/lib/Alchemy/Phrasea/Core/MetaProvider/DatabaseMetaProvider.php index 206efee9b2..8a463c2868 100644 --- a/lib/Alchemy/Phrasea/Core/MetaProvider/DatabaseMetaProvider.php +++ b/lib/Alchemy/Phrasea/Core/MetaProvider/DatabaseMetaProvider.php @@ -84,10 +84,14 @@ class DatabaseMetaProvider implements ServiceProviderInterface $service = $app['phraseanet.cache-service']; $config->setMetadataCacheImpl( - $service->factory('ORM_metadata', $app['orm.cache.driver'], $app['orm.cache.options']) + $app['orm.cache.factory.filesystem'](array( + 'path' => $app['cache.path'].'/doctrine/metadata', + )) ); $config->setQueryCacheImpl( - $service->factory('ORM_query', $app['orm.cache.driver'], $app['orm.cache.options']) + $app['orm.cache.factory.filesystem'](array( + 'path' => $app['cache.path'].'/doctrine/query', + )) ); $config->setResultCacheImpl( $service->factory('ORM_result', $app['orm.cache.driver'], $app['orm.cache.options']) diff --git a/lib/Alchemy/Phrasea/Core/PhraseaEvents.php b/lib/Alchemy/Phrasea/Core/PhraseaEvents.php index 97c9c10ba5..90adac69dd 100644 --- a/lib/Alchemy/Phrasea/Core/PhraseaEvents.php +++ b/lib/Alchemy/Phrasea/Core/PhraseaEvents.php @@ -48,7 +48,8 @@ final class PhraseaEvents const BRIDGE_UPLOAD_FAILURE = 'bridge.upload-failure'; const EXPORT_MAIL_FAILURE = 'export.mail-failure'; - const EXPORT_CREATE = 'export.create'; + const EXPORT_CREATE = 'export.create'; + const EXPORT_MAIL_CREATE = 'export.mail-create'; const RECORD_EDIT = 'record.edit'; const RECORD_UPLOAD = 'record.upload'; diff --git a/lib/Alchemy/Phrasea/Core/Provider/WorkerConfigurationServiceProvider.php b/lib/Alchemy/Phrasea/Core/Provider/WorkerConfigurationServiceProvider.php index 1b2e15d4f0..9931d4649f 100644 --- a/lib/Alchemy/Phrasea/Core/Provider/WorkerConfigurationServiceProvider.php +++ b/lib/Alchemy/Phrasea/Core/Provider/WorkerConfigurationServiceProvider.php @@ -32,11 +32,12 @@ class WorkerConfigurationServiceProvider implements ServiceProviderInterface $app['alchemy_queues.queues'] = $app->share(function (Application $app) { $defaultConfiguration = [ 'worker-queue' => [ - 'registry' => 'alchemy_worker.queue_registry', - 'host' => 'localhost', - 'port' => 5672, - 'user' => 'guest', - 'vhost' => '/' + 'registry' => 'alchemy_worker.queue_registry', + 'host' => 'localhost', + 'port' => 5672, + 'user' => 'guest', + 'password' => 'guest', + 'vhost' => '/' ] ]; @@ -46,19 +47,22 @@ class WorkerConfigurationServiceProvider implements ServiceProviderInterface $queueConfigurations = $configuration->get(['workers', 'queue'], $defaultConfiguration); - $queueConfiguration = reset($queueConfigurations); - $queueKey = key($queueConfigurations); + $config = []; - if (! isset($queueConfiguration['name'])) { - if (! is_string($queueKey)) { - throw new \RuntimeException('Invalid queue configuration: configuration has no key or name.'); + foreach($queueConfigurations as $name => $queueConfiguration) { + $queueKey = $name; + + if (! isset($queueConfiguration['name'])) { + if (! is_string($queueKey)) { + throw new \RuntimeException('Invalid queue configuration: configuration has no key or name.'); + } + + $queueConfiguration['name'] = $queueKey; } - $queueConfiguration['name'] = $queueKey; + $config[$queueConfiguration['name']] = $queueConfiguration ; } - $config = [ $queueConfiguration['name'] => $queueConfiguration ]; - return $config; } catch (RuntimeException $exception) { diff --git a/lib/Alchemy/Phrasea/Core/Version.php b/lib/Alchemy/Phrasea/Core/Version.php index c029f2be01..a4971ffaf1 100644 --- a/lib/Alchemy/Phrasea/Core/Version.php +++ b/lib/Alchemy/Phrasea/Core/Version.php @@ -17,7 +17,7 @@ class Version * @var string */ - private $number = '4.1.0-alpha.23a'; + private $number = '4.1.0-alpha.25a'; /** * @var string diff --git a/lib/Alchemy/Phrasea/Media/SubdefGenerator.php b/lib/Alchemy/Phrasea/Media/SubdefGenerator.php index 88867551a1..9612e3bc19 100644 --- a/lib/Alchemy/Phrasea/Media/SubdefGenerator.php +++ b/lib/Alchemy/Phrasea/Media/SubdefGenerator.php @@ -18,6 +18,7 @@ use Alchemy\Phrasea\Core\Event\Record\SubDefinitionCreationEvent; use Alchemy\Phrasea\Core\Event\Record\SubDefinitionsCreationEvent; use Alchemy\Phrasea\Core\Event\Record\SubDefinitionCreationFailedEvent; use Alchemy\Phrasea\Core\Event\Record\RecordEvents; +use Alchemy\Phrasea\Databox\Subdef\MediaSubdefRepository; use Alchemy\Phrasea\Filesystem\FilesystemService; use Alchemy\Phrasea\Media\Subdef\Specification\PdfSpecification; use MediaAlchemyst\Alchemyst; @@ -170,13 +171,53 @@ class SubdefGenerator unset($this->tmpFilePath); } - $this->dispatch( - RecordEvents::SUB_DEFINITIONS_CREATED, - new SubDefinitionsCreatedEvent( - $record, - $mediaCreated - ) - ); + // if we created subdef one by one + if (count($wanted_subdefs) == 1) { + $mediaSubdefRepository = $this->getMediaSubdefRepository($record->getDataboxId()); + $mediaSubdefs = $mediaSubdefRepository->findByRecordIdsAndNames([$record->getRecordId()]); + $medias = []; + foreach ($mediaSubdefs as $subdef) { + try { + $medias[$subdef->get_name()] = $this->mediavorus->guess($subdef->getRealPath()); + } catch (MediaVorusFileNotFoundException $e) { + + } + } + + $this->dispatch( + RecordEvents::SUB_DEFINITIONS_CREATED, + new SubDefinitionsCreatedEvent( + $record, + $medias + ) + ); + } else { + $this->dispatch( + RecordEvents::SUB_DEFINITIONS_CREATED, + new SubDefinitionsCreatedEvent( + $record, + $mediaCreated + ) + ); + } + } + + /** + * set a logger to use + * @param LoggerInterface $logger + */ + public function setLogger(LoggerInterface $logger) + { + $this->logger = $logger; + } + + /** + * to get the logger + * @return LoggerInterface + */ + public function getLogger() + { + return $this->logger; } private function generateSubdef(\record_adapter $record, \databox_subdef $subdef_class, $pathdest) @@ -276,4 +317,14 @@ class SubdefGenerator $i = floor(log($bytes, 1024)); return round($bytes / pow(1024, $i), [0,0,2,2,3][$i]).['B','kB','MB','GB'][$i]; } + + /** + * @param $databoxId + * + * @return MediaSubdefRepository|Object + */ + private function getMediaSubdefRepository($databoxId) + { + return $this->app['provider.repo.media_subdef']->getRepositoryForDatabox($databoxId); + } } diff --git a/lib/Alchemy/Phrasea/Media/SubdefSubstituer.php b/lib/Alchemy/Phrasea/Media/SubdefSubstituer.php index 2259fa572d..8f7aa61e90 100644 --- a/lib/Alchemy/Phrasea/Media/SubdefSubstituer.php +++ b/lib/Alchemy/Phrasea/Media/SubdefSubstituer.php @@ -13,6 +13,7 @@ namespace Alchemy\Phrasea\Media; use Alchemy\Phrasea\Application; use Alchemy\Phrasea\Core\Event\Record\MediaSubstitutedEvent; use Alchemy\Phrasea\Core\Event\Record\RecordEvents; +use Alchemy\Phrasea\Core\Event\Record\SubdefinitionCreateEvent; use Alchemy\Phrasea\Filesystem\FilesystemService; use MediaAlchemyst\Alchemyst; use MediaAlchemyst\Exception\ExceptionInterface as MediaAlchemystException; @@ -79,7 +80,7 @@ class SubdefSubstituer $record->write_metas(); if ($shouldSubdefsBeRebuilt) { - $record->rebuild_subdefs(); + $this->dispatcher->dispatch(RecordEvents::SUBDEFINITION_CREATE, new SubdefinitionCreateEvent($record)); } $this->dispatcher->dispatch(RecordEvents::MEDIA_SUBSTITUTED, new MediaSubstitutedEvent($record)); diff --git a/lib/Alchemy/Phrasea/Model/Manipulator/WebhookEventManipulator.php b/lib/Alchemy/Phrasea/Model/Manipulator/WebhookEventManipulator.php index 40e7f812a7..30d20d1045 100644 --- a/lib/Alchemy/Phrasea/Model/Manipulator/WebhookEventManipulator.php +++ b/lib/Alchemy/Phrasea/Model/Manipulator/WebhookEventManipulator.php @@ -12,7 +12,7 @@ namespace Alchemy\Phrasea\Model\Manipulator; use Alchemy\Phrasea\Model\Entities\WebhookEvent; -use Alchemy\Phrasea\Webhook\WebhookPublisher; +use Alchemy\Phrasea\Webhook\WebhookPublisherInterface; use Doctrine\Common\Persistence\ObjectManager; use Doctrine\ORM\EntityRepository; @@ -29,11 +29,11 @@ class WebhookEventManipulator implements ManipulatorInterface private $repository; /** - * @var WebhookPublisher + * @var WebhookPublisherInterface */ private $publisher; - public function __construct(ObjectManager $om, EntityRepository $repo, WebhookPublisher $publisher) + public function __construct(ObjectManager $om, EntityRepository $repo, WebhookPublisherInterface $publisher) { $this->om = $om; $this->repository = $repo; diff --git a/lib/Alchemy/Phrasea/TaskManager/Job/ArchiveJob.php b/lib/Alchemy/Phrasea/TaskManager/Job/ArchiveJob.php index 532eb8bbb5..de418a4e71 100644 --- a/lib/Alchemy/Phrasea/TaskManager/Job/ArchiveJob.php +++ b/lib/Alchemy/Phrasea/TaskManager/Job/ArchiveJob.php @@ -12,6 +12,8 @@ namespace Alchemy\Phrasea\TaskManager\Job; use Alchemy\Phrasea\Application; +use Alchemy\Phrasea\Core\Event\Record\RecordEvents; +use Alchemy\Phrasea\Core\Event\Record\SubdefinitionCreateEvent; use Alchemy\Phrasea\Exception\RuntimeException; use Alchemy\Phrasea\Border\File; use Alchemy\Phrasea\Border\Manager as borderManager; @@ -1001,7 +1003,7 @@ class ArchiveJob extends AbstractJob { // quick fix to reconnect if mysql is lost $app->getApplicationBox()->get_connection(); - $databox->get_connection(); + $collection->get_connection(); $status = \databox_status::operation_or($stat0, $stat1); @@ -1032,7 +1034,8 @@ class ArchiveJob extends AbstractJob } $story->setStatus(\databox_status::operation_or($stat0, $stat1)); - $story->rebuild_subdefs(); + + $app['dispatcher']->dispatch(RecordEvents::SUBDEFINITION_CREATE, new SubdefinitionCreateEvent($story)); unset($media); diff --git a/lib/Alchemy/Phrasea/Webhook/WebhookPublisher.php b/lib/Alchemy/Phrasea/Webhook/WebhookPublisher.php index 4304a5319f..2beaec292f 100644 --- a/lib/Alchemy/Phrasea/Webhook/WebhookPublisher.php +++ b/lib/Alchemy/Phrasea/Webhook/WebhookPublisher.php @@ -19,7 +19,7 @@ use Alchemy\Queue\MessageQueueRegistry; * Class WebhookPublisher publishes webhook event notifications in message queues * @package Alchemy\Phrasea\Webhook */ -class WebhookPublisher +class WebhookPublisher implements WebhookPublisherInterface { /** * @var MessageQueueRegistry diff --git a/lib/Alchemy/Phrasea/Webhook/WebhookPublisherInterface.php b/lib/Alchemy/Phrasea/Webhook/WebhookPublisherInterface.php new file mode 100644 index 0000000000..f8b4751ef0 --- /dev/null +++ b/lib/Alchemy/Phrasea/Webhook/WebhookPublisherInterface.php @@ -0,0 +1,10 @@ +release; + } + /** + * {@inheritdoc} + */ + public function concern() + { + return $this->concern; + } + /** + * {@inheritdoc} + */ + public function require_all_upgrades() + { + return false; + } + /** + * {@inheritdoc} + */ + public function getDoctrineMigrations() + { + return []; + } + /** + * {@inheritdoc} + */ + public function apply(base $appbox, Application $app) + { + /** @var PropertyAccess $conf */ + $conf = $app['conf']; + $oldOptions = $conf->get(['main', 'search-engine', 'options'], []); + $newOptions = []; + $facets = []; + // preserve former settings from conf (tech facets) + foreach($oldOptions as $k=>$v) { + if(substr($k, -16) === '_aggregate_limit') { + // this option is moved under "facets" + $k = substr($k, 0, strlen($k)-16); // keep field name + $facets['_'.$k] = ['limit' => $v]; + } + else { + $newOptions[$k] = $v; + } + } + // add facets for fields + foreach($app->getDataboxes() as $databox) { + foreach($databox->get_meta_structure() as $field) { + $facets[$field->get_name()] = ['limit' => $field->getFacetValuesLimit()]; + } + } + // facets in the end of settings + $newOptions['facets'] = $facets; + $conf->set(['main', 'search-engine', 'options'], $newOptions); + + return true; + } +} diff --git a/lib/classes/phraseadate.php b/lib/classes/phraseadate.php index c501eadd5d..a9732e7822 100644 --- a/lib/classes/phraseadate.php +++ b/lib/classes/phraseadate.php @@ -90,13 +90,14 @@ class phraseadate $compareTo = new DateTime('now'); $diff = $compareTo->format('U') - $date->format('U'); + $yearDiff = $compareTo->format('Y') - $date->format('Y'); $dayDiff = floor($diff / 86400); if (is_nan($dayDiff) || $dayDiff > 365000) { return ''; } - $date_string = $this->formatDate($date, $this->app['locale'], 'DAY_MONTH'); + $date_string = $this->formatDate($date, $this->app['locale'], ($yearDiff != 0) ? 'DAY_MONTH_YEAR' : 'DAY_MONTH'); if ($dayDiff == 0) { if ($diff < 60) { @@ -119,6 +120,16 @@ class phraseadate } } + public function getTranslatedDate(DateTime $date = null) + { + $fmt = new IntlDateFormatter( + $this->app['locale'] ?: 'en', + NULL, NULL, NULL, NULL, 'dd MMMM yyyy' + ); + + return $fmt->format($date); + } + /** * * @param DateTime $date diff --git a/lib/classes/record/adapter.php b/lib/classes/record/adapter.php index 8e181c5d2e..f58d54abea 100644 --- a/lib/classes/record/adapter.php +++ b/lib/classes/record/adapter.php @@ -19,6 +19,7 @@ use Alchemy\Phrasea\Core\Event\Record\OriginalNameChangedEvent; use Alchemy\Phrasea\Core\Event\Record\RecordEvent; use Alchemy\Phrasea\Core\Event\Record\RecordEvents; use Alchemy\Phrasea\Core\Event\Record\StatusChangedEvent; +use Alchemy\Phrasea\Core\Event\Record\SubdefinitionCreateEvent; use Alchemy\Phrasea\Core\PhraseaTokens; use Alchemy\Phrasea\Databox\Subdef\MediaSubdefRepository; use Alchemy\Phrasea\Filesystem\FilesystemService; @@ -284,7 +285,7 @@ class record_adapter implements RecordInterface, cache_cacheableInterface $this->getDataboxConnection()->executeUpdate($sql, ['type' => $type, 'record_id' => $this->getRecordId()]); if ($old_type !== $type) { - $this->rebuild_subdefs(); + $this->dispatch(RecordEvents::SUBDEFINITION_CREATE, new SubdefinitionCreateEvent($this)); } $this->type = $type; @@ -341,7 +342,8 @@ class record_adapter implements RecordInterface, cache_cacheableInterface array(':mime' => $mime, ':record_id' => $this->getRecordId()) )) { - $this->rebuild_subdefs(); + $this->dispatch(RecordEvents::SUBDEFINITION_CREATE, new SubdefinitionCreateEvent($this)); + $this->delete_data_from_cache(); } diff --git a/lib/conf.d/bases_structure.xml b/lib/conf.d/bases_structure.xml index 8cfcd692fd..d1cf4689ac 100644 --- a/lib/conf.d/bases_structure.xml +++ b/lib/conf.d/bases_structure.xml @@ -1328,7 +1328,7 @@ host - char(64) + char(255) @@ -1403,7 +1403,7 @@ label_en - char(50) + char(128) YES @@ -1411,7 +1411,7 @@ label_fr - char(50) + char(128) YES @@ -1419,7 +1419,7 @@ label_de - char(50) + char(128) YES @@ -1427,7 +1427,7 @@ label_nl - char(50) + char(128) YES diff --git a/package.json b/package.json index 8ac01be75a..7ce6d01a66 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "normalize-css": "^2.1.0", "npm": "^6.0.0", "npm-modernizr": "^2.8.3", - "phraseanet-production-client": "0.34.139-d", + "phraseanet-production-client": "0.34.150-d", "requirejs": "^2.3.5", "tinymce": "^4.0.28", "underscore": "^1.8.3", diff --git a/resources/locales/messages.de.xlf b/resources/locales/messages.de.xlf index cb9c16cbbd..8972dae59c 100644 --- a/resources/locales/messages.de.xlf +++ b/resources/locales/messages.de.xlf @@ -1,6 +1,6 @@ - +
The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message. @@ -117,7 +117,7 @@ %basket_length% documents %basket_length% Dokument(e) - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig web/lightbox/index.html.twig web/lightbox/index.html.twig @@ -192,8 +192,9 @@ %nb_records% records %nb_records% Datensätze + prod/WorkZone/Basket.html.twig prod/Tooltip/Story.html.twig - prod/Tooltip/Basket.html.twig + prod/Tooltip/Basket.html.twig %nb_view% vue @@ -760,8 +761,8 @@ Advanced Search Erweiterte Suche - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Advanced mode @@ -776,37 +777,37 @@ Affichage Anzeige - web/prod/index.html.twig + web/prod/index.html.twig Affichage au demarrage beim Start anzeigen - web/prod/index.html.twig + web/prod/index.html.twig Afficher la fiche descriptive das beschriftliche Blatt anzeigen - web/prod/index.html.twig + web/prod/index.html.twig Afficher le titre den Titel anzeigen - web/prod/index.html.twig + web/prod/index.html.twig Afficher les status die Status anzeigen - web/prod/index.html.twig + web/prod/index.html.twig Afficher une icone eine Ikone anzeigen - web/prod/index.html.twig + web/prod/index.html.twig After metadata Nach Metadaten - web/prod/index.html.twig + web/prod/index.html.twig Aggregated @@ -821,7 +822,7 @@ Aide Hilfe - web/prod/index.html.twig + web/prod/index.html.twig Aide sur les expressions regulieres @@ -873,7 +874,7 @@ All these conditions Alle Bedingungen - web/prod/index.html.twig + web/prod/index.html.twig Aller a @@ -938,15 +939,15 @@ Alphabetic asc aufsteigender alphabetischer Reihenfolge - web/prod/index.html.twig - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Alphabetic desc absteigender alphabetischer Reihenfolge - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Also delete records that rely on groupings. @@ -1157,8 +1158,8 @@ Archive Archivieren - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig Are you sure you want delete users rights ? @@ -1266,7 +1267,7 @@ Audio Audio - web/prod/index.html.twig + web/prod/index.html.twig Audio Birate @@ -1397,10 +1398,10 @@ Back Zurück mobile/lightbox/basket_element.html.twig - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig - mobile/lightbox/validate.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/validate.html.twig Back to Feedback @@ -1525,9 +1526,9 @@ Browse Baskets Sammelkörbe durchsuchen - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Browser @@ -1555,7 +1556,7 @@ By field Nach Feld - web/prod/index.html.twig + web/prod/index.html.twig CHAMPS @@ -1689,7 +1690,7 @@ Certaines donnees du panier ont change Einige Daten des Sammelkorbs wurden verändert - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig Certaines donnees du reportage ont change @@ -1840,7 +1841,7 @@ Collection order Kollektionen Ordnung - web/prod/index.html.twig + web/prod/index.html.twig Color Depth @@ -1911,7 +1912,7 @@ Configuration Konfiguration - web/prod/index.html.twig + web/prod/index.html.twig Confirm new email address @@ -1967,7 +1968,7 @@ Contains enthält - web/prod/index.html.twig + web/prod/index.html.twig Continuer ? @@ -2022,7 +2023,7 @@ Couleur de selection Farbauswahl - web/prod/index.html.twig + web/prod/index.html.twig Country @@ -2235,7 +2236,7 @@ Date Added Hinzufügungsdatum - web/prod/index.html.twig + web/prod/index.html.twig Date Creation @@ -2245,7 +2246,7 @@ Date Updated Aktualisierungsdatum - web/prod/index.html.twig + web/prod/index.html.twig Date de connexion @@ -2274,7 +2275,7 @@ Date(s) from field(s) Datum vom Feld - web/prod/index.html.twig + web/prod/index.html.twig De @@ -2302,7 +2303,7 @@ Deconnexion Abmeldung - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig Decouvrez la documentation @@ -2352,7 +2353,7 @@ Defined by admin Von Administrator festgelegt - web/prod/index.html.twig + web/prod/index.html.twig Defined in Apache configuration @@ -2530,7 +2531,7 @@ Display technical data Technische Informationen anzeigen - web/prod/index.html.twig + web/prod/index.html.twig Display thumbnails @@ -2540,7 +2541,7 @@ Do not display Nicht anzeigen - web/prod/index.html.twig + web/prod/index.html.twig Do not forget to restart the tasks scheduler @@ -2566,13 +2567,12 @@ Do you want to send your report ? Möchten Sie Ihren Bericht senden ? Phrasea/Controller/LightboxController.php - mobile/lightbox/validate.html.twig - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig Document Dokument - web/prod/index.html.twig + web/prod/index.html.twig Document Type Sharing @@ -3011,7 +3011,7 @@ Equals gleicht - web/prod/index.html.twig + web/prod/index.html.twig Erreur @@ -3154,7 +3154,7 @@ Ex : Paris, bleu, montagne Ex : Berlin, blau, Gebirge - web/prod/index.html.twig + web/prod/index.html.twig Executables externes @@ -3166,6 +3166,11 @@ Einstellungen von ausführbaren Programme Form/Configuration/MainConfigurationFormType.php + + Expiration date successfully updated! + Expiration date successfully updated! + Controller/Prod/PushController.php + Export Exportieren @@ -3214,7 +3219,7 @@ Controller/Prod/LanguageController.php prod/WorkZone/Story.html.twig prod/WorkZone/Macros.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig @@ -3337,7 +3342,7 @@ Flash Flash - web/prod/index.html.twig + web/prod/index.html.twig web/common/technical_datas.html.twig @@ -3473,7 +3478,7 @@ Geo Search Lokalisierung - web/prod/index.html.twig + web/prod/index.html.twig Geonames server address @@ -3548,7 +3553,7 @@ Graphiste (preview au rollover) Grafiker (Voransicht mit Rollover) - web/prod/index.html.twig + web/prod/index.html.twig Great @@ -3619,7 +3624,7 @@ Hautpseite mobile/lightbox/basket_element.html.twig mobile/lightbox/feed.html.twig - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig login/include/language-block.html.twig login/layout/base-layout.html.twig @@ -3657,7 +3662,7 @@ Iconographe (description au rollover) Bildredakteur (Beschreibung mit Rollover) - web/prod/index.html.twig + web/prod/index.html.twig Id @@ -3702,7 +3707,7 @@ Image Bild - web/prod/index.html.twig + web/prod/index.html.twig ImageMagick @@ -3728,7 +3733,7 @@ In the answer grid In einem Tooltip - web/prod/index.html.twig + web/prod/index.html.twig Include Business-fields in caption @@ -3896,17 +3901,17 @@ L'utilisateur approuve ce document Benutzer genehmigt dieses Dokument - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig L'utilisateur desapprouve ce document Benutzer lehnt dieses Dokument ab - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig L'utilisateur n'a pas encore donne son avis sur ce document Benutzer hat seine Meinung noch nicht gegeben - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig La connection vers le serveur distant est OK @@ -3949,10 +3954,10 @@ admin/statusbit/edit.html.twig admin/statusbit/edit.html.twig - - Language - Sprache - web/prod/index.html.twig + + Language selection + Language selection + web/prod/index.html.twig Last Name @@ -4089,7 +4094,7 @@ Les termes apparaissent dans le(s) champs Die Begriffe befinden sich in Feld(er): - web/prod/index.html.twig + web/prod/index.html.twig Light Value @@ -4099,8 +4104,8 @@ Lightbox Lightbox - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig Limite temporelle @@ -4219,7 +4224,7 @@ Ma derniere question meine letzte Suchabfrage - web/prod/index.html.twig + web/prod/index.html.twig Mail line %line% is empty @@ -4376,7 +4381,7 @@ Mode de presentation Anzeigemodus - web/prod/index.html.twig + web/prod/index.html.twig Modele de donnees @@ -4706,7 +4711,7 @@ Notifications globales Allgemeine Benachrichtigungen - classes/eventsmanager/broker.php + classes/eventsmanager/broker.php Notify third party application when an event occurs in Phraseanet @@ -4800,7 +4805,7 @@ One of these conditions Eine von diesen Bedingungen - web/prod/index.html.twig + web/prod/index.html.twig Only %nbEditableDocuments% records can be modified. @@ -4900,12 +4905,12 @@ Paniers Sammelkörbe - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig web/account/account.html.twig web/lightbox/index.html.twig lightbox/IE6/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig Par %author% @@ -5143,10 +5148,10 @@ Preferences Einstellungen - web/prod/index.html.twig web/prod/index.html.twig - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Prefix for notification emails @@ -5161,12 +5166,12 @@ Presentation de vignettes Miniaturansichten - web/prod/index.html.twig + web/prod/index.html.twig Presentation de vignettes de panier Vorstellung der Voransichten des Sammelkorbes - web/prod/index.html.twig + web/prod/index.html.twig Presets @@ -5219,7 +5224,7 @@ Publications Veröffentlichungen - web/prod/index.html.twig + web/prod/index.html.twig admin/publications/wrapper.html.twig web/admin/tree.html.twig web/common/menubar.html.twig @@ -5332,80 +5337,80 @@ Raccourcis claviers de la zone des paniers : Sammelkörbe und Funktionen Abkürzungen - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis claviers en cours de editing : Fenster Abkürzungen bearbeiten - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis claviers en cours de preview : Fenster Abkürzungen, Detailansicht - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis claviers en cours de recherche : Hauptfenster Abkürzungen - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis:: ctrl-a : tout selectionner ctrl-a : alles auswählen - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Raccourcis:: ctrl-e : editer la selection ctrl-e : Auswahl bearbeiten - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Raccourcis:: ctrl-p : imprimer la selection ctrl-p : drucken - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::espace : arreter/demarrer le diaporama Dia-Schau starten - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche bas : scroll vertical Abwärtspfeil: vertikal scrollen - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche droite : page suivante Rechtspfeil: nächste Seite - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche gauche : en arriere Abwärtspfeil: letztes Dokument - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche gauche : en avant Rechtspfeil: nächstes Dokument - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche gauche : page precedente Linkspfeil: vorherige Seite - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche haut : scroll vertical Pfeil oben: vertikal scrollen - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::tab/shift-tab se ballade dans les champs tab/shift-tab : Feld ändern - web/prod/index.html.twig + web/prod/index.html.twig Rappel : Il vous reste %number% jours pour valider %title% de %user% @@ -5427,18 +5432,18 @@ Zurücksetzen prod/Baskets/Reorder.html.twig prod/Story/Reorder.html.twig - web/prod/index.html.twig + web/prod/index.html.twig Re-ordonner wieder ordnen prod/Baskets/Reorder.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig prod/Story/Reorder.html.twig @@ -5530,7 +5535,7 @@ Rechercher dans un champ date im Feld "Datum" suchen - web/prod/index.html.twig + web/prod/index.html.twig Recommendations @@ -5621,7 +5626,7 @@ Relevance Relevanz - web/prod/index.html.twig + web/prod/index.html.twig Remember me @@ -5999,7 +6004,7 @@ Select a field Wählen Sie ein Feld aus - web/prod/index.html.twig + web/prod/index.html.twig Select a list on the left and edit it ! @@ -6034,7 +6039,7 @@ Selected base(s) Ausgewählte Datenbank(en) : - web/prod/index.html.twig + web/prod/index.html.twig Selected files @@ -6311,7 +6316,7 @@ Status des documents a rechercher Zustand der Dokumente - web/prod/index.html.twig + web/prod/index.html.twig Status edition @@ -6602,7 +6607,7 @@ The URL you used is out of date, please login Die URL, die Sie benutzt haben, ist nicht mehr gültig. Bitte loggen Sie sich ein - Phrasea/ControllerProvider/Lightbox.php + Phrasea/ControllerProvider/Lightbox.php The Youtube servers have received too many calls from the same caller in a short amount of time. @@ -6686,6 +6691,11 @@ Die folgende Fehler wurden festgestellt user/import/view.html.twig + + The provided date is null! + The provided date is null! + Controller/Prod/PushController.php + The publication has been stopped Veröffentlichung wurde gestoppt @@ -6731,7 +6741,7 @@ Theme Thema - web/prod/index.html.twig + web/prod/index.html.twig There is no one to validate orders, please contact an administrator @@ -6824,7 +6834,7 @@ This user does not participate to the validation but is only viewer. Dieser Benutzer darf nicht teilnehmen, nur ansehen. - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig This user has no rights @@ -6908,7 +6918,7 @@ Tout type Bildschirmtyp - web/prod/index.html.twig + web/prod/index.html.twig Toutes les publications @@ -6934,7 +6944,7 @@ Trier par Sortieren nach - web/prod/index.html.twig + web/prod/index.html.twig Try to extract embedded thumbnails @@ -6959,7 +6969,7 @@ Type de documents Dokumenttyp - web/prod/index.html.twig + web/prod/index.html.twig Type nombre @@ -7047,6 +7057,11 @@ Controller/Root/LoginController.php Controller/Api/OAuth2Controller.php + + Unable to save the expiration date + Unable to save the expiration date + Controller/Prod/PushController.php + Unable to send the documents Es ist nicht möglich Dokumente zu senden @@ -7082,7 +7097,7 @@ Une question personnelle eine persönliche Frage - web/prod/index.html.twig + web/prod/index.html.twig Une selection @@ -7194,7 +7209,7 @@ Use latest search settings on Production loading die letzte gestellte Frage in Prod benutzen - web/prod/index.html.twig + web/prod/index.html.twig Use my Phraseanet account @@ -7333,11 +7348,11 @@ Validations Bestätigung - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig web/lightbox/index.html.twig lightbox/IE6/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig Validations received @@ -7372,7 +7387,7 @@ Video Video - web/prod/index.html.twig + web/prod/index.html.twig Video Codec @@ -7408,13 +7423,13 @@ Voici vos paniers Ihre Sammelkörbe - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig web/lightbox/index.html.twig Voici vos validations en cours Hier sind Ihre aktuellen Bewertungen - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig web/lightbox/index.html.twig @@ -7450,7 +7465,7 @@ Vous avez envoye une demande de validation de document sur ce panier Sie haben eine Bewertung von Dokumenten angefordert - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig Vous avez recu des documents @@ -7569,7 +7584,7 @@ Vous pouvez quitter la plupart des fenetres survolantes via la touche echap esc : Sie können die meiste Teile der Overlay Fenster schliessen - web/prod/index.html.twig + web/prod/index.html.twig Warning ! @@ -7670,8 +7685,8 @@ YYYY/MM/DD YYYY/MM/DD - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Yes @@ -7841,7 +7856,7 @@ You have to give your feedback at least on one document to send a report Sie müssen Ihr Feedback mindestens an einem Dokument geben, um einen Bericht zu senden - Phrasea/Controller/LightboxController.php + Phrasea/Controller/LightboxController.php You have to wait for an administrator approval for your access request @@ -7978,8 +7993,8 @@ a propos Über - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig action : ajouter au panier @@ -7992,20 +8007,20 @@ action : bridge Bridge - web/prod/index.html.twig + web/prod/index.html.twig action : collection Verschieben prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig action : editer Bearbeiten prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig prod/preview/caption.html.twig @@ -8013,30 +8028,30 @@ action : exporter Exportieren prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig prod/results/record.html.twig prod/results/record.html.twig prod/results/record.html.twig prod/preview/tools.html.twig - web/prod/index.html.twig + web/prod/index.html.twig web/lightbox/feed.html.twig lightbox/IE6/feed.html.twig lightbox/IE6/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig action : outils Werkzeuge prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig action : print Drucken prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig prod/results/record.html.twig prod/results/record.html.twig @@ -8047,79 +8062,79 @@ action : publier Veröffentlichen prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig - web/prod/index.html.twig + web/prod/index.html.twig action : push Push prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig action : status Eigenschaften prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig action : supprimer Löschen - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig web/prod/toolbar.html.twig action:: nouveau panier Neuer - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig action:: nouveau reportage Neuer Bericht - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig action::Valider Bestätigen - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig action::detacher entfernen - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig action::editer Bearbeiten - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig action::exporter Exportieren - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig action::renommer umbenennen - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig actual status @@ -9138,13 +9153,13 @@ basket:action:delete record form basket basket:action:delete record form basket prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig basket:action:delete record form database basket:action:delete record form database prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig be notified when a document is placed in quarantine @@ -9154,12 +9169,12 @@ boutton:: selectionner aucune base Keine - web/prod/index.html.twig + web/prod/index.html.twig boutton:: selectionner toutes les bases Alle - web/prod/index.html.twig + web/prod/index.html.twig boutton::ajouter @@ -9329,7 +9344,7 @@ boutton::rechercher suchen Controller/Prod/LanguageController.php - web/prod/index.html.twig + web/prod/index.html.twig boutton::refresh @@ -9431,7 +9446,7 @@ web/lightbox/feed.html.twig lightbox/IE6/feed.html.twig lightbox/IE6/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig boutton::tester @@ -9464,7 +9479,7 @@ prod/actions/edit_default.html.twig prod/actions/edit_default.html.twig prod/Story/Reorder.html.twig - web/prod/index.html.twig + web/prod/index.html.twig web/thesaurus/export-text-dialog.html.twig web/thesaurus/thesaurus.html.twig web/thesaurus/import-dialog.html.twig @@ -9585,12 +9600,12 @@ charger d'avantages de notifications Mehr Benachrichtigungen laden - classes/eventsmanager/broker.php + classes/eventsmanager/broker.php choisir wählen - web/prod/index.html.twig + web/prod/index.html.twig admin/databox/databox.html.twig admin/collection/create.html.twig @@ -9672,7 +9687,7 @@ created_on erstellt am - web/prod/index.html.twig + web/prod/index.html.twig dans %category% @@ -9703,7 +9718,7 @@ delete Löschen - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig descendant @@ -9732,7 +9747,7 @@ edit Bearbeiten - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig web/account/account.html.twig web/account/account.html.twig web/account/account.html.twig @@ -9952,7 +9967,7 @@ help::help-search: relaunch search without filter help::help-search: relaunch search without filter prod/results/help.html.twig - web/prod/index.html.twig + web/prod/index.html.twig help::help-section-bullet: check-spelling @@ -10029,47 +10044,47 @@ index::advance_search: disable-facet Facetten mit nur einem Ergebnis ausblenden (experimentell) - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet Einstellungen für Facetten - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet-order Reihenfolge der Facettenanzeige - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet-tech-order Standard Reihenfolge - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet-values-order Reihenfolge der Facettenwerte - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: hidden-facet-values-order Versteckte Facetten - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: order-by-hits Nach Hits sortieren - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: order-by-hits-asc index::advance_search: order-by-hits-asc - web/prod/index.html.twig + web/prod/index.html.twig index:advanced-preferences:: use truncation Trunkierung aktivieren - web/prod/index.html.twig + web/prod/index.html.twig invite:: Redirection vers la zone d'authentification, cliquez sur OK pour continuer ou annulez @@ -10114,14 +10129,14 @@ lightbox::list lightbox::list - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig lightbox::recaptitulatif Übersicht - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig web/lightbox/agreement_box.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox::see_less_basket @@ -10133,6 +10148,48 @@ lightbox::see_more_basket web/lightbox/index.html.twig + + lightbox:feedback:sendreport:warnwindows:cancel + lightbox:feedback:sendreport:warnwindows:cancel + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:message + lightbox:feedback:sendreport:warnwindows:message + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:record_approved + lightbox:feedback:sendreport:warnwindows:record_approved + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:record_rejected + lightbox:feedback:sendreport:warnwindows:record_rejected + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:record_unexpressed + lightbox:feedback:sendreport:warnwindows:record_unexpressed + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:title + lightbox:feedback:sendreport:warnwindows:title + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:validate + lightbox:feedback:sendreport:warnwindows:validate + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + login:: Changer mon adresse email meine E-Mail Adresse ändern @@ -10606,17 +10663,17 @@ panier:: ordre Validation ascendante gut bewertet - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig panier:: ordre Validation descendante weniger gut bewertet - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig panier:: ordre du panier Sammelkorb Reihenfolge - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig panier:: renommer le panier @@ -10641,7 +10698,7 @@ paniers:: panier recu de %pusher% Sammelkorb von %pusher% bekommen - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig paniers::Vous etes sur le point de supprimer ce panier. Cette action est irreversible. Souhaitez-vous continuer ? @@ -10702,7 +10759,7 @@ phraseanet:: Preferences Einstellungen - web/prod/index.html.twig + web/prod/index.html.twig phraseanet:: Un email vient de vous etre envoye @@ -10851,17 +10908,17 @@ phraseanet:: tri par date nach Datum sortieren - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig web/thesaurus/export-topics-dialog.html.twig phraseanet:: tri par nom alphabetische Sortierung - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig phraseanet:: user @@ -11016,42 +11073,42 @@ phraseanet::temps:: a l'instant gerade - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: hier gestern - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: il y a %quantity% heures vor %quantity% Stunde - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: il y a %quantity% minutes vor %quantity% Minuten - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: il y a une heure vor einer Stunde - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: il y a une minute vor einer Minute - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::time:: a zu - web/prod/index.html.twig + web/prod/index.html.twig phraseanet::time:: de von - web/prod/index.html.twig + web/prod/index.html.twig phraseanet::type:: audios @@ -11062,7 +11119,7 @@ phraseanet::type:: documents Dokumente web/prod/toolbar.html.twig - web/prod/index.html.twig + web/prod/index.html.twig phraseanet::type:: images @@ -11072,7 +11129,7 @@ phraseanet::type:: reportages Berichte - web/prod/index.html.twig + web/prod/index.html.twig phraseanet::type:: videos @@ -11097,17 +11154,17 @@ preview:: Description Beschreibung - web/prod/index.html.twig + web/prod/index.html.twig preview:: Historique Historie - web/prod/index.html.twig + web/prod/index.html.twig preview:: Popularite Beliebtheit - web/prod/index.html.twig + web/prod/index.html.twig preview:: arreter le diaporama @@ -11326,12 +11383,12 @@ prod::advancesearch:tooltips:datefield_restriction_explanation Suchergebnisse auf Datum beschränken - web/prod/index.html.twig + web/prod/index.html.twig prod::advancesearch:tooltips:field_restriction_explanation Suchen Sie den Inhalt der Felder - web/prod/index.html.twig + web/prod/index.html.twig prod::collection deplacer egalement les documents rattaches a ce(s) regroupement(s) @@ -11674,10 +11731,36 @@ Auswahl entfernen prod/actions/Push.html.twig + + prod:workzone:basket:creation-date + prod:workzone:basket:creation-date + prod/WorkZone/Basket.html.twig + prod/Tooltip/Basket.html.twig + + + prod:workzone:basket:updated-message + prod:workzone:basket:updated-message + prod/WorkZone/Basket.html.twig + prod:workzone:facetstab:search_and_facets_sort_options prod:workzone:facetstab:search_and_facets_sort_options - web/prod/index.html.twig + web/prod/index.html.twig + + + prod:workzone:facetstab:tooltips:facet_and_filter + prod:workzone:facetstab:tooltips:facet_and_filter + web/prod/index.html.twig + + + prod:workzone:facetstab:tooltips:facet_except_filter + prod:workzone:facetstab:tooltips:facet_except_filter + web/prod/index.html.twig + + + prod:workzone:facetstab:tooltips:remove_facet_filter + prod:workzone:facetstab:tooltips:remove_facet_filter + web/prod/index.html.twig public @@ -11753,19 +11836,19 @@ raccourci :: a propos des raccourcis claviers Über Abkürzungen - web/prod/index.html.twig + web/prod/index.html.twig raccourcis :: ne plus montrer cette aide Diese Hilfe nicht mehr anzeigen - web/prod/index.html.twig + web/prod/index.html.twig rafraichir Aktualisieren prod/WorkZone/Story.html.twig prod/WorkZone/Macros.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig prod/results/feeds.html.twig prod/results/feeds.html.twig @@ -11827,17 +11910,17 @@ reponses:: images par pages : Suchergebnisse nach Seite - web/prod/index.html.twig + web/prod/index.html.twig reponses:: mode liste Liste - web/prod/index.html.twig + web/prod/index.html.twig reponses:: mode vignettes Miniaturansichten - web/prod/index.html.twig + web/prod/index.html.twig reponses:: partager @@ -11859,7 +11942,7 @@ reponses:: taille des images : Miniaturansichtengrösse - web/prod/index.html.twig + web/prod/index.html.twig reponses::document sans titre @@ -13243,7 +13326,7 @@ updated_on aktualisiert am - web/prod/index.html.twig + web/prod/index.html.twig upload:: Destination (collection) : @@ -13302,8 +13385,8 @@ validation::envoyer mon rapport Meinen Bericht senden - mobile/lightbox/validate.html.twig - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig web/lightbox/basket_options.html.twig web/lightbox/basket_options.html.twig @@ -13333,6 +13416,138 @@ Video Werkzeug actions/Tools/videoEditor.html.twig + + workzone:datepicker:april + workzone:datepicker:april + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:august + workzone:datepicker:august + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:closeText + workzone:datepicker:closeText + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:currentText + workzone:datepicker:currentText + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:december + workzone:datepicker:december + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:february + workzone:datepicker:february + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:friday + workzone:datepicker:friday + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:january + workzone:datepicker:january + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:july + workzone:datepicker:july + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:june + workzone:datepicker:june + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:march + workzone:datepicker:march + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:may + workzone:datepicker:may + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:monday + workzone:datepicker:monday + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:nextText + workzone:datepicker:nextText + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:november + workzone:datepicker:november + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:october + workzone:datepicker:october + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:prevText + workzone:datepicker:prevText + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:saturday + workzone:datepicker:saturday + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:september + workzone:datepicker:september + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:sunday + workzone:datepicker:sunday + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:thursday + workzone:datepicker:thursday + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:tuesday + workzone:datepicker:tuesday + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:wednesday + workzone:datepicker:wednesday + prod/WorkZone/Basket.html.twig + + + workzone:feedback:expiration-closed + workzone:feedback:expiration-closed + prod/WorkZone/Basket.html.twig + prod/Tooltip/Basket.html.twig + + + workzone:feedback:expiration-open + workzone:feedback:expiration-open + prod/WorkZone/Basket.html.twig + prod/Tooltip/Basket.html.twig + + + workzone:feedback:update + workzone:feedback:update + prod/WorkZone/Basket.html.twig + yes Ja diff --git a/resources/locales/messages.en.xlf b/resources/locales/messages.en.xlf index 014648af36..4b5369e3e6 100644 --- a/resources/locales/messages.en.xlf +++ b/resources/locales/messages.en.xlf @@ -1,6 +1,6 @@ - +
The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message. @@ -117,7 +117,7 @@ %basket_length% documents %basket_length% document(s) - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig web/lightbox/index.html.twig web/lightbox/index.html.twig @@ -192,8 +192,9 @@ %nb_records% records %nb_records% records + prod/WorkZone/Basket.html.twig prod/Tooltip/Story.html.twig - prod/Tooltip/Basket.html.twig + prod/Tooltip/Basket.html.twig %nb_view% vue @@ -761,8 +762,8 @@ Advanced Search Advanced search - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Advanced mode @@ -777,37 +778,37 @@ Affichage Display - web/prod/index.html.twig + web/prod/index.html.twig Affichage au demarrage Display On startup - web/prod/index.html.twig + web/prod/index.html.twig Afficher la fiche descriptive Show Caption - web/prod/index.html.twig + web/prod/index.html.twig Afficher le titre Show Title - web/prod/index.html.twig + web/prod/index.html.twig Afficher les status Show Status - web/prod/index.html.twig + web/prod/index.html.twig Afficher une icone Display an Icon - web/prod/index.html.twig + web/prod/index.html.twig After metadata After captions - web/prod/index.html.twig + web/prod/index.html.twig Aggregated @@ -822,7 +823,7 @@ Aide Help - web/prod/index.html.twig + web/prod/index.html.twig Aide sur les expressions regulieres @@ -874,7 +875,7 @@ All these conditions All these conditions - web/prod/index.html.twig + web/prod/index.html.twig Aller a @@ -939,15 +940,15 @@ Alphabetic asc Alphabetic asc - web/prod/index.html.twig - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Alphabetic desc Alphabetic desc - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Also delete records that rely on groupings. @@ -1158,8 +1159,8 @@ Archive Archive - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig Are you sure you want delete users rights ? @@ -1267,7 +1268,7 @@ Audio Audio - web/prod/index.html.twig + web/prod/index.html.twig Audio Birate @@ -1398,10 +1399,10 @@ Back Previous mobile/lightbox/basket_element.html.twig - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig - mobile/lightbox/validate.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/validate.html.twig Back to Feedback @@ -1526,9 +1527,9 @@ Browse Baskets Browse baskets - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Browser @@ -1556,7 +1557,7 @@ By field By field - web/prod/index.html.twig + web/prod/index.html.twig CHAMPS @@ -1690,7 +1691,7 @@ Certaines donnees du panier ont change This basket has been updated - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig Certaines donnees du reportage ont change @@ -1842,7 +1843,7 @@ Collection order Collection order - web/prod/index.html.twig + web/prod/index.html.twig Color Depth @@ -1913,7 +1914,7 @@ Configuration Configuration - web/prod/index.html.twig + web/prod/index.html.twig Confirm new email address @@ -1969,7 +1970,7 @@ Contains Contains - web/prod/index.html.twig + web/prod/index.html.twig Continuer ? @@ -2024,7 +2025,7 @@ Couleur de selection Selection color - web/prod/index.html.twig + web/prod/index.html.twig Country @@ -2238,7 +2239,7 @@ Date Added Date added - web/prod/index.html.twig + web/prod/index.html.twig Date Creation @@ -2248,7 +2249,7 @@ Date Updated Date Updated - web/prod/index.html.twig + web/prod/index.html.twig Date de connexion @@ -2277,7 +2278,7 @@ Date(s) from field(s) Date(s) from field(s) - web/prod/index.html.twig + web/prod/index.html.twig De @@ -2305,7 +2306,7 @@ Deconnexion Logout - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig Decouvrez la documentation @@ -2355,7 +2356,7 @@ Defined by admin Defined by admin - web/prod/index.html.twig + web/prod/index.html.twig Defined in Apache configuration @@ -2533,7 +2534,7 @@ Display technical data Display technical data - web/prod/index.html.twig + web/prod/index.html.twig Display thumbnails @@ -2543,7 +2544,7 @@ Do not display Do not display - web/prod/index.html.twig + web/prod/index.html.twig Do not forget to restart the tasks scheduler @@ -2569,13 +2570,12 @@ Do you want to send your report ? Send your Report ? Phrasea/Controller/LightboxController.php - mobile/lightbox/validate.html.twig - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig Document Document - web/prod/index.html.twig + web/prod/index.html.twig Document Type Sharing @@ -3014,7 +3014,7 @@ Equals Equals - web/prod/index.html.twig + web/prod/index.html.twig Erreur @@ -3157,7 +3157,7 @@ Ex : Paris, bleu, montagne Ex : Paris, blue, mountain - web/prod/index.html.twig + web/prod/index.html.twig Executables externes @@ -3169,6 +3169,11 @@ Executables setting Form/Configuration/MainConfigurationFormType.php + + Expiration date successfully updated! + Expiration date successfully updated! + Controller/Prod/PushController.php + Export Export @@ -3217,7 +3222,7 @@ Controller/Prod/LanguageController.php prod/WorkZone/Story.html.twig prod/WorkZone/Macros.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig @@ -3340,7 +3345,7 @@ Flash Flash - web/prod/index.html.twig + web/prod/index.html.twig web/common/technical_datas.html.twig @@ -3476,7 +3481,7 @@ Geo Search Geo Search - web/prod/index.html.twig + web/prod/index.html.twig Geonames server address @@ -3551,7 +3556,7 @@ Graphiste (preview au rollover) Graphist (preview on thumbnail rollover) - web/prod/index.html.twig + web/prod/index.html.twig Great @@ -3622,7 +3627,7 @@ Home mobile/lightbox/basket_element.html.twig mobile/lightbox/feed.html.twig - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig login/include/language-block.html.twig login/layout/base-layout.html.twig @@ -3660,7 +3665,7 @@ Iconographe (description au rollover) Iconograph (caption on thumbnail rollover) - web/prod/index.html.twig + web/prod/index.html.twig Id @@ -3705,7 +3710,7 @@ Image Image - web/prod/index.html.twig + web/prod/index.html.twig ImageMagick @@ -3731,7 +3736,7 @@ In the answer grid In the answer grid - web/prod/index.html.twig + web/prod/index.html.twig Include Business-fields in caption @@ -3899,17 +3904,17 @@ L'utilisateur approuve ce document User approves this document - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig L'utilisateur desapprouve ce document User disapproves this document - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig L'utilisateur n'a pas encore donne son avis sur ce document User hasn't decided yet - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig La connection vers le serveur distant est OK @@ -3952,10 +3957,10 @@ admin/statusbit/edit.html.twig admin/statusbit/edit.html.twig - - Language - Language - web/prod/index.html.twig + + Language selection + Language selection + web/prod/index.html.twig Last Name @@ -4092,7 +4097,7 @@ Les termes apparaissent dans le(s) champs Word(s) from field(s) - web/prod/index.html.twig + web/prod/index.html.twig Light Value @@ -4102,8 +4107,8 @@ Lightbox Lightbox - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig Limite temporelle @@ -4222,7 +4227,7 @@ Ma derniere question My last query - web/prod/index.html.twig + web/prod/index.html.twig Mail line %line% is empty @@ -4379,7 +4384,7 @@ Mode de presentation Display mode - web/prod/index.html.twig + web/prod/index.html.twig Modele de donnees @@ -4709,7 +4714,7 @@ Notifications globales Global notifications - classes/eventsmanager/broker.php + classes/eventsmanager/broker.php Notify third party application when an event occurs in Phraseanet @@ -4803,7 +4808,7 @@ One of these conditions One of these conditions - web/prod/index.html.twig + web/prod/index.html.twig Only %nbEditableDocuments% records can be modified. @@ -4903,12 +4908,12 @@ Paniers Baskets - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig web/account/account.html.twig web/lightbox/index.html.twig lightbox/IE6/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig Par %author% @@ -5146,10 +5151,10 @@ Preferences Settings - web/prod/index.html.twig web/prod/index.html.twig - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Prefix for notification emails @@ -5164,12 +5169,12 @@ Presentation de vignettes Thumbnails - web/prod/index.html.twig + web/prod/index.html.twig Presentation de vignettes de panier Basket display setup - web/prod/index.html.twig + web/prod/index.html.twig Presets @@ -5222,7 +5227,7 @@ Publications Publications - web/prod/index.html.twig + web/prod/index.html.twig admin/publications/wrapper.html.twig web/admin/tree.html.twig web/common/menubar.html.twig @@ -5335,80 +5340,80 @@ Raccourcis claviers de la zone des paniers : - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis claviers en cours de editing : Edit window shortcuts - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis claviers en cours de preview : Detailed View window shortcut - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis claviers en cours de recherche : Main windows shortcuts - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis:: ctrl-a : tout selectionner ctrl-a : select all - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Raccourcis:: ctrl-e : editer la selection ctrl-e : edit selection - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Raccourcis:: ctrl-p : imprimer la selection ctrl-p : print selected - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::espace : arreter/demarrer le diaporama space : start/stop diaporama - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche bas : scroll vertical down arrow : vertical scroll - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche droite : page suivante right arrow : next page - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche gauche : en arriere left arrow : previous document - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche gauche : en avant right arrow : next document - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche gauche : page precedente left arrow : previous page - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche haut : scroll vertical up arrow : vertical scroll - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::tab/shift-tab se ballade dans les champs tab/shift-tab : change field - web/prod/index.html.twig + web/prod/index.html.twig Rappel : Il vous reste %number% jours pour valider %title% de %user% @@ -5430,18 +5435,18 @@ Reset prod/Baskets/Reorder.html.twig prod/Story/Reorder.html.twig - web/prod/index.html.twig + web/prod/index.html.twig Re-ordonner Set order prod/Baskets/Reorder.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig prod/Story/Reorder.html.twig @@ -5533,7 +5538,7 @@ Rechercher dans un champ date In a date field - web/prod/index.html.twig + web/prod/index.html.twig Recommendations @@ -5624,7 +5629,7 @@ Relevance Relevance - web/prod/index.html.twig + web/prod/index.html.twig Remember me @@ -6002,7 +6007,7 @@ Select a field Select a field - web/prod/index.html.twig + web/prod/index.html.twig Select a list on the left and edit it ! @@ -6037,7 +6042,7 @@ Selected base(s) Selected database(s) : - web/prod/index.html.twig + web/prod/index.html.twig Selected files @@ -6314,7 +6319,7 @@ Status des documents a rechercher Document status - web/prod/index.html.twig + web/prod/index.html.twig Status edition @@ -6605,7 +6610,7 @@ The URL you used is out of date, please login The URL you used is out of date. Please login. - Phrasea/ControllerProvider/Lightbox.php + Phrasea/ControllerProvider/Lightbox.php The Youtube servers have received too many calls from the same caller in a short amount of time. @@ -6689,6 +6694,11 @@ The following errors have been detected user/import/view.html.twig + + The provided date is null! + The provided date is null! + Controller/Prod/PushController.php + The publication has been stopped The publication has been stopped. @@ -6734,7 +6744,7 @@ Theme Skin - web/prod/index.html.twig + web/prod/index.html.twig There is no one to validate orders, please contact an administrator @@ -6827,7 +6837,7 @@ This user does not participate to the validation but is only viewer. This user does not participate to the feedback request but is only viewer. - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig This user has no rights @@ -6911,7 +6921,7 @@ Tout type All types - web/prod/index.html.twig + web/prod/index.html.twig Toutes les publications @@ -6937,7 +6947,7 @@ Trier par Sort by - web/prod/index.html.twig + web/prod/index.html.twig Try to extract embedded thumbnails @@ -6962,7 +6972,7 @@ Type de documents Document Type - web/prod/index.html.twig + web/prod/index.html.twig Type nombre @@ -7050,6 +7060,11 @@ Controller/Root/LoginController.php Controller/Api/OAuth2Controller.php + + Unable to save the expiration date + Unable to save the expiration date + Controller/Prod/PushController.php + Unable to send the documents Unable to send the documents @@ -7085,7 +7100,7 @@ Une question personnelle The query - web/prod/index.html.twig + web/prod/index.html.twig Une selection @@ -7197,7 +7212,7 @@ Use latest search settings on Production loading Use latest search settings on Production when loading - web/prod/index.html.twig + web/prod/index.html.twig Use my Phraseanet account @@ -7336,11 +7351,11 @@ Validations Feedbacks - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig web/lightbox/index.html.twig lightbox/IE6/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig Validations received @@ -7375,7 +7390,7 @@ Video Video - web/prod/index.html.twig + web/prod/index.html.twig Video Codec @@ -7411,13 +7426,13 @@ Voici vos paniers Your Basket(s) - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig web/lightbox/index.html.twig Voici vos validations en cours Your feedbacks in progress - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig web/lightbox/index.html.twig @@ -7453,7 +7468,7 @@ Vous avez envoye une demande de validation de document sur ce panier You have pushed this basket for a feedback request - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig Vous avez recu des documents @@ -7572,7 +7587,7 @@ Vous pouvez quitter la plupart des fenetres survolantes via la touche echap esc : close most of overlayed windows - web/prod/index.html.twig + web/prod/index.html.twig Warning ! @@ -7673,8 +7688,8 @@ YYYY/MM/DD YYYY/MM/DD - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Yes @@ -7844,7 +7859,7 @@ You have to give your feedback at least on one document to send a report You have to give at least one document feedback to send a report - Phrasea/Controller/LightboxController.php + Phrasea/Controller/LightboxController.php You have to wait for an administrator approval for your access request @@ -7981,8 +7996,8 @@ a propos About - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig action : ajouter au panier @@ -7995,20 +8010,20 @@ action : bridge Bridge - web/prod/index.html.twig + web/prod/index.html.twig action : collection Move prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig action : editer Edit prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig prod/preview/caption.html.twig @@ -8016,30 +8031,30 @@ action : exporter Export prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig prod/results/record.html.twig prod/results/record.html.twig prod/results/record.html.twig prod/preview/tools.html.twig - web/prod/index.html.twig + web/prod/index.html.twig web/lightbox/feed.html.twig lightbox/IE6/feed.html.twig lightbox/IE6/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig action : outils Tools prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig action : print Print prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig prod/results/record.html.twig prod/results/record.html.twig @@ -8050,79 +8065,79 @@ action : publier Publish prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig - web/prod/index.html.twig + web/prod/index.html.twig action : push Push prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig action : status Properties prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig action : supprimer Delete - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig web/prod/toolbar.html.twig action:: nouveau panier New basket - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig action:: nouveau reportage New Story - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig action::Valider Validate - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig action::detacher Release from Basket zone - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig action::editer Edit - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig action::exporter Export - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig action::renommer Rename - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig actual status @@ -9141,13 +9156,13 @@ basket:action:delete record form basket Delete record from basket prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig basket:action:delete record form database Delete record from database prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig be notified when a document is placed in quarantine @@ -9157,12 +9172,12 @@ boutton:: selectionner aucune base None - web/prod/index.html.twig + web/prod/index.html.twig boutton:: selectionner toutes les bases All - web/prod/index.html.twig + web/prod/index.html.twig boutton::ajouter @@ -9332,7 +9347,7 @@ boutton::rechercher Search Controller/Prod/LanguageController.php - web/prod/index.html.twig + web/prod/index.html.twig boutton::refresh @@ -9434,7 +9449,7 @@ web/lightbox/feed.html.twig lightbox/IE6/feed.html.twig lightbox/IE6/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig boutton::tester @@ -9467,7 +9482,7 @@ prod/actions/edit_default.html.twig prod/actions/edit_default.html.twig prod/Story/Reorder.html.twig - web/prod/index.html.twig + web/prod/index.html.twig web/thesaurus/export-text-dialog.html.twig web/thesaurus/thesaurus.html.twig web/thesaurus/import-dialog.html.twig @@ -9588,12 +9603,12 @@ charger d'avantages de notifications Load more Notifications - classes/eventsmanager/broker.php + classes/eventsmanager/broker.php choisir Select - web/prod/index.html.twig + web/prod/index.html.twig admin/databox/databox.html.twig admin/collection/create.html.twig @@ -9675,7 +9690,7 @@ created_on created on - web/prod/index.html.twig + web/prod/index.html.twig dans %category% @@ -9706,7 +9721,7 @@ delete Delete - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig descendant @@ -9735,7 +9750,7 @@ edit edit - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig web/account/account.html.twig web/account/account.html.twig web/account/account.html.twig @@ -9955,7 +9970,7 @@ help::help-search: relaunch search without filter Remove all filters and relaunch search prod/results/help.html.twig - web/prod/index.html.twig + web/prod/index.html.twig help::help-section-bullet: check-spelling @@ -10032,47 +10047,47 @@ index::advance_search: disable-facet Hide facets with 1 result (experimental) - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet Facets Preferences - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet-order Facets order - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet-tech-order Default order - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet-values-order Facets values order - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: hidden-facet-values-order Hidden Facets - web/prod/index.html.twig + web/prod/index.html.twig - + index::advance_search: order-by-hits - By Hits - web/prod/index.html.twig + By Hits + web/prod/index.html.twig - + index::advance_search: order-by-hits-asc - By Hits asc - web/prod/index.html.twig + By Hits asc + web/prod/index.html.twig index:advanced-preferences:: use truncation use truncation - web/prod/index.html.twig + web/prod/index.html.twig invite:: Redirection vers la zone d'authentification, cliquez sur OK pour continuer ou annulez @@ -10094,9 +10109,9 @@ June classes/module/report.php - + language - Current Language + Language login/include/language-block.html.twig @@ -10117,14 +10132,14 @@ lightbox::list Summary - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig lightbox::recaptitulatif Summary - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig web/lightbox/agreement_box.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox::see_less_basket @@ -10136,6 +10151,48 @@ See more baskets web/lightbox/index.html.twig + + lightbox:feedback:sendreport:warnwindows:cancel + Cancel report sending and continue + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:message + Your feedback contains + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:record_approved + Approved + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:record_rejected + Rejected + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:record_unexpressed + Unexpressed + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:title + Feedback summary + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:validate + Send my report + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + login:: Changer mon adresse email Change my e-mail @@ -10609,17 +10666,17 @@ panier:: ordre Validation ascendante Most approved - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig panier:: ordre Validation descendante Less approved - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig panier:: ordre du panier Basket order - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig panier:: renommer le panier @@ -10644,7 +10701,7 @@ paniers:: panier recu de %pusher% Basket received from %pusher% - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig paniers::Vous etes sur le point de supprimer ce panier. Cette action est irreversible. Souhaitez-vous continuer ? @@ -10705,7 +10762,7 @@ phraseanet:: Preferences Preferences - web/prod/index.html.twig + web/prod/index.html.twig phraseanet:: Un email vient de vous etre envoye @@ -10854,17 +10911,17 @@ phraseanet:: tri par date Sort by date - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig web/thesaurus/export-topics-dialog.html.twig phraseanet:: tri par nom Sort by name - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig phraseanet:: user @@ -11019,42 +11076,42 @@ phraseanet::temps:: a l'instant Just now - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: hier Yesterday - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: il y a %quantity% heures %quantity% hours ago - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: il y a %quantity% minutes %quantity% minutes ago - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: il y a une heure One hour ago - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: il y a une minute One minute ago - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::time:: a To - web/prod/index.html.twig + web/prod/index.html.twig phraseanet::time:: de From - web/prod/index.html.twig + web/prod/index.html.twig phraseanet::type:: audios @@ -11065,7 +11122,7 @@ phraseanet::type:: documents Documents web/prod/toolbar.html.twig - web/prod/index.html.twig + web/prod/index.html.twig phraseanet::type:: images @@ -11075,7 +11132,7 @@ phraseanet::type:: reportages Stories - web/prod/index.html.twig + web/prod/index.html.twig phraseanet::type:: videos @@ -11100,17 +11157,17 @@ preview:: Description Caption - web/prod/index.html.twig + web/prod/index.html.twig preview:: Historique Timeline - web/prod/index.html.twig + web/prod/index.html.twig preview:: Popularite Statistics - web/prod/index.html.twig + web/prod/index.html.twig preview:: arreter le diaporama @@ -11329,12 +11386,12 @@ prod::advancesearch:tooltips:datefield_restriction_explanation Narrow the search results to dates - web/prod/index.html.twig + web/prod/index.html.twig prod::advancesearch:tooltips:field_restriction_explanation prod::advancesearch:tooltips:field_restriction_explanation - web/prod/index.html.twig + web/prod/index.html.twig prod::collection deplacer egalement les documents rattaches a ce(s) regroupement(s) @@ -11680,10 +11737,36 @@ It is possible to place several search areas Delete Selection prod/actions/Push.html.twig - + + prod:workzone:basket:creation-date + Creation + prod/WorkZone/Basket.html.twig + prod/Tooltip/Basket.html.twig + + + prod:workzone:basket:updated-message + prod:workzone:basket:updated-message + prod/WorkZone/Basket.html.twig + + prod:workzone:facetstab:search_and_facets_sort_options Option - web/prod/index.html.twig + web/prod/index.html.twig + + + prod:workzone:facetstab:tooltips:facet_and_filter + Include into results + web/prod/index.html.twig + + + prod:workzone:facetstab:tooltips:facet_except_filter + Exclude form results + web/prod/index.html.twig + + + prod:workzone:facetstab:tooltips:remove_facet_filter + Remove filter + web/prod/index.html.twig public @@ -11759,19 +11842,19 @@ It is possible to place several search areas raccourci :: a propos des raccourcis claviers About shortcuts - web/prod/index.html.twig + web/prod/index.html.twig raccourcis :: ne plus montrer cette aide Do not display this help anymore - web/prod/index.html.twig + web/prod/index.html.twig rafraichir Refresh prod/WorkZone/Story.html.twig prod/WorkZone/Macros.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig prod/results/feeds.html.twig prod/results/feeds.html.twig @@ -11833,17 +11916,17 @@ It is possible to place several search areas reponses:: images par pages : Results per page - web/prod/index.html.twig + web/prod/index.html.twig reponses:: mode liste List - web/prod/index.html.twig + web/prod/index.html.twig reponses:: mode vignettes Thumbnails - web/prod/index.html.twig + web/prod/index.html.twig reponses:: partager @@ -11865,7 +11948,7 @@ It is possible to place several search areas reponses:: taille des images : Thumbnails size - web/prod/index.html.twig + web/prod/index.html.twig reponses::document sans titre @@ -13249,7 +13332,7 @@ It is possible to place several search areas updated_on updated on - web/prod/index.html.twig + web/prod/index.html.twig upload:: Destination (collection) : @@ -13308,8 +13391,8 @@ It is possible to place several search areas validation::envoyer mon rapport Send my feedback - mobile/lightbox/validate.html.twig - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig web/lightbox/basket_options.html.twig web/lightbox/basket_options.html.twig @@ -13339,6 +13422,138 @@ It is possible to place several search areas Thumbnail Tools actions/Tools/videoEditor.html.twig + + workzone:datepicker:april + April + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:august + August + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:closeText + Close + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:currentText + Current + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:december + December + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:february + February + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:friday + Friday + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:january + January + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:july + July + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:june + June + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:march + March + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:may + May + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:monday + Monday + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:nextText + Next + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:november + November + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:october + October + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:prevText + Previous + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:saturday + Saturday + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:september + September + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:sunday + Sunday + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:thursday + Thursday + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:tuesday + Tuesday + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:wednesday + Wednesday + prod/WorkZone/Basket.html.twig + + + workzone:feedback:expiration-closed + workzone:feedback:expiration-closed + prod/WorkZone/Basket.html.twig + prod/Tooltip/Basket.html.twig + + + workzone:feedback:expiration-open + Feedback open until + prod/WorkZone/Basket.html.twig + prod/Tooltip/Basket.html.twig + + + workzone:feedback:update + Update Date + prod/WorkZone/Basket.html.twig + yes Yes diff --git a/resources/locales/messages.fr.xlf b/resources/locales/messages.fr.xlf index b26706cfd7..d830633044 100644 --- a/resources/locales/messages.fr.xlf +++ b/resources/locales/messages.fr.xlf @@ -1,6 +1,6 @@ - +
The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message. @@ -117,7 +117,7 @@ %basket_length% documents %basket_length% documents - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig web/lightbox/index.html.twig web/lightbox/index.html.twig @@ -192,8 +192,9 @@ %nb_records% records %nb_records% enregistrement(s) + prod/WorkZone/Basket.html.twig prod/Tooltip/Story.html.twig - prod/Tooltip/Basket.html.twig + prod/Tooltip/Basket.html.twig %nb_view% vue @@ -760,8 +761,8 @@ Advanced Search Recherche avancée - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Advanced mode @@ -776,37 +777,37 @@ Affichage Affichage - web/prod/index.html.twig + web/prod/index.html.twig Affichage au demarrage Afficher au démarrage - web/prod/index.html.twig + web/prod/index.html.twig Afficher la fiche descriptive Afficher la notice - web/prod/index.html.twig + web/prod/index.html.twig Afficher le titre Afficher le titre - web/prod/index.html.twig + web/prod/index.html.twig Afficher les status Afficher les Status - web/prod/index.html.twig + web/prod/index.html.twig Afficher une icone Afficher une icône - web/prod/index.html.twig + web/prod/index.html.twig After metadata Dans l'infobulle de description, après les métadonnées - web/prod/index.html.twig + web/prod/index.html.twig Aggregated @@ -821,7 +822,7 @@ Aide Aide - web/prod/index.html.twig + web/prod/index.html.twig Aide sur les expressions regulieres @@ -873,7 +874,7 @@ All these conditions Toutes les conditions - web/prod/index.html.twig + web/prod/index.html.twig Aller a @@ -938,15 +939,15 @@ Alphabetic asc Alphabétique asc - web/prod/index.html.twig - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Alphabetic desc Alphabétique desc - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Also delete records that rely on groupings. @@ -1157,8 +1158,8 @@ Archive Archiver - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig Are you sure you want delete users rights ? @@ -1266,7 +1267,7 @@ Audio Audio - web/prod/index.html.twig + web/prod/index.html.twig Audio Birate @@ -1397,10 +1398,10 @@ Back Retour mobile/lightbox/basket_element.html.twig - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig - mobile/lightbox/validate.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/validate.html.twig Back to Feedback @@ -1525,9 +1526,9 @@ Browse Baskets Parcourir les paniers - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Browser @@ -1555,7 +1556,7 @@ By field Par champ - web/prod/index.html.twig + web/prod/index.html.twig CHAMPS @@ -1689,7 +1690,7 @@ Certaines donnees du panier ont change Certaines données du panier ont changé - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig Certaines donnees du reportage ont change @@ -1840,7 +1841,7 @@ Collection order Ordre des collections - web/prod/index.html.twig + web/prod/index.html.twig Color Depth @@ -1911,7 +1912,7 @@ Configuration Configuration - web/prod/index.html.twig + web/prod/index.html.twig Confirm new email address @@ -1967,7 +1968,7 @@ Contains Contient - web/prod/index.html.twig + web/prod/index.html.twig Continuer ? @@ -2022,7 +2023,7 @@ Couleur de selection Couleur de sélection - web/prod/index.html.twig + web/prod/index.html.twig Country @@ -2235,7 +2236,7 @@ Date Added Date d'ajout - web/prod/index.html.twig + web/prod/index.html.twig Date Creation @@ -2245,7 +2246,7 @@ Date Updated Date de modification - web/prod/index.html.twig + web/prod/index.html.twig Date de connexion @@ -2274,7 +2275,7 @@ Date(s) from field(s) Date(s) - web/prod/index.html.twig + web/prod/index.html.twig De @@ -2302,7 +2303,7 @@ Deconnexion Déconnexion - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig Decouvrez la documentation @@ -2352,7 +2353,7 @@ Defined by admin Défini par l'admin - web/prod/index.html.twig + web/prod/index.html.twig Defined in Apache configuration @@ -2530,7 +2531,7 @@ Display technical data Affichage des informations techniques - web/prod/index.html.twig + web/prod/index.html.twig Display thumbnails @@ -2540,7 +2541,7 @@ Do not display Masquer les informations techniques - web/prod/index.html.twig + web/prod/index.html.twig Do not forget to restart the tasks scheduler @@ -2566,13 +2567,12 @@ Do you want to send your report ? Souhaitez-vous envoyer votre rapport ? Phrasea/Controller/LightboxController.php - mobile/lightbox/validate.html.twig - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig Document Document - web/prod/index.html.twig + web/prod/index.html.twig Document Type Sharing @@ -3011,7 +3011,7 @@ Equals Egale - web/prod/index.html.twig + web/prod/index.html.twig Erreur @@ -3154,7 +3154,7 @@ Ex : Paris, bleu, montagne Ex : Paris, bleu, montagne - web/prod/index.html.twig + web/prod/index.html.twig Executables externes @@ -3166,6 +3166,11 @@ Paramètres d'exécutables Form/Configuration/MainConfigurationFormType.php + + Expiration date successfully updated! + Expiration date successfully updated! + Controller/Prod/PushController.php + Export Exporter @@ -3214,7 +3219,7 @@ Controller/Prod/LanguageController.php prod/WorkZone/Story.html.twig prod/WorkZone/Macros.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig @@ -3337,7 +3342,7 @@ Flash Flash - web/prod/index.html.twig + web/prod/index.html.twig web/common/technical_datas.html.twig @@ -3473,7 +3478,7 @@ Geo Search Recherche géolocalisée - web/prod/index.html.twig + web/prod/index.html.twig Geonames server address @@ -3548,7 +3553,7 @@ Graphiste (preview au rollover) Graphiste (prévisualisation au survol de la vignette) - web/prod/index.html.twig + web/prod/index.html.twig Great @@ -3619,7 +3624,7 @@ Accueil mobile/lightbox/basket_element.html.twig mobile/lightbox/feed.html.twig - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig login/include/language-block.html.twig login/layout/base-layout.html.twig @@ -3657,7 +3662,7 @@ Iconographe (description au rollover) Iconographe (fiche d'indexation au survol de la vignette) - web/prod/index.html.twig + web/prod/index.html.twig Id @@ -3702,7 +3707,7 @@ Image Image - web/prod/index.html.twig + web/prod/index.html.twig ImageMagick @@ -3728,7 +3733,7 @@ In the answer grid Dans une infobulle séparée - web/prod/index.html.twig + web/prod/index.html.twig Include Business-fields in caption @@ -3896,17 +3901,17 @@ L'utilisateur approuve ce document L'utilisateur approuve ce document - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig L'utilisateur desapprouve ce document L'utilisateur désapprouve ce document - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig L'utilisateur n'a pas encore donne son avis sur ce document L'utilisateur n'a pas encore donné son avis sur ce document - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig La connection vers le serveur distant est OK @@ -3949,10 +3954,10 @@ admin/statusbit/edit.html.twig admin/statusbit/edit.html.twig - - Language - Langue - web/prod/index.html.twig + + Language selection + Language selection + web/prod/index.html.twig Last Name @@ -4089,7 +4094,7 @@ Les termes apparaissent dans le(s) champs Le(s) mot(s) contenu(s) dans le(s) champ(s) - web/prod/index.html.twig + web/prod/index.html.twig Light Value @@ -4099,8 +4104,8 @@ Lightbox Lightbox - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig Limite temporelle @@ -4219,7 +4224,7 @@ Ma derniere question Ma dernière question - web/prod/index.html.twig + web/prod/index.html.twig Mail line %line% is empty @@ -4376,7 +4381,7 @@ Mode de presentation Mode de présentation - web/prod/index.html.twig + web/prod/index.html.twig Modele de donnees @@ -4706,7 +4711,7 @@ Notifications globales Notifications globales - classes/eventsmanager/broker.php + classes/eventsmanager/broker.php Notify third party application when an event occurs in Phraseanet @@ -4800,7 +4805,7 @@ One of these conditions Une de ces conditions - web/prod/index.html.twig + web/prod/index.html.twig Only %nbEditableDocuments% records can be modified. @@ -4900,12 +4905,12 @@ Paniers Paniers - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig web/account/account.html.twig web/lightbox/index.html.twig lightbox/IE6/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig Par %author% @@ -5143,10 +5148,10 @@ Preferences Préférences - web/prod/index.html.twig web/prod/index.html.twig - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Prefix for notification emails @@ -5161,12 +5166,12 @@ Presentation de vignettes Présentation de vignettes - web/prod/index.html.twig + web/prod/index.html.twig Presentation de vignettes de panier Présentation des vignettes de panier - web/prod/index.html.twig + web/prod/index.html.twig Presets @@ -5219,7 +5224,7 @@ Publications Publications - web/prod/index.html.twig + web/prod/index.html.twig admin/publications/wrapper.html.twig web/admin/tree.html.twig web/common/menubar.html.twig @@ -5334,80 +5339,80 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Raccourcis claviers de la zone des paniers : - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis claviers en cours de editing : Raccourci de la fenêtre d'édition - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis claviers en cours de preview : Raccourcis de la fenêtre vue détaillée - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis claviers en cours de recherche : Raccourcis de la fenêtre principale - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis:: ctrl-a : tout selectionner ctrl-a : sélectionner tout - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Raccourcis:: ctrl-e : editer la selection ctrl-e : éditer la sélection - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Raccourcis:: ctrl-p : imprimer la selection ctrl-p : imprimer la sélection - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::espace : arreter/demarrer le diaporama espace : démarrer/arrêter le diaporama - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche bas : scroll vertical flèche basse : défilement vers le bas - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche droite : page suivante flèche droite : page suivante - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche gauche : en arriere flèche gauche : document précédent - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche gauche : en avant flèche droite : document suivant - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche gauche : page precedente flèche gauche : page précédente - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche haut : scroll vertical flèche haute : défilement vers le haut - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::tab/shift-tab se ballade dans les champs Tab/shift-tab : Changer de champs - web/prod/index.html.twig + web/prod/index.html.twig Rappel : Il vous reste %number% jours pour valider %title% de %user% @@ -5429,18 +5434,18 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Ré-initialiser prod/Baskets/Reorder.html.twig prod/Story/Reorder.html.twig - web/prod/index.html.twig + web/prod/index.html.twig Re-ordonner Ordonner prod/Baskets/Reorder.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig prod/Story/Reorder.html.twig @@ -5532,7 +5537,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Rechercher dans un champ date Dans un champ date - web/prod/index.html.twig + web/prod/index.html.twig Recommendations @@ -5623,7 +5628,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Relevance Pertinence - web/prod/index.html.twig + web/prod/index.html.twig Remember me @@ -6001,7 +6006,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Select a field Choisir un champ - web/prod/index.html.twig + web/prod/index.html.twig Select a list on the left and edit it ! @@ -6036,7 +6041,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Selected base(s) Sélectionner les Bases : - web/prod/index.html.twig + web/prod/index.html.twig Selected files @@ -6313,7 +6318,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Status des documents a rechercher Status des documents pour la recherche - web/prod/index.html.twig + web/prod/index.html.twig Status edition @@ -6604,7 +6609,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis The URL you used is out of date, please login L'URL utilisée est périmé. Veuillez vous identifier. - Phrasea/ControllerProvider/Lightbox.php + Phrasea/ControllerProvider/Lightbox.php The Youtube servers have received too many calls from the same caller in a short amount of time. @@ -6688,6 +6693,11 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Les erreurs suivantes ont été détectées. user/import/view.html.twig + + The provided date is null! + The provided date is null! + Controller/Prod/PushController.php + The publication has been stopped La publication a été suspendue @@ -6733,7 +6743,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Theme Thème - web/prod/index.html.twig + web/prod/index.html.twig There is no one to validate orders, please contact an administrator @@ -6826,7 +6836,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis This user does not participate to the validation but is only viewer. Cet utilisateur ne participe pas à la demande de validation - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig This user has no rights @@ -6910,7 +6920,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Tout type Tous types - web/prod/index.html.twig + web/prod/index.html.twig Toutes les publications @@ -6936,7 +6946,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Trier par Trier par - web/prod/index.html.twig + web/prod/index.html.twig Try to extract embedded thumbnails @@ -6961,7 +6971,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Type de documents Type de document - web/prod/index.html.twig + web/prod/index.html.twig Type nombre @@ -7049,6 +7059,11 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Controller/Root/LoginController.php Controller/Api/OAuth2Controller.php + + Unable to save the expiration date + Unable to save the expiration date + Controller/Prod/PushController.php + Unable to send the documents Impossible d'envoyer les documents @@ -7084,7 +7099,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Une question personnelle La question - web/prod/index.html.twig + web/prod/index.html.twig Une selection @@ -7196,7 +7211,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Use latest search settings on Production loading Utiliser la dernière question posée au lancement de Production - web/prod/index.html.twig + web/prod/index.html.twig Use my Phraseanet account @@ -7335,11 +7350,11 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Validations Validations - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig web/lightbox/index.html.twig lightbox/IE6/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig Validations received @@ -7374,7 +7389,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Video Vidéo - web/prod/index.html.twig + web/prod/index.html.twig Video Codec @@ -7410,13 +7425,13 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Voici vos paniers Paniers disponibles - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig web/lightbox/index.html.twig Voici vos validations en cours Demandes de validations en cours - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig web/lightbox/index.html.twig @@ -7452,7 +7467,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Vous avez envoye une demande de validation de document sur ce panier Vous avez envoyé ce panier pour validation - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig Vous avez recu des documents @@ -7571,7 +7586,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis Vous pouvez quitter la plupart des fenetres survolantes via la touche echap Vous pouvez fermer la plupart des fênetres en sur impression avec la touche echap - web/prod/index.html.twig + web/prod/index.html.twig Warning ! @@ -7672,8 +7687,8 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis YYYY/MM/DD YYYY/MM/DD - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Yes @@ -7843,7 +7858,7 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis You have to give your feedback at least on one document to send a report Vous devez donner au moins un avis pour envoyer un report - Phrasea/Controller/LightboxController.php + Phrasea/Controller/LightboxController.php You have to wait for an administrator approval for your access request @@ -7980,8 +7995,8 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis a propos A propos - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig action : ajouter au panier @@ -7994,20 +8009,20 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis action : bridge Bridge - web/prod/index.html.twig + web/prod/index.html.twig action : collection Déplacer prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig action : editer Editer prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig prod/preview/caption.html.twig @@ -8015,30 +8030,30 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis action : exporter Exporter prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig prod/results/record.html.twig prod/results/record.html.twig prod/results/record.html.twig prod/preview/tools.html.twig - web/prod/index.html.twig + web/prod/index.html.twig web/lightbox/feed.html.twig lightbox/IE6/feed.html.twig lightbox/IE6/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig action : outils Outils prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig action : print Imprimer prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig prod/results/record.html.twig prod/results/record.html.twig @@ -8049,79 +8064,79 @@ Pour les utilisateurs authentifiés, la demande de validation est également dis action : publier Publier prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig - web/prod/index.html.twig + web/prod/index.html.twig action : push Push prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig action : status Propriétés prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig action : supprimer Supprimer - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig web/prod/toolbar.html.twig action:: nouveau panier Nouveau panier - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig action:: nouveau reportage Nouveau reportage - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig action::Valider Valider - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig action::detacher Détacher - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig action::editer Editer - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig action::exporter Exporter - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig action::renommer Renommer - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig actual status @@ -9141,13 +9156,13 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le basket:action:delete record form basket Retirer du panier prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig basket:action:delete record form database Supprimer l'enregistrement de la base prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig be notified when a document is placed in quarantine @@ -9157,12 +9172,12 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le boutton:: selectionner aucune base Aucune - web/prod/index.html.twig + web/prod/index.html.twig boutton:: selectionner toutes les bases Toutes - web/prod/index.html.twig + web/prod/index.html.twig boutton::ajouter @@ -9332,7 +9347,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le boutton::rechercher Rechercher Controller/Prod/LanguageController.php - web/prod/index.html.twig + web/prod/index.html.twig boutton::refresh @@ -9434,7 +9449,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le web/lightbox/feed.html.twig lightbox/IE6/feed.html.twig lightbox/IE6/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig boutton::tester @@ -9467,7 +9482,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le prod/actions/edit_default.html.twig prod/actions/edit_default.html.twig prod/Story/Reorder.html.twig - web/prod/index.html.twig + web/prod/index.html.twig web/thesaurus/export-text-dialog.html.twig web/thesaurus/thesaurus.html.twig web/thesaurus/import-dialog.html.twig @@ -9588,12 +9603,12 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le charger d'avantages de notifications Charger davantage de notifications - classes/eventsmanager/broker.php + classes/eventsmanager/broker.php choisir Choisir - web/prod/index.html.twig + web/prod/index.html.twig admin/databox/databox.html.twig admin/collection/create.html.twig @@ -9675,7 +9690,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le created_on créé le - web/prod/index.html.twig + web/prod/index.html.twig dans %category% @@ -9706,7 +9721,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le delete Supprimer - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig descendant @@ -9735,7 +9750,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le edit Editer - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig web/account/account.html.twig web/account/account.html.twig web/account/account.html.twig @@ -9955,7 +9970,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le help::help-search: relaunch search without filter Supprimer tous les filtres et relancer la recherche prod/results/help.html.twig - web/prod/index.html.twig + web/prod/index.html.twig help::help-section-bullet: check-spelling @@ -10032,47 +10047,47 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le index::advance_search: disable-facet Ne pas afficher les facettes contenant un seul résultat (expérimental) - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet Préférences sur les facettes - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet-order Ordre d'affichage des facettes - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet-tech-order Ordre par défaut - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet-values-order Ordre des valeurs de facettes - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: hidden-facet-values-order Facettes masquées - web/prod/index.html.twig + web/prod/index.html.twig - + index::advance_search: order-by-hits - Par occurrences - web/prod/index.html.twig + Par occurrences + web/prod/index.html.twig - + index::advance_search: order-by-hits-asc - Par occurrences asc - web/prod/index.html.twig + Par occurrences asc + web/prod/index.html.twig index:advanced-preferences:: use truncation Activer la troncature - web/prod/index.html.twig + web/prod/index.html.twig invite:: Redirection vers la zone d'authentification, cliquez sur OK pour continuer ou annulez @@ -10094,9 +10109,9 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le juin classes/module/report.php - + language - Langue actuelle + Langue login/include/language-block.html.twig @@ -10117,14 +10132,14 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le lightbox::list Vignette - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig lightbox::recaptitulatif Récapitulatif - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig web/lightbox/agreement_box.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox::see_less_basket @@ -10136,6 +10151,48 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le Voir plus de paniers web/lightbox/index.html.twig + + lightbox:feedback:sendreport:warnwindows:cancel + Annuler l'envois et continuer la validation + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:message + Récapitulatif des choix de la validation + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:record_approved + Approuvés + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:record_rejected + Refusés + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:record_unexpressed + Non exprimé + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:title + Résumé de la validation + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:validate + Confirmer l'envois du rapport + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + login:: Changer mon adresse email Changer mon adresse e-mail @@ -10609,17 +10666,17 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le panier:: ordre Validation ascendante Mieux noté - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig panier:: ordre Validation descendante Moins noté - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig panier:: ordre du panier Ordre du panier - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig panier:: renommer le panier @@ -10644,7 +10701,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le paniers:: panier recu de %pusher% Panier reçu de %pusher% - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig paniers::Vous etes sur le point de supprimer ce panier. Cette action est irreversible. Souhaitez-vous continuer ? @@ -10705,7 +10762,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le phraseanet:: Preferences Préférences - web/prod/index.html.twig + web/prod/index.html.twig phraseanet:: Un email vient de vous etre envoye @@ -10854,17 +10911,17 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le phraseanet:: tri par date Tri par date - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig web/thesaurus/export-topics-dialog.html.twig phraseanet:: tri par nom Tri alphabétique - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig phraseanet:: user @@ -11019,42 +11076,42 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le phraseanet::temps:: a l'instant A l'instant - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: hier Hier - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: il y a %quantity% heures Il y a %quantity% heures - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: il y a %quantity% minutes Il y a %quantity% minutes - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: il y a une heure Il y a une heure - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: il y a une minute Il y a une minute - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::time:: a A - web/prod/index.html.twig + web/prod/index.html.twig phraseanet::time:: de De - web/prod/index.html.twig + web/prod/index.html.twig phraseanet::type:: audios @@ -11065,7 +11122,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le phraseanet::type:: documents Documents web/prod/toolbar.html.twig - web/prod/index.html.twig + web/prod/index.html.twig phraseanet::type:: images @@ -11075,7 +11132,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le phraseanet::type:: reportages Reportages - web/prod/index.html.twig + web/prod/index.html.twig phraseanet::type:: videos @@ -11100,17 +11157,17 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le preview:: Description Notice - web/prod/index.html.twig + web/prod/index.html.twig preview:: Historique Historique - web/prod/index.html.twig + web/prod/index.html.twig preview:: Popularite Popularité - web/prod/index.html.twig + web/prod/index.html.twig preview:: arreter le diaporama @@ -11329,12 +11386,12 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le prod::advancesearch:tooltips:datefield_restriction_explanation Limiter la recherche des résultats à des dates - web/prod/index.html.twig + web/prod/index.html.twig prod::advancesearch:tooltips:field_restriction_explanation Effectuer une recherche sur le contenu d'un champ documentaire de type texte - web/prod/index.html.twig + web/prod/index.html.twig prod::collection deplacer egalement les documents rattaches a ce(s) regroupement(s) @@ -11683,10 +11740,36 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le Supprimer la selection prod/actions/Push.html.twig + + prod:workzone:basket:creation-date + Date de création + prod/WorkZone/Basket.html.twig + prod/Tooltip/Basket.html.twig + + + prod:workzone:basket:updated-message + prod:workzone:basket:updated-message + prod/WorkZone/Basket.html.twig + prod:workzone:facetstab:search_and_facets_sort_options Options - web/prod/index.html.twig + web/prod/index.html.twig + + + prod:workzone:facetstab:tooltips:facet_and_filter + Inclure les résultats + web/prod/index.html.twig + + + prod:workzone:facetstab:tooltips:facet_except_filter + Exclure les résultats + web/prod/index.html.twig + + + prod:workzone:facetstab:tooltips:remove_facet_filter + Supprimer le filtre + web/prod/index.html.twig public @@ -11762,19 +11845,19 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le raccourci :: a propos des raccourcis claviers A propos des raccourcis clavier - web/prod/index.html.twig + web/prod/index.html.twig raccourcis :: ne plus montrer cette aide Ne plus montrer cette aide - web/prod/index.html.twig + web/prod/index.html.twig rafraichir Rafraîchir prod/WorkZone/Story.html.twig prod/WorkZone/Macros.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig prod/results/feeds.html.twig prod/results/feeds.html.twig @@ -11836,17 +11919,17 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le reponses:: images par pages : Résultats par page - web/prod/index.html.twig + web/prod/index.html.twig reponses:: mode liste Liste - web/prod/index.html.twig + web/prod/index.html.twig reponses:: mode vignettes Vignettes - web/prod/index.html.twig + web/prod/index.html.twig reponses:: partager @@ -11868,7 +11951,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le reponses:: taille des images : Taille des vignettes - web/prod/index.html.twig + web/prod/index.html.twig reponses::document sans titre @@ -13252,7 +13335,7 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le updated_on mis à jour le - web/prod/index.html.twig + web/prod/index.html.twig upload:: Destination (collection) : @@ -13311,8 +13394,8 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le validation::envoyer mon rapport Envoyer mon rapport - mobile/lightbox/validate.html.twig - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig web/lightbox/basket_options.html.twig web/lightbox/basket_options.html.twig @@ -13342,6 +13425,138 @@ Si vous recevez cet e-mail sans l'avoir sollicité, merci de l'ignorer ou de le Outils vidéos actions/Tools/videoEditor.html.twig + + workzone:datepicker:april + Avril + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:august + Aout + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:closeText + Clore + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:currentText + courant + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:december + Décembre + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:february + Février + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:friday + Vendredi + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:january + Janvier + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:july + Juillet + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:june + Juin + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:march + Mars + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:may + Mai + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:monday + Lundi + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:nextText + Suivant + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:november + Novembre + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:october + Octobre + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:prevText + Précédent + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:saturday + Samedi + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:september + Septembre + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:sunday + Dimanche + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:thursday + Jeudi + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:tuesday + Mardi + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:wednesday + Mercredi + prod/WorkZone/Basket.html.twig + + + workzone:feedback:expiration-closed + Validation close depuis + prod/WorkZone/Basket.html.twig + prod/Tooltip/Basket.html.twig + + + workzone:feedback:expiration-open + validation ouverte jusqu'au + prod/WorkZone/Basket.html.twig + prod/Tooltip/Basket.html.twig + + + workzone:feedback:update + Valider + prod/WorkZone/Basket.html.twig + yes Oui diff --git a/resources/locales/messages.nl.xlf b/resources/locales/messages.nl.xlf index 54bdcdf01e..d5fff61be3 100644 --- a/resources/locales/messages.nl.xlf +++ b/resources/locales/messages.nl.xlf @@ -1,6 +1,6 @@ - +
The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message. @@ -121,7 +121,7 @@ %basket_length% documents %basket_length% documenten - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig web/lightbox/index.html.twig web/lightbox/index.html.twig @@ -196,8 +196,9 @@ %nb_records% records %nb_records% records + prod/WorkZone/Basket.html.twig prod/Tooltip/Story.html.twig - prod/Tooltip/Basket.html.twig + prod/Tooltip/Basket.html.twig %nb_view% vue @@ -765,8 +766,8 @@ Advanced Search Geavanceerd zoeken - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Advanced mode @@ -781,37 +782,37 @@ Affichage Tonen - web/prod/index.html.twig + web/prod/index.html.twig Affichage au demarrage Tonen bij opstart - web/prod/index.html.twig + web/prod/index.html.twig Afficher la fiche descriptive De beschrijvingsfiche tonen - web/prod/index.html.twig + web/prod/index.html.twig Afficher le titre De titel tonen - web/prod/index.html.twig + web/prod/index.html.twig Afficher les status De statussen tonen - web/prod/index.html.twig + web/prod/index.html.twig Afficher une icone Pictogram tonen - web/prod/index.html.twig + web/prod/index.html.twig After metadata After metadata - web/prod/index.html.twig + web/prod/index.html.twig Aggregated @@ -826,7 +827,7 @@ Aide Help - web/prod/index.html.twig + web/prod/index.html.twig Aide sur les expressions regulieres @@ -878,7 +879,7 @@ All these conditions All these conditions - web/prod/index.html.twig + web/prod/index.html.twig Aller a @@ -943,15 +944,15 @@ Alphabetic asc Alphabetic asc - web/prod/index.html.twig - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Alphabetic desc Alphabetic desc - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Also delete records that rely on groupings. @@ -1162,8 +1163,8 @@ Archive Archief - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig Are you sure you want delete users rights ? @@ -1271,7 +1272,7 @@ Audio Audio - web/prod/index.html.twig + web/prod/index.html.twig Audio Birate @@ -1402,10 +1403,10 @@ Back Terug mobile/lightbox/basket_element.html.twig - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig - mobile/lightbox/validate.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/validate.html.twig Back to Feedback @@ -1530,9 +1531,9 @@ Browse Baskets Mandjes doorbladeren - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Browser @@ -1560,7 +1561,7 @@ By field By field - web/prod/index.html.twig + web/prod/index.html.twig CHAMPS @@ -1694,7 +1695,7 @@ Certaines donnees du panier ont change Sommige gegevens in het mandje zijn veranderd - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig Certaines donnees du reportage ont change @@ -1846,7 +1847,7 @@ Collection order Collection order - web/prod/index.html.twig + web/prod/index.html.twig Color Depth @@ -1917,7 +1918,7 @@ Configuration Configuratie - web/prod/index.html.twig + web/prod/index.html.twig Confirm new email address @@ -1973,7 +1974,7 @@ Contains Contains - web/prod/index.html.twig + web/prod/index.html.twig Continuer ? @@ -2028,7 +2029,7 @@ Couleur de selection Kleur van de selectie - web/prod/index.html.twig + web/prod/index.html.twig Country @@ -2242,7 +2243,7 @@ Date Added Date Added - web/prod/index.html.twig + web/prod/index.html.twig Date Creation @@ -2252,7 +2253,7 @@ Date Updated Date Updated - web/prod/index.html.twig + web/prod/index.html.twig Date de connexion @@ -2281,7 +2282,7 @@ Date(s) from field(s) Date(s) from field(s) - web/prod/index.html.twig + web/prod/index.html.twig De @@ -2309,7 +2310,7 @@ Deconnexion Log out - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig Decouvrez la documentation @@ -2359,7 +2360,7 @@ Defined by admin Defined by admin - web/prod/index.html.twig + web/prod/index.html.twig Defined in Apache configuration @@ -2537,7 +2538,7 @@ Display technical data Display technical data - web/prod/index.html.twig + web/prod/index.html.twig Display thumbnails @@ -2547,7 +2548,7 @@ Do not display Do not display - web/prod/index.html.twig + web/prod/index.html.twig Do not forget to restart the tasks scheduler @@ -2573,13 +2574,12 @@ Do you want to send your report ? Wenst u uw rapport te sturen ? Phrasea/Controller/LightboxController.php - mobile/lightbox/validate.html.twig - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig Document Document - web/prod/index.html.twig + web/prod/index.html.twig Document Type Sharing @@ -3021,7 +3021,7 @@ Equals Equals - web/prod/index.html.twig + web/prod/index.html.twig Erreur @@ -3164,7 +3164,7 @@ Ex : Paris, bleu, montagne Ex : Paris, bleu, montagne - web/prod/index.html.twig + web/prod/index.html.twig Executables externes @@ -3176,6 +3176,11 @@ Executables instellingen Form/Configuration/MainConfigurationFormType.php + + Expiration date successfully updated! + Expiration date successfully updated! + Controller/Prod/PushController.php + Export Exporteer @@ -3224,7 +3229,7 @@ Controller/Prod/LanguageController.php prod/WorkZone/Story.html.twig prod/WorkZone/Macros.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig @@ -3347,7 +3352,7 @@ Flash Flash - web/prod/index.html.twig + web/prod/index.html.twig web/common/technical_datas.html.twig @@ -3483,7 +3488,7 @@ Geo Search Geo Search - web/prod/index.html.twig + web/prod/index.html.twig Geonames server address @@ -3558,7 +3563,7 @@ Graphiste (preview au rollover) Graficus (preview au rollover) - web/prod/index.html.twig + web/prod/index.html.twig Great @@ -3629,7 +3634,7 @@ Startpagina mobile/lightbox/basket_element.html.twig mobile/lightbox/feed.html.twig - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig login/include/language-block.html.twig login/layout/base-layout.html.twig @@ -3667,7 +3672,7 @@ Iconographe (description au rollover) Iconographe (beschrijving bij de rollover) - web/prod/index.html.twig + web/prod/index.html.twig Id @@ -3712,7 +3717,7 @@ Image Beeld - web/prod/index.html.twig + web/prod/index.html.twig ImageMagick @@ -3738,7 +3743,7 @@ In the answer grid In the answer grid - web/prod/index.html.twig + web/prod/index.html.twig Include Business-fields in caption @@ -3906,17 +3911,17 @@ L'utilisateur approuve ce document De gebruiker keurt dit document goed - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig L'utilisateur desapprouve ce document De gebruiker keurt dit document af - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig L'utilisateur n'a pas encore donne son avis sur ce document De gebruiker heeft nog zijn mening niet gegeven over dit document - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig La connection vers le serveur distant est OK @@ -3959,10 +3964,10 @@ admin/statusbit/edit.html.twig admin/statusbit/edit.html.twig - - Language - Language - web/prod/index.html.twig + + Language selection + Language selection + web/prod/index.html.twig Last Name @@ -4099,7 +4104,7 @@ Les termes apparaissent dans le(s) champs De termen verschijnen in de veld(en) - web/prod/index.html.twig + web/prod/index.html.twig Light Value @@ -4109,8 +4114,8 @@ Lightbox Lightbox - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig Limite temporelle @@ -4229,7 +4234,7 @@ Ma derniere question Mijn laatste vraag - web/prod/index.html.twig + web/prod/index.html.twig Mail line %line% is empty @@ -4386,7 +4391,7 @@ Mode de presentation Presentatie mode - web/prod/index.html.twig + web/prod/index.html.twig Modele de donnees @@ -4716,7 +4721,7 @@ Notifications globales Algemene meldingen - classes/eventsmanager/broker.php + classes/eventsmanager/broker.php Notify third party application when an event occurs in Phraseanet @@ -4810,7 +4815,7 @@ One of these conditions One of these conditions - web/prod/index.html.twig + web/prod/index.html.twig Only %nbEditableDocuments% records can be modified. @@ -4910,12 +4915,12 @@ Paniers Mandjes - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig web/account/account.html.twig web/lightbox/index.html.twig lightbox/IE6/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig Par %author% @@ -5153,10 +5158,10 @@ Preferences Voorkeuren - web/prod/index.html.twig web/prod/index.html.twig - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Prefix for notification emails @@ -5171,12 +5176,12 @@ Presentation de vignettes Presentatie van de thumbnails - web/prod/index.html.twig + web/prod/index.html.twig Presentation de vignettes de panier Presentatie van de thumbnails in het mandje - web/prod/index.html.twig + web/prod/index.html.twig Presets @@ -5229,7 +5234,7 @@ Publications Publicaties - web/prod/index.html.twig + web/prod/index.html.twig admin/publications/wrapper.html.twig web/admin/tree.html.twig web/common/menubar.html.twig @@ -5342,80 +5347,80 @@ Raccourcis claviers de la zone des paniers : Sneltoetsen in de mandjes zone : - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis claviers en cours de editing : Sneltoetsen tijdens het bewerken : - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis claviers en cours de preview : Sneltoetsen tijdens de voorvertoning : - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis claviers en cours de recherche : Sneltoetsen tijdens het zoeken : - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis:: ctrl-a : tout selectionner ctrl-a : alles selecteren - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Raccourcis:: ctrl-e : editer la selection ctrl-e : bewerk de selectie - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Raccourcis:: ctrl-p : imprimer la selection ctrl-p : print de selectie - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::espace : arreter/demarrer le diaporama espace : start/stop de slideshow - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche bas : scroll vertical pijl onder : verticale scroll - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche droite : page suivante pijl rechts : volgende pagina - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche gauche : en arriere pijl links : achterwaarts - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche gauche : en avant pijl rechts : voorwaarts - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche gauche : page precedente pijl links : vorige pagina - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::fleche haut : scroll vertical pijl boven : verticale scroll - web/prod/index.html.twig + web/prod/index.html.twig Raccourcis::tab/shift-tab se ballade dans les champs tab/shift-tab verspringt tussen de velden - web/prod/index.html.twig + web/prod/index.html.twig Rappel : Il vous reste %number% jours pour valider %title% de %user% @@ -5437,18 +5442,18 @@ Herinitialiseren prod/Baskets/Reorder.html.twig prod/Story/Reorder.html.twig - web/prod/index.html.twig + web/prod/index.html.twig Re-ordonner Hersorteren prod/Baskets/Reorder.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig prod/Story/Reorder.html.twig @@ -5540,7 +5545,7 @@ Rechercher dans un champ date Zoeken in een datum veld - web/prod/index.html.twig + web/prod/index.html.twig Recommendations @@ -5631,7 +5636,7 @@ Relevance Relevance - web/prod/index.html.twig + web/prod/index.html.twig Remember me @@ -6009,7 +6014,7 @@ Select a field Select a field - web/prod/index.html.twig + web/prod/index.html.twig Select a list on the left and edit it ! @@ -6044,7 +6049,7 @@ Selected base(s) Selected base(s) - web/prod/index.html.twig + web/prod/index.html.twig Selected files @@ -6321,7 +6326,7 @@ Status des documents a rechercher Status van de te zoeken documenten - web/prod/index.html.twig + web/prod/index.html.twig Status edition @@ -6612,7 +6617,7 @@ The URL you used is out of date, please login De gebruikte URL is niet meer geldig, gelieve u aan te melden - Phrasea/ControllerProvider/Lightbox.php + Phrasea/ControllerProvider/Lightbox.php The Youtube servers have received too many calls from the same caller in a short amount of time. @@ -6696,6 +6701,11 @@ De volgende fouten werden opgemerkt user/import/view.html.twig + + The provided date is null! + The provided date is null! + Controller/Prod/PushController.php + The publication has been stopped Het programma is gestopt @@ -6741,7 +6751,7 @@ Theme Thema - web/prod/index.html.twig + web/prod/index.html.twig There is no one to validate orders, please contact an administrator @@ -6834,7 +6844,7 @@ This user does not participate to the validation but is only viewer. Deze gebruiker maakt geen deel uit van de goedkeuring maar is enkel een bezoeker. - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig This user has no rights @@ -6918,7 +6928,7 @@ Tout type Alle type - web/prod/index.html.twig + web/prod/index.html.twig Toutes les publications @@ -6944,7 +6954,7 @@ Trier par Sorteren op - web/prod/index.html.twig + web/prod/index.html.twig Try to extract embedded thumbnails @@ -6969,7 +6979,7 @@ Type de documents Type van de documenten - web/prod/index.html.twig + web/prod/index.html.twig Type nombre @@ -7057,6 +7067,11 @@ Controller/Root/LoginController.php Controller/Api/OAuth2Controller.php + + Unable to save the expiration date + Unable to save the expiration date + Controller/Prod/PushController.php + Unable to send the documents Documenten kunnen niet worden verstuurd @@ -7092,7 +7107,7 @@ Une question personnelle Een persoonlijke vraag - web/prod/index.html.twig + web/prod/index.html.twig Une selection @@ -7204,7 +7219,7 @@ Use latest search settings on Production loading Use latest search settings on Production loading - web/prod/index.html.twig + web/prod/index.html.twig Use my Phraseanet account @@ -7343,11 +7358,11 @@ Validations Controles - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig web/lightbox/index.html.twig lightbox/IE6/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig Validations received @@ -7382,7 +7397,7 @@ Video Video - web/prod/index.html.twig + web/prod/index.html.twig Video Codec @@ -7418,13 +7433,13 @@ Voici vos paniers Uw mandjes - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig web/lightbox/index.html.twig Voici vos validations en cours Een controle in proces - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig web/lightbox/index.html.twig @@ -7460,7 +7475,7 @@ Vous avez envoye une demande de validation de document sur ce panier U hebt een aanvraag tot goedkeuring van documenten in dit mandje verstuurd - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig Vous avez recu des documents @@ -7579,7 +7594,7 @@ Vous pouvez quitter la plupart des fenetres survolantes via la touche echap U kunt het grootste deel van de bovenliggende vensters sluiten met de escape toets - web/prod/index.html.twig + web/prod/index.html.twig Warning ! @@ -7680,8 +7695,8 @@ YYYY/MM/DD YYYY/MM/DD - web/prod/index.html.twig - web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig Yes @@ -7851,7 +7866,7 @@ You have to give your feedback at least on one document to send a report U moet op tenminste één document feedback geven om een rapport te versturen - Phrasea/Controller/LightboxController.php + Phrasea/Controller/LightboxController.php You have to wait for an administrator approval for your access request @@ -7988,8 +8003,8 @@ a propos Over - mobile/lightbox/index.html.twig - mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig + mobile/lightbox/index.html.twig action : ajouter au panier @@ -8002,20 +8017,20 @@ action : bridge Bridge - web/prod/index.html.twig + web/prod/index.html.twig action : collection Collectie prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig action : editer Wijzigen prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig prod/preview/caption.html.twig @@ -8023,30 +8038,30 @@ action : exporter Exporteer prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig prod/results/record.html.twig prod/results/record.html.twig prod/results/record.html.twig prod/preview/tools.html.twig - web/prod/index.html.twig + web/prod/index.html.twig web/lightbox/feed.html.twig lightbox/IE6/feed.html.twig lightbox/IE6/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig action : outils Gereedschappen prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig action : print Print prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig prod/results/record.html.twig prod/results/record.html.twig @@ -8057,79 +8072,79 @@ action : publier Publiceren prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig - web/prod/index.html.twig + web/prod/index.html.twig action : push Push prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig action : status Status prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig web/prod/toolbar.html.twig action : supprimer Verwijderen - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig web/prod/toolbar.html.twig action:: nouveau panier Nieuw mandje - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig action:: nouveau reportage Nieuwe reportage - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig action::Valider Valideren - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig action::detacher Ontkoppelen - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig action::editer Aanpassen - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig action::exporter Exporteren - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig action::renommer Hernoemen - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig actual status @@ -9148,13 +9163,13 @@ basket:action:delete record form basket basket:action:delete record form basket prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig basket:action:delete record form database basket:action:delete record form database prod/WorkZone/Story.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig be notified when a document is placed in quarantine @@ -9164,12 +9179,12 @@ boutton:: selectionner aucune base Selecteer geen enkele database - web/prod/index.html.twig + web/prod/index.html.twig boutton:: selectionner toutes les bases Selecteer alle databases - web/prod/index.html.twig + web/prod/index.html.twig boutton::ajouter @@ -9339,7 +9354,7 @@ boutton::rechercher zoeken Controller/Prod/LanguageController.php - web/prod/index.html.twig + web/prod/index.html.twig boutton::refresh @@ -9441,7 +9456,7 @@ web/lightbox/feed.html.twig lightbox/IE6/feed.html.twig lightbox/IE6/validate.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig boutton::tester @@ -9474,7 +9489,7 @@ prod/actions/edit_default.html.twig prod/actions/edit_default.html.twig prod/Story/Reorder.html.twig - web/prod/index.html.twig + web/prod/index.html.twig web/thesaurus/export-text-dialog.html.twig web/thesaurus/thesaurus.html.twig web/thesaurus/import-dialog.html.twig @@ -9595,12 +9610,12 @@ charger d'avantages de notifications voordelen van meldingen laden - classes/eventsmanager/broker.php + classes/eventsmanager/broker.php choisir kiezen - web/prod/index.html.twig + web/prod/index.html.twig admin/databox/databox.html.twig admin/collection/create.html.twig @@ -9682,7 +9697,7 @@ created_on created_on - web/prod/index.html.twig + web/prod/index.html.twig dans %category% @@ -9713,7 +9728,7 @@ delete Verwijderen - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig descendant @@ -9742,7 +9757,7 @@ edit edit - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig web/account/account.html.twig web/account/account.html.twig web/account/account.html.twig @@ -9962,7 +9977,7 @@ help::help-search: relaunch search without filter help::help-search: relaunch search without filter prod/results/help.html.twig - web/prod/index.html.twig + web/prod/index.html.twig help::help-section-bullet: check-spelling @@ -10039,47 +10054,47 @@ index::advance_search: disable-facet index::advance_search: disable-facet - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet index::advance_search: facet - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet-order index::advance_search: facet-order - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet-tech-order index::advance_search: facet-tech-order - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: facet-values-order index::advance_search: facet-values-order - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: hidden-facet-values-order index::advance_search: hidden-facet-values-order - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: order-by-hits index::advance_search: order-by-hits - web/prod/index.html.twig + web/prod/index.html.twig index::advance_search: order-by-hits-asc index::advance_search: order-by-hits-asc - web/prod/index.html.twig + web/prod/index.html.twig index:advanced-preferences:: use truncation index:advanced-preferences:: use truncation - web/prod/index.html.twig + web/prod/index.html.twig invite:: Redirection vers la zone d'authentification, cliquez sur OK pour continuer ou annulez @@ -10124,14 +10139,14 @@ lightbox::list lightbox::list - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig lightbox::recaptitulatif Beknopt - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig web/lightbox/agreement_box.html.twig - web/lightbox/validate.html.twig + web/lightbox/validate.html.twig lightbox::see_less_basket @@ -10143,6 +10158,48 @@ lightbox::see_more_basket web/lightbox/index.html.twig + + lightbox:feedback:sendreport:warnwindows:cancel + lightbox:feedback:sendreport:warnwindows:cancel + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:message + lightbox:feedback:sendreport:warnwindows:message + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:record_approved + lightbox:feedback:sendreport:warnwindows:record_approved + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:record_rejected + lightbox:feedback:sendreport:warnwindows:record_rejected + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:record_unexpressed + lightbox:feedback:sendreport:warnwindows:record_unexpressed + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:title + lightbox:feedback:sendreport:warnwindows:title + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + + + lightbox:feedback:sendreport:warnwindows:validate + lightbox:feedback:sendreport:warnwindows:validate + mobile/lightbox/validate.html.twig + web/lightbox/validate.html.twig + login:: Changer mon adresse email Verander mijn email adres @@ -10616,17 +10673,17 @@ panier:: ordre Validation ascendante Oplopende validatie volgorde - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig panier:: ordre Validation descendante Aflopende validatie volgorde - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig panier:: ordre du panier Volgordre van het mandje - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig panier:: renommer le panier @@ -10651,7 +10708,7 @@ paniers:: panier recu de %pusher% Mandje ontvangen van %pusher% - prod/WorkZone/Macros.html.twig + prod/WorkZone/Macros.html.twig paniers::Vous etes sur le point de supprimer ce panier. Cette action est irreversible. Souhaitez-vous continuer ? @@ -10712,7 +10769,7 @@ phraseanet:: Preferences phraseanet:: Preferences - web/prod/index.html.twig + web/prod/index.html.twig phraseanet:: Un email vient de vous etre envoye @@ -10861,17 +10918,17 @@ phraseanet:: tri par date Op datum sorteren - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig web/thesaurus/export-topics-dialog.html.twig phraseanet:: tri par nom Op naam sorteren - web/prod/index.html.twig - web/prod/index.html.twig web/prod/index.html.twig + web/prod/index.html.twig + web/prod/index.html.twig phraseanet:: user @@ -11026,42 +11083,42 @@ phraseanet::temps:: a l'instant op dit moment - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: hier gisteren - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: il y a %quantity% heures phraseanet::temps:: il y a %quantity% heures - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: il y a %quantity% minutes phraseanet::temps:: il y a %quantity% minutes - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: il y a une heure een uur geleden - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::temps:: il y a une minute één minuut geleden - lib/classes/phraseadate.php + lib/classes/phraseadate.php phraseanet::time:: a a - web/prod/index.html.twig + web/prod/index.html.twig phraseanet::time:: de de - web/prod/index.html.twig + web/prod/index.html.twig phraseanet::type:: audios @@ -11072,7 +11129,7 @@ phraseanet::type:: documents Documenten web/prod/toolbar.html.twig - web/prod/index.html.twig + web/prod/index.html.twig phraseanet::type:: images @@ -11082,7 +11139,7 @@ phraseanet::type:: reportages Reportages - web/prod/index.html.twig + web/prod/index.html.twig phraseanet::type:: videos @@ -11107,17 +11164,17 @@ preview:: Description Beschrijving - web/prod/index.html.twig + web/prod/index.html.twig preview:: Historique Historie - web/prod/index.html.twig + web/prod/index.html.twig preview:: Popularite Populariteit - web/prod/index.html.twig + web/prod/index.html.twig preview:: arreter le diaporama @@ -11336,12 +11393,12 @@ prod::advancesearch:tooltips:datefield_restriction_explanation prod::advancesearch:tooltips:datefield_restriction_explanation - web/prod/index.html.twig + web/prod/index.html.twig prod::advancesearch:tooltips:field_restriction_explanation prod::advancesearch:tooltips:field_restriction_explanation - web/prod/index.html.twig + web/prod/index.html.twig prod::collection deplacer egalement les documents rattaches a ce(s) regroupement(s) @@ -11684,10 +11741,36 @@ prod:push: delete selection prod/actions/Push.html.twig + + prod:workzone:basket:creation-date + prod:workzone:basket:creation-date + prod/WorkZone/Basket.html.twig + prod/Tooltip/Basket.html.twig + + + prod:workzone:basket:updated-message + prod:workzone:basket:updated-message + prod/WorkZone/Basket.html.twig + prod:workzone:facetstab:search_and_facets_sort_options prod:workzone:facetstab:search_and_facets_sort_options - web/prod/index.html.twig + web/prod/index.html.twig + + + prod:workzone:facetstab:tooltips:facet_and_filter + prod:workzone:facetstab:tooltips:facet_and_filter + web/prod/index.html.twig + + + prod:workzone:facetstab:tooltips:facet_except_filter + prod:workzone:facetstab:tooltips:facet_except_filter + web/prod/index.html.twig + + + prod:workzone:facetstab:tooltips:remove_facet_filter + prod:workzone:facetstab:tooltips:remove_facet_filter + web/prod/index.html.twig public @@ -11763,19 +11846,19 @@ raccourci :: a propos des raccourcis claviers Over toetsenbord sneltoetsen - web/prod/index.html.twig + web/prod/index.html.twig raccourcis :: ne plus montrer cette aide Deze help niet meer tonen - web/prod/index.html.twig + web/prod/index.html.twig rafraichir vernieuwen prod/WorkZone/Story.html.twig prod/WorkZone/Macros.html.twig - prod/WorkZone/Basket.html.twig + prod/WorkZone/Basket.html.twig prod/results/feeds.html.twig prod/results/feeds.html.twig @@ -11837,17 +11920,17 @@ reponses:: images par pages : Beelden per pagina : - web/prod/index.html.twig + web/prod/index.html.twig reponses:: mode liste Lijst mode - web/prod/index.html.twig + web/prod/index.html.twig reponses:: mode vignettes Thumbnail mode - web/prod/index.html.twig + web/prod/index.html.twig reponses:: partager @@ -11869,7 +11952,7 @@ reponses:: taille des images : Grootte van de beelden : - web/prod/index.html.twig + web/prod/index.html.twig reponses::document sans titre @@ -13253,7 +13336,7 @@ updated_on updated_on - web/prod/index.html.twig + web/prod/index.html.twig upload:: Destination (collection) : @@ -13312,8 +13395,8 @@ validation::envoyer mon rapport stuur mijn rapport - mobile/lightbox/validate.html.twig - mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig + mobile/lightbox/validate.html.twig web/lightbox/basket_options.html.twig web/lightbox/basket_options.html.twig @@ -13343,6 +13426,138 @@ video tool actions/Tools/videoEditor.html.twig + + workzone:datepicker:april + workzone:datepicker:april + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:august + workzone:datepicker:august + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:closeText + workzone:datepicker:closeText + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:currentText + workzone:datepicker:currentText + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:december + workzone:datepicker:december + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:february + workzone:datepicker:february + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:friday + workzone:datepicker:friday + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:january + workzone:datepicker:january + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:july + workzone:datepicker:july + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:june + workzone:datepicker:june + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:march + workzone:datepicker:march + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:may + workzone:datepicker:may + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:monday + workzone:datepicker:monday + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:nextText + workzone:datepicker:nextText + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:november + workzone:datepicker:november + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:october + workzone:datepicker:october + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:prevText + workzone:datepicker:prevText + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:saturday + workzone:datepicker:saturday + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:september + workzone:datepicker:september + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:sunday + workzone:datepicker:sunday + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:thursday + workzone:datepicker:thursday + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:tuesday + workzone:datepicker:tuesday + prod/WorkZone/Basket.html.twig + + + workzone:datepicker:wednesday + workzone:datepicker:wednesday + prod/WorkZone/Basket.html.twig + + + workzone:feedback:expiration-closed + workzone:feedback:expiration-closed + prod/WorkZone/Basket.html.twig + prod/Tooltip/Basket.html.twig + + + workzone:feedback:expiration-open + workzone:feedback:expiration-open + prod/WorkZone/Basket.html.twig + prod/Tooltip/Basket.html.twig + + + workzone:feedback:update + workzone:feedback:update + prod/WorkZone/Basket.html.twig + yes Ja diff --git a/resources/locales/validators.de.xlf b/resources/locales/validators.de.xlf index a7c6c7ab7c..4797cbcafd 100644 --- a/resources/locales/validators.de.xlf +++ b/resources/locales/validators.de.xlf @@ -1,6 +1,6 @@ - +
The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message. diff --git a/resources/locales/validators.en.xlf b/resources/locales/validators.en.xlf index b514c86069..398448e7d5 100644 --- a/resources/locales/validators.en.xlf +++ b/resources/locales/validators.en.xlf @@ -1,6 +1,6 @@ - +
The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message. diff --git a/resources/locales/validators.fr.xlf b/resources/locales/validators.fr.xlf index 52f5b99997..8d7c716ebd 100644 --- a/resources/locales/validators.fr.xlf +++ b/resources/locales/validators.fr.xlf @@ -1,6 +1,6 @@ - +
The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message. diff --git a/resources/locales/validators.nl.xlf b/resources/locales/validators.nl.xlf index 218bcf559a..0f8bf37ddc 100644 --- a/resources/locales/validators.nl.xlf +++ b/resources/locales/validators.nl.xlf @@ -1,6 +1,6 @@ - +
The source node in most cases contains the sample message as written by the developer. If it looks like a dot-delimitted string such as "form.label.firstname", then the developer has not provided a default message. diff --git a/resources/proxies/__CG__AlchemyPhraseaModelEntitiesBasket.php b/resources/proxies/__CG__AlchemyPhraseaModelEntitiesBasket.php index aedc9247ff..318a58e2cf 100644 --- a/resources/proxies/__CG__AlchemyPhraseaModelEntitiesBasket.php +++ b/resources/proxies/__CG__AlchemyPhraseaModelEntitiesBasket.php @@ -474,6 +474,17 @@ class Basket extends \Alchemy\Phrasea\Model\Entities\Basket implements \Doctrine return parent::hasRecord($app, $record); } + /** + * {@inheritDoc} + */ + public function getElementByRecord(\Alchemy\Phrasea\Application $app, \record_adapter $record) + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getElementByRecord', [$app, $record]); + + return parent::getElementByRecord($app, $record); + } + /** * {@inheritDoc} */ diff --git a/resources/proxies/__CG__AlchemyPhraseaModelEntitiesLazaretFile.php b/resources/proxies/__CG__AlchemyPhraseaModelEntitiesLazaretFile.php index dab6e47808..57cb4cd042 100644 --- a/resources/proxies/__CG__AlchemyPhraseaModelEntitiesLazaretFile.php +++ b/resources/proxies/__CG__AlchemyPhraseaModelEntitiesLazaretFile.php @@ -518,4 +518,15 @@ class LazaretFile extends \Alchemy\Phrasea\Model\Entities\LazaretFile implements return parent::getRecordsToSubstitute($app, $includeReason); } + /** + * {@inheritDoc} + */ + public function getStatus(\Alchemy\Phrasea\Application $app) + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getStatus', [$app]); + + return parent::getStatus($app); + } + } diff --git a/resources/www/lightbox/styles/main-mobile.scss b/resources/www/lightbox/styles/main-mobile.scss index e9ff61aa43..bc34f81762 100644 --- a/resources/www/lightbox/styles/main-mobile.scss +++ b/resources/www/lightbox/styles/main-mobile.scss @@ -543,6 +543,23 @@ hr { padding: 0 20px; } +.modal-footer .btn-primary { + color: #fff!important; + background-color: #007bff!important; + border-color: #007bff!important; +} +.modal-header .close { + display: inline-block; + float: right; + width: 25px; + opacity: 1; + background: #e1e1e1; +} + +.hide { + display: none; +} + button.confirm_report { background: #38c !important; color: #fff !important; diff --git a/templates/mobile/common/menubar.html.twig b/templates/mobile/common/menubar.html.twig index d8190dd5fa..b6e0101500 100644 --- a/templates/mobile/common/menubar.html.twig +++ b/templates/mobile/common/menubar.html.twig @@ -13,5 +13,7 @@ {% endif %} + + {% endif %} diff --git a/templates/mobile/lightbox/index.html.twig b/templates/mobile/lightbox/index.html.twig index 67f698664f..6bb64d68db 100644 --- a/templates/mobile/lightbox/index.html.twig +++ b/templates/mobile/lightbox/index.html.twig @@ -4,10 +4,12 @@ {# #} + {% endblock %} {% block stylesheet %} + {% endblock %} {% block icon %} @@ -62,7 +64,6 @@ -
{{ 'Back' | trans }} @@ -99,6 +100,7 @@ {{ 'Validations' | trans }} {{_self.valid_baskets_length(baskets_collection)}}

+ @@ -168,7 +170,6 @@
- + {% endblock %} {% block stylesheet %} + {% endblock %} {% block content %} @@ -41,7 +44,40 @@ {% set basket_length = basket.getElements().count() %} {% trans with {'%basket_length%' : basket_length} %}%basket_length% documents{% endtrans %}

+ + {% if basket.getValidation() %} + - {% endblock %} diff --git a/templates/web/lightbox/validate.html.twig b/templates/web/lightbox/validate.html.twig index fbb1561817..4f3caeedab 100644 --- a/templates/web/lightbox/validate.html.twig +++ b/templates/web/lightbox/validate.html.twig @@ -116,6 +116,39 @@ {% endif %} + + +
diff --git a/templates/web/prod/Tooltip/Basket.html.twig b/templates/web/prod/Tooltip/Basket.html.twig index 953846cae0..49eeec04ba 100644 --- a/templates/web/prod/Tooltip/Basket.html.twig +++ b/templates/web/prod/Tooltip/Basket.html.twig @@ -8,14 +8,27 @@ {% block content %}
+ + {% if basket.getValidation() %} + {% set dateExpired = app['date-formatter'].getPrettyString(basket.getValidation().getExpires()) %} + {% if date(dateExpired) < date() %} + {{ 'workzone:feedback:expiration-closed' | trans }} : + {% else %} + {{ 'workzone:feedback:expiration-open' | trans }} : + {% endif %} {{ dateExpired }} + {% endif %} +
{{ basket.getDescription()|nl2br }}
-
+
{% set nb_records = basket.getElements()|length %} {% set date = app['date-formatter'].getPrettyString(basket.getUpdated()) %} - {% trans with {'%nb_records%' : nb_records} %}%nb_records% records{% endtrans %} - - {{ date }} + +
+ {% trans with {'%nb_records%' : nb_records} %}%nb_records% records{% endtrans %} + - {{ 'prod:workzone:basket:creation-date' | trans }} : {{ date }} +

{% for element in basket.getElements() %} diff --git a/templates/web/prod/WorkZone/Basket.html.twig b/templates/web/prod/WorkZone/Basket.html.twig index c3959230e7..9f9995d634 100644 --- a/templates/web/prod/WorkZone/Basket.html.twig +++ b/templates/web/prod/WorkZone/Basket.html.twig @@ -1,3 +1,4 @@ +
@@ -88,8 +89,36 @@ {% endfor %} {% endif %}
+ {% if basket.getValidation() %} +
-
{% set basket_length = basket.getElements()|length %}
{{ 'Certaines donnees du panier ont change' | trans }} {{ 'rafraichir' | trans }}
{% if basket_length == 0 %} @@ -102,10 +131,60 @@ {% if basket.getValidation() %} {{ Macros.display_validation(app, basket, ordre) }} + {% else %} {{ Macros.display_basket(app, basket) }} {% endif %}
+ + + diff --git a/templates/web/prod/WorkZone/Macros.html.twig b/templates/web/prod/WorkZone/Macros.html.twig index b3298373c3..260e6e0ffb 100644 --- a/templates/web/prod/WorkZone/Macros.html.twig +++ b/templates/web/prod/WorkZone/Macros.html.twig @@ -37,10 +37,11 @@ {% set content = WorkZone.getContent(srt) %}
{% for basket in content.get(constant('\\Alchemy\\Phrasea\\Helper\\WorkZone::VALIDATIONS')) %} +
@@ -113,6 +115,7 @@
{% for basket in content.get(constant('\\Alchemy\\Phrasea\\Helper\\WorkZone::BASKETS')) %} +
+ + +
@@ -733,11 +736,15 @@
-

{{ 'Language' | trans }} : {{ app['locale'] }}

+

{{ 'Language selection' | trans }}

diff --git a/tests/Alchemy/Tests/Phrasea/Command/Plugin/AddPluginTest.php b/tests/Alchemy/Tests/Phrasea/Command/Plugin/AddPluginTest.php index 523b4c00da..506c4f104a 100644 --- a/tests/Alchemy/Tests/Phrasea/Command/Plugin/AddPluginTest.php +++ b/tests/Alchemy/Tests/Phrasea/Command/Plugin/AddPluginTest.php @@ -69,7 +69,7 @@ class AddPluginTest extends PluginCommandTestCase // the plugin is checked when updating config files self::$DI['cli']['plugins.plugins-validator']->expects($this->at(0)) ->method('validatePlugin') - ->with('tempdir') + ->with('TestPlugin') ->will($this->returnValue($manifest)); self::$DI['cli']['plugins.plugins-validator']->expects($this->at(1)) diff --git a/tests/Alchemy/Tests/Phrasea/Controller/Prod/ExportTest.php b/tests/Alchemy/Tests/Phrasea/Controller/Prod/ExportTest.php index 886df13e81..e49a967d0c 100644 --- a/tests/Alchemy/Tests/Phrasea/Controller/Prod/ExportTest.php +++ b/tests/Alchemy/Tests/Phrasea/Controller/Prod/ExportTest.php @@ -169,7 +169,8 @@ class ExportTest extends \PhraseanetAuthenticatedWebTestCase */ public function testExportMail() { - $this->mockNotificationDeliverer('Alchemy\Phrasea\Notification\Mail\MailRecordsExport'); + // deliver method removed in the listener +// $this->mockNotificationDeliverer('Alchemy\Phrasea\Notification\Mail\MailRecordsExport'); $this->getClient()->request('POST', '/prod/export/mail/', [ 'lst' => $this->getRecord1()->getId(), diff --git a/yarn.lock b/yarn.lock index 8eae8692f5..319e85d277 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5305,10 +5305,14 @@ jquery-simplecolorpicker@^0.3.1: resolved "https://registry.yarnpkg.com/jquery-simplecolorpicker/-/jquery-simplecolorpicker-0.3.1.tgz#4f6befd380ab05470f585d5482e5180556e460eb" integrity sha1-T2vv04CrBUcPWF1UguUYBVbkYOs= -"jquery-treeview@git+https://github.com/alchemy-fr/jquery-treeview.git", "jquery-treeview@git+https://github.com/alchemy-fr/jquery-treeview.git#1e9e5a49d2875b878801e904cd08c2d25e85af1e": +"jquery-treeview@git+https://github.com/alchemy-fr/jquery-treeview.git#1e9e5a49d2875b878801e904cd08c2d25e85af1e": + version "1.4.2" + resolved "git+https://github.com/alchemy-fr/jquery-treeview.git#1e9e5a49d2875b878801e904cd08c2d25e85af1e" + +"jquery-treeview@https://github.com/alchemy-fr/jquery-treeview.git": version "1.4.2" uid "1e9e5a49d2875b878801e904cd08c2d25e85af1e" - resolved "git+https://github.com/alchemy-fr/jquery-treeview.git#1e9e5a49d2875b878801e904cd08c2d25e85af1e" + resolved "https://github.com/alchemy-fr/jquery-treeview.git#1e9e5a49d2875b878801e904cd08c2d25e85af1e" jquery-ui-datepicker-with-i18n@^1.10.4: version "1.10.4" @@ -7577,10 +7581,10 @@ phraseanet-common@^0.4.5-d: js-cookie "^2.1.0" pym.js "^1.3.1" -phraseanet-production-client@0.34.139-d: - version "0.34.139-d" - resolved "https://registry.yarnpkg.com/phraseanet-production-client/-/phraseanet-production-client-0.34.139-d.tgz#27edf283275c427ba226ff8b6c9461511dd6c827" - integrity sha512-8lOeLbUpa2qBi08d4Tr3FbtKf4TmSvTWhPtwCm7bZxls14TMXnYl7JRFZoYEMGEB1n1tbYozrl/Oz4qV7Pn6Sg== +phraseanet-production-client@0.34.150-d: + version "0.34.150-d" + resolved "https://registry.yarnpkg.com/phraseanet-production-client/-/phraseanet-production-client-0.34.150-d.tgz#625ea96c045719b405fe9b707b632b1290aca285" + integrity sha512-JrtPq6dCTCBxX6kGViXZj4Sc26PMFIaifT3PVD1WHLUCNd/U3nnHzpzKUgVC0ibqOj4aVwA8JW/oMilGEe3cmg== dependencies: "@mapbox/mapbox-gl-language" "^0.9.2" "@turf/turf" "^5.1.6"