source: spip-zone/_plugins_/trad-lang/trunk/spip-cli/SalvatoreUpgrade.php @ 119639

Last change on this file since 119639 was 119639, checked in by Cerdic, 2 years ago

on peut forcer un dir_repo arbitraire pour les modules restant inconnus dans le fichier traductions et finir ainsi l'upgrade

  • Property svn:eol-style set to native
File size: 4.6 KB
Line 
1<?php
2
3/*
4    This file is part of Salvatore, the translation robot of Trad-lang (SPIP)
5
6    Salvatore is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 2 of the License, or
9    (at your option) any later version.
10
11    Trad-Lang is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with Trad-Lang; if not, write to the Free Software
18    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
20    Copyright 2003-2018
21        Florent Jugla <florent.jugla@eledo.com>,
22        Philippe Riviere <fil@rezo.net>,
23        Chryjs <chryjs!@!free!.!fr>,
24                kent1 <kent1@arscenic.info>
25*/
26
27/**
28 * Ce script va chercher les fichiers définis dans le fichier traductions/traductions.txt
29 *
30 */
31
32
33use Spip\Cli\Console\Command;
34use Symfony\Component\Console\Input\InputArgument;
35use Symfony\Component\Console\Input\InputInterface;
36use Symfony\Component\Console\Input\InputOption;
37use Symfony\Component\Console\Output\OutputInterface;
38use Symfony\Component\Console\Helper\ProgressHelper;
39
40
41class SalvatoreUpgrade extends Command {
42        protected function configure(){
43                $this
44                        ->setName('salvatore:upgrade')
45                        ->setDescription('Mets a jour la base de donnees et migre depuis une ancienne version')
46                        ->addOption(
47                                'traductions',
48                                null,
49                                InputOption::VALUE_REQUIRED,
50                                "Chemin vers le fichier traductions.txt a utiliser [salvatore/traductions/traductions.txt] pour mettre a jour les modules en base lors de l'upgrade\nIndiquez la valeur 'force' pour forcer la fin de la mise a jour meme si des modules restent non upgrades",
51                                null
52                        )
53                ;
54        }
55
56        protected function execute(InputInterface $input, OutputInterface $output){
57                global $spip_racine;
58                global $spip_loaded;
59
60                include_spip('inc/salvatore');
61                include_spip('inc/salvatore_lecteur');
62
63                salvatore_init(array($output, 'writeln'));
64
65
66                $output->writeln("<comment>=======================================</comment>");
67                $output->writeln("<comment>UPGRADE [Mise à jour de la base]</comment>");
68                $output->writeln("<comment>=======================================</comment>");
69
70                define('_TIME_OUT', time() + 24*3600); // pas de timeout
71                include_spip('tradlang_administrations');
72
73                // commencer par la
74                include_spip('inc/filtres');
75                $schema_declare = filtre_info_plugin_dist('tradlang', 'schema');
76                tradlang_upgrade('tradlang_base_version', $schema_declare);
77                $output->writeln("-");
78
79                $modules_todo = sql_allfetsel('distinct module','spip_tradlang_modules', "dir_module='' OR dir_module=module");
80                $modules_todo = array_column($modules_todo, 'module');
81                $n = count($modules_todo);
82                $output->writeln("$n modules en base sans dir_module");
83
84                $traductions = $input->getOption('traductions');
85                if ($traductions === 'force') {
86                        if ($n > 0) {
87                                $output->writeln("<info>Forcer un dir_module arbitraire pour les modules restant :</info>");
88                                $output->writeln(implode(', ', $modules_todo));
89                                sql_update('spip_tradlang_modules', array('dir_module' => "CONCAT('--',module)"), "dir_module='' OR dir_module=module");
90                        }
91                }
92                else {
93                        $liste_trad = salvatore_charger_fichier_traductions($traductions);
94                        $n = count($liste_trad);
95                        $output->writeln("<info>$n modules dans le fichier traductions " . ($traductions ? $traductions : '') . "</info>");
96
97                        foreach ($liste_trad as $traduction) {
98                                if (in_array($traduction['module'], $modules_todo)) {
99                                        sql_updateq('spip_tradlang_modules', array('dir_module' => $traduction['dir_module']), "module=".sql_quote($traduction['module'])." AND (dir_module='' OR dir_module=module)");
100                                        $output->writeln("  Module " . $traduction['module'] . " -> " . $traduction['dir_module']);
101                                }
102                        }
103                }
104
105
106                $modules_todo = sql_allfetsel('distinct module','spip_tradlang_modules', "dir_module='' OR dir_module=module");
107                $modules_todo = array_column($modules_todo, 'module');
108                if ($n = count($modules_todo)) {
109                        throw new Exception("Encore $n modules en base sans dir_module : \n" . implode(', ', $modules_todo)."\n\nEssayez avec un fichier traductions complementaire");
110                }
111
112
113                // et ca doit finir nicely
114                try {
115                        salvatore_verifier_base_upgradee();
116                }
117                catch (Exception $e) {
118                        throw new Exception("Upgrade incomplet : \n" . $e->getMessage()."\n\nEssayez avec un fichier traductions complementaire");
119                }
120                $output->writeln("<info>Upgrade Complet</info>");
121        }
122}
123
Note: See TracBrowser for help on using the repository browser.