Changeset 113910 in spip-zone


Ignore:
Timestamp:
Feb 14, 2019, 3:37:05 PM (7 months ago)
Author:
cedric@…
Message:

Quand des plugins demandes sont deja actifs, on affiche la liste des deja actifs et ensuite la liste des nouveaux a activer pour confirmation (ou pas besoin si pas de nouveaux plugins)
C'est plus comprehensible
Meme si aucun nouveau plugin n'est demande on fait un actualiserPlugins() au cas ou
Si aucun prefixe fourni, on ne pose pas de question, c'est pas tres pratique, mais on fait simplement un actualiserPlugins()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _outils_/spip-cli/trunk/src/Command/PluginsActiver.php

    r113906 r113910  
    5353                } elseif ($input->getOption('all')) {
    5454                        $this->addTodo(array_column($this->getPluginsInactifs(), 'nom'));
    55                 } else {
     55                }
     56                /* si on appelle sans plugin dans la ligne de commande c'est une simple actualisation
     57                else {
    5658                        $plugins = $this->getPrefixesFromQuestion();
    5759                        if (!$plugins) {
     
    6163                        $this->addTodo($plugins);
    6264                }
    63 
    64                 if (!$liste = $this->getTodo()) {
    65                         $this->io->care("Aucun prefixe à activer");
    66                         return;
    67                 }
    68                 $this->io->text("Liste des plugins à activer :");
    69                 $this->presenterListe($liste);
    70 
    71                 if (
    72                         !$input->getOption('yes')
     65                */
     66
     67
     68                $liste_todo = $liste_complete = $this->getTodo();
     69
     70                // regardons ce qui est deja actif pour presenter une liste humaine et utile en affichant que ce qui sera active en plus
     71                $actifs = array_column($this->getPluginsActifs(), 'prefixe');
     72                if ($deja = array_intersect($actifs, $liste_complete)) {
     73                        $liste_todo = array_diff($liste_complete, $actifs);
     74                        if ($liste_todo) {
     75                                $this->io->text("Certains préfixes demandés sont déjà actifs :");
     76                                $this->presenterListe($deja);
     77                                $this->io->text("Liste des plugins à activer :");
     78                                $this->presenterListe($liste_todo);
     79                        } else {
     80                                $this->io->check("Tous les préfixes demandés sont déjà actifs");
     81                                $this->presenterListe($liste_complete);
     82                        }
     83                }
     84                elseif ($liste_complete) {
     85                        $this->io->text("Liste des plugins à activer :");
     86                        $this->presenterListe($liste_complete);
     87                }
     88
     89                if ($liste_todo
     90                        and !$input->getOption('yes')
    7391                        and !$this->io->confirm("Les plugins listés au-dessus seront activés. Confirmez-vous ?", false)
    7492                ) {
     
    7795                }
    7896
     97                // dans tous les cas on fait au moins un actualiserPlugins()
    7998                $this->actualiserPlugins();
    80                 $this->activePlugins($liste);
     99                if ($liste_complete) {
     100                        // et on active ce qui doit etre active
     101                        $this->activePlugins($liste_complete);
     102                }
     103                else {
     104                        $this->io->check('Plugins actualisés');
     105                }
    81106        }
    82107
     
    151176
    152177        public function activePlugins($prefixes) {
    153                 if (!count($prefixes)) {
     178                if (!is_array($prefixes)) {
     179                        $prefixes = array();
     180                }
     181                $actifs = array_column($this->getPluginsActifs(), 'prefixe');
     182
     183                if ($deja = array_intersect($actifs, $prefixes)) {
     184                        $prefixes = array_diff($prefixes, $actifs);
     185                }
     186                if (!$prefixes) {
    154187                        $this->io->care("Aucun prefixe à activer");
    155188                        return true;
    156                 }
    157                 $actifs = array_column($this->getPluginsActifs(), 'prefixe');
    158 
    159                 if ($deja = array_intersect($actifs, $prefixes)) {
    160                         $prefixes = array_diff($prefixes, $actifs);
    161                         if ($prefixes) {
    162                                 $this->io->text("Certains préfixes demandés sont déjà actifs :");
    163                                 $this->presenterListe($deja);
    164                         } else {
    165                                 $this->io->check("Tous les préfixes demandés sont déjà actifs");
    166                                 return true;
    167                         }
    168189                }
    169190
Note: See TracChangeset for help on using the changeset viewer.