Commit 5b14029d authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

renforcement des scripts de migration & nouvelle note de MAJ dans le CHL

parent d7c1bdb6
Loading
Loading
Loading
Loading
+1 −0
Changes for CHANGELOG.md: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -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.
+0 −12
Changes for admin/migration/v18Plafonds.php: 0 added lines, 12 removed lines.
Original line number Diff line number Diff line
@@ -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();
+67 −0
Changes for admin/migration/v18Privileges.php: 67 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?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