servername: 'http://local.phrasea/'
languages:
    available: []
    default: 'fr'
main:
    maintenance: false
    languages: []
    key: ''
    delete-account-require-email-confirmation: true
    cookieconsent:
        axeptio:
            enabled: false
            axeptio_id: id
            axeptio_version_fr: local-fr
            axeptio_version_en: null
            axeptio_version_de: null
            axeptio_version_du: null
    database:
        host: 127.0.0.1
        port: 3306
        user: root
        password: ''
        dbname: ab_test
        driver: pdo_mysql
        charset: UTF8
    database-test:
        driver: pdo_sqlite
        path: '/tmp/db.sqlite'
        charset: UTF8
    cache:
        type: redis
        options:
            host: localhost
            port: 6379
    search-engine:
        type: elasticsearch
        options:
            host: elasticsearch
            port: 9200
            index: ''
            shards: 3
            replicas: 0
            minScore: 2
            highlight: true
            populate_order: RECORD_ID
            populate_direction: DESC
            populate_permalinks: false
            activeTab: ''
            facets:
                _base:
                    limit: 10
                _collection:
                    limit: 10
                _doctype:
                    limit: 10
                _camera_model:
                    limit: 0
                _iso:
                    limit: 0
                _aperture:
                    limit: 0
                _shutterspeed:
                    limit: 0
                _flashfired:
                    limit: 0
                _framerate:
                    limit: 0
                _audiosamplerate:
                    limit: 0
                _videocodec:
                    limit: 0
                _audiocodec:
                    limit: 0
                _orientation:
                    limit: 0
                _colorspace:
                    limit: 0
                _mimetype:
                    limit: 0
    task-manager:
        status: started
        enabled: true
        options:
            protocol: tcp
            host: 127.0.0.1
            port: 6660
            linger: 500
        logger:
            max-files: 10
            enabled: true
            level: INFO
    session:
        type: 'file'
        options: []
        ttl: 86400
    binaries:
        ghostscript_binary: null
        php_binary: null
        unoconv_binary: null
        ffmpeg_binary: null
        ffprobe_binary: null
        mp4box_binary: null
        pdftotext_binary: null
        ffmpeg_timeout: 3600
        ffprobe_timeout: 60
        gs_timeout: 60
        mp4box_timeout: 60
        swftools_timeout: 60
        unoconv_timeout: 60
        exiftool_timeout: 60
    storage:
        subdefs: null
        cache: null
        log : null
        download: null
        lazaret: null
        caption: null
        worker_tmp_files: null
border-manager:
    enabled: true
    extension-mapping:
        otc: application/vnd.oasis.opendocument.chart-template
        ttc: application/x-font-ttf
        svg: image/svg+xml
    checkers:
        -
            type: Checker\Sha256
            enabled: true
            collections: []
            compare-ignore-collections: []
        -
            type: Checker\UUID
            enabled: true
            collections: []
            compare-ignore-collections: []
        -
            type: Checker\Colorspace
            enabled: false
            collections: []
            options:
                colorspaces: [cmyk, grayscale, rgb]
                media_types: [Image]
        -
            type: Checker\Dimension
            enabled: false
            options:
                width: 80
                height: 160
        -
            type: Checker\Extension
            enabled: false
            options:
                extensions: [jpg, jpeg, bmp, tif, gif, png, heic, pdf, doc, docx, xls, xlsx, odt, mpg, mpeg, mov, avi, mp3, mp2, mp4, m4v, m4a, mkv, hevc, aac, aiff, wav]
        -
            type: Checker\Filename
            enabled: false
            options:
                sensitive: true
            collections: []
            compare-ignore-collections: []
        -
            type: Checker\MediaType
            enabled: false
            options:
                mediatypes: [Audio, Document, Image, Video]
authentication:
    auto-create:
        templates: {  }
    providers:
        facebook:
            enabled: false
            display: false
            title: Facebook
            type: facebook
            options:
                app-id: ''
                secret: ''
                default-graph-version: 'v2.10'
        twitter:
            enabled: false
            display: false
            title: Twitter
            type: twitter
            options:
                consumer-key: ''
                consumer-secret: ''
        github:
            enabled: false
            display: false
            title: Github
            type: github
            options:
                client-id: ''
                client-secret: ''
        viadeo:
            enabled: false
            display: false
            title: Viadeo
            type: viadeo
            options:
                client-id: ''
                client-secret: ''
        linkedin:
            enabled: false
            display: false
            title: LinkedIN
            type: linkedin
            options:
                client-id: ''
                client-secret: ''
        openid-1:
            enabled: false
            display: false
            title: 'openid 1'
            type: openid
            options:
                client-id: ''
                client-secret: ''
                base-url: 'https://keycloak.phrasea.local'
                realm-name: phrasea
                exclusive: false
                icon-uri: null
                birth-group: _firstlog
                everyone-group: _everyone
                metamodel: _metamodel
                model-gpfx: _M_
                model-upfx: _U_
                debug: false
                auto-logout: false
                auto-connect-idp-name: null
registration-fields:
    -
        name: company
        required: true
    -
        name: lastname
        required: true
    -
        name: firstname
        required: true
    -
        name: geonameid
        required: true
download_async:
  enabled: true

xsendfile:
    enabled: false
    type: nginx
    mapping: []
h264-pseudo-streaming:
    enabled: false
    type: nginx
    mapping: []
plugins: []
api_cors:
  enabled: false
  allow_credentials: false
  allow_origin: []
  allow_headers: []
  allow_methods: []
  expose_headers: []
  max_age: 0
  hosts: []
api_cors_paths: []
session:
  idle: 0
  lifetime: 604800 # 1 week
registry:
    api-clients:
        api-require-ssl: false
        api-auth-token-header-only: false
        api-subdef_service: false
    actions:
        export-stamp-choice: false
        stamp-subdefs: false
    webservices:
        captcha-provider: none # none, reCaptcha , hCaptcha
crossdomain:
    site-control: 'master-only'
    allow-access-from:
        -
            domain: '*.example.com'
            secure: 'false'
        -
            domain: 'www.example.com'
            secure: 'true'
            to-ports: '507,516-523'
    allow-access-from-identity:
        -
            fingerprint-algorithm: 'sha-1'
            fingerprint: '01:23:45:67:89:ab:cd:ef:01:23:45:67:89:ab:cd:ef:01:23:45:67'
        -
            fingerprint-algorithm: 'sha256'
            fingerprint: '01:23:45:67:89:ab:cd:ef:01:23:45:67:89:ab:cd:ef:01:23:45:67'
    allow-http-request-headers-from:
        -
            domain: '*.bar.com'
            secure: 'true'
            headers: 'SOAPAction, X-Foo*'
        -
            domain: 'foo.example.com'
            secure: 'false'
            headers: 'Authorization,X-Foo*'
embed_bundle:
    video:
        player: videojs
        autoplay: false
        cover_subdef: thumbnail
        message_start: StartOfMessage
        available_speeds:
            - 1
            - 1.5
            - 3
    audio:
        player: videojs
        autoplay: false
        cover_subdef: thumbnail
    document:
        player: flexpaper
        enable_pdfjs: true
video-editor:
    ChapterVttFieldName: VideoTextTrackChapters
    seekBackwardStep: 500 # in ms
    seekForwardStep: 500  # in ms
    playbackRates:
        - 1
        - '1.5'
        - 3       
geocoding-providers:
    -
        map-provider: mapboxWebGL
        enabled: false
        public-key: ''
        map-layers:
            -
                name: Light
                value: 'mapbox://styles/mapbox/light-v9'
            -
                name: Streets
                value: 'mapbox://styles/mapbox/streets-v9'
            -
                name: Basic
                value: 'mapbox://styles/mapbox/basic-v9'
            -
                name: Satellite
                value: 'mapbox://styles/mapbox/satellite-v9'
            -
                name: Dark
                value: 'mapbox://styles/mapbox/dark-v9'
        transition-mapboxgl:
            -
                animate: true
                speed: '2.2'
                curve: '1.42'
        default-position:
            - '48.879162'
            - '2.335062'
        default-zoom: 5
        marker-default-zoom: 9
        position-fields: []
        geonames-field-mapping: true
        cityfields: City, Ville
        provincefields: Province
        countryfields: Country, Pays
workers:
    auto-cancelingJob: 24 # period in hours, not define or null to not execute
    queue:
        worker-queue:
          registry: alchemy_worker.queue_registry
          host: localhost
          port: 5672
          user: guest
          password: guest
          ssl: false
          vhost: /
          heartbeat: 60
    queues:
        writeMetadatas:           # this Q is "delayable" in case of record is locked
            ttl_retry: 1500         # overwrite 1000 ms default delay
            ttl_delayed: 10000      # overwrite 5000 ms default delay
        subdefCreation:           # this Q is "delayable" in case of record is locked
            ttl_delayed: 10000      # overwrite 5000 ms default delay
        pullAssets:
            ttl_retry: 5000
    webhook:
        timeout: 30
        verify_ssl: true

externalservice:
    pusher:
        auth_key: 'pusher-auth_key'
        secret: 'pusher-secret'
        app_id: 'pusher-app_id'
    happyscribe:
        token: token
        organization_id: 123456
        transcript_format: vtt
        subdef_source: preview


user_account:
    deleting_policies:
        email_confirmation: true

Console_logger_enabled_environments: [test]

phraseanet-service:
    uploader-service:
        push_verify_ssl: true
        pulled_target:
            pull-test-local:
                pullmodeUri: 'https://api-uploader.phrasea.local/commits?target=bdb5b019-340b-4c96-892c-d07deba5a425'
                clientSecret: 239zb7mhzmu8cgg48cgok8ww4ccokw0ck8kwow4ggw80s84koc
                clientId: pull-local-test_3pj0iu
                verify_ssl: true


order-manager:
    download-hd:
        expiration-days: null
        expiration-override: false

feedback-report:
  enabled: false
  actions:
    # if any participant has not voted, set the "incomplete" icon
    action_unvoted:
      # play this action only on those databoxes
      databoxes:
        - myDatabox
        - 555
      status_bit: 8
      value: '{% if vote.votes_unvoted > 0 %} 1 {% else %} 0 {% endif %}'

    # because records not involved in a vote should not display a red or green flag, we need 2 sb
    action_red:
      # if _any_ vote is "no", set the red flag
      status_bit: 9
      value: '{% if vote.votes_no > 0 %} 1 {% else %} 0 {% endif %}'
    action_green:
      # if _all_ votes are "yes" (=no vote is "no"), set the green flag
      status_bit: 10
      value: '{% if vote.votes_no == 0 %} 1 {% else %} 0 {% endif %}'

    action_log:
      metadata: 'Validations'
      method: "prepend"
      delimiter: "\n"
      value: 'Vote initated on {{ vote.created }} by {{ initiator ? initiator.getEmail() : "?" }} expired {{ vote.expired }} : {{ vote.voters_count }} participants, {{ vote.votes_unvoted }} unvoted, {{ vote.votes_no }} "no", {{ vote.votes_yes}} "yes".'


translator:
    jobs:
        #
        # - translate EN keywords to FR and EN
        #       nb: since we clean the destination fields, we MUST (re)write EN to EN
        # - add country to keywords, both FR/EN
        keywords:
            active: true
            databox: my_databox
            if_collection: to_translate
            if_status: x1xxxx
            actions:

                KeywordsENtoFREN:
                    active: true
                    source_field: KeywordsEN
                    source_lng: en
                    destination_fields:
                        - fr:keywordsFR
                        - en:keywordsEN
                    cleanup_source: if_translated
                    # action 1 cleans the destination fields
                    cleanup_destination: true

                CountryENtoKeywordsFREN:
                    active: true
                    source_field: CountryEN
                    source_lng: en
                    # add translated country to the keywords
                    destination_fields:
                        - fr:keywordsFR
                        - en:keywordsEN
                    cleanup_source: if_translated
                    # action 2 must NOT erase what action 1 did
                    cleanup_destination: false

            # end of job : change coll status
            set_status: 10xxxx
            set_collection: online
expiring-rights:
    version: 3
    jobs:
        # "I want to alert owners that records have expired"
        -   rights-expired-owners:
                active: false
                target: "owners"
                databox: "db_with_rights"
                collection: [ "Promo", "Selections" ]
                expire_field: ExpireDate
                prior_notice: -60
                set_status: 01xxxx
                alerts:
                    -   method: webhook
                        recipient: ["bob@a.fr", "joe@b.com"]

        # "I want to alert users who have downloaded that a document rights will expire in 60 days"
        -   rights-60-downloaders:
                active: false
                target: "downloaders"
                databox: "db_with_rights"
                collection: [ "Promo", "Selections" ]
                downloaded: [ "document", "preview" ]
                expire_field: "ExpirationDate"
                prior_notice: -60
                alerts:
                    -   method: "webhook"

        # "I want to alert users who have downloaded that a document rights has expired"
        -   rights-expired-dowloaders:
                active: false
                target: "downloaders"
                databox: "db_with_rights"
                collection: [ "Promo", "Selections" ]
                downloaded: [ "document", "preview" ]
                expire_field: "ExpirationDate"
                prior_notice: 0
                alerts:
                    -   method: "webhook"
