Skip to content
Snippets Groups Projects
Select Git revision
  • master
  • php84
  • ll-api-test
  • 6.x
  • release_6.2.0
  • modif_maintenance_phtml
  • 6.0.x
  • detached2
  • detached
  • php82
  • feature_SearchAndSelectFilter
  • 5.x
  • 4.x
  • 7.2.1
  • 7.2.0
  • 6.2.0
  • 7.1.0
  • 7.0.0
  • 1.1.1
  • 6.1.7
  • 6.1.6
  • 6.1.5
  • 6.0.16
  • 6.0.15
  • 6.1.4
  • 6.0.14
  • 6.1.3
  • 6.0.13
  • 6.1.2
  • 6.0.12
  • 6.1.1
  • 6.1.0
  • 6.0.11
33 results

README.md

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    v18Divers.php 3.33 KiB
    <?php
    
    
    
    
    
    class v18Divers extends AbstractMigration
    {
    
        public function description(): string
        {
            return "Migration OSE 17 vers OSE 18";
        }
    
    
    
        public function utile(): bool
        {
            return $this->manager->hasNew('table', 'PLAFOND_PERIMETRE');
        }
    
    
    
        public function before()
        {
            $bdd = $this->manager->getBdd();
            $c   = $this->manager->getOseAdmin()->getConsole();
    
            // test pour savoir si on est bien en V17 minimum
            if (!$this->manager->hasColumn('INTERVENANT', 'EXPORT_DATE')) {
                $c->printDie('Attention : vous devez d\'abord mettre à jour en version 17.3 AVANT de mettre à jour en version 18');
            }
    
            try {
                $c->msg('Coupure forcée de la synchronisation sur la table INTERVENANT');
                $bdd->exec("UPDATE IMPORT_TABLES SET SYNC_ENABLED = 0 WHERE TABLE_NAME = 'INTERVENANT'");
            } catch (\Exception $e) {
                // rien à faire : la contrainte a déjà du être supprimée
            }
    
            $this->sauvegardes();
    
            try {
                $c->msg('Suppression des affectations de recherche ayant des structures invalides');
                $bdd->exec("DELETE FROM AFFECTATION_RECHERCHE WHERE structure_id NOT IN (SELECT ID FROM STRUCTURE)");
            } catch (\Exception $e) {
                // rien à faire : la contrainte a déjà du être supprimée
            }
    
            try {
                $c->msg('Suppression de la contrainte TYPE_INTERVENANT_CODE_UN en prévision de sa recréation');
                $bdd->exec("ALTER TABLE TYPE_INTERVENANT DROP CONSTRAINT TYPE_INTERVENANT_CODE_UN");
            } catch (\Exception $e) {
                // rien à faire : la contrainte a déjà du être supprimée
            }
        }
    
    
    
        protected function sauvegardes()
        {
            $bdd = $this->manager->getBdd();
            $c   = $this->manager->getOseAdmin()->getConsole();
    
            $tables = [
                'INTERVENANT'                    => 'SAVE_V18_INTERVENANT',
                'INTERVENANT_DOSSIER'            => 'SAVE_V18_DOSSIER',
                'TYPE_PIECE_JOINTE_STATUT'       => 'SAVE_V18_TPJS',
                'TYPE_INTERVENTION_STATUT'       => 'SAVE_V18_TIS',
                'STATUT_INTERVENANT'             => 'SAVE_V18_STATUT',
                'PRIVILEGE'                      => 'SAVE_V18_PRIVILEGE',
                'ROLE_PRIVILEGE'                 => 'SAVE_V18_ROLE_PRIVILEGE',
                'STATUT_PRIVILEGE'               => 'SAVE_V18_STATUT_PRIVILEGE',
                'TYPE_AGREMENT_STATUT'           => 'SAVE_V18_TA_STATUT',
                'DOSSIER_CHAMP_AUTRE_PAR_STATUT' => 'SAVE_V18_DOSSIER_AUTRE_STATUT',
                'STRUCTURE'                      => 'SAVE_V18_STRUCTURE',
                'FONCTION_REFERENTIEL'           => 'SAVE_V18_REFERENTIEL',
                'PLAFOND_APPLICATION'            => 'SAVE_V18_PLAFOND_APP',
                'PLAFOND'                        => 'SAVE_V18_PLAFOND',
            ];
    
            foreach ($tables as $table => $saveTable) {
                if (!$this->manager->hasTable($table) || $this->manager->hasTable($saveTable)) {
                    unset($tables[$table]);
                }
            }
    
            $c->begin('Sauvegarde des anciennes données');
            foreach ($tables as $table => $saveTable) {
                $c->msg('Table "' . $table . '" sauvegardée en "' . $saveTable . '".');
                $this->manager->sauvegarderTable($table, $saveTable);
            }
            $c->end();
        }
    
    }