Skip to content
Snippets Groups Projects
Select Git revision
  • 8a23f6d5b1022d79432734366e131af6f5d3b46f
  • master default protected
  • update-min-openvox-version-07f8cb2
  • cleanup_fixtures
  • add-openvox
  • freebsd-14
  • remove-legacy-top-scope-syntax
  • rel430
  • tests
  • revert-363-augeas-module-cleanup
  • release-4.1.0
  • puppet8
  • relax-dependencies
  • rel400
  • mode
  • puppet7
  • release-3.1.0
  • freebsd13
  • freebsd11
  • stdlib
  • centos
  • v6.0.0
  • v5.1.0
  • v5.0.0
  • v4.5.0
  • v4.4.0
  • v4.3.0
  • v4.2.1
  • v4.2.0
  • v4.1.0
  • v4.0.0
  • v3.1.0
  • v3.0.0
  • v2.0.0
  • 1.12.0
  • 1.11.0
  • 1.10.0
  • 1.9.0
  • 1.8.0
  • 1.7.0
  • 1.6.0
41 results

postfix-mailman.pp

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    global.php 19.55 KiB
    <?php
    return array(
        'translator' => array(
            'locale' => 'fr_FR',
        ),
    
        'console_commands' => [
            'Oscar\Command\\' => realpath(__DIR__.'/../../module/Oscar/src/Oscar/Command'),
        ],
    
        ////////////////////////////////////////////////////////////////////////////
        /// CONFIGURATION PAR DÉFAUT
        /// Vous pouvez surcharger ces paramètres en les redéclarants dans le
        /// fichier local.php
        'oscar' => [
            // Strategy upload de documents (Param default -> Gestion des documents Oscar système de fichiers internes)
            'strategyUpload' => [
                "class" =>\Oscar\Strategy\Upload\StrategyOscarUpload::class,
                "gedName" => \Oscar\Constantes\Constantes::GED_OSCAR,
                "typeStockage" => \Oscar\Strategy\Upload\TypeOscar::class
            ],
    
            // Niveau de log par défaut
            'log_level' => \Monolog\Logger::ERROR,
    
            // DEV : Sortie des log en mode server built-in
            'log_stdout_enabled' => false,
            'log_stdout_level' => \Monolog\Logger::DEBUG,
    
            // Par défaut, pas de socket
            'socket' => false,
    
            'vite' => [
                'mode' => 'prod',
                'src' => __DIR__ . '/../../ui',
                'dest' => __DIR__ . '/../../public/js/oscar/vite/dist',
                'base_url_dev' => 'http://127.0.0.1:5173',
                'base_url_prod' => '/js/oscar/vite/dist',
            ],
    
            // Rapports de synchronisation
            'repport_directory' => __DIR__ .'/../../data/repports/',
    
            'theme' => 'oscar',
            'themes' => ['oscar', 'adaj', 'debug'],
    
            // Paramètres liés à l'installation/initialisation d'une
            // instance d'oscar
            'install' => [
                // Liste des pays (Norme ISO 3166)
                'iso-3166' => __DIR__ . '/../../install/iso/iso-3166-final.js'
            ],
    
            'documents_process' => [
    //            'signed' => [
    //                'label' => 'Soumettre un contrat pour signature',
    //                'name' => 'contrat_a_signer_%s',
    //                'tmp_dir' => '/tmp/',
    //                'document_type' => 'Contrat signé',
    //                'document_tab' => 'Contrat signé',
    //                'letterfile' => 'esup',
    //                'process' => 'todo'
    //            ]
            ],
            /****
            // Durée par défaut des journées
            'declarationsDurations' => [
                'dayLength' => [
                    'value' => 7.5,
                    'max' => 10.0,
                    'min' => 5.0,
                    'days' => [
                        '1' => 8.0,
                        '2' => 8.0,
                        '3' => 8.0,
                        '4' => 8.0,
                        '5' => 8.0,
                        '6' => 0.0,
                        '7' => 0.0,
                    ]
                ],
    
                'weekLength' => [
                    'value' => 37.0,
                    'max' => 44.0,
                    'min' => 20.0,
                    'userChange' => false
                ],
    
                'monthLength' => [
                    'value' => 144.0,
                    'max' => 184.0,
                    'min' => 80.0,
                    'userChange' => false
                ],
    
                'weekExceptions' => [
                    '3' => 3.0,
                ],
            ],
            /******/
    
            'pcru' => [
                // Référenciel PCRU (Fichiers contenant les données officielles)
                'polecompetitivite' => __DIR__ .'/../../install/pcru-pole-competitivite.json',
                'sourcefinancement' => __DIR__ .'/../../install/pcru-sources-financement.json',
                'contracttype' => __DIR__ .'/../../install/pcru-contracts-types.json',
    
                // Paramètres de la POOL d'envoi PCRU
                'files_path' => __DIR__.'/../../tmp',       // Dossier où seront gérés les fichiers à envoyer
                'filename_contrats' => 'SitePMA_UniCaen.csv',       // Nom du fichier CSV (contrats)
                'filename_partenaires' => 'SitePMA_UniCaen.PARTENAIRES.csv', // Nom du fichier (Partenaires)
                'filename_csv_ok' => 'DEPOT-CSV.OK', // Nom du fichier (Marqueur de dépot CSV)
                'filename_pdf_ok' => 'DEPOT-PDF.OK', // Nom du fichier (Marqueur de dépot PDF)
                'pool_current' => 'waiting',                // Nom du dossier où sont stoqués les fichiers avant envoi
                'pool_effective' => 'uploaded',                // Nom du dossier où sont stoqués les fichiers avant envoi
                'pool_history' => 'send-%s',                // Nom des dossiers archivés
                'pool_log' => 'pcru.log',                   // Nom du fichier de log
                'pool_lock' => 'PCRU.LOCK',                  // Nom du fichier de verrouillage
                'filename_errors' => 'DEPOT-CSV.ERRORS.json', // Nom du fichier d'erreur PCRU
            ],
    
            'htmltopdfrenderer' => [
                'class' => \Oscar\Formatter\File\HtmlToPdfWkhtmltopdfFormatter::class,
                'arguments' => []
            ],
    
            // Pour les opérations automatique, permet d'obtenir depuis la base de donnée la devise à utiliser
            // dans les activités de recherche si rien n'est spécifié. (valeur de la colonne 'label').
            'defaultCurrency' => 'Euro',
    
            /////////////////////////////////////////////////////////////////////////////////// oscar_num_separator [string]
            /// Permet de modifier le formalisme de la numérotation automatique dans Oscar, il faut également modifier
            ///  la fonction Postgresql associée (doc/config-numerotation.md)
            ///
            'oscar_num_separator' => 'DRI',
    
            ////////////////////////////////////////////////////////////////////////////////// authPersonNormalize [boolean]
            /// Permet d'ignorer la casse lors de la jonction entre les personnes et l'authentification
            'authPersonNormalize' => false,
    
    
            // Active l'option autorisant l'importation de calendrier pour les déclarants
            'importEnable' => true,
    
            // Configuration des exports :
            // - Champ calculés : doc/activities-export.md
            'export' => [
                'computedFields' => []
            ],
    
            'gearman-job-server-host' => 'localhost',
    
    //        'export' => [
    //            'payments' => [
    //                'separator' => '$$',
    //                'persons' => '',
    //                'organizations' => 'Composante responsable,Laboratoire,Financeur'
    //            ],
    //            'computedFields' => [
    //                'laboratoriesCodes' => [
    //                    'label' => 'Laboratoire actif (code)',
    //                    'handler' => function( \Oscar\Entity\Activity $activity ){
    //                        $labos = [];
    //                        /** @var \Oscar\Entity\ActivityOrganization $activityOrganization */
    //                        foreach ($activity->getOrganizationsDeep() as $activityOrganization) {
    //                            if( $activityOrganization->getRole() == "Laboratoire" && !$activityOrganization->isOutOfDate() && !$activityOrganization->getOrganization()->isClose() ){
    //                                $labos[] = (string)$activityOrganization->getOrganization()->getCode() ?? 'N.D';
    //                            }
    //                        }
    //                        return count($labos) > 1 ? "Multilaboratoire" : implode(', ', $labos);
    //                    }
    //                ]
    //            ]
    //        ],
    
    
            ////////////////////////////////////////////////////////////////////// listPersonIncludeActivityMember [boolean]
            /// Lorsque qu'un membre d'une organisation disposant du privilège "Liste des personnes"
            /// accède à la liste du personnel de son organisation, cette denière ne propose que les personnes
            /// qualifiées avec un rôle dans l'oganisation. Cette option permet d'ajouter à cette liste
            /// les personnes impliquées dans des activités où la structure endosse un rôle principal.
            ///
            'listPersonIncludeActivityMember' => false,
    
            'allow_activity_request' => 'leader',
    
            ////////////////////////////////////////////////////////////////////// connectors [array]
            // Voir documentation ./doc/connectors.md
            'connectors' => [
                'organization' => [],
                'person' => []
            ],
    
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// Champs masqués dans la fiche activité (Saisie)
            'activity_hidden_fields' => [],
    
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            /// JOURS FERIÉS
            'closedDays' => function (&$joursFeries, $annee, $mois) {
                $feries = [
                    '1' => [
                        "$annee-1-1"    => 'Jour férié  (Nouvel an)',
                    ],
                    '2' => [],
                    '3' => [],
                    '4' => [],
                    '5' => [
                        "$annee-5-1"     => 'Jour férié (Fête du travail)',
                        "$annee-5-8"    => 'Jour ferié (Armistice 39-45)',
                    ],
                    '6' => [],
                    '7' => [
                        "$annee-7-14"    => 'Jour ferié (Fête nationnale)',
                    ],
                    '8' => [
                        "$annee-8-15"    => 'Jour ferié (Assomption)',
                    ],
                    '9' => [],
                    '10' => [],
                    '11' => [
                        "$annee-11-1"  => 'Jour ferié (La Toussaint)',
                        "$annee-11-11"  => 'Jour ferié (Armistice 14-18)',
                    ],
                    '12' => [
                        "$annee-12-25"   => 'Jour ferié (Noël)',
                    ]
                ];
    
                // Lundi de pâque
                $easterDate  = easter_date($annee);
                $easterDay   = (int)date('j', $easterDate) + 1;
                $easterMonth = date('n', $easterDate);
                $easterYear   = date('Y', $easterDate);
                $feries[$easterMonth][sprintf("%s-%s-%s", $easterYear, $easterMonth, $easterDay)] = "Jour ferié (Lundi de Pâques)";
    
                // Jeudi de l'assension
                $ascension = new DateTime(date('Y-m-d', $easterDate));
                $ascension->add(new DateInterval('P39D'));
                $feries[$ascension->format('n')][$ascension->format('Y-n-j')] = "Jour ferié (Jeudi de l'ascension)";
    
                // Pentecôte
                $pentecote = new DateTime(date('Y-m-d', $easterDate));
                $pentecote->add(new DateInterval('P50D'));
                $feries[$pentecote->format('n')][$pentecote->format('Y-n-j')] = "Jour ferié (Pentecôte)";
    
                foreach ($feries[$mois] as $jour => $message) {
                    $joursFeries[$jour] = $message;
                }
            },
    
            'closedDaysExtras' => function ($locked, $year, $month) {
            },
    
            // Mode de déclaration
            // FALSE => en pourcentage
            // TRUE => en heure
            'declarationsHours' => false,
    
            // Force une ligne de déclaration pour les périodes où un projet
            // est identifié, mais n'a aucun créneau renseigné par le déclarant
            'empty_project_require_validation' => false,
    
            'declarationsWeekend' => false,
            'declarationsWeekendOverwrite' => false,
    
            // Authorise la personnalisation du mode de déclaration
            'declarationsHoursOverwriteByAuth' => false,
    
            // Modification des horaires de la personne
            'declarationsScheduleOverwrite' => false,
            'declarationsScheduleOverwriteValidation' => 'n+1', // OU via le privilège PERSON_MANAGE_SCHEDULE
    
            // Durée standard d'une journée pour les déclarants (général)
            'declarationsDayDuration' => 7.4,
            'declarationsDayDurationMaxlength' => 9.0,
    
            // Indication visuelle de dépassement problématique
            // Journée de 8.0 heures => déclaré 8.0*.5 = 4.0
            'declarationAmplitudeMin' => .75,
    
            // Journée de 8.0 heures => 8.0*1.125 = 9.0
            'declarationAmplitudeMax' => 1.25,
    
            // Durée standards d'une semaine
            'declarationsWeekDuration' => 7.4*5,
    
    
            'declarationsWeekDurationMaxlength' => 39.0,
    
            'declarationsMonthDuration' => 144.0,
            'declarationsMonthDurationMaxlength' => 176.0,
    
            'userSubmitSchedule' => false,
            'userSubmitScheduleValidateByNp1' => true,
            'userSubmitScheduleValidateByPrivilege' => \Oscar\Provider\Privileges::PERSON_MANAGE_SCHEDULE,
    
            // Niveau d'accès à la liste du personnel
            //  - 0
            //  - 1 = N=1
            //  - 2 = Personnel dans l'oganisation
            //  - 3 = Person dans l'organisation, et dans les activités
            'listPersonnel' => 0,
    
            // Modèles horaires
            'scheduleModeles' => [
                // A définir dans local.php
            ],
    
            'horslots' => [
                ////////////////////////////////// EXEMPLE de CONFIGURATION DES HORS-LOTS
                'conges' => [ 'code' => 'conges',  'label' => 'Congés',
                    'group' => 'abs',
                    'description' => 'Congès, RTT, récupération', 'icon' => true ],
                'training' => [ 'code' => 'training',  'label' => 'Formation',
                    'group' => 'other',
                    'description' => 'Vous avez suivi un formation, DIFF, etc...', 'icon' => true ],
                'teaching' => [ 'code' => 'teaching',  'label' => 'Enseignement',
                    'group' => 'education',
                    'description' => 'Cours, TD, fonction pédagogique', 'icon' => true ],
                'sickleave' => [ 'code' => 'sickleave', 'label' => 'Arrêt maladie',
                    'group' => 'abs',
                    'description' => '', 'icon' => true ],
                'research' => [ 'code' => 'research', 'label' => 'Autre recherche',
                    'group' => 'research',
                    'description' => 'Autre projet de recherche (sans feuille de temps)', 'icon' => true ],
                'other' => [ 'code' => 'other', 'label' => 'Divers',
                    'group' => 'other',
                    'description' => 'Autre activité', 'icon' => true ],
    
            ],
    
    
            ////////////////////////////////////////////////////////////// DOCUMENTS
            // Emplacement des dossiers pour les documents
            'paths' => [
                // Documents des activités
                'document_oscar' => realpath(__DIR__.'/../../data/documents/activity/'),
    
                // Documents des demandes d'activités
                'document_request' => realpath(__DIR__.'/../../data/documents/request'),
    
                // Documents 'publiques"
                'document_admin_oscar' => realpath(__DIR__.'/../../data/documents/public/'),
    
                // Modèle de feuille de temps
                'timesheet_modele' => realpath(__DIR__.'/../../data/timesheet_model.xls'),
            ],
    
            // Convention de nommage des Avenants
            // %s ID de l'activité
            // %s Date de l'avenant (YYYY-MM-DD)
            // %s uniqid
            'avenant_filename' => 'avenant_%s_%s_%s',
    
            'generated-documents' => [
                'activity' => []
            ],
    
            // Emplacement du template pour les feuilles de temps individuelles mensuelles
            'timesheet_person_month_template' => realpath(__DIR__.'/../../data/templates/timesheet_person_month.default.html.php'),
            'timesheet_period_template' => realpath(__DIR__.'/../../data/templates/timesheet_period.default.html.php'),
    
            // Emplacement du template pour les feuilles de temps des synthèse des activités
            'timesheet_activity_synthesis_template' => realpath(__DIR__.'/../../data/templates/timesheet_activity_synthesis.default.html.php'),
    
            // Amplacement du template de rendu des dépenses prévisionnelles
            'estimated_spent_activity_template' => realpath(__DIR__.'/../../data/templates/estimated_spent_activity_.default.html.php'),
    
            // Permet de télécharger les feuilles de temps avant validation
            'timesheet_preview' => false,
    
            // Propose une version Excel pour les feuilles de temps mensuelle des personnes/activités
            'timesheet_allow_excel' => false,
    
            //
    
            // Notification par défaut
            /*** Notifications ***/
            'notifications' => [
                // Envoi automatique (ex: Lun8 (Lundis à 8 heure), Mer22 (Mercredis à 22 heures)
                'fixed' => []
            ],
    
            'spenttypeannexes' => [
                "F" => "Fonctionnement",
                "I" => "Investissement",
                "P" => "Personnel"
            ],
    
            'urlAbsolute' => 'http://localhost:8080',
    
    //        // Système d'envoi des mails
    //        'mailer' => [
    //            'transport' => [
    //                'type' => 'file',
    //                'path' => realpath(__DIR__.'/../../data/mails'),
    //            ],
    //            'administrators' => [],
    //            'from' => [ 'oscar-bot@oscar.fr' => 'Oscar Bot'],
    //            'copy' => [],
    //            'send' => false,
    //            'send_false_exception' => [],
    //            'template' => realpath(__DIR__.'/../../module/Oscar/view/mail.phtml'),
    //            'subjectPrefix' => '[OSCAR DEV]'
    //        ],
    
            ////////////////////////////////////////////////////////////////////////
            // Validation des données
            'validation' => [
                // ------------------------------------------ Validation du code PFI
                // Il s'agit de l'expression régulière utilisée par Oscar pour
                // vérifier la validité formelle du PFI saisi.
                // ex: 209ED2024
                'pfi' => '/^([0-9]{3}[A-Z]{2,3}[0-9]{2,4})|([0-9]{3}C[0-9]{3}[A-Z]{1}[FPI]?)$/mi'
            ]
        ],
    
        // Configuration de la base de données
        'doctrine' => array(
            'connection' => array(
                'orm_default' => array(
                    // Le drivers peut changer en production
                    'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver',
                    'doctrine_type_mappings' => array(
                        'enum' => 'string'
                    ),
                ),
            ),
    
            'configuration' => array(
                'orm_default' => array(
                    'metadata_cache'    => 'array',
                    'query_cache'       => 'array',
                    'result_cache'      => 'array',
                    'driver'            => 'oscar_entities',
                    'generate_proxies'  => true,
                    'proxy_dir'         => 'data/DoctrineORMModule/Proxy',
                    'proxy_namespace'   => 'DoctrineORMModule\Proxy',
                    'filters'           => array(),
                    'numeric_functions' => [
                        'timestampdiff'  =>  'Oro\ORM\Query\AST\Functions\Numeric\TimestampDiff',
                        'dayofyear'  =>      'Oro\ORM\Query\AST\Functions\SimpleFunction',
                        'dayofmonth'  =>     'Oro\ORM\Query\AST\Functions\SimpleFunction',
                        'dayofweek'  =>      'Oro\ORM\Query\AST\Functions\SimpleFunction',
                        'week'  =>           'Oro\ORM\Query\AST\Functions\SimpleFunction',
                        'day'  =>            'Oro\ORM\Query\AST\Functions\SimpleFunction',
                        'hour'  =>           'Oro\ORM\Query\AST\Functions\SimpleFunction',
                        'minute'  =>         'Oro\ORM\Query\AST\Functions\SimpleFunction',
                        'month'  =>          'Oro\ORM\Query\AST\Functions\SimpleFunction',
                        'quarter'  =>        'Oro\ORM\Query\AST\Functions\SimpleFunction',
                        'second'  =>         'Oro\ORM\Query\AST\Functions\SimpleFunction',
                        'year'  =>           'Oro\ORM\Query\AST\Functions\SimpleFunction',
                    ]
                ),
            ),
    
            'driver' => array(
                'oscar_entities' => array(
                    'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
                    'cache' => 'array',
                    'paths' => array(
                        __DIR__ . '/../../module/Oscar/src/Oscar/Entity',
                        __DIR__ . '/../../vendor/unicaen/signature/src/Entity/Db',
                    ),
                ),
            ),
        ),
    );