Changeset 113028 in spip-zone


Ignore:
Timestamp:
Dec 21, 2018, 9:50:49 AM (4 weeks ago)
Author:
cedric@…
Message:

desinscrire les inscrits a rien lors du nettoyage

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/mailsubscribers/trunk/spip-cli/MailsubscribinglistClean.php

    r112985 r113028  
    9797                $output->writeln("Mailsubscribers zombies depuis $from : " . count($id_mailsubscribers_zombies));
    9898
     99
    99100                // et restreindre aux listes demandées uniquement (si besoin)
    100101                $id_mailsubscribers_unsub = sql_allfetsel("DISTINCT id_mailsubscriber", 'spip_mailsubscriptions', sql_in('id_mailsubscriber',$id_mailsubscribers_zombies). " AND statut='valide' AND id_segment=0" . $in_listes);
    101102                $id_mailsubscribers_unsub = array_column($id_mailsubscribers_unsub, 'id_mailsubscriber');
     103
     104                // trouver les inscrits a rien
     105                if (!$in_listes
     106                  and count($id_mailsubscribers_inscrits_a_rien = array_diff($id_mailsubscribers_zombies, $id_mailsubscribers_unsub))) {
     107
     108                        // il y en a peut etre des prop dans le lot, on les repasse en prop
     109                        $id_mailsubscribers_prop = sql_allfetsel("DISTINCT id_mailsubscriber", 'spip_mailsubscriptions', sql_in('id_mailsubscriber',$id_mailsubscribers_inscrits_a_rien). " AND statut='prop' AND id_segment=0");
     110                        $id_mailsubscribers_prop = array_column($id_mailsubscribers_prop, 'id_mailsubscriber');
     111                        if (count($id_mailsubscribers_prop)) {
     112                                $this->io->care(count($id_mailsubscribers_prop) . ' sont en fait en attente de confirmation : ' . implode(', ', array_slice($id_mailsubscribers_prop,0, 10)) . ' ...');
     113                                if (
     114                                        $input->getOption('yes')
     115                                        or $this->io->confirm("Repasser les " . count($id_mailsubscribers_prop) . " subscribers en prop ?", false)
     116                                ){
     117                                        sql_updateq("spip_mailsubscribers", array('statut' => 'prop'), sql_in('id_mailsubscriber', $id_mailsubscribers_prop));
     118                                        $this->io->check(count($id_mailsubscribers_prop) . ' corrigés');
     119                                }
     120                                $id_mailsubscribers_inscrits_a_rien = array_diff($id_mailsubscribers_inscrits_a_rien, $id_mailsubscribers_prop);
     121                        }
     122
     123                        // desinscrire ceux qui ne sont vraiment inscrits a riens
     124                        if (count($id_mailsubscribers_inscrits_a_rien)) {
     125                                $this->io->care(count($id_mailsubscribers_inscrits_a_rien) . ' ne sont inscrits a rien : ' . implode(', ', array_slice($id_mailsubscribers_inscrits_a_rien,0, 10)) . ' ...');
     126                                if (
     127                                        $input->getOption('yes')
     128                                        or $this->io->confirm("Desinscrire les " . count($id_mailsubscribers_inscrits_a_rien) . " inscrits a rien ?", false)
     129                                ){
     130                                        $emails_arien = sql_allfetsel('email', 'spip_mailsubscribers', sql_in('id_mailsubscriber', $id_mailsubscribers_inscrits_a_rien));
     131                                        $emails_arien = array_column($emails_arien, 'email');
     132                                        MailsubscribinglistClean::unsubscribeAll($this->io, $emails_arien, $options);
     133                                        $this->io->check(count($id_mailsubscribers_inscrits_a_rien) . ' corrigés');
     134                                }
     135                        }
     136                }
     137
     138
    102139                $nb_unsub = count($id_mailsubscribers_unsub);
    103140                $this->io->care("Mailsubscribers a désabonner".($listes ? " des listes ". implode(',',$listes) : '') . " : " . $nb_unsub);
Note: See TracChangeset for help on using the changeset viewer.