diff --git a/code/GenDbStructure/DdlGen.php b/code/GenDbStructure/DdlGen.php index d8eab90fc87117900636e38dd2ab26d2a27c0349..25aaf72b63557611473e2ea480aeceb16293d88e 100644 --- a/code/GenDbStructure/DdlGen.php +++ b/code/GenDbStructure/DdlGen.php @@ -109,20 +109,6 @@ class DdlGen } } - $this->ddl[self::VIEWS]['SRC_INTERVENANT'] = "CREATE OR REPLACE VIEW src_intervenant AS -SELECT - null source_code, - null nom_usuel, - null nom_patronymique, - null prenom, - null date_naissance, - null critere_recherche, - null structure_id, - null civilite_id, - null annee_id -FROM - dual;"; - $this->ddl[self::JOBS] = []; $this->ddl[self::JOBS]['OSE_CHARGENS_CALCUL_EFFECTIFS'] = "BEGIN diff --git a/config/application.local.php.dist b/config/application.local.php.dist index dcb5552cbc9d0cfb3ba9530c8f28634bbd49343c..bcfef4211ab1a7c8227cf03b994c0f4864cecf64 100644 --- a/config/application.local.php.dist +++ b/config/application.local.php.dist @@ -3,6 +3,9 @@ return [ /* Paramètres généraux */ 'global' => [ + /* Détermine si l'installation de OSE est faite ou non. Pour pouvoir lancer OSE, positionnez à false */ + 'modeInstallation' => false, + /* Accès en mode HTTP ou HTTPS */ 'scheme' => '', diff --git "a/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" "b/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" index 40ac3a536e95b6dd5a950f06fa99d4674e9c1631..37fcdaeb799fd84421bbe20d5616feab304ae86b 100644 Binary files "a/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" and "b/data/D\303\251ploiement/Proc\303\251dure d'installation.pdf" differ diff --git "a/data/D\303\251ploiement/ose-ddl.sql" "b/data/D\303\251ploiement/ose-ddl.sql" index 95b76999314fcf7af473fdb0b4cff217bcc6142b..8b74b0e6add13b325d2ac0e4058c9c8502cacdc0 100755 --- "a/data/D\303\251ploiement/ose-ddl.sql" +++ "b/data/D\303\251ploiement/ose-ddl.sql" @@ -8047,21 +8047,6 @@ FROM WHERE i.histo_destruction IS NULL; --- SRC_INTERVENANT -CREATE OR REPLACE VIEW src_intervenant AS -SELECT - null source_code, - null nom_usuel, - null nom_patronymique, - null prenom, - null date_naissance, - null critere_recherche, - null structure_id, - null civilite_id, - null annee_id -FROM - dual; - -------------------------------------------------- -- Vues matérialisées -------------------------------------------------- @@ -19435,7 +19420,7 @@ INSERT INTO ANNEE(ID, LIBELLE, DATE_DEBUT, DATE_FIN, ACTIVE, TAUX_HETD) VALUES ( INSERT INTO ANNEE(ID, LIBELLE, DATE_DEBUT, DATE_FIN, ACTIVE, TAUX_HETD) VALUES (2016, q'[2016/2017]', to_date('2016-09-01 12:00:00','YYYY-MM-DD HH:MI:SS'), to_date('2017-08-31 12:00:00','YYYY-MM-DD HH:MI:SS'), 1, 41.41); INSERT INTO ANNEE(ID, LIBELLE, DATE_DEBUT, DATE_FIN, ACTIVE, TAUX_HETD) VALUES (2017, q'[2017/2018]', to_date('2017-09-01 12:00:00','YYYY-MM-DD HH:MI:SS'), to_date('2018-08-31 12:00:00','YYYY-MM-DD HH:MI:SS'), 1, 41.41); INSERT INTO ANNEE(ID, LIBELLE, DATE_DEBUT, DATE_FIN, ACTIVE, TAUX_HETD) VALUES (2018, q'[2018/2019]', to_date('2018-09-01 12:00:00','YYYY-MM-DD HH:MI:SS'), to_date('2019-08-31 12:00:00','YYYY-MM-DD HH:MI:SS'), 1, 41.41); -INSERT INTO ANNEE(ID, LIBELLE, DATE_DEBUT, DATE_FIN, ACTIVE, TAUX_HETD) VALUES (2019, q'[2019/2020]', to_date('2019-09-01 12:00:00','YYYY-MM-DD HH:MI:SS'), to_date('2020-08-31 12:00:00','YYYY-MM-DD HH:MI:SS'), 0, 41.41); +INSERT INTO ANNEE(ID, LIBELLE, DATE_DEBUT, DATE_FIN, ACTIVE, TAUX_HETD) VALUES (2019, q'[2019/2020]', to_date('2019-09-01 12:00:00','YYYY-MM-DD HH:MI:SS'), to_date('2020-08-31 12:00:00','YYYY-MM-DD HH:MI:SS'), 1, 41.41); INSERT INTO ANNEE(ID, LIBELLE, DATE_DEBUT, DATE_FIN, ACTIVE, TAUX_HETD) VALUES (2020, q'[2020/2021]', to_date('2020-09-01 12:00:00','YYYY-MM-DD HH:MI:SS'), to_date('2021-08-31 12:00:00','YYYY-MM-DD HH:MI:SS'), 0, 41.41); INSERT INTO ANNEE(ID, LIBELLE, DATE_DEBUT, DATE_FIN, ACTIVE, TAUX_HETD) VALUES (2021, q'[2021/2022]', to_date('2021-09-01 12:00:00','YYYY-MM-DD HH:MI:SS'), to_date('2022-08-31 12:00:00','YYYY-MM-DD HH:MI:SS'), 0, 41.41); INSERT INTO ANNEE(ID, LIBELLE, DATE_DEBUT, DATE_FIN, ACTIVE, TAUX_HETD) VALUES (2022, q'[2022/2023]', to_date('2022-09-01 12:00:00','YYYY-MM-DD HH:MI:SS'), to_date('2023-08-31 12:00:00','YYYY-MM-DD HH:MI:SS'), 0, 41.41); @@ -19559,33 +19544,33 @@ INSERT INTO ETAT_VOLUME_HORAIRE(ID, CODE, LIBELLE, ORDRE) VALUES (ETAT_VOLUME_HO -- Table IMPORT_TABLES -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[INTERVENANT]', q'[WHERE (IMPORT_ACTION IN ('delete','update','undelete') OR STATUT_ID IN (SELECT si.id FROM statut_intervenant si JOIN type_intervenant ti ON ti.id = si.type_intervenant_id WHERE ti.code = 'P'))]', 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[AFFECTATION_RECHERCHE]', q'[WHERE INTERVENANT_ID IS NOT NULL]', 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ADRESSE_INTERVENANT]', q'[WHERE INTERVENANT_ID IS NOT NULL]', 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ELEMENT_TAUX_REGIMES]', q'[WHERE IMPORT_ACTION IN ('delete','insert','undelete')]', 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[VOLUME_HORAIRE_ENS]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[TYPE_MODULATEUR_EP]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[TYPE_INTERVENTION_EP]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[TYPE_FORMATION]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[STRUCTURE]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[SCENARIO_LIEN]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[PAYS]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[NOEUD]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[LIEN]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[GROUPE_TYPE_FORMATION]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[GRADE]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ETAPE]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ETABLISSEMENT]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ELEMENT_PEDAGOGIQUE]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[EFFECTIFS]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[DOMAINE_FONCTIONNEL]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[DEPARTEMENT]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CORPS]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CHEMIN_PEDAGOGIQUE]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CENTRE_COUT_STRUCTURE]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CENTRE_COUT]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[AFFECTATION]', NULL, 0); -INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ADRESSE_STRUCTURE]', NULL, 0); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[INTERVENANT]', q'[WHERE (IMPORT_ACTION IN ('delete','update','undelete') OR STATUT_ID IN (SELECT si.id FROM statut_intervenant si JOIN type_intervenant ti ON ti.id = si.type_intervenant_id WHERE ti.code = 'P'))]', 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[AFFECTATION_RECHERCHE]', q'[WHERE INTERVENANT_ID IS NOT NULL]', 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ADRESSE_INTERVENANT]', q'[WHERE INTERVENANT_ID IS NOT NULL]', 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ELEMENT_TAUX_REGIMES]', q'[WHERE IMPORT_ACTION IN ('delete','insert','undelete')]', 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[VOLUME_HORAIRE_ENS]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[TYPE_MODULATEUR_EP]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[TYPE_INTERVENTION_EP]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[TYPE_FORMATION]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[STRUCTURE]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[SCENARIO_LIEN]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[PAYS]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[NOEUD]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[LIEN]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[GROUPE_TYPE_FORMATION]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[GRADE]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ETAPE]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ETABLISSEMENT]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ELEMENT_PEDAGOGIQUE]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[EFFECTIFS]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[DOMAINE_FONCTIONNEL]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[DEPARTEMENT]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CORPS]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CHEMIN_PEDAGOGIQUE]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CENTRE_COUT_STRUCTURE]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[CENTRE_COUT]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[AFFECTATION]', NULL, 1); +INSERT INTO IMPORT_TABLES(TABLE_NAME, SYNC_FILTRE, SYNC_ENABLED) VALUES (q'[ADRESSE_STRUCTURE]', NULL, 1); -- Table INDICATEUR @@ -19652,6 +19637,9 @@ INSERT INTO PLAFOND(ID, CODE, LIBELLE) VALUES (PLAFOND_ID_SEQ.NEXTVAL, q'[hc-hor -- Table PLAFOND_ETAT +INSERT INTO PLAFOND_ETAT(ID, CODE, LIBELLE) VALUES (PLAFOND_ETAT_ID_SEQ.NEXTVAL, q'[desactive]', q'[Désactivé]'); +INSERT INTO PLAFOND_ETAT(ID, CODE, LIBELLE) VALUES (PLAFOND_ETAT_ID_SEQ.NEXTVAL, q'[informatif]', q'[Informatif]'); +INSERT INTO PLAFOND_ETAT(ID, CODE, LIBELLE) VALUES (PLAFOND_ETAT_ID_SEQ.NEXTVAL, q'[bloquant]', q'[Bloquant]'); -- Table PRIVILEGE @@ -28773,7 +28761,7 @@ INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOU INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Université de Limerick]', q'[Université]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1098]', SYSDATE, 1, SYSDATE, 1); INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[ Animal Health Trust]', q'[AHT]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1099]', SYSDATE, 1, SYSDATE, 1); INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Université Fédérale de Campina Grande (UFCG)]', q'[UFCG]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1101]', SYSDATE, 1, SYSDATE, 1); -INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Université Paris-Saclay]', q'[Comue]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0912230N]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Université Paris-Saclay]', q'[Saclay]', q'[075]', (SELECT id FROM source WHERE code = 'OSE'), q'[0912230N]', SYSDATE, 1, SYSDATE, 1); INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Université de Dschang]', q'[Université]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1108]', SYSDATE, 1, SYSDATE, 1); INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[SUPINFO Valenciennes Ecole Superieur d'informatique Nord Pas-de-Calais]', q'[SUPINFO VA]', q'[059]', (SELECT id FROM source WHERE code = 'OSE'), q'[0754939L]', SYSDATE, 1, SYSDATE, 1); INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[l'Ecole nationale d'ingénieurs de Tunis]', q'[ENIT]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1111]', SYSDATE, 1, SYSDATE, 1); @@ -29859,6 +29847,8 @@ INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOU INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Université Fédérale de Santa Catarina]', q'[Université]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1167]', SYSDATE, 1, SYSDATE, 1); INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[ANSES Laboratoire de Pathologie équine de Dozulé]', q'[ANSES DOZ]', q'[014]', (SELECT id FROM source WHERE code = 'OSE'), q'[ANSESDOZ]', SYSDATE, 1, SYSDATE, 1); INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[ANSES Laboratoire de Ploufragan-Plouzané]', q'[ANSESPLO]', q'[022]', (SELECT id FROM source WHERE code = 'OSE'), q'[ANSESPLO]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[CFA bureautique et métiers tertiaires]', q'[CFA LYON]', q'[069]', (SELECT id FROM source WHERE code = 'OSE'), q'[0693306U]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Institut royal de technologie de Melbourne]', q'[Univ. RMIT]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1168]', SYSDATE, 1, SYSDATE, 1); INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Université CADI AYYAD]', q'[Université]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1162]', SYSDATE, 1, SYSDATE, 1); INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Université de Koudougou]', q'[Université]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ETR1163]', SYSDATE, 1, SYSDATE, 1); INSERT INTO ETABLISSEMENT(ID, LIBELLE, LOCALISATION, DEPARTEMENT, SOURCE_ID, SOURCE_CODE, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (ETABLISSEMENT_ID_SEQ.NEXTVAL, q'[Université de Newcastle]', q'[Université]', q'[099]', (SELECT id FROM source WHERE code = 'OSE'), q'[ERT1168]', SYSDATE, 1, SYSDATE, 1); @@ -30486,7 +30476,7 @@ INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATE INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[contrat_etablissement_represente]', q'[représentée par son Président, Pierre DENISE]', q'[Contrat : représentant]', SYSDATE, 1, SYSDATE, 1); INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[contrat_civilite_president]', q'[le Président]', q'[Contrat : civilité du président (avec article)]', SYSDATE, 1, SYSDATE, 1); INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[contrat_lieu_signature]', q'[Caen]', q'[LContrat : lieu de signature]', SYSDATE, 1, SYSDATE, 1); -INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[directeur_ressources_humaines_id]', q'[4603]', q'[Directeur des Ressources humaines]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[directeur_ressources_humaines_id]', q'[labeyrie]', q'[Directeur des Ressources humaines]', SYSDATE, 1, SYSDATE, 1); INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[domaine_fonctionnel_ens_ext]', q'[14]', q'[Domaine fonctionnel à privilégier pour les enseignements pris à l'extérieur]', SYSDATE, 1, SYSDATE, 1); INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[export_pdf_services_signataire_2]', q'[Pour le Président et par délégation, le Directeur de la composante ou de service :]', q'[Signataire 2]', SYSDATE, 1, SYSDATE, 1); @@ -30494,7 +30484,7 @@ INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATE le Directeur administratif de la composante ou le Responsable administratif du service :]', q'[Signataire 1]', SYSDATE, 1, SYSDATE, 1); INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[export_pdf_services_signature_1]', q'[Attestation de l'exactitude réglementaire des services mentionnés sur le présent document]', q'[Signature 1]', SYSDATE, 1, SYSDATE, 1); INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[export_pdf_services_signature_2]', q'[Le conseil de la composante et les directeurs des unités de recherche consultés]', q'[Signature 2]', SYSDATE, 1, SYSDATE, 1); -INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[scenario_charges_services]', NULL, q'[Scénario utilisé pour confronter les charges d'enseignement au services des intervenants]', SYSDATE, 1, SYSDATE, 1); +INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[scenario_charges_services]', q'[1]', q'[Scénario utilisé pour confronter les charges d'enseignement au services des intervenants]', SYSDATE, 1, SYSDATE, 1); INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[annee]', q'[2017]', q'[Année universitaire en cours pour la saisie des services]', SYSDATE, 1, SYSDATE, 1); INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[etablissement]', q'[1104]', q'[Identifiant de l'établissement courant]', SYSDATE, 1, SYSDATE, 1); INSERT INTO PARAMETRE(ID, NOM, VALEUR, DESCRIPTION, HISTO_CREATION, HISTO_CREATEUR_ID, HISTO_MODIFICATION, HISTO_MODIFICATEUR_ID) VALUES (PARAMETRE_ID_SEQ.NEXTVAL, q'[oseuser]', q'[1]', q'[Utilisateur OSE]', SYSDATE, 1, SYSDATE, 1); diff --git a/data/Sql/Versions/v6.2.sql b/data/Sql/Versions/v6.2.sql index ec04fe595a839fae99a275cf5217ee8076dbc573..6a47fa4830a3f352289c83a1d704a2f3d97b2af6 100644 --- a/data/Sql/Versions/v6.2.sql +++ b/data/Sql/Versions/v6.2.sql @@ -9812,6 +9812,12 @@ Insert into IMPORT_TABLES (TABLE_NAME,SYNC_FILTRE,SYNC_ENABLED) values ('CENTRE_ Insert into IMPORT_TABLES (TABLE_NAME,SYNC_FILTRE,SYNC_ENABLED) values ('AFFECTATION',null,'0'); Insert into IMPORT_TABLES (TABLE_NAME,SYNC_FILTRE,SYNC_ENABLED) values ('ADRESSE_STRUCTURE',null,'0'); +Insert into PLAFOND_ETAT (ID,CODE,LIBELLE) values (plafond_etat_id_seq.nextval,'desactive','Désactivé'); +Insert into PLAFOND_ETAT (ID,CODE,LIBELLE) values (plafond_etat_id_seq.nextval,'informatif','Informatif'); +Insert into PLAFOND_ETAT (ID,CODE,LIBELLE) values (plafond_etat_id_seq.nextval,'bloquant','Bloquant'); + +-- revoir les paramètres (interface de gestion des paramètres) + update intervenant set utilisateur_code = lpad(code, 8, '0'); diff --git a/module/Application/config/aaa_module.config.php b/module/Application/config/aaa_module.config.php index f4f9b1b2e1167ca7a9f00e04b7ffd364dbe2004b..a9d9bf313a719c144552aeed2d6b508d80f411df 100755 --- a/module/Application/config/aaa_module.config.php +++ b/module/Application/config/aaa_module.config.php @@ -208,8 +208,8 @@ return [ ], 'inline_scripts' => [ '010_bootstrap' => 'vendor/bootstrap-3.3.5/js/bootstrap.min.js', - '030_util' => 'vendor/unicaen-app/js/util.js', - '040_unicaen' => 'vendor/unicaen-app/js/unicaen.js', + '030_util' => 'vendor/unicaen/app/js/util.js', + '040_unicaen' => 'vendor/unicaen/app/js/unicaen.js', '050_jquery_form' => 'vendor/jquery.form-3.51.js', // pour l'uploader Unicaen uniquement!!, '001_' => 'js/datepicker-fr.js', @@ -223,7 +223,7 @@ return [ '030_jquery-ui-theme' => 'vendor/jquery-ui-1.11.4/jquery-ui.theme.min.css', '040_bootstrap' => 'vendor/bootstrap-3.3.5/css/bootstrap.min.css', '050_bootstrap-theme' => 'vendor/bootstrap-3.3.5/css/bootstrap-theme.min.css', - '060_unicaen' => 'vendor/unicaen-app/css/unicaen.css', + '060_unicaen' => 'vendor/unicaen/app/css/unicaen.css', '111_' => 'css/cartridge.css', diff --git a/module/Application/src/Application/Processus/IntervenantProcessus.php b/module/Application/src/Application/Processus/IntervenantProcessus.php index e9dd5793c9cf3bf426c1bd32890c40ff4b37f69d..23ead56b8cabc5042ab9207e14dd48c37d5ada3f 100755 --- a/module/Application/src/Application/Processus/IntervenantProcessus.php +++ b/module/Application/src/Application/Processus/IntervenantProcessus.php @@ -61,18 +61,22 @@ class IntervenantProcessus extends AbstractProcessus $orc = implode(' OR ', $orc); $sql .= ' AND (' . $orc . ') ORDER BY nom_usuel, prenom'; - $stmt = $this->getEntityManager()->getConnection()->executeQuery($sql); - $intervenants = []; - while ($r = $stmt->fetch()) { - $intervenants[$r['SOURCE_CODE']] = [ - 'civilite' => $r['CIVILITE'], - 'nom' => $r['NOM_USUEL'], - 'prenom' => $r['PRENOM'], - 'date-naissance' => new \DateTime($r['DATE_NAISSANCE']), - 'structure' => $r['STRUCTURE'], - 'numero-personnel' => $r['SOURCE_CODE'], - ]; + + try { + $stmt = $this->getEntityManager()->getConnection()->executeQuery($sql); + while ($r = $stmt->fetch()) { + $intervenants[$r['SOURCE_CODE']] = [ + 'civilite' => $r['CIVILITE'], + 'nom' => $r['NOM_USUEL'], + 'prenom' => $r['PRENOM'], + 'date-naissance' => new \DateTime($r['DATE_NAISSANCE']), + 'structure' => $r['STRUCTURE'], + 'numero-personnel' => $r['SOURCE_CODE'], + ]; + } + }catch(\Exception $e){ + // à traiter si la vue source intervenant n'existe pas!! } return $intervenants; diff --git a/module/Application/view/application/parametre/annees.phtml b/module/Application/view/application/parametre/annees.phtml index 4b77961204217f90534b3c07affdf22e17e55c72..f3b38ec0512ff6d1079340e54fa8ac74c5c324e9 100644 --- a/module/Application/view/application/parametre/annees.phtml +++ b/module/Application/view/application/parametre/annees.phtml @@ -11,7 +11,7 @@ $annees = array_chunk($annees, 10); ?> <h1 class="page-header">Gestion des années</h1> -<?php foreach ($annees as $al): ?> +<?php foreach ($annees as $al): if ($al->getId() > 2013): ?> <div style="float:left;margin:2em"> <?php foreach ($al as $annee): ?> @@ -21,7 +21,7 @@ $annees = array_chunk($annees, 10); <?php endforeach; ?> </div> -<?php endforeach; ?> +<?php endif; endforeach; ?> <script> $('.btn-annee').click(function(){ diff --git a/public/install.php b/public/install.php index ff67242bce4611ee09ee75c3cf848d354d6d866d..77fbe035ab2310624c488b60aa9c837f199f16e3 100644 --- a/public/install.php +++ b/public/install.php @@ -66,7 +66,8 @@ <div id="contenu"> <h1>Installation OK!</h1> <p class="lead"> - Pour sortir du mode installation, veuillez passer à <i>false</i> la valeur <i>global/modeInstallation</i> de votre fichier de configuration + Pour sortir du mode installation, veuillez passer à <i>false</i> la valeur <i>global/modeInstallation</i> de votre + fichier de configuration <i><?= AppConfig::LOCAL_APPLICATION_CONFIG_FILE ?></i>. </p> </div> @@ -143,6 +144,10 @@ background-color: lightgreen; } + table.test tr.warning td.res { + background-color: papayawhip; + } + table.test tr.error td.res { background-color: lightpink; } @@ -170,8 +175,8 @@ b.username { background-color: yellow; - padding-left:1em; - padding-right:1em; + padding-left: 1em; + padding-right: 1em; border: 1px darkgoldenrod solid; font-family: "Courier New", Courier, monospace; } @@ -183,7 +188,10 @@ </style> </body> </html> -<?php die(); +<?php + + +die(); @@ -203,9 +211,30 @@ class Installateur private function makeTests() { return [ + 'Environnement' => [ + 'Lecture de la configuration globale' => function () { + if (!class_exists('AppConfig')){ + throw new \Exception('AppConfig non trouvé.'); + }else{ + return true; + } + }, + 'Droit d\'écriture sur le dossier data/cache' => function () { + $cacheDir = __DIR__ . '/../data/cache'; + + return is_writable($cacheDir) ? true : 'Répertoire data/cache non accessible en écriture'; + }, + 'Présence d\'UnoConv' => function () { + return substr(shell_exec('unoconv --version'), 0, 7) == 'unoconv' ? true : 'Commande "unoconv" introuvable'; + }, + ], 'Configuration d\'Apache' => [ 'Réécriture d\'URL activée' => function () { - return in_array('mod_rewrite', apache_get_modules()) ? true : 'Non activée'; + if (function_exists('apache_get_modules')) { + return in_array('mod_rewrite', apache_get_modules()) ? true : 'Non activée'; + } else { + return '!Test non réalisable. PHP n\'est probablement pas lancé en tant que module Apache'; + } }, ], 'Modules PHP nécessaires' => [ @@ -240,68 +269,59 @@ class Installateur return in_array('oci8', get_loaded_extensions()) ? true : 'Non installé'; }, ], - 'Environnement' => [ - 'Droit d\'écriture sur le dossier data/cache' => function () { - $cacheDir = __DIR__ . '/../data/cache'; - - return is_writable($cacheDir) ? true : 'Répertoire data/cache non accessible en écriture'; - }, - 'Présence d\'UnoConv' => function () { - return substr(shell_exec('unoconv --version'), 0, 7) == 'unoconv' ? true : 'Commande "unoconv" introuvable'; - }, - ], 'Configuration' => [ - 'Fichier de configuration local' => function () { + 'Fichier de configuration local' => function () { if (!AppConfig::get()) { $this->stop = true; - return '<abbr title="Renommez '.AppConfig::LOCAL_APPLICATION_CONFIG_FILE.'.dist en '.AppConfig::LOCAL_APPLICATION_CONFIG_FILE.'">Fichier introuvable</abbr>'; + return '<abbr title="Renommez ' . AppConfig::LOCAL_APPLICATION_CONFIG_FILE . '.dist en ' . AppConfig::LOCAL_APPLICATION_CONFIG_FILE . '">Fichier introuvable</abbr>'; } return true; }, - 'Scheme' => function () { - $value = $_SERVER['REQUEST_SCHEME']; + 'Scheme' => function () { + $value = isset($_SERVER['REQUEST_SCHEME']) ? $_SERVER['REQUEST_SCHEME'] : 'http</span> ou <span class="val">https'; - if (!AppConfig::get('global','scheme', null)){ - return 'La variable globale "scheme" n\'est pas configurée. Y placer la valeur <span class="val">'.$value.'</span>'; + if (!AppConfig::get('global', 'scheme', null)) { + return 'La variable globale "scheme" n\'est pas configurée. Y placer la valeur <span class="val">' . $value . '</span>'; } return true; }, - 'Domain' => function () { - $value = $_SERVER['HTTP_HOST'].substr($_SERVER['PHP_SELF'],0, -10); + 'Domain' => function () { + $value = (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '') + . substr(isset($_SERVER['PHP_SELF']) ? $_SERVER['PHP_SELF'] : '', 0, -10); - if (!AppConfig::get('global','domain', null)){ - return 'La variable globale "domain" n\'est pas configurée. Y placer la valeur <span class="val">'.$value.'</span>'; + if (!AppConfig::get('global', 'domain', null)) { + return 'La variable globale "domain" n\'est pas configurée. Y placer la valeur <span class="val">' . $value . '</span>'; } return true; }, - 'Accès à la base de données' => function () { + 'Accès à la base de données' => function () { $this->getEntityManager()->beginTransaction(); $this->getEntityManager()->rollback(); return true; }, - 'Test d\'existance des structures de données' => function(){ - $sql = 'SELECT table_name FROM USER_TABLES where table_name IN (\'INTERVENANT\',\'UTILISATEUR\',\'CIVILITE\',\'ELEMENT_PEDAGOGIQUE\',\'SERVICE\') ORDER BY table_name'; + 'Test d\'existance des structures de données' => function () { + $sql = 'SELECT table_name FROM USER_TABLES where table_name IN (\'INTERVENANT\',\'UTILISATEUR\',\'CIVILITE\',\'ELEMENT_PEDAGOGIQUE\',\'SERVICE\') ORDER BY table_name'; $tables = '-'; - $res = Application::$container->get(Constants::BDD)->getConnection()->fetchAll($sql); + $res = Application::$container->get(Constants::BDD)->getConnection()->fetchAll($sql); - foreach( $res as $r ){ - $tables .= $r['TABLE_NAME'].'-'; + foreach ($res as $r) { + $tables .= $r['TABLE_NAME'] . '-'; } - if ($tables != '-CIVILITE-ELEMENT_PEDAGOGIQUE-INTERVENANT-SERVICE-UTILISATEUR-'){ + if ($tables != '-CIVILITE-ELEMENT_PEDAGOGIQUE-INTERVENANT-SERVICE-UTILISATEUR-') { $this->mustInitBdd = true; throw new \Exception('Base de données non initialisée. ' - .'Merci de lancer le script de création des structures de données présent dans <i>data/Déploiement/ose-ddl.sql</i>'); + . 'Merci de lancer le script de création des structures de données présent dans <i>data/Déploiement/ose-ddl.sql</i>'); } return true; }, - 'Recherche de l\'utilisateur OSE' => function () { + 'Recherche de l\'utilisateur OSE' => function () { /** @var UtilisateurService $serviceUtilisateur */ $serviceUtilisateur = Application::$container->get(UtilisateurService::class); @@ -311,7 +331,7 @@ class Installateur throw new \Exception('Utilisateur OSE introuvable'); } }, - 'Accès au serveur LDAP' => function () { + 'Accès au serveur LDAP' => function () { /** @var LdapConnecteur $ldap */ $ldap = Application::$container->get(LdapConnecteur::class); @$ldap->rechercheUtilisateurs('utilisateur_introuvable'); @@ -326,6 +346,11 @@ class Installateur public function affTests() { + /* Au besoin, on supprime le cache de onfiguration */ + if (file_exists('data/cache/module-config-cache.php')){ + unlink('data/cache/module-config-cache.php'); + } + $tests = $this->makeTests(); foreach ($tests as $cat => $ts) { echo '<h2>' . $cat . '</h2>'; @@ -342,7 +367,18 @@ class Installateur } } - echo '<tr class="' . ($r === true ? 'passed' : 'error') . '"><td class="test">' . $test . '</td><td class="res">' . ($r === true ? 'OK' : $r) . '</td></tr>'; + $class = 'passed'; + if ($r !== true){ + + if ($r !== true && 0 ===strpos($r, '!')){ + $r = substr( $r, 1); + $class = 'warning'; + }else{ + $class='error'; + } + } + + echo '<tr class="' . $class . '"><td class="test">' . $test . '</td><td class="res">' . ($r === true ? 'OK' : $r) . '</td></tr>'; } echo '</table>'; } @@ -374,7 +410,9 @@ class Installateur if ($error) { echo '<p class="mdp-error">' . $error . '</p>'; } else { - echo '<p class="mdp-success">Le mot de passe de l\'utilisateur OSE a été réinitialisé avec succès.<br />Pour rappel, le login de l\'utilisateur OSE est <b class="username">'.$oseUser->getUsername().'</b></p>'; + echo '<p class="mdp-success">Le mot de passe de l\'utilisateur OSE a été réinitialisé avec succès.<br />Pour rappel, le login de l\'utilisateur OSE est <b class="username">' . $oseUser->getUsername() . '</b> +Une fois que vous vous serez connecté, je vous invite à nommer un ou plusieurs administrateurs de l\'application. +(page Administration / Droits d\'accès / Affectations).</p>'; } } }