Changeset 114747 in spip-zone


Ignore:
Timestamp:
Apr 2, 2019, 9:33:01 PM (4 months ago)
Author:
real3t@…
Message:

[SPIP-cli] Nouvelle commande : auteurs:statut [--webmestre] [--email=xxx] [--statut=0minirezo|1comite|5poubelle|6forum] [id=NNN] [login=LLLL]
Permet de changer le statut d'un auteur en précisant qu'on le cherche par son id ou son mail, ou son login

File:
1 copied

Legend:

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

    r114712 r114747  
    1212
    1313
    14 class AuteursLister extends Command
     14class AuteursStatut extends Command
    1515{
    1616
     
    1919
    2020        protected function configure() {
    21                 $this->setName("auteurs:lister")
    22                         ->setDescription("Liste les auteurs d'un site")
    23                         ->addOption('statut', null, InputOption::VALUE_REQUIRED, 'Statut spécifique')
    24                         ->addOption('email', null, InputOption::VALUE_REQUIRED, 'email (fait un LIKE %email%')
    25                         ->addOption('webmestres', null, InputOption::VALUE_NONE, 'Ne chercher que les webmestres')
     21                $this->setName("auteurs:statut")
     22                        ->setDescription("Changer le statut d'un auteur")
     23                        ->addOption('statut', null, InputOption::VALUE_REQUIRED, 'Statut à posittionner')
     24                        ->addOption('email', null, InputOption::VALUE_REQUIRED, 'Email de l\'auteur à modifier')
     25                        ->addOption('id', null, InputOption::VALUE_REQUIRED, 'Identifiant de l\'auteur à modifier')
     26                        ->addOption('login', null, InputOption::VALUE_REQUIRED, 'Login de l\'auteur à modifier')
     27                        ->addOption('webmestre', null, InputOption::VALUE_NONE, 'Donner le statut de webmestre')
    2628                ;
    2729        }
     
    3739                        }
    3840                }
    39                 if ($input->getOption('email')) {
    40                         $email = $input->getOption('email');
    41                 }
    42                 if ($input->getOption('webmestres')) {
     41               
     42                if ($input->getOption('webmestre')) {
    4343                        $statut = '0minirezo';
    44                         $webmestres = true;
     44                        $webmestre = true;
    4545                }
    4646               
    47                 $auteurs = $this->listeAuteurs($statut, $email, $webmestres);
    48                
    49                 $this->io->table(['id_auteur', 'login', 'nom', 'email', 'statut', 'webmestre'], $auteurs);
     47                if ($statut) {
     48                        if ($input->getOption('email')) {
     49                                $email = $input->getOption('email');
     50                        }
     51                        if ($input->getOption('id')) {
     52                                $id = $input->getOption('id');
     53                        }
     54                        if ($input->getOption('login')) {
     55                                $login = $input->getOption('login');
     56                        }
     57                       
     58                        $resultat = $this->statutAuteur($statut, $email, $id, $login, $webmestre);
     59                       
     60                        $this->io->table(['id_auteur', 'login', 'nom', 'email', 'statut', 'webmestre'], $resultat);
     61                } else {
     62                        $this->io->text("Il faut un statut !");
     63                }
    5064        }
    5165
    52         /** Cherche l’auteur SPIP -1 */
    53         public function listeAuteurs($statut = '', $email = '', $webmestres = false) {
     66        /** Change le statut d'un auteur */
     67        public function statutAuteur($statut = '', $email = '', $id = 0, $login = '', $webmestre = false) {
    5468                $criteres = array();
    55                 if ($statut != '') {
    56                         $criteres[] = 'statut = ' . sql_quote($statut);
     69                if ($email != '') {
     70                        $criteres[] = 'email=' . sql_quote("$email");
    5771                }
    58                 if ($email != '') {
    59                         $criteres[] = 'email LIKE ' . sql_quote("%$email%");
     72                if ($id>0) {
     73                        $criteres[] = 'id_auteur=' . sql_quote($id, '', 'INT');
    6074                }
    61                 if ($webmestres) {
    62                         $criteres[] = "webmestre = 'oui'";
     75                if ($login != '') {
     76                        $criteres[] = 'login=' . sql_quote($login);
    6377                }
    6478
    65                 $auteurs = sql_allfetsel(['id_auteur', 'login', 'nom', 'email', 'statut', 'webmestre'], 'spip_auteurs', $criteres );
     79                $resultat = sql_allfetsel(['id_auteur', 'login', 'nom', 'email', 'statut', 'webmestre'], 'spip_auteurs', $criteres );
    6680
    67                 return $auteurs;
     81                $action = array('statut' => "'$statut'", 'webmestre' => ($webmestre)?"'oui'":"'non'");
     82                sql_update('spip_auteurs', $action, $criteres);
     83               
     84                $resultat = array_merge($resultat, sql_allfetsel(['id_auteur', 'login', 'nom', 'email', 'statut', 'webmestre'], 'spip_auteurs', $criteres));
     85
     86                return $resultat;
    6887        }
    6988
Note: See TracChangeset for help on using the changeset viewer.