From 5b14029dd3699c41b83d2e68b5dd51751f0bd3e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laurent=20L=C3=A9cluse?= <laurent.lecluse@unicaen.fr> Date: Thu, 5 May 2022 09:17:17 +0200 Subject: [PATCH] renforcement des scripts de migration & nouvelle note de MAJ dans le CHL --- CHANGELOG.md | 1 + admin/migration/v18Plafonds.php | 12 ------ admin/migration/v18Privileges.php | 67 +++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 12 deletions(-) create mode 100644 admin/migration/v18Privileges.php diff --git a/CHANGELOG.md b/CHANGELOG.md index d7e562d9fe..7264619af1 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -95,6 +95,7 @@ Objectif : Plafonds personnalisables & refonte gestion des statuts * **ATTENTION : OSE 18** ne pourra être mis à jour **qu'à partir de OSE 17.x**. Si vous utilisez une version plus ancienne de OSE, veuillez **d'abord** mettre à jour en version 17. * **ATTENTION : PHP 8.0** est requis +* **IMPORTANT** AVANT de démarrer la mise à jour, dans le répertoire de OSE, lancez la commande `php composer.phar self-update --2` à partir du répertoire de l'application. * La mise à jour des vues matérialisées MV_EXT_* ne se fait plus à la mise à jour. Il faut maintenant lancer la commande `./bin/ose maj-exports` tous les jours et donc ajouter une ligne à votre _CronTab_ (cf. [Doc INSTALL mise à jour](install.md)) * Pour bénéficier de la ventilation des heures par types d'intervention vous pouvez vous inspirer du [modèle de contrat de Caen](https://git.unicaen.fr/open-source/OSE/-/blob/master/data/modele_contrat_ventile.odt) pour adapter votre propre modèle de contrat. * Au niveau du fichier de configuration [config.local.php](config.local.php.default), vous pouvez remplir le paramètre (facultatif) ldap>systemeInformationUrl. diff --git a/admin/migration/v18Plafonds.php b/admin/migration/v18Plafonds.php index 633ac46b12..3679480757 100644 --- a/admin/migration/v18Plafonds.php +++ b/admin/migration/v18Plafonds.php @@ -58,18 +58,6 @@ class v18Plafonds extends AbstractMigration - public function preMigrationIndicateurs() - { - $bdd = $this->manager->getBdd(); - $c = $this->manager->getOseAdmin()->getConsole(); - - $c->begin('Préparation à la mise à jour des indicateurs'); - - $c->end('Préparation à la migration des indicateurs terminée'); - } - - - public function migrationParamsStructure() { $bdd = $this->manager->getBdd(); diff --git a/admin/migration/v18Privileges.php b/admin/migration/v18Privileges.php new file mode 100644 index 0000000000..73c6f19801 --- /dev/null +++ b/admin/migration/v18Privileges.php @@ -0,0 +1,67 @@ +<?php + + + + + +class v18Privileges extends AbstractMigration +{ + + public function description(): string + { + return "Migration des privilèges de OSE 17 vers OSE 18"; + } + + + + public function utile(): bool + { + if (!$this->manager->hasTable('SAVE_V18_PRIVILEGE')) { + return false; + } + + $sql = " + SELECT + count(*) c + FROM + privilege p + JOIN categorie_privilege cp ON cp.id = p.categorie_id + WHERE + cp.code = 'enseignement' + AND p.code = 'visualisation' + "; + + return $this->manager->getBdd()->select($sql)[0]['C'] == '1'; + } + + + + public function after() + { + $c = $this->manager->getOseAdmin()->getConsole(); + $bdd = $this->manager->getBdd(); + + $sql = " + INSERT INTO ROLE_PRIVILEGE (privilege_id,role_id) +SELECT + np.id privilege_id, r.id role_id +FROM + save_v18_privilege p + JOIN categorie_privilege cp ON cp.id = p.categorie_id + JOIN save_v18_role_privilege rp ON rp.privilege_id = p.id + JOIN role r ON r.id = rp.role_id AND r.code <> 'administrateur' + JOIN (SELECT 'prevu' code FROM dual UNION ALL SELECT 'realise' code FROM dual) tvh ON 1=1 + + JOIN privilege np ON np.categorie_id = cp.id AND np.code = tvh.code || '-' || p.code + LEFT JOIN role_privilege nrp ON nrp.privilege_id = np.id AND nrp.role_id = r.id +WHERE + cp.code IN ('enseignement','referentiel') + AND p.code IN ('visualisation','edition', 'validation', 'autovalidation') + AND rp.role_id <> COALESCE(nrp.role_id,0) + "; + + $bdd->exec($sql); + $c->msg('Transfert d\'anciens privilèges vers le nouveau système'); + } + +} \ No newline at end of file -- GitLab