17 Commits

Author SHA1 Message Date
Paul
5d691ef390 upgrade gitignore 2021-06-28 15:43:12 +02:00
Paul
c448ef0d25 dataflow-bundle 3.0 isn't working 2021-06-28 15:41:55 +02:00
jbcr
1453955f16 remove twig extension for BC 2021-06-25 10:10:07 +02:00
jbcr
9653bb08ba remove BC Compatibility 2021-06-25 09:55:46 +02:00
jbcr
f2a4c43b22 add change log 2021-06-25 09:35:03 +02:00
jbcr
0d2129cb61 change requirements 2021-06-25 09:32:40 +02:00
Jean-Baptiste Nahan
a18e493671 some eZ Platform 3 change (#32)
* bump eZ required version

* add controller tag

* enable autowire and autoconfigure on controller

* fix twig funtion return test

* use contracts dependency for translation interface instead of Component

* add backward compatibility for TranslatorInterface

* fix namespace

* fix CS

* fix JobController and PR request
2021-06-25 09:08:42 +02:00
jbcr
9a9807cbd0 refactor EzTabRenderExtension 2021-06-25 09:05:42 +02:00
jbcr
1437ac9eb2 add BC layer 2021-06-25 09:03:53 +02:00
jbcr
af546d1438 update admin to admin ui 2.0beta3 2021-06-25 09:02:49 +02:00
jbcr
1999641d0d update require to platform 3 2021-06-25 09:01:33 +02:00
Paul
30b5b07331 changes files to switch ibexa 3.3 2021-06-25 01:30:05 +02:00
Jean-Baptiste Nahan
b999a1a856 some eZ Platform 3 change (#32)
* bump eZ required version

* add controller tag

* enable autowire and autoconfigure on controller

* fix twig funtion return test

* use contracts dependency for translation interface instead of Component

* add backward compatibility for TranslatorInterface

* fix namespace

* fix CS

* fix JobController and PR request
2020-09-16 14:23:09 +02:00
jbcr
f16e01b32c refactor EzTabRenderExtension 2019-11-22 11:33:45 +01:00
jbcr
0173012d2d add BC layer 2019-11-22 11:32:30 +01:00
jbcr
55e76d6f27 update admin to admin ui 2.0beta3 2019-11-22 10:49:07 +01:00
jbcr
7e858a31a6 update require to platform 3 2019-11-22 09:11:28 +01:00
310 changed files with 133828 additions and 3661 deletions

81
.env Normal file
View File

@@ -0,0 +1,81 @@
# In all environments, the following files are loaded if they exist,
# the latter taking precedence over the former:
#
# * .env contains default values for the environment variables needed by the app
# * .env.local uncommitted file with local overrides
# * .env.$APP_ENV committed environment-specific defaults
# * .env.$APP_ENV.local uncommitted environment-specific overrides
#
# Real environment variables win over .env files.
#
# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES.
#
# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2).
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
###> symfony/framework-bundle ###
APP_ENV=dev
APP_SECRET=fc5e7dfcbb6b5123dcfed20bd8632b50
###< symfony/framework-bundle ###
###> symfony/mailer ###
# MAILER_DSN=smtp://localhost
###< symfony/mailer ###
###> doctrine/doctrine-bundle ###
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
#
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
DATABASE_URL="mysql://root:nopassword@127.0.0.1:3306/ibexa?serverVersion=mariadb-10.3.0"
# DATABASE_URL="postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=13&charset=utf8"
###< doctrine/doctrine-bundle ###
###> symfony/swiftmailer-bundle ###
# For Gmail as a transport, use: "gmail://username:password@localhost"
# For a generic SMTP server, use: "smtp://localhost:25?encryption=&auth_mode="
# Delivery is disabled by default via "null://localhost"
MAILER_URL=null://localhost
###< symfony/swiftmailer-bundle ###
###> lexik/jwt-authentication-bundle ###
JWT_SECRET_KEY=%kernel.project_dir%/config/jwt/private.pem
JWT_PUBLIC_KEY=%kernel.project_dir%/config/jwt/public.pem
JWT_PASSPHRASE=abe8b08aa4325933a5a7edd7c93cd12c
###< lexik/jwt-authentication-bundle ###
###> nelmio/cors-bundle ###
CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$'
###< nelmio/cors-bundle ###
###> symfony/lock ###
# Choose one of the stores below
# postgresql+advisory://db_user:db_password@localhost/db_name
LOCK_DSN=semaphore
###< symfony/lock ###
###> ibexa/oss ###
SEARCH_ENGINE=legacy
# Uncomment following line if you want to change the purge type.
# By default it will use `local` purge when running locally
# and `varnish` for Platform.sh installations.
# HTTPCACHE_PURGE_TYPE=local
HTTPCACHE_DEFAULT_TTL=86400
HTTPCACHE_PURGE_SERVER=http://localhost:80
HTTPCACHE_VARNISH_INVALIDATE_TOKEN=
CACHE_POOL=cache.tagaware.filesystem
# When using redis or memcached adapters, you can configure it using DSN:
# - https://symfony.com/doc/4.4/components/cache/adapters/redis_adapter.html#configure-the-connection
# - https://symfony.com/doc/4.4/components/cache/adapters/memcached_adapter.html#configure-the-connection
CACHE_DSN=localhost
CACHE_NAMESPACE=ezp
DATABASE_CHARSET=utf8mb4
DATABASE_COLLATION=utf8mb4_unicode_520_ci
# Needed by Doctrine Bundle / ORM to avoid it opening connection during situations where there is no service yet.
# See: https://symfony.com/doc/current/reference/configuration/doctrine.html#doctrine-dbal-configuration
DATABASE_VERSION=mariadb-10.3.0
SESSION_HANDLER_ID=session.handler.native_file
SESSION_SAVE_PATH=%kernel.project_dir%/var/sessions/%kernel.environment%
SOLR_DSN=http://localhost:8983/solr
SOLR_CORE=collection1
###< ibexa/oss ###

6
.env.test Normal file
View File

@@ -0,0 +1,6 @@
# define your env variables for the test env here
KERNEL_CLASS='App\Kernel'
APP_SECRET='$ecretf0rt3st'
SYMFONY_DEPRECATIONS_HELPER=999999
PANTHER_APP_ENV=panther
PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots

15
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,15 @@
| Question | Answer
| ---------------------------------------- | ------------------
| **JIRA issue** | EZP-XXXXX
| **Type** | feature/bug/improvement
| **Target Ibexa version** | `v3.x` - please update `x` accordingly
| **BC breaks** | yes/no
| **Doc needed** | yes/no
<!-- Replace this comment with Pull Request description -->
#### Checklist:
- [ ] Provided PR description.
- [ ] Tested the solution manually.
- [ ] Checked that target branch is set correctly.
- [ ] Asked for a review (ping `@ibexa/engineering`).

136
.github/workflows/release_tag.yaml vendored Normal file
View File

@@ -0,0 +1,136 @@
name: Create Release for tag
on:
push:
tags:
- 'v*'
- '!v*-alpha*'
jobs:
provide_changed_packages:
# see json juggling: https://docs.github.com/en/free-pro-team@latest/actions/reference/context-and-expression-syntax-for-github-actions#example-6
# see https://stackoverflow.com/a/62953566/1348344
runs-on: ubuntu-latest
steps:
- name: Set Environment
run: |
echo "BUILD_TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
- uses: actions/checkout@v2
# load current composer.lock
- id: currentLock
name: Gather latest package information
run: |
OUT=$(jq --slurp '[.[].packages[] | select(.name | contains("ezsystems") or contains("ibexa")) | [.name, .version] | { name: (.[0]), version: .[1] }]' composer.lock)
echo "::set-output name=lock::$( echo "$OUT" | sed ':a;N;$!ba;s/\n/%0A/g' )"
- name: Get previous release tag based on type
id: prevrelease
uses: ibexa/version-logic-action@master
with:
currentTag: ${{ env.BUILD_TAG }}
# checkout previous tag
- uses: actions/checkout@v2
with:
ref: ${{ steps.prevrelease.outputs.previousTag }}
# load previous composer.lock
- id: previousLock
name: Gather previous package information
run: |
OUT=$(jq --slurp '[.[].packages[] | select(.name | contains("ezsystems") or contains("ibexa")) | [.name, .version] | { name: (.[0]), version: .[1] }]' composer.lock)
echo "::set-output name=lock::$( echo "$OUT" | sed ':a;N;$!ba;s/\n/%0A/g' )"
# do some magic comparing those outputs
- id: output_data
name: Do comparison and output JSON with changes
run: |
FILE1=$(mktemp)
FILE2=$(mktemp)
cat > $FILE1 <<'EOF'
${{ steps.previousLock.outputs.lock }}
EOF
cat > $FILE2 <<'EOF'
${{ steps.currentLock.outputs.lock }}
EOF
OUT=$(jq -s 'flatten | group_by(.name)' $FILE1 $FILE2 | jq -s '[ .[][] | {name: (.[0].name), versions: [ .[0].version, .[1].version ] | unique} | select(.versions | length > 1) ]')
echo "::set-output name=matrix::$( echo "$OUT" | sed ':a;N;$!ba;s/\n/%0A/g' )"
# this step is needed, so the output gets to the next defined job
outputs:
matrix: ${{ steps.output_data.outputs.matrix }}
get_package_changelogs:
needs: provide_changed_packages
runs-on: ubuntu-latest
steps:
- name: Set Environment
run: |
echo "BUILD_TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
- name: Get previous release tag based on type
id: prevrelease
uses: ibexa/version-logic-action@master
with:
currentTag: ${{ env.BUILD_TAG }}
- name: Checkout Generator
uses: actions/checkout@v2
with:
repository: ibexa/changelog-generator-action
ref: v2
- name: Setup Python environment
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: Install pygithub & jira
run: |
pip install pygithub jira
- name: Run generator in a loop
id: generator
env:
INPUT_GITHUB_TOKEN: ${{ secrets.TRAVIS_GITHUB_TOKEN }}
INPUT_JIRA_TOKEN: ${{ secrets.JIRA_TOKEN }}
run: |
cat > input.json <<'EOF'
${{ needs.provide_changed_packages.outputs.matrix }}
EOF
export INPUT_BARE=True
echo "${{ github.repository }} ${{ env.BUILD_TAG }} change log" >> generator_output
echo "" >> generator_output
echo "Changes since ${{ steps.prevrelease.outputs.previousTag }}" >> generator_output
echo "" >> generator_output
jq -c '.[]' input.json | while read i; do
export GITHUB_REPOSITORY=$(jq -r '.name' <<< "$i")
export INPUT_PREVIOUSTAG=$(jq -r '.versions[0]' <<< "$i")
export INPUT_CURRENTTAG=$(jq -r '.versions[1]' <<< "$i")
echo -n "## " >> generator_output
python main.py >> generator_output
echo '' >> generator_output
done
echo "::set-output name=output::$( cat generator_output | sed ':a;N;$!ba;s/\n/%0A/g' )"
- name: Create Release
id: create_release
uses: zendesk/action-create-release@v1
with:
tag_name: ${{ env.BUILD_TAG }}
body: |
${{ steps.generator.outputs.output }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Archive markdown
uses: actions/upload-artifact@v2
with:
name: changelogs
path: generator_output

43
.gitignore vendored
View File

@@ -1,5 +1,40 @@
vendor
composer.lock
###> symfony/framework-bundle ###
.idea/
/.env.local
/.env.local.php
/.env.*.local
/config/secrets/prod/prod.decrypt.private.php
/public/build/
/public/bundles/
/var/
/vendor/
/node_modules/
###< symfony/framework-bundle ###
###> symfony/phpunit-bridge ###
.phpunit
.phpunit.result.cache
.php_cs.cache
.php_cs
/phpunit.xml
###< symfony/phpunit-bridge ###
###> phpunit/phpunit ###
/phpunit.xml
.phpunit.result.cache
###< phpunit/phpunit ###
###> symfony/webpack-encore-bundle ###
/node_modules/
/public/build/
npm-debug.log
yarn-error.log
###< symfony/webpack-encore-bundle ###
###> lexik/jwt-authentication-bundle ###
/config/jwt/*.pem
###< lexik/jwt-authentication-bundle ###
###> liip/imagine-bundle ###
/public/media/cache/
###< liip/imagine-bundle ###

0
.idea/.gitignore generated vendored Normal file
View File

231
.idea/ezdataflow-bundle.iml generated Normal file
View File

@@ -0,0 +1,231 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" packagePrefix="App\Tests\" />
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" packagePrefix="App\" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/security-core" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/monolog-bridge" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/http-foundation" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/console" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/translation" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/deprecation-contracts" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/password-hasher" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/twig-bridge" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/dependency-injection" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-mbstring" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/security-csrf" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/string" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/translation-contracts" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php73" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/process" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/http-client-contracts" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/intl" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/cache" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/finder" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/lock" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/http-kernel" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/expression-language" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/property-access" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/security-http" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/framework-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-iconv" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/security-guard" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/routing" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php81" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/twig-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php72" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/var-dumper" />
<excludeFolder url="file://$MODULE_DIR$/vendor/theseer/tokenizer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/options-resolver" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/deprecations" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/common" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/dbal" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/persistence" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/sql-formatter" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/lexer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/event-manager" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/annotations" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/collections" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/inflector" />
<excludeFolder url="file://$MODULE_DIR$/vendor/php-http/client-common" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ocramius/proxy-manager" />
<excludeFolder url="file://$MODULE_DIR$/vendor/lcobucci/clock" />
<excludeFolder url="file://$MODULE_DIR$/vendor/lcobucci/jwt" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/cache" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/orm" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/doctrine-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/instantiator" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/ezplatform-kernel" />
<excludeFolder url="file://$MODULE_DIR$/vendor/php-http/message-factory" />
<excludeFolder url="file://$MODULE_DIR$/vendor/php-http/message" />
<excludeFolder url="file://$MODULE_DIR$/vendor/php-http/httplug" />
<excludeFolder url="file://$MODULE_DIR$/vendor/php-http/guzzle6-adapter" />
<excludeFolder url="file://$MODULE_DIR$/vendor/php-http/promise" />
<excludeFolder url="file://$MODULE_DIR$/vendor/php-http/curl-client" />
<excludeFolder url="file://$MODULE_DIR$/vendor/php-http/discovery" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/ezplatform-rest" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/ezplatform-admin-ui" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/ezplatform-http-cache" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/ezplatform-richtext" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/ezplatform-content-forms" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/doctrine-dbal-schema" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/ezplatform-design-engine" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/ezplatform-user" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/resource-operations" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/type" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/recursion-context" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/comparator" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ralouphie/getallheaders" />
<excludeFolder url="file://$MODULE_DIR$/vendor/hautelook/templated-uri-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/hautelook/templated-uri-router" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/ezplatform-search" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/environment" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/global-state" />
<excludeFolder url="file://$MODULE_DIR$/vendor/composer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/exporter" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/diff" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/version" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/code-unit-reverse-lookup" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/object-enumerator" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/object-reflector" />
<excludeFolder url="file://$MODULE_DIR$/vendor/willdurand/jsonp-callback-validator" />
<excludeFolder url="file://$MODULE_DIR$/vendor/willdurand/js-translation-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/webimpress/safe-writer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/pagerfanta/pagerfanta" />
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/guzzle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/promises" />
<excludeFolder url="file://$MODULE_DIR$/vendor/guzzlehttp/psr7" />
<excludeFolder url="file://$MODULE_DIR$/vendor/webmozart/assert" />
<excludeFolder url="file://$MODULE_DIR$/vendor/friendsofsymfony/http-cache" />
<excludeFolder url="file://$MODULE_DIR$/vendor/friendsofsymfony/jsrouting-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/code-rhapsodie/dataflow-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-docblock" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/type-resolver" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpdocumentor/reflection-common" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony-cmf/routing" />
<excludeFolder url="file://$MODULE_DIR$/vendor/swiftmailer/swiftmailer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/friendsofsymfony/http-cache-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-factory" />
<excludeFolder url="file://$MODULE_DIR$/vendor/jms/translation-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/liip/imagine-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/clue/stream-filter" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/cache" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/log" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-message" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/http-client" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/container" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/event-dispatcher" />
<excludeFolder url="file://$MODULE_DIR$/vendor/oneup/flysystem-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/nikic/php-parser" />
<excludeFolder url="file://$MODULE_DIR$/vendor/mck89/peast" />
<excludeFolder url="file://$MODULE_DIR$/vendor/lexik/jwt-authentication-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/twig/intl-extra" />
<excludeFolder url="file://$MODULE_DIR$/vendor/twig/extra-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/twig/string-extra" />
<excludeFolder url="file://$MODULE_DIR$/vendor/twig/twig" />
<excludeFolder url="file://$MODULE_DIR$/vendor/egulias/email-validator" />
<excludeFolder url="file://$MODULE_DIR$/vendor/toflar/psr6-symfony-http-cache-store" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sensio/framework-extra-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/nelmio/cors-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/namshi/jose" />
<excludeFolder url="file://$MODULE_DIR$/vendor/league/flysystem" />
<excludeFolder url="file://$MODULE_DIR$/vendor/league/mime-type-detection" />
<excludeFolder url="file://$MODULE_DIR$/vendor/babdev/pagerfanta-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phar-io/version" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phar-io/manifest" />
<excludeFolder url="file://$MODULE_DIR$/vendor/myclabs/deep-copy" />
<excludeFolder url="file://$MODULE_DIR$/vendor/monolog/monolog" />
<excludeFolder url="file://$MODULE_DIR$/vendor/laminas/laminas-code" />
<excludeFolder url="file://$MODULE_DIR$/vendor/knplabs/knp-menu-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/knplabs/knp-menu" />
<excludeFolder url="file://$MODULE_DIR$/vendor/imagine/imagine" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/event-dispatcher-contracts" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/phpunit" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-token-stream" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-text-template" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-timer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-file-iterator" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-code-coverage" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpspec/prophecy" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/doctrine-bridge" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/var-exporter" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/swiftmailer-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/yaml" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/config" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-intl-normalizer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/serializer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/asset" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/error-handler" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/cache-contracts" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/property-info" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/security-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-intl-grapheme" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/event-dispatcher" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-intl-idn" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-php80" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-ctype" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/templating" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/form" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/mime" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/filesystem" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/polyfill-intl-icu" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/validator" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/service-contracts" />
<excludeFolder url="file://$MODULE_DIR$/vendor/psr/link" />
<excludeFolder url="file://$MODULE_DIR$/vendor/cron/cron" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/ezplatform-standard-design" />
<excludeFolder url="file://$MODULE_DIR$/vendor/friendsofphp/proxy-manager-lts" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ibexa/post-install" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/ezplatform-admin-ui-assets" />
<excludeFolder url="file://$MODULE_DIR$/vendor/webonyx/graphql-php" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/ezplatform-matrix-fieldtype" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/code-unit" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/ezplatform-graphql" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/migrations" />
<excludeFolder url="file://$MODULE_DIR$/vendor/doctrine/doctrine-migrations-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/overblog/graphql-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/overblog/graphiql-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/ezplatform-core" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/ez-support-tools" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/ezplatform-cron" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/cli-parser" />
<excludeFolder url="file://$MODULE_DIR$/vendor/zetacomponents/base" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/complexity" />
<excludeFolder url="file://$MODULE_DIR$/vendor/platformsh/config-reader" />
<excludeFolder url="file://$MODULE_DIR$/vendor/erusev/parsedown" />
<excludeFolder url="file://$MODULE_DIR$/vendor/netgen/query-translator" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/ezplatform-solr-search-engine" />
<excludeFolder url="file://$MODULE_DIR$/vendor/platformsh/symfonyflex-bridge" />
<excludeFolder url="file://$MODULE_DIR$/vendor/sebastian/lines-of-code" />
<excludeFolder url="file://$MODULE_DIR$/vendor/laminas/laminas-zendframework-bridge" />
<excludeFolder url="file://$MODULE_DIR$/vendor/laminas/laminas-eventmanager" />
<excludeFolder url="file://$MODULE_DIR$/vendor/ezsystems/ezplatform-query-fieldtype" />
<excludeFolder url="file://$MODULE_DIR$/vendor/phpunit/php-invoker" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/browser-kit" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/dom-crawler" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/thanks" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/css-selector" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/monolog-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/zetacomponents/system-information" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/serializer-pack" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/webpack-encore-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/mailer" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/phpunit-bridge" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/maker-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/web-link" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/web-profiler-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/proxy-manager-bridge" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/orm-pack" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/debug-bundle" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/flex" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/notifier" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/http-client" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/dotenv" />
<excludeFolder url="file://$MODULE_DIR$/vendor/symfony/stopwatch" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

8
.idea/modules.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/ezdataflow-bundle.iml" filepath="$PROJECT_DIR$/.idea/ezdataflow-bundle.iml" />
</modules>
</component>
</project>

232
.idea/php.xml generated Normal file
View File

@@ -0,0 +1,232 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PhpIncludePathManager">
<include_path>
<path value="$PROJECT_DIR$/vendor/symfony/security-core" />
<path value="$PROJECT_DIR$/vendor/symfony/monolog-bridge" />
<path value="$PROJECT_DIR$/vendor/symfony/http-foundation" />
<path value="$PROJECT_DIR$/vendor/symfony/console" />
<path value="$PROJECT_DIR$/vendor/symfony/translation" />
<path value="$PROJECT_DIR$/vendor/symfony/deprecation-contracts" />
<path value="$PROJECT_DIR$/vendor/symfony/password-hasher" />
<path value="$PROJECT_DIR$/vendor/symfony/twig-bridge" />
<path value="$PROJECT_DIR$/vendor/symfony/dependency-injection" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-mbstring" />
<path value="$PROJECT_DIR$/vendor/symfony/security-csrf" />
<path value="$PROJECT_DIR$/vendor/symfony/string" />
<path value="$PROJECT_DIR$/vendor/symfony/translation-contracts" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php73" />
<path value="$PROJECT_DIR$/vendor/symfony/process" />
<path value="$PROJECT_DIR$/vendor/symfony/http-client-contracts" />
<path value="$PROJECT_DIR$/vendor/symfony/intl" />
<path value="$PROJECT_DIR$/vendor/symfony/cache" />
<path value="$PROJECT_DIR$/vendor/symfony/finder" />
<path value="$PROJECT_DIR$/vendor/symfony/lock" />
<path value="$PROJECT_DIR$/vendor/symfony/http-kernel" />
<path value="$PROJECT_DIR$/vendor/symfony/expression-language" />
<path value="$PROJECT_DIR$/vendor/symfony/property-access" />
<path value="$PROJECT_DIR$/vendor/symfony/security-http" />
<path value="$PROJECT_DIR$/vendor/symfony/framework-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-iconv" />
<path value="$PROJECT_DIR$/vendor/symfony/security-guard" />
<path value="$PROJECT_DIR$/vendor/symfony/routing" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php81" />
<path value="$PROJECT_DIR$/vendor/symfony/twig-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php72" />
<path value="$PROJECT_DIR$/vendor/symfony/var-dumper" />
<path value="$PROJECT_DIR$/vendor/theseer/tokenizer" />
<path value="$PROJECT_DIR$/vendor/symfony/options-resolver" />
<path value="$PROJECT_DIR$/vendor/doctrine/deprecations" />
<path value="$PROJECT_DIR$/vendor/doctrine/common" />
<path value="$PROJECT_DIR$/vendor/doctrine/dbal" />
<path value="$PROJECT_DIR$/vendor/doctrine/persistence" />
<path value="$PROJECT_DIR$/vendor/doctrine/sql-formatter" />
<path value="$PROJECT_DIR$/vendor/doctrine/lexer" />
<path value="$PROJECT_DIR$/vendor/doctrine/event-manager" />
<path value="$PROJECT_DIR$/vendor/doctrine/annotations" />
<path value="$PROJECT_DIR$/vendor/doctrine/collections" />
<path value="$PROJECT_DIR$/vendor/doctrine/inflector" />
<path value="$PROJECT_DIR$/vendor/php-http/client-common" />
<path value="$PROJECT_DIR$/vendor/ocramius/proxy-manager" />
<path value="$PROJECT_DIR$/vendor/lcobucci/clock" />
<path value="$PROJECT_DIR$/vendor/lcobucci/jwt" />
<path value="$PROJECT_DIR$/vendor/doctrine/cache" />
<path value="$PROJECT_DIR$/vendor/doctrine/orm" />
<path value="$PROJECT_DIR$/vendor/doctrine/doctrine-bundle" />
<path value="$PROJECT_DIR$/vendor/doctrine/instantiator" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-kernel" />
<path value="$PROJECT_DIR$/vendor/php-http/message-factory" />
<path value="$PROJECT_DIR$/vendor/php-http/message" />
<path value="$PROJECT_DIR$/vendor/php-http/httplug" />
<path value="$PROJECT_DIR$/vendor/php-http/guzzle6-adapter" />
<path value="$PROJECT_DIR$/vendor/php-http/promise" />
<path value="$PROJECT_DIR$/vendor/php-http/curl-client" />
<path value="$PROJECT_DIR$/vendor/php-http/discovery" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-rest" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-admin-ui" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-http-cache" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-richtext" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-content-forms" />
<path value="$PROJECT_DIR$/vendor/ezsystems/doctrine-dbal-schema" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-design-engine" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-user" />
<path value="$PROJECT_DIR$/vendor/sebastian/resource-operations" />
<path value="$PROJECT_DIR$/vendor/sebastian/type" />
<path value="$PROJECT_DIR$/vendor/sebastian/recursion-context" />
<path value="$PROJECT_DIR$/vendor/sebastian/comparator" />
<path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" />
<path value="$PROJECT_DIR$/vendor/hautelook/templated-uri-bundle" />
<path value="$PROJECT_DIR$/vendor/hautelook/templated-uri-router" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-search" />
<path value="$PROJECT_DIR$/vendor/sebastian/environment" />
<path value="$PROJECT_DIR$/vendor/sebastian/global-state" />
<path value="$PROJECT_DIR$/vendor/composer" />
<path value="$PROJECT_DIR$/vendor/sebastian/exporter" />
<path value="$PROJECT_DIR$/vendor/sebastian/diff" />
<path value="$PROJECT_DIR$/vendor/sebastian/version" />
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit-reverse-lookup" />
<path value="$PROJECT_DIR$/vendor/sebastian/object-enumerator" />
<path value="$PROJECT_DIR$/vendor/sebastian/object-reflector" />
<path value="$PROJECT_DIR$/vendor/willdurand/jsonp-callback-validator" />
<path value="$PROJECT_DIR$/vendor/willdurand/js-translation-bundle" />
<path value="$PROJECT_DIR$/vendor/webimpress/safe-writer" />
<path value="$PROJECT_DIR$/vendor/pagerfanta/pagerfanta" />
<path value="$PROJECT_DIR$/vendor/guzzlehttp/guzzle" />
<path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" />
<path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" />
<path value="$PROJECT_DIR$/vendor/webmozart/assert" />
<path value="$PROJECT_DIR$/vendor/friendsofsymfony/http-cache" />
<path value="$PROJECT_DIR$/vendor/friendsofsymfony/jsrouting-bundle" />
<path value="$PROJECT_DIR$/vendor/code-rhapsodie/dataflow-bundle" />
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock" />
<path value="$PROJECT_DIR$/vendor/phpdocumentor/type-resolver" />
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-common" />
<path value="$PROJECT_DIR$/vendor/symfony-cmf/routing" />
<path value="$PROJECT_DIR$/vendor/swiftmailer/swiftmailer" />
<path value="$PROJECT_DIR$/vendor/friendsofsymfony/http-cache-bundle" />
<path value="$PROJECT_DIR$/vendor/psr/http-factory" />
<path value="$PROJECT_DIR$/vendor/jms/translation-bundle" />
<path value="$PROJECT_DIR$/vendor/liip/imagine-bundle" />
<path value="$PROJECT_DIR$/vendor/clue/stream-filter" />
<path value="$PROJECT_DIR$/vendor/psr/cache" />
<path value="$PROJECT_DIR$/vendor/psr/log" />
<path value="$PROJECT_DIR$/vendor/psr/http-message" />
<path value="$PROJECT_DIR$/vendor/psr/http-client" />
<path value="$PROJECT_DIR$/vendor/psr/container" />
<path value="$PROJECT_DIR$/vendor/psr/event-dispatcher" />
<path value="$PROJECT_DIR$/vendor/oneup/flysystem-bundle" />
<path value="$PROJECT_DIR$/vendor/nikic/php-parser" />
<path value="$PROJECT_DIR$/vendor/mck89/peast" />
<path value="$PROJECT_DIR$/vendor/lexik/jwt-authentication-bundle" />
<path value="$PROJECT_DIR$/vendor/twig/intl-extra" />
<path value="$PROJECT_DIR$/vendor/twig/extra-bundle" />
<path value="$PROJECT_DIR$/vendor/twig/string-extra" />
<path value="$PROJECT_DIR$/vendor/twig/twig" />
<path value="$PROJECT_DIR$/vendor/egulias/email-validator" />
<path value="$PROJECT_DIR$/vendor/toflar/psr6-symfony-http-cache-store" />
<path value="$PROJECT_DIR$/vendor/sensio/framework-extra-bundle" />
<path value="$PROJECT_DIR$/vendor/nelmio/cors-bundle" />
<path value="$PROJECT_DIR$/vendor/namshi/jose" />
<path value="$PROJECT_DIR$/vendor/league/flysystem" />
<path value="$PROJECT_DIR$/vendor/league/mime-type-detection" />
<path value="$PROJECT_DIR$/vendor/babdev/pagerfanta-bundle" />
<path value="$PROJECT_DIR$/vendor/phar-io/version" />
<path value="$PROJECT_DIR$/vendor/phar-io/manifest" />
<path value="$PROJECT_DIR$/vendor/myclabs/deep-copy" />
<path value="$PROJECT_DIR$/vendor/monolog/monolog" />
<path value="$PROJECT_DIR$/vendor/laminas/laminas-code" />
<path value="$PROJECT_DIR$/vendor/knplabs/knp-menu-bundle" />
<path value="$PROJECT_DIR$/vendor/knplabs/knp-menu" />
<path value="$PROJECT_DIR$/vendor/imagine/imagine" />
<path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher-contracts" />
<path value="$PROJECT_DIR$/vendor/phpunit/phpunit" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-token-stream" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-text-template" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-timer" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-file-iterator" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-code-coverage" />
<path value="$PROJECT_DIR$/vendor/phpspec/prophecy" />
<path value="$PROJECT_DIR$/vendor/symfony/doctrine-bridge" />
<path value="$PROJECT_DIR$/vendor/symfony/var-exporter" />
<path value="$PROJECT_DIR$/vendor/symfony/swiftmailer-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/yaml" />
<path value="$PROJECT_DIR$/vendor/symfony/config" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-normalizer" />
<path value="$PROJECT_DIR$/vendor/symfony/serializer" />
<path value="$PROJECT_DIR$/vendor/symfony/asset" />
<path value="$PROJECT_DIR$/vendor/symfony/error-handler" />
<path value="$PROJECT_DIR$/vendor/symfony/cache-contracts" />
<path value="$PROJECT_DIR$/vendor/symfony/property-info" />
<path value="$PROJECT_DIR$/vendor/symfony/security-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-grapheme" />
<path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-idn" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php80" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" />
<path value="$PROJECT_DIR$/vendor/symfony/templating" />
<path value="$PROJECT_DIR$/vendor/symfony/form" />
<path value="$PROJECT_DIR$/vendor/symfony/mime" />
<path value="$PROJECT_DIR$/vendor/symfony/filesystem" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-icu" />
<path value="$PROJECT_DIR$/vendor/symfony/validator" />
<path value="$PROJECT_DIR$/vendor/symfony/service-contracts" />
<path value="$PROJECT_DIR$/vendor/psr/link" />
<path value="$PROJECT_DIR$/vendor/cron/cron" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-standard-design" />
<path value="$PROJECT_DIR$/vendor/friendsofphp/proxy-manager-lts" />
<path value="$PROJECT_DIR$/vendor/ibexa/post-install" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-admin-ui-assets" />
<path value="$PROJECT_DIR$/vendor/webonyx/graphql-php" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-matrix-fieldtype" />
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-graphql" />
<path value="$PROJECT_DIR$/vendor/doctrine/migrations" />
<path value="$PROJECT_DIR$/vendor/doctrine/doctrine-migrations-bundle" />
<path value="$PROJECT_DIR$/vendor/overblog/graphql-bundle" />
<path value="$PROJECT_DIR$/vendor/overblog/graphiql-bundle" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-core" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ez-support-tools" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-cron" />
<path value="$PROJECT_DIR$/vendor/sebastian/cli-parser" />
<path value="$PROJECT_DIR$/vendor/zetacomponents/base" />
<path value="$PROJECT_DIR$/vendor/sebastian/complexity" />
<path value="$PROJECT_DIR$/vendor/platformsh/config-reader" />
<path value="$PROJECT_DIR$/vendor/erusev/parsedown" />
<path value="$PROJECT_DIR$/vendor/netgen/query-translator" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-solr-search-engine" />
<path value="$PROJECT_DIR$/vendor/platformsh/symfonyflex-bridge" />
<path value="$PROJECT_DIR$/vendor/sebastian/lines-of-code" />
<path value="$PROJECT_DIR$/vendor/laminas/laminas-zendframework-bridge" />
<path value="$PROJECT_DIR$/vendor/laminas/laminas-eventmanager" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-query-fieldtype" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-invoker" />
<path value="$PROJECT_DIR$/vendor/symfony/browser-kit" />
<path value="$PROJECT_DIR$/vendor/symfony/dom-crawler" />
<path value="$PROJECT_DIR$/vendor/symfony/thanks" />
<path value="$PROJECT_DIR$/vendor/symfony/css-selector" />
<path value="$PROJECT_DIR$/vendor/symfony/monolog-bundle" />
<path value="$PROJECT_DIR$/vendor/zetacomponents/system-information" />
<path value="$PROJECT_DIR$/vendor/symfony/serializer-pack" />
<path value="$PROJECT_DIR$/vendor/symfony/webpack-encore-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/mailer" />
<path value="$PROJECT_DIR$/vendor/symfony/phpunit-bridge" />
<path value="$PROJECT_DIR$/vendor/symfony/maker-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/web-link" />
<path value="$PROJECT_DIR$/vendor/symfony/web-profiler-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/proxy-manager-bridge" />
<path value="$PROJECT_DIR$/vendor/symfony/orm-pack" />
<path value="$PROJECT_DIR$/vendor/symfony/debug-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/flex" />
<path value="$PROJECT_DIR$/vendor/symfony/notifier" />
<path value="$PROJECT_DIR$/vendor/symfony/http-client" />
<path value="$PROJECT_DIR$/vendor/symfony/dotenv" />
<path value="$PROJECT_DIR$/vendor/symfony/stopwatch" />
</include_path>
</component>
<component name="PhpProjectSharedConfiguration" php_language_level="7.3" />
<component name="PhpUnit">
<phpunit_settings>
<PhpUnitSettings configuration_file_path="$PROJECT_DIR$/phpunit.xml.dist" custom_loader_path="$PROJECT_DIR$/vendor/autoload.php" use_configuration_file="true" />
</phpunit_settings>
</component>
</project>

10
.idea/phpunit.xml generated Normal file
View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PHPUnit">
<option name="directories">
<list>
<option value="$PROJECT_DIR$/tests" />
</list>
</option>
</component>
</project>

6
.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

498
.idea/workspace.xml generated Normal file
View File

@@ -0,0 +1,498 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="fcd534ec-9ef2-4d26-84de-891bb3c58e43" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/.github/pull_request_template.md" afterDir="false" />
<change afterPath="$PROJECT_DIR$/.github/workflows/release_tag.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/assets/app.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/assets/bootstrap.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/assets/controllers.json" afterDir="false" />
<change afterPath="$PROJECT_DIR$/assets/controllers/hello_controller.js" afterDir="false" />
<change afterPath="$PROJECT_DIR$/assets/images/conversation-chat-icon.svg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/assets/images/file-text-info-icon.svg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/assets/images/folder-icon.svg" afterDir="false" />
<change afterPath="$PROJECT_DIR$/assets/scss/welcome-page.scss" afterDir="false" />
<change afterPath="$PROJECT_DIR$/assets/styles/app.css" afterDir="false" />
<change afterPath="$PROJECT_DIR$/bin/console" afterDir="false" />
<change afterPath="$PROJECT_DIR$/bin/phpunit" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/bundles.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/.gitignore" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/ArticleContent.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/ArticleContentConnection.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/ArticleContentCreateInput.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/ArticleContentType.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/ArticleContentUpdateInput.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/ContentTypeIdentifier.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/Domain.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/DomainContentMutation.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/DomainGroupContent.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/DomainGroupContentTypes.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/DomainGroupMedia.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/DomainGroupMediaTypes.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/DomainGroupUsers.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/DomainGroupUsersTypes.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/FileContent.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/FileContentConnection.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/FileContentCreateInput.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/FileContentType.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/FileContentUpdateInput.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/FolderContent.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/FolderContentConnection.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/FolderContentCreateInput.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/FolderContentType.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/FolderContentUpdateInput.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/ImageContent.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/ImageContentConnection.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/ImageContentCreateInput.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/ImageContentType.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/ImageContentUpdateInput.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/ImageVariationIdentifier.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/RepositoryLanguage.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/UserContent.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/UserContentConnection.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/UserContentCreateInput.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/UserContentType.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/UserContentUpdateInput.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/UserGroupContent.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/UserGroupContentConnection.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/UserGroupContentCreateInput.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/UserGroupContentType.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/graphql/types/ezplatform/UserGroupContentUpdateInput.types.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/assets.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/cache.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/cache_pool/cache.memcached.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/cache_pool/cache.redis.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/cache_pool/cache.tagaware.filesystem.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/dev/debug.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/dev/monolog.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/dev/swiftmailer.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/dev/web_profiler.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/dfs/dfs.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/doctrine.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/doctrine_migrations.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/ezplatform.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/ezplatform_admin_ui.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/ezplatform_assets.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/ezplatform_doctrine_schema.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/ezplatform_http_cache.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/ezplatform_solr.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/ezplatform_welcome_page.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/framework.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/graphql.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/lexik_jwt_authentication.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/liip_imagine.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/lock.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/mailer.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/nelmio_cors.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/notifier.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/oneup_flysystem.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/prod/deprecations.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/prod/doctrine.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/prod/monolog.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/prod/routing.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/prod/webpack_encore.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/routing.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/security.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/sensio_framework_extra.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/swiftmailer.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/test/doctrine.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/test/framework.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/test/monolog.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/test/swiftmailer.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/test/twig.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/test/validator.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/test/web_profiler.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/test/webpack_encore.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/translation.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/twig.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/validator.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/packages/webpack_encore.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/preload.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/routes.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/routes/annotations.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/routes/dev/framework.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/routes/dev/graphiql.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/routes/dev/web_profiler.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/routes/ezplatform.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/routes/ezplatform_admin_ui.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/routes/ezplatform_content_forms.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/routes/ezplatform_http_cache.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/routes/ezplatform_query_field_type.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/routes/ezplatform_rest.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/routes/ezplatform_search.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/routes/ezplatform_support_tools.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/routes/ezplatform_user.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/routes/fos_js_routing.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/routes/graphql.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/routes/js_translation.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/routes/liip_imagine.yaml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/services.yaml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gitignore" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/ezdataflow-bundle.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/ezdataflow-bundle.iml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/php.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/php.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.php_cs.dist" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/CHANGELOG.md" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/LICENSE" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/UPGRADE.md" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/composer.json" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/phpunit.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/CodeRhapsodieEzDataflowBundle.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Controller/DashboardController.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Controller/JobController.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Controller/ScheduledDataflowController.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Core/Content/ContentCreator.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Core/Content/ContentCreatorInterface.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Core/Content/ContentUpdater.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Core/Content/ContentUpdaterInterface.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Core/Field/ContentStructFieldFiller.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Core/Field/ContentStructFieldFillerInterface.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Core/Field/DefaultFieldValueCreator.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Core/Field/FieldValueCreatorInterface.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/DependencyInjection/CodeRhapsodieEzDataflowExtension.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/DependencyInjection/Configuration.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/EventSubscriber/MenuSubscriber.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Exception/InvalidArgumentTypeException.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Exception/NoMatchFoundException.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Exception/UnknownFieldException.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Exception/UnsupportedFieldTypeException.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Factory/ContentStructureFactory.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Factory/ContentStructureFactoryInterface.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Form/CreateOneshotType.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Form/CreateScheduledType.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Form/DataflowTypeChoiceType.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Form/FrequencyType.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Form/UpdateScheduledType.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Form/YamlType.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Gateway/JobGateway.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Gateway/ScheduledDataflowGateway.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Matcher/LocationMatcher.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Matcher/LocationMatcherInterface.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Model/ContentCreateStructure.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Model/ContentStructure.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Model/ContentUpdateStructure.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/config/policies.yaml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/config/routing.yaml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/config/services.yaml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/config/services_platform3.yaml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/doc/add_new_schedule.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/doc/dest_folder.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/doc/ez_dataflow_admin1.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/doc/ez_dataflow_admin_menu.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/doc/history_list.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/doc/job_fail.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/doc/job_successful.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/doc/one_shot_job.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/doc/oneshot_list.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/doc/scheduled_list.jpg" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/translations/forms.en.yaml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/translations/forms.fr.yaml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/translations/messages.en.yaml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/translations/messages.fr.yaml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/views/themes/admin/ezdataflow/Dashboard/history.html.twig" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/views/themes/admin/ezdataflow/Dashboard/main.html.twig" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/views/themes/admin/ezdataflow/Dashboard/oneshot.html.twig" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/views/themes/admin/ezdataflow/Dashboard/repeating.html.twig" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/views/themes/admin/ezdataflow/Dashboard/schedule_history.html.twig" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/views/themes/admin/ezdataflow/Item/details.html.twig" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/views/themes/admin/ezdataflow/macros.twig" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/views/themes/admin/ezdataflow/parts/schedule_form.html.twig" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/views/themes/admin/ezdataflow/parts/tab/ezdataflow.html.twig" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/views/themes/admin/ezdataflow/parts/tab/job_list.html.twig" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Resources/views/themes/admin/ezdataflow/parts/tab/schedule_list.html.twig" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Security/PolicyProvider.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Tab/HistoryTab.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Tab/OneshotTab.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Tab/RepeatingTab.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Twig/EzTabRenderExtension.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/UserSwitcher/UserSwitcher.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/UserSwitcher/UserSwitcherAwareInterface.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/UserSwitcher/UserSwitcherAwareTrait.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/UserSwitcher/UserSwitcherInterface.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Writer/ContentWriter.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Writer/RepositoryWriter.php" beforeDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="ComposerSettings" doNotAsk="true" synchronizationState="SYNCHRONIZE">
<pharConfigPath>$PROJECT_DIR$/composer.json</pharConfigPath>
<execution />
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="PhpWorkspaceProjectConfiguration">
<include_path>
<path value="$PROJECT_DIR$/vendor/symfony/security-core" />
<path value="$PROJECT_DIR$/vendor/symfony/monolog-bridge" />
<path value="$PROJECT_DIR$/vendor/symfony/http-foundation" />
<path value="$PROJECT_DIR$/vendor/symfony/console" />
<path value="$PROJECT_DIR$/vendor/symfony/translation" />
<path value="$PROJECT_DIR$/vendor/symfony/deprecation-contracts" />
<path value="$PROJECT_DIR$/vendor/symfony/password-hasher" />
<path value="$PROJECT_DIR$/vendor/symfony/twig-bridge" />
<path value="$PROJECT_DIR$/vendor/symfony/dependency-injection" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-mbstring" />
<path value="$PROJECT_DIR$/vendor/symfony/security-csrf" />
<path value="$PROJECT_DIR$/vendor/symfony/string" />
<path value="$PROJECT_DIR$/vendor/symfony/translation-contracts" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php73" />
<path value="$PROJECT_DIR$/vendor/symfony/process" />
<path value="$PROJECT_DIR$/vendor/symfony/http-client-contracts" />
<path value="$PROJECT_DIR$/vendor/symfony/intl" />
<path value="$PROJECT_DIR$/vendor/symfony/cache" />
<path value="$PROJECT_DIR$/vendor/symfony/finder" />
<path value="$PROJECT_DIR$/vendor/symfony/lock" />
<path value="$PROJECT_DIR$/vendor/symfony/http-kernel" />
<path value="$PROJECT_DIR$/vendor/symfony/expression-language" />
<path value="$PROJECT_DIR$/vendor/symfony/property-access" />
<path value="$PROJECT_DIR$/vendor/symfony/security-http" />
<path value="$PROJECT_DIR$/vendor/symfony/framework-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-iconv" />
<path value="$PROJECT_DIR$/vendor/symfony/security-guard" />
<path value="$PROJECT_DIR$/vendor/symfony/routing" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php81" />
<path value="$PROJECT_DIR$/vendor/symfony/twig-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php72" />
<path value="$PROJECT_DIR$/vendor/symfony/var-dumper" />
<path value="$PROJECT_DIR$/vendor/theseer/tokenizer" />
<path value="$PROJECT_DIR$/vendor/symfony/options-resolver" />
<path value="$PROJECT_DIR$/vendor/doctrine/deprecations" />
<path value="$PROJECT_DIR$/vendor/doctrine/common" />
<path value="$PROJECT_DIR$/vendor/doctrine/dbal" />
<path value="$PROJECT_DIR$/vendor/doctrine/persistence" />
<path value="$PROJECT_DIR$/vendor/doctrine/sql-formatter" />
<path value="$PROJECT_DIR$/vendor/doctrine/lexer" />
<path value="$PROJECT_DIR$/vendor/doctrine/event-manager" />
<path value="$PROJECT_DIR$/vendor/doctrine/annotations" />
<path value="$PROJECT_DIR$/vendor/doctrine/collections" />
<path value="$PROJECT_DIR$/vendor/doctrine/inflector" />
<path value="$PROJECT_DIR$/vendor/php-http/client-common" />
<path value="$PROJECT_DIR$/vendor/ocramius/proxy-manager" />
<path value="$PROJECT_DIR$/vendor/lcobucci/clock" />
<path value="$PROJECT_DIR$/vendor/lcobucci/jwt" />
<path value="$PROJECT_DIR$/vendor/doctrine/cache" />
<path value="$PROJECT_DIR$/vendor/doctrine/orm" />
<path value="$PROJECT_DIR$/vendor/doctrine/doctrine-bundle" />
<path value="$PROJECT_DIR$/vendor/doctrine/instantiator" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-kernel" />
<path value="$PROJECT_DIR$/vendor/php-http/message-factory" />
<path value="$PROJECT_DIR$/vendor/php-http/message" />
<path value="$PROJECT_DIR$/vendor/php-http/httplug" />
<path value="$PROJECT_DIR$/vendor/php-http/guzzle6-adapter" />
<path value="$PROJECT_DIR$/vendor/php-http/promise" />
<path value="$PROJECT_DIR$/vendor/php-http/curl-client" />
<path value="$PROJECT_DIR$/vendor/php-http/discovery" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-rest" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-admin-ui" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-http-cache" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-richtext" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-content-forms" />
<path value="$PROJECT_DIR$/vendor/ezsystems/doctrine-dbal-schema" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-design-engine" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-user" />
<path value="$PROJECT_DIR$/vendor/sebastian/resource-operations" />
<path value="$PROJECT_DIR$/vendor/sebastian/type" />
<path value="$PROJECT_DIR$/vendor/sebastian/recursion-context" />
<path value="$PROJECT_DIR$/vendor/sebastian/comparator" />
<path value="$PROJECT_DIR$/vendor/ralouphie/getallheaders" />
<path value="$PROJECT_DIR$/vendor/hautelook/templated-uri-bundle" />
<path value="$PROJECT_DIR$/vendor/hautelook/templated-uri-router" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-search" />
<path value="$PROJECT_DIR$/vendor/sebastian/environment" />
<path value="$PROJECT_DIR$/vendor/sebastian/global-state" />
<path value="$PROJECT_DIR$/vendor/composer" />
<path value="$PROJECT_DIR$/vendor/sebastian/exporter" />
<path value="$PROJECT_DIR$/vendor/sebastian/diff" />
<path value="$PROJECT_DIR$/vendor/sebastian/version" />
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit-reverse-lookup" />
<path value="$PROJECT_DIR$/vendor/sebastian/object-enumerator" />
<path value="$PROJECT_DIR$/vendor/sebastian/object-reflector" />
<path value="$PROJECT_DIR$/vendor/willdurand/jsonp-callback-validator" />
<path value="$PROJECT_DIR$/vendor/willdurand/js-translation-bundle" />
<path value="$PROJECT_DIR$/vendor/webimpress/safe-writer" />
<path value="$PROJECT_DIR$/vendor/pagerfanta/pagerfanta" />
<path value="$PROJECT_DIR$/vendor/guzzlehttp/guzzle" />
<path value="$PROJECT_DIR$/vendor/guzzlehttp/promises" />
<path value="$PROJECT_DIR$/vendor/guzzlehttp/psr7" />
<path value="$PROJECT_DIR$/vendor/webmozart/assert" />
<path value="$PROJECT_DIR$/vendor/friendsofsymfony/http-cache" />
<path value="$PROJECT_DIR$/vendor/friendsofsymfony/jsrouting-bundle" />
<path value="$PROJECT_DIR$/vendor/code-rhapsodie/dataflow-bundle" />
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-docblock" />
<path value="$PROJECT_DIR$/vendor/phpdocumentor/type-resolver" />
<path value="$PROJECT_DIR$/vendor/phpdocumentor/reflection-common" />
<path value="$PROJECT_DIR$/vendor/symfony-cmf/routing" />
<path value="$PROJECT_DIR$/vendor/swiftmailer/swiftmailer" />
<path value="$PROJECT_DIR$/vendor/friendsofsymfony/http-cache-bundle" />
<path value="$PROJECT_DIR$/vendor/psr/http-factory" />
<path value="$PROJECT_DIR$/vendor/jms/translation-bundle" />
<path value="$PROJECT_DIR$/vendor/liip/imagine-bundle" />
<path value="$PROJECT_DIR$/vendor/clue/stream-filter" />
<path value="$PROJECT_DIR$/vendor/psr/cache" />
<path value="$PROJECT_DIR$/vendor/psr/log" />
<path value="$PROJECT_DIR$/vendor/psr/http-message" />
<path value="$PROJECT_DIR$/vendor/psr/http-client" />
<path value="$PROJECT_DIR$/vendor/psr/container" />
<path value="$PROJECT_DIR$/vendor/psr/event-dispatcher" />
<path value="$PROJECT_DIR$/vendor/oneup/flysystem-bundle" />
<path value="$PROJECT_DIR$/vendor/nikic/php-parser" />
<path value="$PROJECT_DIR$/vendor/mck89/peast" />
<path value="$PROJECT_DIR$/vendor/lexik/jwt-authentication-bundle" />
<path value="$PROJECT_DIR$/vendor/twig/intl-extra" />
<path value="$PROJECT_DIR$/vendor/twig/extra-bundle" />
<path value="$PROJECT_DIR$/vendor/twig/string-extra" />
<path value="$PROJECT_DIR$/vendor/twig/twig" />
<path value="$PROJECT_DIR$/vendor/egulias/email-validator" />
<path value="$PROJECT_DIR$/vendor/toflar/psr6-symfony-http-cache-store" />
<path value="$PROJECT_DIR$/vendor/sensio/framework-extra-bundle" />
<path value="$PROJECT_DIR$/vendor/nelmio/cors-bundle" />
<path value="$PROJECT_DIR$/vendor/namshi/jose" />
<path value="$PROJECT_DIR$/vendor/league/flysystem" />
<path value="$PROJECT_DIR$/vendor/league/mime-type-detection" />
<path value="$PROJECT_DIR$/vendor/babdev/pagerfanta-bundle" />
<path value="$PROJECT_DIR$/vendor/phar-io/version" />
<path value="$PROJECT_DIR$/vendor/phar-io/manifest" />
<path value="$PROJECT_DIR$/vendor/myclabs/deep-copy" />
<path value="$PROJECT_DIR$/vendor/monolog/monolog" />
<path value="$PROJECT_DIR$/vendor/laminas/laminas-code" />
<path value="$PROJECT_DIR$/vendor/knplabs/knp-menu-bundle" />
<path value="$PROJECT_DIR$/vendor/knplabs/knp-menu" />
<path value="$PROJECT_DIR$/vendor/imagine/imagine" />
<path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher-contracts" />
<path value="$PROJECT_DIR$/vendor/phpunit/phpunit" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-token-stream" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-text-template" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-timer" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-file-iterator" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-code-coverage" />
<path value="$PROJECT_DIR$/vendor/phpspec/prophecy" />
<path value="$PROJECT_DIR$/vendor/symfony/doctrine-bridge" />
<path value="$PROJECT_DIR$/vendor/symfony/var-exporter" />
<path value="$PROJECT_DIR$/vendor/symfony/swiftmailer-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/yaml" />
<path value="$PROJECT_DIR$/vendor/symfony/config" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-normalizer" />
<path value="$PROJECT_DIR$/vendor/symfony/serializer" />
<path value="$PROJECT_DIR$/vendor/symfony/asset" />
<path value="$PROJECT_DIR$/vendor/symfony/error-handler" />
<path value="$PROJECT_DIR$/vendor/symfony/cache-contracts" />
<path value="$PROJECT_DIR$/vendor/symfony/property-info" />
<path value="$PROJECT_DIR$/vendor/symfony/security-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-grapheme" />
<path value="$PROJECT_DIR$/vendor/symfony/event-dispatcher" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-idn" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php80" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" />
<path value="$PROJECT_DIR$/vendor/symfony/templating" />
<path value="$PROJECT_DIR$/vendor/symfony/form" />
<path value="$PROJECT_DIR$/vendor/symfony/mime" />
<path value="$PROJECT_DIR$/vendor/symfony/filesystem" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-intl-icu" />
<path value="$PROJECT_DIR$/vendor/symfony/validator" />
<path value="$PROJECT_DIR$/vendor/symfony/service-contracts" />
<path value="$PROJECT_DIR$/vendor/psr/link" />
<path value="$PROJECT_DIR$/vendor/cron/cron" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-standard-design" />
<path value="$PROJECT_DIR$/vendor/friendsofphp/proxy-manager-lts" />
<path value="$PROJECT_DIR$/vendor/ibexa/post-install" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-admin-ui-assets" />
<path value="$PROJECT_DIR$/vendor/webonyx/graphql-php" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-matrix-fieldtype" />
<path value="$PROJECT_DIR$/vendor/sebastian/code-unit" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-graphql" />
<path value="$PROJECT_DIR$/vendor/doctrine/migrations" />
<path value="$PROJECT_DIR$/vendor/doctrine/doctrine-migrations-bundle" />
<path value="$PROJECT_DIR$/vendor/overblog/graphql-bundle" />
<path value="$PROJECT_DIR$/vendor/overblog/graphiql-bundle" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-core" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ez-support-tools" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-cron" />
<path value="$PROJECT_DIR$/vendor/sebastian/cli-parser" />
<path value="$PROJECT_DIR$/vendor/zetacomponents/base" />
<path value="$PROJECT_DIR$/vendor/sebastian/complexity" />
<path value="$PROJECT_DIR$/vendor/platformsh/config-reader" />
<path value="$PROJECT_DIR$/vendor/erusev/parsedown" />
<path value="$PROJECT_DIR$/vendor/netgen/query-translator" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-solr-search-engine" />
<path value="$PROJECT_DIR$/vendor/platformsh/symfonyflex-bridge" />
<path value="$PROJECT_DIR$/vendor/sebastian/lines-of-code" />
<path value="$PROJECT_DIR$/vendor/laminas/laminas-zendframework-bridge" />
<path value="$PROJECT_DIR$/vendor/laminas/laminas-eventmanager" />
<path value="$PROJECT_DIR$/vendor/ezsystems/ezplatform-query-fieldtype" />
<path value="$PROJECT_DIR$/vendor/phpunit/php-invoker" />
<path value="$PROJECT_DIR$/vendor/symfony/browser-kit" />
<path value="$PROJECT_DIR$/vendor/symfony/dom-crawler" />
<path value="$PROJECT_DIR$/vendor/symfony/thanks" />
<path value="$PROJECT_DIR$/vendor/symfony/css-selector" />
<path value="$PROJECT_DIR$/vendor/symfony/monolog-bundle" />
<path value="$PROJECT_DIR$/vendor/zetacomponents/system-information" />
<path value="$PROJECT_DIR$/vendor/symfony/serializer-pack" />
<path value="$PROJECT_DIR$/vendor/symfony/webpack-encore-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/mailer" />
<path value="$PROJECT_DIR$/vendor/symfony/phpunit-bridge" />
<path value="$PROJECT_DIR$/vendor/symfony/maker-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/web-link" />
<path value="$PROJECT_DIR$/vendor/symfony/web-profiler-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/proxy-manager-bridge" />
<path value="$PROJECT_DIR$/vendor/symfony/orm-pack" />
<path value="$PROJECT_DIR$/vendor/symfony/debug-bundle" />
<path value="$PROJECT_DIR$/vendor/symfony/flex" />
<path value="$PROJECT_DIR$/vendor/symfony/notifier" />
<path value="$PROJECT_DIR$/vendor/symfony/http-client" />
<path value="$PROJECT_DIR$/vendor/symfony/dotenv" />
<path value="$PROJECT_DIR$/vendor/symfony/stopwatch" />
</include_path>
</component>
<component name="ProjectId" id="1uOh37L3yOgbCfYHNtH7XPq0f0D" />
<component name="ProjectLevelVcsManager">
<ConfirmationsSetting value="1" id="Add" />
</component>
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">
<property name="ASKED_MARK_IGNORED_FILES_AS_EXCLUDED" value="true" />
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="nodejs_package_manager_path" value="npm" />
<property name="vue.rearranger.settings.migration" value="true" />
</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$" />
<recent name="$PROJECT_DIR$/vendor" />
</key>
</component>
<component name="RunManager">
<configuration name="phpunit.xml.dist" type="PHPUnitRunConfigurationType" factoryName="PHPUnit">
<TestRunner scope="XML" />
<method v="2" />
</configuration>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="fcd534ec-9ef2-4d26-84de-891bb3c58e43" name="Default Changelist" comment="" />
<created>1624542340407</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1624542340407</updated>
<workItem from="1624542342053" duration="625000" />
<workItem from="1624563298513" duration="7657000" />
<workItem from="1624883142090" duration="971000" />
<workItem from="1624885923460" duration="1582000" />
</task>
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
</project>

View File

@@ -1,12 +0,0 @@
<?php
$finder = PhpCsFixer\Finder::create()->in(__DIR__.'/src');
return PhpCsFixer\Config::create()
->setRules([
'@Symfony' => true,
'declare_strict_types' => true,
])
->setFinder($finder)
->setRiskyAllowed(true)
;

View File

@@ -1,36 +0,0 @@
# Version 3.0.0
* Add compatibility with Ibexa Content 3.3
* Add compatibility with Symfony 5.x
# Version 2.3.0
* Added a button to display exceptions / log in a modal
* Add log in `CodeRhapsodie\EzDataflowBundle\Filter\NotModifiedContentFilter` and `CodeRhapsodie\EzDataflowBundle\Writer\ContentWriter`
# Version 2.2.0
* Added `NotModifiedContentFilter` and a bunch of `FieldComparator` classes
# version 2.1.0
* ContentWriter return created content
# version 2.0.1
* Enclosure js code into anonymous function
# version 2.0.0
* Update to use Dataflow v2.0+
* Add compiler pass to change the Dataflow DBAL connection factory
* Use the DBAL connection from siteaccess
* Add `mode` argument on `ContentStructureFactory::transform()` function
* Add `CodeRhapsodie\EzDataflowBundle\Factory\ContentStructureFactoryInterface`
# version 1.0.0
* Initial version to use Dataflow v1.0+ into eZ Platform
* Add Admin UI
* Add content writer
* Add content structure

18
COPYRIGHT Normal file
View File

@@ -0,0 +1,18 @@
Copyright (C) 1999-2021 Ibexa AS (formerly eZ Systems AS). All rights reserved.
This source code is available separately under the following licenses:
A - Ibexa Business Use License Agreement (Ibexa BUL),
version 2.3 or later versions (as license terms may be updated from time to time)
Ibexa BUL is granted by having a valid Ibexa DXP (formerly eZ Platform Enterprise) subscription,
as described at: https://www.ibexa.co/product
For the full Ibexa BUL license text, please see:
- LICENSE-bul file placed in the root of this source code, or
- https://www.ibexa.co/software-information/licenses-and-agreements (latest version applies)
AND
B - GNU General Public License, version 2
Grants an copyleft open source license with ABSOLUTELY NO WARRANTY. For the full GPL license text, please see:
- LICENSE file placed in the root of this source code, or
- https://www.gnu.org/licenses/old-licenses/gpl-2.0.html

19
LICENSE
View File

@@ -1,19 +0,0 @@
Copyright (c) 2019 Code Rhapsodie
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

222
LICENSE-bul Normal file
View File

@@ -0,0 +1,222 @@
Ibexa Business Use License Agreement ("Ibexa BUL") Version 2.3
IMPORTANT: Please read the following license agreement carefully.
This Ibexa Business License Agreement (“Ibexa BUL”) is between Ibexa AS
(Norwegian business registration no. 981601564, formerly eZ Systems AS),
a Norwegian company ("Licensor", “Ibexa” or “we”), and the customer ("Licensee"
or "you"). By installing all or any portion of the Licensed Software (or
authorizing any other person to do so), you accept the terms and conditions of
this Ibexa BUL. If you acquired the Licensed Software without an opportunity to
review this Ibexa BUL and do not accept the Ibexa BUL, you must: (a) not use
the Licensed Software and (b) return or delete the Licensed Software,
with your certification of deletion, within thirty (30) days of the
purchase date.
The parties hereby agree to the following terms and conditions:
1. Definitions
"Licensed Software" means the Ibexa Digital Experience Platform (DXP)
or other Ibexa software product (such as eZ Platform Enterprise Edition,
eZ Publish Platform) downloaded, ordered or otherwise legally acquired
(licensed) by you from Ibexa (or other party authorized by Ibexa).
"Licensed Copy" means one sample of the Licensed Software.
"Subscription Agreement" means the Ibexa Digital Experience Platform (DXP)
Subscription Agreement, or other applicable Ibexa subscription (such as eZ
Enterprise or eZ Platform Enterprise Subscription Agreement), entitling
you to a BUL to the Licensed Software.
2. License grant
2.1 You may
If you have entered into an Ibexa Subscription Agreement, you have paid the
correct fees and you comply with the terms of this Ibexa BUL, we grant you a
limited, non-exclusive and non-transferable right to:
(a) install and run the Licensed Copy on the agreed number of websites
or with the agreed number of database content objects; and
(b) modify or make improvements, patches, workarounds and bug fixes
(collectively "Licensee Modifications") to the Licensed Copy, or permit
a third party to do so on Licensee's behalf, solely for use by the
Licensee and its subsidiaries or affiliates.
Licensee may make a reasonable number of copies of the Licensed Copy as
required for backup and archival purposes only.
2.2 You may not
Licensee may use the Licensed Software only as expressly granted in
section 2. Without limiting the foregoing, you may not: (a) give, lease,
license, sell, make available, or distribute any part of the Licensed
Software or Licensee Modifications to any third party, except as
otherwise expressly permitted herein; (b) use the Licensed Software to
operate as a time-sharing, outsourcing, service bureau, application
service provider, managed service provider environment or similar
service directed towards and performed on behalf or for the benefit of a
third party; (c) copy the Licensed Software onto any public or
distributed network; or (d) change any right notices which appear in the
Licensed Software.
3. Your responsibility
Except as expressly described in this Ibexa BUL or in a separate written
agreement, you alone are solely responsible for the installation of the
Licensed Software, its operation, supervision, maintenance, management
and related training and support. The same shall apply to any related
installation, maintenance and configuration of computer hardware used by
the Licensed Software.
4. Price and payment
You may use the Licensed Software free of charge if you are a current
and paying Ibexa Subscription Agreement customer, with a
subscription agreement covering the Licensed Software. If not, you may
not use the Licensed Software.
Please see the Ibexa Subscription Agreement for the prices and terms of payment,
that apply.
Within six months of the termination or expiration of any such Ibexa
Subscription Agreement, all use of the Licensed Software has to stop,
unless the Ibexa Subscription Agreement is renewed within such six month
period. During this six month period, Ibexa is not liable for any loss
or damage (of any kind) with you.
5. Audit rights
To make sure everyone is contributing their part to enable us to
continue making great software, we need a right at all times to audit
our Licensors. During the term of this Ibexa BUL and for a three year
period following its termination, we therefor may conduct periodic
reviews of your records relating to the Licensed Software for the
purpose of verifying Licensee's compliance with this Ibexa BUL, Ibexa
Subscription Agreement and related agreements. During
this three year period, you are obliged to maintain complete and accurate
books and other records related to software licensing and related
payments. We must exercise its right of audit upon no fewer than 15
days' prior notice. You will then provide us with reasonable access and
assistance for the audit, including reasonable use of personnel,
available office equipment and space. In return, we must give you a copy
of the results of the audit, if you ask us for it.
6. Termination
Ibexa may terminate this Ibexa BUL immediately if you are in breach any of its
provisions and such breach remains uncured 30 days after you receive
notice of the breach. In the event that you (a) fail to pay Ibexa any
outstanding amounts, including subscription fees or license fees for
other software, on time, or (b) are or become liquidated, dissolved,
bankrupt or insolvent, whether voluntarily or involuntarily, or is to
take any action to be declared so, we may terminate this Ibexa BUL
immediately. Upon cancellation or other termination of this Ibexa BUL, for
any reason, you must immediately destroy all copies of the Licensed
Software, and confirm the destruction within 7 (seven) days.
7. Intellectual property rights
You agree that no copyright, other intellectual property or proprietary
rights in the Licensed Software and related documentation are
transferred to you. No trademarks of Ibexa may be used by you without Ibexa
express written permission. If permission is granted, use must always
take place in accordance with our guidelines as they may be updated from
time to time. For Licensee Modifications, you must, in the modified
files and in a separate text file, clearly indicate that the Licensed
Software contains modifications and state their dates and location.
8. Limited warranties
We warrant that the Licensed Software will remain in substantial
conformance with the current documentation of the Licensed Software. We
disclaim, and you waive, all warranties, whether express or implied,
including warranties of merchantability, fitness for a particular
purpose, non-infringement, system integration, non-interference and
accuracy of informational content. We do not warrant that the Licensed
Software will meet your requirements or that the operation of it will be
uninterrupted or error-free, or that errors will be corrected. The
entire risk of the Licensed Software's quality and performance is
therefore with you
9. Limitation of liability
To the extent permitted by law, we do not have liability with respect to
obligations described in this Ibexa BUL or otherwise for direct,
consequential, exemplary, special, indirect, incidental or punitive
damages, including any lost profits or lost savings (whether resulting
from impaired or lost data, software or computer failure or any other
cause), even if we have been advised of the possibility of such damages.
This limitation of liability applies to any default, including breach of
contract, breach of warranty, negligence, misrepresentations and other
injury. We both agree that the remedies and limitations herein allocate
the risks between us as authorized by law. The license fee (none) is set
in reliance upon this allocation of risk and the exclusion of damages as
set forth in this Ibexa BUL.
10. Miscellaneous
10.1 Termination for patent action
This Ibexa BUL shall terminate automatically and you may no longer exercise
any of the rights granted to you by this Ibexa BUL as of the date you
commence an action, including a cross-claim or counterclaim, against Ibexa,
any third party supplier Ibexa is distributing software for, or other
licensee, alleging that the Licensed Software infringes a patent.
10.2 Transfer
Without Ibexa written permission, you may not sublicense or otherwise
transfer your rights and obligations under this Ibexa BUL to any other
person or party. Any attempt by you to do so, will terminate this Ibexa BUL
without further notice. Ibexa may assign its rights hereunder at any time
without consent.
10.3 Governing law
This Ibexa BUL is to be governed by the laws of Norway, without regard to
any conflict of law provisions.
10.4 Disputes and legal venue
If we disagree, you and Ibexa will first attempt to resolve the
disagreement through discussions and negotiations.
If you and Ibexa cannot agree, the dispute can be referred to Oslo City
Court as mandatory legal venue by either one of us. However, if you are
located in a country that does not have a bilateral or multilateral
ruling enforcement treaty with Norway, the dispute must be referred to
and finally determined by arbitration administered by the World
Intellectual Property Organization (WIPO) Arbitration and Mediation
Centre in accordance with the WIPO Arbitration Rules.
The place of arbitration is to be Oslo, Norway. The arbitrator (only
one) will decide based on this Ibexa BUL and Norwegian law. We both agree
that the arbitrator will have the power to decide all matters, and to
award any remedies. All proceedings and documents shall remain strictly
confidential.
In no event shall the United Nations Convention on Contracts for the
International Sale of Goods apply to, or govern, this Ibexa BUL.
10.5 Notices
Any notices we need to send each other, must be delivered and addressed
to you at the address you provided to Ibexa (or our representative) at the
time of the order, and to Ibexa at
Attn: Software Licensing Dept.,
Ibexa AS,
Solligata 2,
0254 Oslo
Norway
Either party may change its address for notice purposes upon notice in
accordance with this section.
10.6 Export law assurances
You are responsible for complying with any applicable local laws,
including export and import regulations.
10.7 Entire agreement
This Ibexa BUL comprises the entire agreement, and replaces all earlier
proposals, understandings and agreements, oral and written, between us.
10.8 Update of terms
In order to be able to manage all those licensing software from us, we
may from time to time in our discretion issue new versions of this
license. Unless you within 30 days from when you were first made aware
or should have become aware of the new license have not objected in
writing to us, the new version of the Ibexa BUL is to be deemed as accepted
by you.

418
README.md
View File

@@ -1,402 +1,38 @@
# Code Rhapsodie eZ Dataflow Bundle
# Ibexa Flex website skeleton
EzDataflowBundle is a bundle integrating [Code Rhapsodie Dataflow bundle](https://github.com/code-rhapsodie/dataflow-bundle) into eZ Platfom 2.0+.
Dataflows can be piloted from an interface integrated in eZ Platform backoffice.
EzDataflow bundle is intended to manage content imports from external data sources.
> Note: before using this bundle, please read the [Code Rhapsodie Dataflow bundle documentation](https://github.com/code-rhapsodie/dataflow-bundle/blob/master/README.md).
> Command line notice: When you use Dataflow commands, **use `--siteaccess` instead of `--connection`** expect for `code-rhapsodie:dataflow:dump-schema` command.
## User Interface (UI)
The UI lets you create workflow processes from any defined `DataflowTypes`, and set options to each.
Processes can be set to run either:
- only once, at a given date and time
- regularly, by defining the first run date and time, and the interval between subsequent runs
This is a Symfony Flex website skeleton allowing installation of all editions of
[Ibexa DXP](https://www.ibexa.co/products) and Ibexa Open Source.
## Installation
### Step 1: Install the bundle via composer
For installation instructions of Ibexa DXP see either
[the official documentation](https://doc.ibexa.co/) or packages for specific editions:
* [Ibexa Content](https://github.com/ibexa/content)
* [Ibexa Experience](https://github.com/ibexa/experience)
* [Ibexa Commerce](https://github.com/ibexa/commerce)
```shell script
$ composer require code-rhapsodie/ezdataflow-bundle
```
Ibexa DXP is licensed under Ibexa Business Use License Agreement (Ibexa BUL) and requires
a subscription. Learn more about [Ibexa DXP](https://www.ibexa.co/products).
### Step 2: Enable the bundle
For installation instructions of Ibexa Open Source see [ibexa/oss](https://github.com/ibexa/oss)
package.
> Note: The loading order between the Dataflow bundle and Ez Dataflow bundle is important. Dataflow must be loaded first.
## COPYRIGHT
Copyright (C) 1999-2021 Ibexa AS (formerly eZ Systems AS). All rights reserved.
#### Symfony 4 (new tree)
## LICENSE
This source code is available separately under the following licenses:
For Symfony 4, add those two lines in the `config/bundles.php` file:
A - Ibexa Business Use License Agreement (Ibexa BUL),
version 2.3 or later versions (as license terms may be updated from time to time)
Ibexa BUL is granted by having a valid Ibexa DXP (formerly eZ Platform Enterprise) subscription,
as described at: https://www.ibexa.co/product
For the full Ibexa BUL license text, please see:
https://www.ibexa.co/software-information/licenses-and-agreements (latest version applies)
```php
<?php
AND
return [
// ...
CodeRhapsodie\DataflowBundle\CodeRhapsodieDataflowBundle::class => ['all' => true],
CodeRhapsodie\EzDataflowBundle\CodeRhapsodieEzDataflowBundle::class => ['all' => true],
// ...
];
```
#### Symfony 3.4 (old tree)
For Symfony 3.4, add those two lines in the `app/AppKernel.php` file:
```php
<?php
// app/AppKernel.php
public function registerBundles()
{
$bundles = [
// ...
new CodeRhapsodie\DataflowBundle\CodeRhapsodieDataflowBundle(),
new CodeRhapsodie\EzDataflowBundle\CodeRhapsodieEzDataflowBundle(),
// ...
];
}
```
### Step 3: Import bundle routing file
```yaml
# app/config/routing.yml or config/routing.yaml
_cr.dataflow:
resource: '@CodeRhapsodieEzDataflowBundle/Resources/config/routing.yaml'
```
### Step 4: Update the database schema
Please refer to the [Code-Rhapsodie Dataflow Bundle installation guide](https://github.com/code-rhapsodie/dataflow-bundle#update-the-database).
### Step 5: Schedule the job runner
Please refer to the [Code-Rhapsodie Dataflow Bundle Queue section](https://github.com/code-rhapsodie/dataflow-bundle#queue).
## Configuration
By default, the `ContentWriter` will publish contents using the `admin` user. If you want to use another user (with sufficient permissions), you can configure it like this:
```yaml
# app/config/config.yml or config/packages/code_rhapsodie_ez_dataflow.yaml
code_rhapsodie_ez_dataflow:
# Integer values are assumed to be user ids, non-integer values are assumed to be user logins
admin_login_or_id: webmaster
```
## Define your Dataflow
Before using the admin UI to manage your dataflows, you need to define them. Please refer to [Code-Rhapsodie Dataflow type documentation](https://github.com/code-rhapsodie/dataflow-bundle#define-a-dataflow-type).
## Use the ContentWriter
To add or update eZ Platform contents, you can use the `CodeRhapsodie\EzDataflowBundle\Writer\ContentWriter` writer.
### Step 1: Inject the dependencies and add the writer
Inject the `ContentWriter` service into the constructor of your DataflowType and add the content writer into the writer list like this:
```php
// In your DataflowType
use CodeRhapsodie\EzDataflowBundle\Writer\ContentWriter;
use CodeRhapsodie\DataflowBundle\DataflowType\AbstractDataflowType;
[...]
class MyDataflowType extends AbstractDataflowType
{
//[...]
/**
* @var ContentWriter
*/
private $contentWriter;
public function __construct(ContentWriter $contentWriter)
{
$this->contentWriter = $contentWriter;
}
//[...]
protected function buildDataflow(DataflowBuilder $builder, array $options): void
{
//[...]
$builder->addWriter($this->contentWriter);
}
}
```
### Step 2: Add a step for prepare the content
To process eZ Platform content into your Dataflow, you need to transform the data into `ContentCreateStructure` or `ContentUpdateStructure` objects.
in order to respectively create or update contents.
But, in order to determine if the content already exists or not, you first need to look up for it.
One way is to use the remote id to search for the content.
In the following example, the remote id pattern is `article-<id>` with the `<id>` replaced by the data id provided by the reader.
To check if the content exists or not, I use the service `ContentService` provided by eZ Platform.
The step is added as an anonymous function and has 3 types of return values:
* When the step returns `false`, the data is dropped.
* When the step returns a `ContentCreateStructure`, the data will be saved into a new eZ Platform content.
* When the step returns a `ContentUpdateStructure`, the existing eZ Platform content will be updated by overwriting all defined fields in the data.
For the new content, you must provide one or more "parent location id" as the 3rd argument of the `ContentCreateStructure` constructor.
In this example, I have added a new folder to store all articles.
To get the location id of the parent eZ Platform content, go to the admin UI and select the future parent content, click on the details tabs, and read the "Location id" like this:
![parent folder](src/Resources/doc/dest_folder.jpg)
> Note: the best practice is to define this parent id in your `parameters.yml` file or your `.env.local` file for each execution environment.
```php
// In your DataflowType
use CodeRhapsodie\EzDataflowBundle\Factory\ContentStructureFactory;
use CodeRhapsodie\EzDataflowBundle\Writer\ContentWriter;
use CodeRhapsodie\DataflowBundle\DataflowType\AbstractDataflowType;
[...]
class MyDataflowType extends AbstractDataflowType
{
//[...]
/**
* @var ContentWriter
*/
private $contentWriter;
/**
* @var ContentStructureFactory
*/
private $contentStructureFactory;
public function __construct(ContentWriter $contentWriter, ContentStructureFactory $contentStructureFactory)
{
$this->contentWriter = $contentWriter;
$this->contentStructureFactory = $contentStructureFactory;
}
//[...]
protected function buildDataflow(DataflowBuilder $builder, array $options): void
{
//[...]
$builder->addStep(function ($data) {
if (!isset($data['id'])) {
return false;
}
$remoteId = sprintf('article-%d', $data['id']);
unset($data['id']);
return $this->contentStructureFactory->transform(
$data,
$remoteId,
'eng-GB',
'article2',
54, //Parent location id
ContentStructureFactoryInterface::MODE_INSERT_OR_UPDATE //Optional value. Other choice : ContentStructureFactoryInterface::MODE_INSERT_ONLY or ContentStructureFactoryInterface::MODE_UPDATE_ONLY
);
});
// If you want the writer log
$this->contentWriter->setLogger($this->logger);
$builder->addWriter($this->contentWriter);
}
}
```
This example uses `ContentStructureFactory` to check if the content exists and returns the adequate `ContentStrucure` to pass to the content writer.
## Use the NotModifiedContentFilter
When updating contents, you might want to ignore contents where the update would not result in any actual changes in fields values. In that case, you can add the `NotModifiedContentFilter` as one of your steps.
```php
// In your DataflowType
public function __construct(NotModifiedContentFilter $notModifiedContentFilter)
{
$this->notModifiedContentFilter = $notModifiedContentFilter;
}
//[...]
protected function buildDataflow(DataflowBuilder $builder, array $options): void
{
//[...]
// If you want the filter log
$this->notModifiedContentFilter->setLogger($this->logger);
$builder->addStep($this->notModifiedContentFilter);
//[...]
}
```
This filter compares each field value in the `ContentUpdateStructure` received to the fields values in the existing content object. If all values are identical, this filter will return `false`, otherwise, the `ContentUpdateStructure` will be returned as is.
Not all field types are supported by this filter. Il a field type is not supported, values will be assumed different. If your dataflow is dealing with content types containing unsupported field types, it is better to simply not use the `NotModifiedContentFilter` to prevent unnecessary overhead.
### Supported field types
- ezstring
- ezauthor
- ezboolean
- ezcountry
- ezdate
- ezdatetime
- ezemail
- ezfloat
- ezisbn
- ezobjectrelation
- ezobjectrelationlist
- ezkeyword
- ezselection
- eztext
- eztime
- eztags
- novaseometas
- ezurl
- ezmatrix
- ezgmaplocation
- ezrichtext
### Add custom field comparator
If you want to add support for a field type, simply create your own comparator.
```php
<?php
use CodeRhapsodie\EzDataflowBundle\Core\FieldComparator\AbstractFieldComparator;
use eZ\Publish\Core\FieldType\Value;
//[...]
class MyFieldComparator extends AbstractFieldComparator
{
//[...]
protected function compareValues(Value $currentValue, Value $newValue): bool
{
// Return true if values are identical, false if values are different.
}
}
```
```yaml
# Service declaration
App\FieldComparator\MyFieldComparator:
parent: 'CodeRhapsodie\EzDataflowBundle\Core\FieldComparator\AbstractFieldComparator'
tags:
- { name: 'coderhapsodie.ezdataflow.field_comparator', fieldType: 'my_field_type_identifier' }
```
# Admin UI
## Access to the eZ Dataflow UI
You can access the eZ Dataflow administration UI from your eZ Platform admin back-office.
![Admin menu](src/Resources/doc/ez_dataflow_admin_menu.jpg)
1. Click to "Admin"
1. Click to "eZ Dataflow"
## Scheduled dataflow list
When you access to the eZ Dataflow administration UI, you going here:
![Scheduled dataflow list](src/Resources/doc/scheduled_list.jpg)
1. Scheduled dataflow list
1. Button to add a new scheduled dataflow
1. Tools available for each scheduled dataflow. In order from left to right :
1. Display the history for this dataflow schedule
1. Edit this dataflow schedule
1. Enable/Disable this dataflow schedule
1. Delete this dataflow schedule
> Note: You can define more than one schedule for any given dataflow.
## Add a new schedule
Go to the eZ Dataflow admin, and click on the "+" orange button.
In the new popin, fill in the fields:
![Add a new schedule](src/Resources/doc/add_new_schedule.jpg)
1. Type the Dataflow schedule name
1. Select the Dataflow type. The list is automatically generated from the list of Symfony services with the tags `coderhapsodie.dataflow.type`. If your dataflow type is not present, [check the configuration](https://github.com/code-rhapsodie/dataflow-bundle#check-if-your-dataflowtype-is-ready)
1. Type here the Dataflow options. Basic expected format: one option per line and option name and value separated with `: `. For more complex options, the whole YAML format is supported.
1. Type here the frequency. The value must be compatible with the the PHP [strtotime](https://www.php.net/manual/en/function.strtotime.php) function.
1. Choose the date and time of the first job.
1. Check if you want to run this Dataflow.
Finally, click on the "Create" button.
## Read the history
When you click on the "History" tab in the eZ Dataflow admin UI, the job history for all Dataflow configured and executed is displayed.
![History list](src/Resources/doc/history_list.jpg)
1. The history list
1. This column shows the number of objects that have been processed.
1. Click on the question mark to display the job details.
Details of one scheduled job:
![Job execution details](src/Resources/doc/job_successful.jpg)
## One-shot job
If you don't want to run a Dataflow periodically, you can add a single execution at the time and date that you want.
Go to the eZ Dataflow admin UI and click on the "Oneshot" tab.
![Oneshot list](src/Resources/doc/oneshot_list.jpg)
1. This button allows you to define the one-shot job (see below).
1. This column shows the number of objects that have been processed.
1. Click on the question mark to display the job details.
Details of one-shot job:
![onshot details](src/Resources/doc/job_fail.jpg)
Here the job has fail.
## Add a one-shot job
Go to the eZ Dataflow admin UI and click on the "Oneshot" tab. Click on the "+" orange button to open the adding popin.
![The add one-shot popin](src/Resources/doc/one_shot_job.jpg)
1. Type the Dataflow job name
1. Select the Dataflow type. The list is automatically generated from the list of Symfony services with the tags `coderhapsodie.dataflow.type`. If your dataflow type is not present, [check the configuration](https://github.com/code-rhapsodie/dataflow-bundle#check-if-your-dataflowtype-is-ready)
1. Type here the Dataflow options. Basic expected format: one option per line and option name and value separated with `: `. For more complex options, the whole YAML format is supported.
1. Choose the date and time of the first job.
Finally, click on the "Create" button.
# Rights
If a non-administrator user needs read-only access to the dataflow interface, add the `Setup / Administrate` and `eZ Dataflow / View` policies in one of their roles.
# Issues and feature requests
Please report issues and request features at https://github.com/code-rhapsodie/ezdataflow-bundle/issues.
# Contributing
Contributions are very welcome. Please see [CONTRIBUTING.md](CONTRIBUTING.md) for
details. Thanks to [everyone who has contributed](https://github.com/code-rhapsodie/ezdataflow-bundle/graphs/contributors)
already.
# License
This package is licensed under the [MIT license](LICENSE).
B - GNU General Public License, version 2
Grants an copyleft open source license with ABSOLUTELY NO WARRANTY. For the full GPL license text, please see:
- LICENSE file placed in the root of this source code, or
- https://www.gnu.org/licenses/old-licenses/gpl-2.0.html

View File

@@ -1,15 +0,0 @@
# From v1.0 to v2.0
When you use Dataflow commands, use `--siteaccess` instead of `--connection` except for `code-rhapsodie:dataflow:dump-schema`.
[BC] The return of `CodeRhapsodie\EzDataflowBundle\Gateway\JobGateway::findForScheduled`
and `CodeRhapsodie\EzDataflowBundle\Gateway\ScheduledDataflowGateway::findAllOrderedByLabel` has been changed.
The iterable contains an associative array instead of an object.
[BC] In classes `CodeRhapsodie\EzDataflowBundle\Gateway\JobGateway` and
`CodeRhapsodie\EzDataflowBundle\Gateway\ScheduledDataflowGateway`, all methods return `Doctrine\ORM\Query` object has
changed to return now a `Doctrine\DBAL\Query\QueryBuilder`
[BC] The return type of `CodeRhapsodie\EzDataflowBundle\Factory\ContentStructureFactory::transform` has been changed
from `CodeRhapsodie\EzDataflowBundle\Model\ContentStructure` to `mixed`. In fact only `false` or
`CodeRhapsodie\EzDataflowBundle\Model\ContentStructure` object will be returned.

12
assets/app.js Normal file
View File

@@ -0,0 +1,12 @@
/*
* Welcome to your app's main JavaScript file!
*
* We recommend including the built version of this JavaScript file
* (and its CSS file) in your base layout (base.html.twig).
*/
// any CSS you import will output into a single css file (app.css in this case)
import './styles/app.css';
// start the Stimulus application
import './bootstrap';

5
assets/bootstrap.js vendored Normal file
View File

@@ -0,0 +1,5 @@
import { startStimulusApp } from '@symfony/stimulus-bridge';
import '@symfony/autoimport';
// Registers Stimulus controllers from controllers.json and in the controllers/ directory
export const app = startStimulusApp(require.context('./controllers', true, /\.(j|t)sx?$/));

4
assets/controllers.json Normal file
View File

@@ -0,0 +1,4 @@
{
"controllers": [],
"entrypoints": []
}

View File

@@ -0,0 +1,16 @@
import { Controller } from 'stimulus';
/*
* This is an example Stimulus controller!
*
* Any element with a data-controller="hello" attribute will cause
* this controller to be executed. The name "hello" comes from the filename:
* hello_controller.js -> "hello"
*
* Delete this file or adapt it for your use!
*/
export default class extends Controller {
connect() {
this.element.textContent = 'Hello Stimulus! Edit me in assets/controllers/hello_controller.js';
}
}

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="28px" height="28px" viewBox="0 0 28 28" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Conversation Chat 1</title>
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g transform="translate(-1189.000000, -748.000000)" stroke="#DB0032" stroke-width="1.10666664">
<g transform="translate(1190.000000, 749.000000)">
<path d="M8.87546649,14.4087997 L7.76879984,14.4087997 L3.34213327,18.8354663 L3.34213327,14.4087997 L1.12879998,14.4087997 C0.517604866,14.4087997 0.0221333329,13.9133282 0.0221333329,13.3021331 L0.0221333329,1.12879998 C0.0221333329,0.517604866 0.517604866,0.0221333329 1.12879998,0.0221333329 L19.9421329,0.0221333329 C20.553328,0.0221333329 21.0487996,0.517604866 21.0487996,1.12879998 L21.0487996,7.76879984" id="Path"></path>
<path d="M11.0887998,19.9421329 C11.0887998,20.553328 11.5842713,21.0487996 12.1954664,21.0487996 L18.282133,21.0487996 L23.2621329,25.4754662 L23.2621329,21.0487996 L24.3687995,21.0487996 C24.9799946,21.0487996 25.4754662,20.553328 25.4754662,19.9421329 L25.4754662,11.0887998 C25.4754662,10.4776047 24.9799946,9.98213313 24.3687995,9.98213313 L12.1954664,9.98213313 C11.5842713,9.98213313 11.0887998,10.4776047 11.0887998,11.0887998 L11.0887998,19.9421329 Z" id="Path"></path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="28px" height="28px" viewBox="0 0 28 28" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Common File Text Info</title>
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g transform="translate(-310.000000, -748.000000)" stroke="#DB0032" stroke-width="1.14356732">
<g transform="translate(311.000000, 749.000000)">
<line x1="4.59714061" y1="9.17140987" x2="15.4610301" y2="9.17140987" id="Path"></line>
<line x1="4.59714061" y1="12.6021118" x2="11.4585445" y2="12.6021118" id="Path"></line>
<line x1="4.59714061" y1="5.74070793" x2="12.6021118" y2="5.74070793" id="Path"></line>
<line x1="4.59714061" y1="16.0328138" x2="9.17140987" y2="16.0328138" id="Path"></line>
<line x1="4.59714061" y1="19.4635157" x2="9.17140987" y2="19.4635157" id="Path"></line>
<path d="M11.4585445,26.3249196 L1.16643866,26.3249196 C0.534863873,26.3249196 0.0228713463,25.8129271 0.0228713463,25.1813523 L0.0228713463,1.16643866 C0.0228713463,0.534863873 0.534863873,0.0228713463 1.16643866,0.0228713463 L16.367879,0.0228713463 C16.6711471,0.0228713463 16.9619705,0.143461235 17.1763811,0.35793657 L21.4155851,4.59714061 C21.6300605,4.81155117 21.7506503,5.10237458 21.7506503,5.4056427 L21.7506503,9.17140987" id="Path"></path>
<path d="M12.6021118,19.4635157 C12.6021118,23.2529644 15.674067,26.3249196 19.4635157,26.3249196 C23.2529644,26.3249196 26.3249196,23.2529644 26.3249196,19.4635157 C26.3249196,15.674067 23.2529644,12.6021118 19.4635157,12.6021118 C15.674067,12.6021118 12.6021118,15.674067 12.6021118,19.4635157 Z" id="Path"></path>
<path d="M19.4635157,22.8942177 L19.4635157,18.8917321 C19.4635157,18.5759447 19.2075195,18.3199484 18.8917321,18.3199484 L17.7481647,18.3199484" id="Path"></path>
<path d="M18.6058402,15.4610301 C18.7637339,15.4610301 18.8917321,15.5890282 18.8917321,15.7469219 C18.8917321,15.9048156 18.7637339,16.0328138 18.6058402,16.0328138 C18.4479465,16.0328138 18.3199484,15.9048156 18.3199484,15.7469219 C18.3199484,15.5890282 18.4479465,15.4610301 18.6058402,15.4610301" id="Path"></path>
<line x1="17.7481647" y1="22.8942177" x2="21.1788667" y2="22.8942177" id="Path"></line>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="28px" height="28px" viewBox="0 0 28 28" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Folder Star</title>
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g transform="translate(-758.000000, -749.000000)" stroke="#DB0032" stroke-width="1.12853337">
<g transform="translate(759.000000, 750.000000)">
<path d="M22.5932382,10.179371 L22.5932382,4.53670416 C22.5932382,3.91343239 22.0879766,3.40817079 21.4647048,3.40817079 L10.312538,3.40817079 C9.88520108,3.40794258 9.49464869,3.16635928 9.30362914,2.78409183 L8.2337795,0.646649623 C8.04275994,0.264382178 7.65220755,0.0227988774 7.22487066,0.0225706675 L1.15110404,0.0225706675 C0.527832269,0.0225706675 0.0225706675,0.527832269 0.0225706675,1.15110404 L0.0225706675,18.0791047 C0.0225706675,18.7023764 0.527832269,19.207638 1.15110404,19.207638 L9.05083766,19.207638" id="Path"></path>
<path d="M20.0043826,12.9217071 L21.7411955,16.9505713 L25.1211529,16.9505713 C25.4707675,16.9373524 25.7910855,17.144921 25.92185,17.4694295 C26.0526145,17.7939379 25.9657058,18.1656034 25.7046047,18.3984796 L22.7704179,21.0121629 L24.395506,24.750994 C24.5417424,25.1016376 24.4481217,25.5064872 24.1627921,25.7573319 C23.8774626,26.0081767 23.4639555,26.0491637 23.1349342,25.8592137 L19.207638,23.6461598 L15.2803419,25.8592137 C14.9513205,26.0491637 14.5378135,26.0081767 14.2524839,25.7573319 C13.9671544,25.5064872 13.8735337,25.1016376 14.0197701,24.750994 L15.6448582,21.0121629 L12.7106714,18.3984796 C12.4487506,18.1665381 12.3607919,17.7950492 12.4908998,17.4702857 C12.6210077,17.1455222 12.9411249,16.9375181 13.2907375,16.9505713 L16.6763377,16.9505713 L18.4154076,12.9217071 C18.5730099,12.629712 18.8780825,12.4476994 19.2098951,12.4476994 C19.5417077,12.4476994 19.8467803,12.629712 20.0043826,12.9217071 Z" id="Path"></path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,84 @@
html {
position: relative;
min-height: 100%;
}
body {
font-size: 16px;
line-height: 26px;
color: #131C26;
overflow-x: hidden;
font-family: "Noto Sans";
margin-bottom: 48px;
}
.header {
&__container {
height: 379px;
background: #db0032;
}
}
.logo {
max-width: 117px;
max-height: 33px;
}
h1 {
font-size: 35px;
line-height: 44px;
font-family: 'Noto Sans';
font-weight: 500;
}
h2 {
font-size: 20px;
line-height: 24px;
font-family: 'Work Sans';
font-weight: 700;
}
a {
color: #252525;
&:hover {
color: #db0032;
text-decoration: none;
}
}
ul {
li:before {
content:"\2022";
font-size:12pt;
}
}
.footer {
position: absolute;
bottom: 0;
height: 48px;
width: 100%;
.container-fluid {
display: flex;
align-items: flex-end;
height: 100%;
}
}
.copyright {
opacity: .6;
}
.background-grey {
background-color: #f7f7f9;
}
.ezrichtext-field {
p {
margin-bottom: 0;
}
}
.description {
max-width: 625px;
}
.references {
&-list {
&-item__link {
padding-left: 15px;
}
}
}
.container--wide {
max-width: 1566px;
}

3
assets/styles/app.css Normal file
View File

@@ -0,0 +1,3 @@
body {
background-color: lightgray;
}

43
bin/console Normal file
View File

@@ -0,0 +1,43 @@
#!/usr/bin/env php
<?php
use App\Kernel;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Dotenv\Dotenv;
use Symfony\Component\ErrorHandler\Debug;
if (!in_array(PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
echo 'Warning: The console should be invoked via the CLI version of PHP, not the '.PHP_SAPI.' SAPI'.PHP_EOL;
}
set_time_limit(0);
require dirname(__DIR__).'/vendor/autoload.php';
if (!class_exists(Application::class) || !class_exists(Dotenv::class)) {
throw new LogicException('You need to add "symfony/framework-bundle" and "symfony/dotenv" as Composer dependencies.');
}
$input = new ArgvInput();
if (null !== $env = $input->getParameterOption(['--env', '-e'], null, true)) {
putenv('APP_ENV='.$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = $env);
}
if ($input->hasParameterOption('--no-debug', true)) {
putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0');
}
(new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
if ($_SERVER['APP_DEBUG']) {
umask(0000);
if (class_exists(Debug::class)) {
Debug::enable();
}
}
$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
$application = new Application($kernel);
$application->run($input);

16
bin/phpunit Normal file
View File

@@ -0,0 +1,16 @@
#!/usr/bin/env php
<?php
if (file_exists(dirname(__DIR__).'/vendor/phpunit/phpunit/phpunit')) {
require dirname(__DIR__).'/vendor/phpunit/phpunit/phpunit';
} else {
if (!file_exists(dirname(__DIR__).'/vendor/symfony/phpunit-bridge/bin/simple-phpunit.php')) {
echo "Unable to find the `simple-phpunit.php` script in `vendor/symfony/phpunit-bridge/bin/`.\n";
exit(1);
}
if (false === getenv('SYMFONY_PHPUNIT_DIR')) {
putenv('SYMFONY_PHPUNIT_DIR='.__DIR__.'/.phpunit');
}
require dirname(__DIR__).'/vendor/symfony/phpunit-bridge/bin/simple-phpunit.php';
}

View File

@@ -1,64 +1,108 @@
{
"name": "code-rhapsodie/ezdataflow-bundle",
"description": "Import/export bundle for eZ Platform based on Code-Rhapsodie Dataflow",
"type": "symfony-bundle",
"keywords": ["dataflow", "import", "export", "data processing", "ez publish", "ez platform"],
"license": "MIT",
"authors": [
{
"name": "Jérémy J.",
"email": "jeremy@code-rhapsodie.fr",
"role": "Developer"
"type": "project",
"license": "proprietary",
"minimum-stability": "stable",
"prefer-stable": true,
"require": {
"php": ">=7.3",
"code-rhapsodie/dataflow-bundle": "^3.0",
"ezsystems/ezplatform-admin-ui": "^2.3",
"ezsystems/ezplatform-kernel": "^1.3",
"ext-ctype": "*",
"ext-iconv": "*",
"composer/package-versions-deprecated": "1.11.99.2",
"doctrine/annotations": "^1.0",
"doctrine/doctrine-bundle": "~2.3.2",
"doctrine/doctrine-migrations-bundle": "^3.1",
"doctrine/orm": "^2.9",
"ibexa/oss": "3.3.4",
"phpdocumentor/reflection-docblock": "^5.2",
"sensio/framework-extra-bundle": "^5.6.1",
"symfony/asset": "5.2.*",
"symfony/console": "5.2.*",
"symfony/dotenv": "5.2.*",
"symfony/expression-language": "5.2.*",
"symfony/flex": "^1.11.0",
"symfony/form": "5.2.*",
"symfony/framework-bundle": "5.2.*",
"symfony/http-client": "5.2.*",
"symfony/intl": "5.2.*",
"symfony/mailer": "5.2.*",
"symfony/mime": "5.2.*",
"symfony/monolog-bundle": "^3.1",
"symfony/notifier": "5.2.*",
"symfony/process": "5.2.*",
"symfony/property-access": "5.2.*",
"symfony/property-info": "5.2.*",
"symfony/proxy-manager-bridge": "5.2.*",
"symfony/security-bundle": "5.2.*",
"symfony/serializer": "5.2.*",
"symfony/string": "5.2.*",
"symfony/translation": "5.2.*",
"symfony/twig-bundle": "^5.2",
"symfony/validator": "5.2.*",
"symfony/web-link": "5.2.*",
"symfony/yaml": "5.2.*",
"twig/extra-bundle": "^2.12|^3.0",
"twig/twig": "^2.12|^3.0"
},
"require-dev": {
"phpunit/phpunit": "^9.5",
"symfony/browser-kit": "^5.2",
"symfony/css-selector": "^5.2",
"symfony/debug-bundle": "^5.2",
"symfony/maker-bundle": "^1.26.1",
"symfony/phpunit-bridge": "^5.3",
"symfony/stopwatch": "^5.2",
"symfony/var-dumper": "^5.2",
"symfony/web-profiler-bundle": "^5.2"
},
"config": {
"optimize-autoloader": true,
"preferred-install": {
"*": "dist"
},
{
"name": "Jean-Baptiste Nahan",
"email": "jean-baptiste@code-rhapsodie.fr",
"role": "Developer"
},
{
"name": "Manuel Farrica",
"email": "manuel@code-rhapsodie.fr",
"role": "Developer"
},
{
"name": "Code Rhapsodie",
"homepage": "https://www.code-rhapsodie.fr/"
},
{
"name": "Other contributors",
"homepage": "https://github.com/code-rhapsodie/ezdataflow-bundle/graphs/contributors"
}
],
"sort-packages": true
},
"autoload": {
"psr-4": {
"CodeRhapsodie\\EzDataflowBundle\\": "src/"
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"CodeRhapsodie\\EzDataflowBundle\\Tests\\": "tests/"
"App\\Tests\\": "tests/"
}
},
"require": {
"php": "^7.1",
"code-rhapsodie/dataflow-bundle": "^3.0",
"ezsystems/ezplatform-admin-ui": "^2.3",
"ezsystems/ezplatform-kernel": "^1.3"
"replace": {
"symfony/polyfill-ctype": "*",
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php72": "*"
},
"require-dev": {
"phpunit/phpunit": "^7||^8||^9",
"doctrine/dbal": "^2.0"
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd",
"bazinga:js-translation:dump %PUBLIC_DIR%/assets --merge-domains": "symfony-cmd",
"yarn install": "script",
"ibexa:encore:compile": "symfony-cmd"
},
"post-install-cmd": [
"@auto-scripts"
],
"post-update-cmd": [
"@auto-scripts"
]
},
"minimum-stability": "dev",
"prefer-stable": true,
"config": {
"sort-packages": true
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"branch-alias": {
"dev-master": "2.x-dev",
"dev-v1.x": "1.x-dev"
"symfony": {
"allow-contrib": true,
"require": "5.2.*",
"endpoint": "https://flex.ibexa.co"
}
}
},
"name": "ibexa/oss-skeleton"
}

15449
composer.lock generated Normal file

File diff suppressed because it is too large Load Diff

55
config/bundles.php Normal file
View File

@@ -0,0 +1,55 @@
<?php
return [
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true],
Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true],
Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true],
BabDev\PagerfantaBundle\BabDevPagerfantaBundle::class => ['all' => true],
FOS\HttpCacheBundle\FOSHttpCacheBundle::class => ['all' => true],
Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true],
Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle::class => ['all' => true],
Overblog\GraphiQLBundle\OverblogGraphiQLBundle::class => ['dev' => true],
Lexik\Bundle\JWTAuthenticationBundle\LexikJWTAuthenticationBundle::class => ['all' => true],
Knp\Bundle\MenuBundle\KnpMenuBundle::class => ['all' => true],
Hautelook\TemplatedUriBundle\HautelookTemplatedUriBundle::class => ['all' => true],
FOS\JsRoutingBundle\FOSJsRoutingBundle::class => ['all' => true],
JMS\TranslationBundle\JMSTranslationBundle::class => ['all' => true],
Oneup\FlysystemBundle\OneupFlysystemBundle::class => ['all' => true],
Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true],
Liip\ImagineBundle\LiipImagineBundle::class => ['all' => true],
Bazinga\Bundle\JsTranslationBundle\BazingaJsTranslationBundle::class => ['all' => true],
Overblog\GraphQLBundle\OverblogGraphQLBundle::class => ['all' => true],
eZ\Bundle\EzPublishCoreBundle\EzPublishCoreBundle::class => ['all' => true],
eZ\Bundle\EzPublishLegacySearchEngineBundle\EzPublishLegacySearchEngineBundle::class => ['all' => true],
eZ\Bundle\EzPublishIOBundle\EzPublishIOBundle::class => ['all' => true],
eZ\Bundle\EzPublishDebugBundle\EzPublishDebugBundle::class => ['dev' => true, 'test' => true, 'behat' => true],
EzSystems\PlatformHttpCacheBundle\EzSystemsPlatformHttpCacheBundle::class => ['all' => true],
EzSystems\EzPlatformRestBundle\EzPlatformRestBundle::class => ['all' => true],
EzSystems\EzPlatformCoreBundle\EzPlatformCoreBundle::class => ['all' => true],
EzSystems\EzPlatformSolrSearchEngineBundle\EzSystemsEzPlatformSolrSearchEngineBundle::class => ['all' => true],
EzSystems\EzSupportToolsBundle\EzSystemsEzSupportToolsBundle::class => ['all' => true],
EzSystems\EzPlatformCronBundle\EzPlatformCronBundle::class => ['all' => true],
EzSystems\PlatformInstallerBundle\EzSystemsPlatformInstallerBundle::class => ['all' => true],
EzSystems\DoctrineSchemaBundle\DoctrineSchemaBundle::class => ['all' => true],
EzSystems\EzPlatformContentFormsBundle\EzPlatformContentFormsBundle::class => ['all' => true],
EzSystems\EzPlatformDesignEngineBundle\EzPlatformDesignEngineBundle::class => ['all' => true],
EzSystems\EzPlatformStandardDesignBundle\EzPlatformStandardDesignBundle::class => ['all' => true],
EzSystems\EzPlatformRichTextBundle\EzPlatformRichTextBundle::class => ['all' => true],
EzSystems\EzPlatformAdminUiBundle\EzPlatformAdminUiBundle::class => ['all' => true],
EzSystems\EzPlatformUserBundle\EzPlatformUserBundle::class => ['all' => true],
EzSystems\EzPlatformAdminUiAssetsBundle\EzPlatformAdminUiAssetsBundle::class => ['all' => true],
EzSystems\EzPlatformEncoreBundle\EzSystemsEzPlatformEncoreBundle::class => ['all' => true],
EzSystems\EzPlatformMatrixFieldtypeBundle\EzPlatformMatrixFieldtypeBundle::class => ['all' => true],
EzSystems\EzPlatformGraphQL\EzSystemsEzPlatformGraphQLBundle::class => ['all' => true],
EzSystems\EzPlatformQueryFieldType\Symfony\EzSystemsEzPlatformQueryFieldTypeBundle::class => ['all' => true],
Ibexa\Platform\Bundle\Search\IbexaPlatformSearchBundle::class => ['all' => true],
Ibexa\Platform\Bundle\Assets\IbexaPlatformAssetsBundle::class => ['all' => true],
];

0
config/graphql/types/.gitignore vendored Normal file
View File

View File

@@ -0,0 +1,30 @@
ArticleContent:
type: object
inherits:
- AbstractDomainContent
config:
interfaces:
- DomainContent
- Node
fields:
title:
type: String
resolve: '@=resolver("DomainFieldValue", [value, "title"])'
shortTitle:
type: String
resolve: '@=resolver("DomainFieldValue", [value, "short_title"])'
author:
type: '[AuthorFieldValue]'
resolve: '@=resolver("DomainFieldValue", [value, "author"]).authors'
intro:
type: RichTextFieldValue
resolve: '@=resolver("DomainFieldValue", [value, "intro"])'
body:
type: RichTextFieldValue
resolve: '@=resolver("DomainFieldValue", [value, "body"])'
enableComments:
type: Boolean
resolve: '@=resolver("DomainFieldValue", [value, "enable_comments"]).bool'
image:
type: DomainContent
resolve: '@=resolver("DomainRelationFieldValue", [resolver("DomainFieldValue", [value, "image"]), false])'

View File

@@ -0,0 +1,6 @@
ArticleContentConnection:
type: relay-connection
inherits:
- DomainContentByIdentifierConnection
config:
nodeType: ArticleContent

View File

@@ -0,0 +1,18 @@
ArticleContentCreateInput:
type: input-object
config:
fields:
title:
type: String!
shortTitle:
type: String
author:
type: '[AuthorInput]'
intro:
type: RichTextFieldInput!
body:
type: RichTextFieldInput
enableComments:
type: Boolean
image:
type: Int

View File

@@ -0,0 +1,29 @@
ArticleContentType:
type: object
inherits:
- BaseDomainContentType
config:
interfaces:
- DomainContentType
fields:
title:
type: TextLineFieldDefinition
resolve: '@=value.getFieldDefinition("title")'
shortTitle:
type: TextLineFieldDefinition
resolve: '@=value.getFieldDefinition("short_title")'
author:
type: MatrixFieldDefinition
resolve: '@=value.getFieldDefinition("author")'
intro:
type: MatrixFieldDefinition
resolve: '@=value.getFieldDefinition("intro")'
body:
type: MatrixFieldDefinition
resolve: '@=value.getFieldDefinition("body")'
enableComments:
type: CheckboxFieldDefinition
resolve: '@=value.getFieldDefinition("enable_comments")'
image:
type: RelationFieldDefinition
resolve: '@=value.getFieldDefinition("image")'

View File

@@ -0,0 +1,18 @@
ArticleContentUpdateInput:
type: input-object
config:
fields:
title:
type: String
shortTitle:
type: String
author:
type: '[AuthorInput]'
intro:
type: RichTextFieldInput
body:
type: RichTextFieldInput
enableComments:
type: Boolean
image:
type: Int

View File

@@ -0,0 +1,16 @@
ContentTypeIdentifier:
type: enum
config:
values:
article:
description: 'No description available'
folder:
description: 'No description available'
user:
description: 'No description available'
user_group:
description: 'No description available'
file:
description: 'No description available'
image:
description: 'No description available'

View File

@@ -0,0 +1,15 @@
Domain:
type: object
inherits:
- Platform
config:
fields:
content:
type: DomainGroupContent
resolve: '@=resolver("ContentTypeGroupByIdentifier", ["Content"])'
users:
type: DomainGroupUsers
resolve: '@=resolver("ContentTypeGroupByIdentifier", ["Users"])'
media:
type: DomainGroupMedia
resolve: '@=resolver("ContentTypeGroupByIdentifier", ["Media"])'

View File

@@ -0,0 +1,102 @@
DomainContentMutation:
type: object
inherits:
- PlatformMutation
config:
fields:
createArticle:
type: ArticleContent!
resolve: '@=mutation("CreateDomainContent", [args["input"], "article", args["parentLocationId"], args["language"]])'
args:
input: { type: ArticleContentCreateInput! }
language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' }
parentLocationId: { type: Int! }
updateArticle:
type: ArticleContent!
resolve: '@=mutation("UpdateDomainContent", [args["input"], args, args["versionNo"], args["language"]])'
args:
input: { type: ArticleContentUpdateInput! }
language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' }
id: { type: ID, description: 'ID of the content item to update' }
contentId: { type: Int, description: 'Repository content ID of the content item to update' }
versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' }
createFolder:
type: FolderContent!
resolve: '@=mutation("CreateDomainContent", [args["input"], "folder", args["parentLocationId"], args["language"]])'
args:
input: { type: FolderContentCreateInput! }
language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' }
parentLocationId: { type: Int! }
updateFolder:
type: FolderContent!
resolve: '@=mutation("UpdateDomainContent", [args["input"], args, args["versionNo"], args["language"]])'
args:
input: { type: FolderContentUpdateInput! }
language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' }
id: { type: ID, description: 'ID of the content item to update' }
contentId: { type: Int, description: 'Repository content ID of the content item to update' }
versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' }
createUser:
type: UserContent!
resolve: '@=mutation("CreateDomainContent", [args["input"], "user", args["parentLocationId"], args["language"]])'
args:
input: { type: UserContentCreateInput! }
language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' }
parentLocationId: { type: Int! }
updateUser:
type: UserContent!
resolve: '@=mutation("UpdateDomainContent", [args["input"], args, args["versionNo"], args["language"]])'
args:
input: { type: UserContentUpdateInput! }
language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' }
id: { type: ID, description: 'ID of the content item to update' }
contentId: { type: Int, description: 'Repository content ID of the content item to update' }
versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' }
createUserGroup:
type: UserGroupContent!
resolve: '@=mutation("CreateDomainContent", [args["input"], "user_group", args["parentLocationId"], args["language"]])'
args:
input: { type: UserGroupContentCreateInput! }
language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' }
parentLocationId: { type: Int! }
updateUserGroup:
type: UserGroupContent!
resolve: '@=mutation("UpdateDomainContent", [args["input"], args, args["versionNo"], args["language"]])'
args:
input: { type: UserGroupContentUpdateInput! }
language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' }
id: { type: ID, description: 'ID of the content item to update' }
contentId: { type: Int, description: 'Repository content ID of the content item to update' }
versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' }
createFile:
type: FileContent!
resolve: '@=mutation("CreateDomainContent", [args["input"], "file", args["parentLocationId"], args["language"]])'
args:
input: { type: FileContentCreateInput! }
language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' }
parentLocationId: { type: Int! }
updateFile:
type: FileContent!
resolve: '@=mutation("UpdateDomainContent", [args["input"], args, args["versionNo"], args["language"]])'
args:
input: { type: FileContentUpdateInput! }
language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' }
id: { type: ID, description: 'ID of the content item to update' }
contentId: { type: Int, description: 'Repository content ID of the content item to update' }
versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' }
createImage:
type: ImageContent!
resolve: '@=mutation("CreateDomainContent", [args["input"], "image", args["parentLocationId"], args["language"]])'
args:
input: { type: ImageContentCreateInput! }
language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' }
parentLocationId: { type: Int! }
updateImage:
type: ImageContent!
resolve: '@=mutation("UpdateDomainContent", [args["input"], args, args["versionNo"], args["language"]])'
args:
input: { type: ImageContentUpdateInput! }
language: { type: RepositoryLanguage!, description: 'The language the content should be created/updated in.' }
id: { type: ID, description: 'ID of the content item to update' }
contentId: { type: Int, description: 'Repository content ID of the content item to update' }
versionNo: { type: Int, description: 'Optional version number to update. If it is a draft, it is saved, not published. If it is archived, it is used as the source version for the update, to complete missing fields.' }

View File

@@ -0,0 +1,41 @@
DomainGroupContent:
type: object
inherits:
- DomainContentTypeGroup
config:
fields:
_types:
type: DomainGroupContentTypes
resolve: { }
articles:
type: ArticleContentConnection
description: 'No description available'
resolve: '@=resolver("SearchContentOfTypeAsConnection", ["article", args])'
argsBuilder: 'Relay::Connection'
args:
query: { type: ContentSearchQuery, description: 'A Content query used to filter results' }
sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' }
article:
type: ArticleContent
description: 'No description available'
resolve: '@=resolver("DomainContentItem", [args, "article"])'
args:
id: { type: Int, description: 'Content ID of the article' }
remoteId: { type: String, description: 'Content remote ID of the article' }
locationId: { type: Int, description: 'Location ID of the article' }
folders:
type: FolderContentConnection
description: 'No description available'
resolve: '@=resolver("SearchContentOfTypeAsConnection", ["folder", args])'
argsBuilder: 'Relay::Connection'
args:
query: { type: ContentSearchQuery, description: 'A Content query used to filter results' }
sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' }
folder:
type: FolderContent
description: 'No description available'
resolve: '@=resolver("DomainContentItem", [args, "folder"])'
args:
id: { type: Int, description: 'Content ID of the folder' }
remoteId: { type: String, description: 'Content remote ID of the folder' }
locationId: { type: Int, description: 'Location ID of the folder' }

View File

@@ -0,0 +1,10 @@
DomainGroupContentTypes:
type: object
config:
fields:
article:
type: ArticleContentType
resolve: '@=resolver("ContentType", [{"identifier": "article"}])'
folder:
type: FolderContentType
resolve: '@=resolver("ContentType", [{"identifier": "folder"}])'

View File

@@ -0,0 +1,41 @@
DomainGroupMedia:
type: object
inherits:
- DomainContentTypeGroup
config:
fields:
_types:
type: DomainGroupMediaTypes
resolve: { }
files:
type: FileContentConnection
description: 'No description available'
resolve: '@=resolver("SearchContentOfTypeAsConnection", ["file", args])'
argsBuilder: 'Relay::Connection'
args:
query: { type: ContentSearchQuery, description: 'A Content query used to filter results' }
sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' }
file:
type: FileContent
description: 'No description available'
resolve: '@=resolver("DomainContentItem", [args, "file"])'
args:
id: { type: Int, description: 'Content ID of the file' }
remoteId: { type: String, description: 'Content remote ID of the file' }
locationId: { type: Int, description: 'Location ID of the file' }
images:
type: ImageContentConnection
description: 'No description available'
resolve: '@=resolver("SearchContentOfTypeAsConnection", ["image", args])'
argsBuilder: 'Relay::Connection'
args:
query: { type: ContentSearchQuery, description: 'A Content query used to filter results' }
sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' }
image:
type: ImageContent
description: 'No description available'
resolve: '@=resolver("DomainContentItem", [args, "image"])'
args:
id: { type: Int, description: 'Content ID of the image' }
remoteId: { type: String, description: 'Content remote ID of the image' }
locationId: { type: Int, description: 'Location ID of the image' }

View File

@@ -0,0 +1,10 @@
DomainGroupMediaTypes:
type: object
config:
fields:
file:
type: FileContentType
resolve: '@=resolver("ContentType", [{"identifier": "file"}])'
image:
type: ImageContentType
resolve: '@=resolver("ContentType", [{"identifier": "image"}])'

View File

@@ -0,0 +1,41 @@
DomainGroupUsers:
type: object
inherits:
- DomainContentTypeGroup
config:
fields:
_types:
type: DomainGroupUsersTypes
resolve: { }
users:
type: UserContentConnection
description: 'No description available'
resolve: '@=resolver("SearchContentOfTypeAsConnection", ["user", args])'
argsBuilder: 'Relay::Connection'
args:
query: { type: ContentSearchQuery, description: 'A Content query used to filter results' }
sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' }
user:
type: UserContent
description: 'No description available'
resolve: '@=resolver("DomainContentItem", [args, "user"])'
args:
id: { type: Int, description: 'Content ID of the user' }
remoteId: { type: String, description: 'Content remote ID of the user' }
locationId: { type: Int, description: 'Location ID of the user' }
userGroups:
type: UserGroupContentConnection
description: 'No description available'
resolve: '@=resolver("SearchContentOfTypeAsConnection", ["user_group", args])'
argsBuilder: 'Relay::Connection'
args:
query: { type: ContentSearchQuery, description: 'A Content query used to filter results' }
sortBy: { type: '[SortByOptions]', description: 'A Sort Clause, or array of Clauses. Add _desc after a Clause to reverse it' }
userGroup:
type: UserGroupContent
description: 'No description available'
resolve: '@=resolver("DomainContentItem", [args, "user_group"])'
args:
id: { type: Int, description: 'Content ID of the user_group' }
remoteId: { type: String, description: 'Content remote ID of the user_group' }
locationId: { type: Int, description: 'Location ID of the user_group' }

View File

@@ -0,0 +1,10 @@
DomainGroupUsersTypes:
type: object
config:
fields:
user:
type: UserContentType
resolve: '@=resolver("ContentType", [{"identifier": "user"}])'
userGroup:
type: UserGroupContentType
resolve: '@=resolver("ContentType", [{"identifier": "user_group"}])'

View File

@@ -0,0 +1,18 @@
FileContent:
type: object
inherits:
- AbstractDomainContent
config:
interfaces:
- DomainContent
- Node
fields:
name:
type: String
resolve: '@=resolver("DomainFieldValue", [value, "name"])'
description:
type: RichTextFieldValue
resolve: '@=resolver("DomainFieldValue", [value, "description"])'
file:
type: BinaryFileFieldValue
resolve: '@=resolver("DomainFieldValue", [value, "file"])'

View File

@@ -0,0 +1,6 @@
FileContentConnection:
type: relay-connection
inherits:
- DomainContentByIdentifierConnection
config:
nodeType: FileContent

View File

@@ -0,0 +1,10 @@
FileContentCreateInput:
type: input-object
config:
fields:
name:
type: String!
description:
type: RichTextFieldInput
file:
type: BinaryFieldInput!

View File

@@ -0,0 +1,17 @@
FileContentType:
type: object
inherits:
- BaseDomainContentType
config:
interfaces:
- DomainContentType
fields:
name:
type: TextLineFieldDefinition
resolve: '@=value.getFieldDefinition("name")'
description:
type: MatrixFieldDefinition
resolve: '@=value.getFieldDefinition("description")'
file:
type: BinaryFieldDefinition
resolve: '@=value.getFieldDefinition("file")'

View File

@@ -0,0 +1,10 @@
FileContentUpdateInput:
type: input-object
config:
fields:
name:
type: String
description:
type: RichTextFieldInput
file:
type: BinaryFieldInput

View File

@@ -0,0 +1,21 @@
FolderContent:
type: object
inherits:
- AbstractDomainContent
config:
interfaces:
- DomainContent
- Node
fields:
name:
type: String
resolve: '@=resolver("DomainFieldValue", [value, "name"])'
shortName:
type: String
resolve: '@=resolver("DomainFieldValue", [value, "short_name"])'
shortDescription:
type: RichTextFieldValue
resolve: '@=resolver("DomainFieldValue", [value, "short_description"])'
description:
type: RichTextFieldValue
resolve: '@=resolver("DomainFieldValue", [value, "description"])'

View File

@@ -0,0 +1,6 @@
FolderContentConnection:
type: relay-connection
inherits:
- DomainContentByIdentifierConnection
config:
nodeType: FolderContent

View File

@@ -0,0 +1,12 @@
FolderContentCreateInput:
type: input-object
config:
fields:
name:
type: String!
shortName:
type: String
shortDescription:
type: RichTextFieldInput
description:
type: RichTextFieldInput

View File

@@ -0,0 +1,20 @@
FolderContentType:
type: object
inherits:
- BaseDomainContentType
config:
interfaces:
- DomainContentType
fields:
name:
type: TextLineFieldDefinition
resolve: '@=value.getFieldDefinition("name")'
shortName:
type: TextLineFieldDefinition
resolve: '@=value.getFieldDefinition("short_name")'
shortDescription:
type: MatrixFieldDefinition
resolve: '@=value.getFieldDefinition("short_description")'
description:
type: MatrixFieldDefinition
resolve: '@=value.getFieldDefinition("description")'

View File

@@ -0,0 +1,12 @@
FolderContentUpdateInput:
type: input-object
config:
fields:
name:
type: String
shortName:
type: String
shortDescription:
type: RichTextFieldInput
description:
type: RichTextFieldInput

View File

@@ -0,0 +1,18 @@
ImageContent:
type: object
inherits:
- AbstractDomainContent
config:
interfaces:
- DomainContent
- Node
fields:
name:
type: String
resolve: '@=resolver("DomainFieldValue", [value, "name"])'
caption:
type: RichTextFieldValue
resolve: '@=resolver("DomainFieldValue", [value, "caption"])'
image:
type: ImageFieldValue
resolve: '@=resolver("DomainFieldValue", [value, "image"])'

View File

@@ -0,0 +1,6 @@
ImageContentConnection:
type: relay-connection
inherits:
- DomainContentByIdentifierConnection
config:
nodeType: ImageContent

View File

@@ -0,0 +1,10 @@
ImageContentCreateInput:
type: input-object
config:
fields:
name:
type: String!
caption:
type: RichTextFieldInput
image:
type: ImageFieldInput

View File

@@ -0,0 +1,17 @@
ImageContentType:
type: object
inherits:
- BaseDomainContentType
config:
interfaces:
- DomainContentType
fields:
name:
type: TextLineFieldDefinition
resolve: '@=value.getFieldDefinition("name")'
caption:
type: MatrixFieldDefinition
resolve: '@=value.getFieldDefinition("caption")'
image:
type: BinaryFieldDefinition
resolve: '@=value.getFieldDefinition("image")'

View File

@@ -0,0 +1,10 @@
ImageContentUpdateInput:
type: input-object
config:
fields:
name:
type: String
caption:
type: RichTextFieldInput
image:
type: ImageFieldInput

View File

@@ -0,0 +1,10 @@
ImageVariationIdentifier:
type: enum
config:
values:
reference: { }
small: { }
tiny: { }
medium: { }
large: { }
ezplatform_admin_ui_profile_picture_user_menu: { }

View File

@@ -0,0 +1,7 @@
RepositoryLanguage:
type: enum
config:
values:
eng-GB:
value: eng-GB
description: 'English (United Kingdom)'

View File

@@ -0,0 +1,24 @@
UserContent:
type: object
inherits:
- AbstractDomainContent
config:
interfaces:
- DomainContent
- Node
fields:
firstName:
type: String
resolve: '@=resolver("DomainFieldValue", [value, "first_name"])'
lastName:
type: String
resolve: '@=resolver("DomainFieldValue", [value, "last_name"])'
userAccount:
type: String
resolve: '@=resolver("DomainFieldValue", [value, "user_account"])'
signature:
type: String
resolve: '@=resolver("DomainFieldValue", [value, "signature"])'
image:
type: ImageFieldValue
resolve: '@=resolver("DomainFieldValue", [value, "image"])'

View File

@@ -0,0 +1,6 @@
UserContentConnection:
type: relay-connection
inherits:
- DomainContentByIdentifierConnection
config:
nodeType: UserContent

View File

@@ -0,0 +1,14 @@
UserContentCreateInput:
type: input-object
config:
fields:
firstName:
type: String!
lastName:
type: String!
userAccount:
type: String!
signature:
type: String
image:
type: ImageFieldInput

View File

@@ -0,0 +1,23 @@
UserContentType:
type: object
inherits:
- BaseDomainContentType
config:
interfaces:
- DomainContentType
fields:
firstName:
type: TextLineFieldDefinition
resolve: '@=value.getFieldDefinition("first_name")'
lastName:
type: TextLineFieldDefinition
resolve: '@=value.getFieldDefinition("last_name")'
userAccount:
type: MatrixFieldDefinition
resolve: '@=value.getFieldDefinition("user_account")'
signature:
type: TextBlockFieldDefinition
resolve: '@=value.getFieldDefinition("signature")'
image:
type: BinaryFieldDefinition
resolve: '@=value.getFieldDefinition("image")'

View File

@@ -0,0 +1,14 @@
UserContentUpdateInput:
type: input-object
config:
fields:
firstName:
type: String
lastName:
type: String
userAccount:
type: String
signature:
type: String
image:
type: ImageFieldInput

View File

@@ -0,0 +1,15 @@
UserGroupContent:
type: object
inherits:
- AbstractDomainContent
config:
interfaces:
- DomainContent
- Node
fields:
name:
type: String
resolve: '@=resolver("DomainFieldValue", [value, "name"])'
description:
type: String
resolve: '@=resolver("DomainFieldValue", [value, "description"])'

View File

@@ -0,0 +1,6 @@
UserGroupContentConnection:
type: relay-connection
inherits:
- DomainContentByIdentifierConnection
config:
nodeType: UserGroupContent

View File

@@ -0,0 +1,8 @@
UserGroupContentCreateInput:
type: input-object
config:
fields:
name:
type: String!
description:
type: String

View File

@@ -0,0 +1,14 @@
UserGroupContentType:
type: object
inherits:
- BaseDomainContentType
config:
interfaces:
- DomainContentType
fields:
name:
type: TextLineFieldDefinition
resolve: '@=value.getFieldDefinition("name")'
description:
type: TextLineFieldDefinition
resolve: '@=value.getFieldDefinition("description")'

View File

@@ -0,0 +1,8 @@
UserGroupContentUpdateInput:
type: input-object
config:
fields:
name:
type: String
description:
type: String

View File

@@ -0,0 +1,3 @@
framework:
assets:
json_manifest_path: '%kernel.project_dir%/public/build/manifest.json'

View File

@@ -0,0 +1,19 @@
framework:
cache:
# Unique name of your app: used to compute stable namespaces for cache keys.
#prefix_seed: your_vendor_name/app_name
# The "app" cache stores to the filesystem by default.
# The data in this cache should persist between deploys.
# Other options include:
# Redis
#app: cache.adapter.redis
#default_redis_provider: redis://localhost
# APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues)
#app: cache.adapter.apcu
# Namespaced pools use the above "app" backend by default
#pools:
#my.dedicated.cache: null

View File

@@ -0,0 +1,25 @@
# Reusable service for memcache cache for use in generic.php and plaformsh.php on demand
#
# For further reading on setup with eZ Platform and Memcached:
# https://doc.ezplatform.com/en/latest/guide/persistence_cache/#memcached
parameters:
cache_namespace: '%env(CACHE_NAMESPACE)%'
cache_dsn: '%env(CACHE_DSN)%'
services:
cache.memcached:
public: true
parent: cache.adapter.memcached
tags:
- name: cache.pool
clearer: cache.app_clearer
# Example from vendor/symfony/symfony/src/Symfony/Component/Cache/Traits/MemcachedTrait.php:
# memcached://user:pass@localhost?weight=33'
provider: 'memcached://%cache_dsn%'
# Cache namespace prefix overriding the one used by Symfony globally
# This makes sure cache is reliably shared across whole cluster and all Symfony env's
# Can be used for blue/green deployment strategies when changes affect content cache.
# For multi db setup adapt this to be unique per pool (one pool per database)
# If you prefer default behaviour set this to null or comment out, and consider for instance:
# https://symfony.com/doc/current/reference/configuration/framework.html#prefix-seed
namespace: '%cache_namespace%'

View File

@@ -0,0 +1,32 @@
# Optimized Redis cache adapter (from: https://github.com/ezsystems/symfony-tools)
#
# On platform.sh this is setup automatically in env/plaformsh.php.
# For any other kind of use it can be enabled with CACHE_POOL, detected by env/generic.php.
#
# For further reading on setup with eZ Platform and Redis:
# https://doc.ezplatform.com/en/latest/guide/persistence_cache/#redis
parameters:
cache_namespace: '%env(CACHE_NAMESPACE)%'
cache_dsn: '%env(CACHE_DSN)%'
services:
cache.redis:
public: true
class: Symfony\Component\Cache\Adapter\RedisTagAwareAdapter
parent: cache.adapter.redis
tags:
- name: cache.pool
clearer: cache.app_clearer
# Examples from vendor/symfony/symfony/src/Symfony/Component/Cache/Traits/RedisTrait.php:
# redis://localhost:6379
# redis://secret@example.com:1234/13
# redis://secret@/var/run/redis.sock/13?persistent_id=4&class=Redis&timeout=3&retry_interval=3
# Example using Predis: redis://%cache_dsn%?class=\Predis\Client
provider: 'redis://%cache_dsn%'
# Cache namespace prefix overriding the one used by Symfony by default
# This makes sure cache is reliably shared across whole cluster and all Symfony env's
# Can be used for blue/green deployment strategies when changes affect content cache.
# For multi db setup adapt this to be unique per pool (one pool per database)
# If you prefer default behaviour set this to null or comment out, and consider for instance:
# https://symfony.com/doc/current/reference/configuration/framework.html#prefix-seed
namespace: '%cache_namespace%'

View File

@@ -0,0 +1,21 @@
# Optimized File cache adapter (from: https://github.com/ezsystems/symfony-tools)
#
# Loaded by default, for use on single server setups.
parameters:
cache_namespace: '%env(CACHE_NAMESPACE)%'
services:
cache.tagaware.filesystem:
public: true
class: Symfony\Component\Cache\Adapter\FilesystemTagAwareAdapter
parent: cache.adapter.filesystem
tags:
- name: cache.pool
clearer: cache.app_clearer
# Cache namespace prefix overriding the one used by Symfony by default
# This makes sure cache is reliably shared across whole cluster and all Symfony env's
# Can be used for blue/green deployment strategies when changes affect content cache.
# For multi db setup adapt this to be unique per pool (one pool per database)
# If you prefer default behaviour set this to null or comment out, and consider for instance:
# https://symfony.com/doc/current/reference/configuration/framework.html#prefix-seed
namespace: '%cache_namespace%'

View File

@@ -0,0 +1,4 @@
debug:
# Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser.
# See the "server:dump" command to start a new server.
dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%"

View File

@@ -0,0 +1,19 @@
monolog:
handlers:
main:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
channels: ["!event"]
# uncomment to get logging in your browser
# you may have to allow bigger header sizes in your Web server configuration
#firephp:
# type: firephp
# level: info
#chromephp:
# type: chromephp
# level: info
console:
type: console
process_psr_3_messages: false
channels: ["!event", "!doctrine", "!console"]

View File

@@ -0,0 +1,4 @@
# See https://symfony.com/doc/current/email/dev_environment.html
swiftmailer:
# send all emails to a specific address
#delivery_addresses: ['me@example.com']

View File

@@ -0,0 +1,6 @@
web_profiler:
toolbar: true
intercept_redirects: false
framework:
profiler: { only_exceptions: false }

View File

@@ -0,0 +1,48 @@
parameters:
env(DFS_DATABASE_URL): '%env(resolve:DATABASE_URL)%'
dfs_database_url: '%env(resolve:DFS_DATABASE_URL)%'
ibexa.platform.io.nfs.adapter.config:
root: '%dfs_nfs_path%'
path: '$var_dir$/$storage_dir$/'
writeFlags: ~
linkHandling: ~
permissions: [ ]
# new doctrine connection for the dfs legacy_dfs_cluster metadata handler.
doctrine:
dbal:
connections:
dfs:
# configure these for your database server
driver: '%dfs_database_driver%'
charset: '%dfs_database_charset%'
default_table_options:
charset: '%dfs_database_charset%'
collate: '%dfs_database_collation%'
url: '%dfs_database_url%'
# define the flysystem handler
oneup_flysystem:
adapters:
nfs_adapter:
custom:
service: ibexa.platform.io.nfs.adapter.site_access_aware
# define the ez handlers
ez_io:
binarydata_handlers:
nfs:
flysystem:
adapter: nfs_adapter
metadata_handlers:
dfs:
legacy_dfs_cluster:
connection: doctrine.dbal.dfs_connection
# set the application handlers
ezplatform:
system:
default:
io:
metadata_handler: dfs
binarydata_handler: nfs

View File

@@ -0,0 +1,18 @@
doctrine:
dbal:
url: '%env(resolve:DATABASE_URL)%'
# IMPORTANT: You MUST configure your server version,
# either here or in the DATABASE_URL env var (see .env file)
#server_version: '13'
orm:
auto_generate_proxy_classes: true
naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
auto_mapping: true
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App

View File

@@ -0,0 +1,6 @@
doctrine_migrations:
migrations_paths:
# namespace is arbitrary but should be different from App\Migrations
# as migrations classes should NOT be autoloaded
'DoctrineMigrations': '%kernel.project_dir%/migrations'
enable_profiler: '%kernel.debug%'

View File

@@ -0,0 +1,109 @@
parameters:
locale_fallback: en
# Identifier used to generate the CSRF token. Commenting this line will result in authentication
# issues both in AdminUI and REST calls
ezpublish_rest.csrf_token_intention: authenticate
# You can uncomment following parameters to override the setting.
# Their values correspond to the defaults being used.
# One of `legacy` (default) or `solr`
#search_engine: '%env(SEARCH_ENGINE)%'
# Session save path as used by symfony session handlers (eg. used for dsn with redis)
#ezplatform.session.save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'
# Predefined pools are located in config/packages/cache_pool/
# You can add your own cache pool to the folder mentioned above.
# In order to change the default cache_pool use environmental variable export.
# The line below must not be altered as required cache service files are resolved based on environmental config.
#cache_pool: '%env(CACHE_POOL)%'
# By default cache ttl is set to 24h, when using Varnish you can set a much higher value. High values depends on
# using EzSystemsPlatformHttpCacheBundle (default as of v1.12) which by design expires affected cache on changes
#httpcache_default_ttl: '%env(HTTPCACHE_DEFAULT_TTL)%'
# Settings for HttpCache
#purge_server: '%env(HTTPCACHE_PURGE_SERVER)%'
# Varnish invalidation/purge token (for use on platform.sh, eZ Platform Cloud and other places you can't use IP for ACL)
#varnish_invalidate_token: '%env(resolve:default::HTTPCACHE_VARNISH_INVALIDATE_TOKEN)%'
# Compile time handlers
## These are defined at compile time, and hence can't be set at runtime using env()
## config/env/generic.php takes care about letting you set them by env variables
## Session handler, by default set to file based (instead of ~) in order to be able to use %ezplatform.session.save_path%
# env: SESSION_HANDLER_ID
#ezplatform.session.handler_id: session.handler.native_file
## Purge type used by HttpCache system ("local", "varnish"/"http", and on ee also "fastly")
#purge_type: '%env(HTTPCACHE_PURGE_TYPE)%'
env(HTTPCACHE_PURGE_TYPE): local # default value to maintain BC
ezplatform:
# HttpCache settings, By default 'local' (Symfony HttpCache Proxy), by setting it to 'varnish' you can point it to Varnish
http_cache:
purge_type: '%purge_type%'
# Repositories configuration, setup default repository to support solr if enabled
repositories:
default:
storage: ~
search:
engine: '%search_engine%'
connection: default
# Siteaccess configuration, with one siteaccess per default
siteaccess:
list: [site]
groups:
site_group: [site]
default_siteaccess: site
match:
URIElement: 1
# System settings, read in following order: `default`, <siteaccess-group>, <siteacces>, and `global`
# TIP: For multisite installations organize shared config into SiteAccess groups,
# on single-site you can place shared config under "default" for simplicity as shown below.
system:
default:
# Cache pool service, needs to be different per repository (database) on multi repository install.
cache_service_name: '%cache_pool%'
# These reflect the current installers, complete installation before you change them. For changing var_dir
# it is recommended to install clean, then change setting before you start adding binary content, otherwise you'll
# need to manually modify your database data to reflect this to avoid exceptions.
var_dir: var/site
content:
# As we by default enable EzSystemsPlatformHttpCacheBundle which is designed to expire all affected cache
# on changes, and as error / redirects now have separate ttl, we easier allow ttl to be greatly increased
default_ttl: '%httpcache_default_ttl%'
# HttpCache purge server(s) setting, eg Varnish, for when ezpublish.http_cache.purge_type is set to 'varnish'.
http_cache:
purge_servers: ['%purge_server%']
varnish_invalidate_token: '%varnish_invalidate_token%'
site:
languages: [eng-GB]
url_alias:
slug_converter:
transformation: 'urlalias_lowercase'
framework:
translator: { fallback: '%locale_fallback%' }
validation: { enable_annotations: true }
default_locale: '%locale_fallback%'
esi: true
fragments: true
session:
# https://symfony.com/doc/current/reference/configuration/framework.html#handler-id
# if handler_id set to null will use default session handler from php.ini
handler_id: '%ezplatform.session.handler_id%'
save_path: '%ezplatform.session.save_path%'
# Note: eZ Platform also allows session name and session cookie configuration to be per SiteAccess, by
# default session name will be set to "eZSESSID{siteaccess_hash}" (unique session name per siteaccess)
# Further reading on sessions: http://doc.ezplatform.com/en/latest/guide/sessions/
http_method_override: true

View File

@@ -0,0 +1,30 @@
parameters:
# Admin siteaccess group name
admin_group_name: admin_group
ezplatform:
siteaccess:
list: [admin]
groups:
# WARNING: Do not remove or rename this group.
# It's used to distinguish common siteaccesses from admin ones.
# In case of multisite with multiple admin panels, remember to add any additional admin siteaccess to this group.
admin_group: [admin]
system:
admin_group:
# For admin this needs to contain all languages you want to translate content to on the given repository.
languages: [eng-GB]
content_tree_module:
contextual_tree_root_location_ids:
- 2 # Home (Content structure)
- 5 # Users
- 43 # Media
- 48 # Setup
subtree_paths:
content: /1/2/
media: /1/43/
assets:
icon_sets:
default_icons: /bundles/ezplatformadminui/img/ez-icons.svg
default_icon_set: default_icons

View File

@@ -0,0 +1,11 @@
webpack_encore:
builds:
ezplatform: "%kernel.project_dir%/public/assets/ezplatform/build"
framework:
assets:
json_manifest_path: ~
packages:
ezplatform:
json_manifest_path: '%kernel.project_dir%/public/assets/ezplatform/build/manifest.json'

View File

@@ -0,0 +1,11 @@
parameters:
database_charset: '%env(DATABASE_CHARSET)%'
# collation currently has effect on MySQL only
database_collation: '%env(DATABASE_COLLATION)%'
# If you are not using MySQL, you can comment-out this section
ez_doctrine_schema:
tables:
options:
charset: '%database_charset%'
collate: '%database_collation%'

View File

@@ -0,0 +1,22 @@
## FOSHttpCache Configuration
fos_http_cache:
cache_control:
rules:
# Make sure already cacheable (fresh) responses from eZ Platform which are errors/redirect gets lower ttl (then default_ttl)
- match:
match_response: "response.isFresh() && ( response.isServerError() || response.isClientError() || response.isRedirect() )"
headers:
overwrite: true
cache_control:
max_age: 5
s_maxage: 20
# Example of performance tuning, force TTL on 404 pages to avoid crawlers / ... taking to much load
# Should not be set to high, as cached 404's can cause issues for future routes, url aliases, wildcards, ..
- match:
match_response: "!response.isFresh() && response.isNotFound()"
headers:
overwrite: true
cache_control:
public: true
max_age: 0
s_maxage: 20

View File

@@ -0,0 +1,18 @@
# Base configuration for Solr, for more options see: https://doc.ezplatform.com/en/latest/guide/search/#solr-bundle
# Can have several connections used by each eZ Repositories in ezplatform.yml
parameters:
# Solr root endpoint, relevant if `solr` is set as search_engine
solr_dsn: '%env(SOLR_DSN)%'
solr_core: '%env(SOLR_CORE)%'
ez_search_engine_solr:
endpoints:
endpoint0:
dsn: '%solr_dsn%'
core: '%solr_core%'
connections:
default:
entry_endpoints:
- endpoint0
mapping:
default: endpoint0

View File

@@ -0,0 +1,12 @@
# You can safely delete this file to disable welcome page
ezplatform:
system:
site:
content_view:
full:
welcome_page:
template: "@ezdesign/full/welcome_page.html.twig"
match:
Id\Location: 2
params:
project_dir: '%kernel.project_dir%'

View File

@@ -0,0 +1,17 @@
# see https://symfony.com/doc/current/reference/configuration/framework.html
framework:
secret: '%env(APP_SECRET)%'
#csrf_protection: true
#http_method_override: true
# Enables session support. Note that the session will ONLY be started if you read or write from it.
# Remove or comment this section to explicitly disable session support.
session:
handler_id: null
cookie_secure: auto
cookie_samesite: lax
#esi: true
#fragments: true
php_errors:
log: true

View File

@@ -0,0 +1,8 @@
overblog_graphql:
definitions:
mappings:
auto_discover: false
types:
- type: yaml
dir: "%kernel.project_dir%/config/graphql/types"
suffix: ~

View File

@@ -0,0 +1,4 @@
lexik_jwt_authentication:
secret_key: '%env(resolve:JWT_SECRET_KEY)%'
public_key: '%env(resolve:JWT_PUBLIC_KEY)%'
pass_phrase: '%env(JWT_PASSPHRASE)%'

View File

@@ -0,0 +1,4 @@
# See dos how to configure the bundle: https://symfony.com/doc/current/bundles/LiipImagineBundle/basic-usage.html
liip_imagine:
# valid drivers options include "gd" or "gmagick" or "imagick"
driver: "gd"

View File

@@ -0,0 +1,2 @@
framework:
lock: '%env(LOCK_DSN)%'

View File

@@ -0,0 +1,3 @@
framework:
mailer:
dsn: '%env(MAILER_DSN)%'

Some files were not shown because too many files have changed in this diff Show More