Changeset 111632 in spip-zone


Ignore:
Timestamp:
Sep 20, 2018, 8:25:26 AM (7 months ago)
Author:
cedric@…
Message:

amelioration du process de synchro des listes automatiques : ne pas essayer de reabonner ceux qui l'ont deja ete, c'est du temps perdu qui empeche la synchro de finir

Location:
_plugins_/mailsubscribers/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/mailsubscribers/trunk/inc/mailsubscribers.php

    r110157 r111632  
    642642
    643643        // d'abord on prend la liste de tous les abonnes en base
    644         // et on retire ceux qui ne sont plus dans le tableau $abonnes
     644        // -> on retire du tableau $abonnes ceux qui le sont deja
     645        // -> on desabonne ceux qui ne sont plus dans le tableau $abonnes
    645646        $subs = sql_allfetsel('S.email',
    646647                'spip_mailsubscribers as S JOIN spip_mailsubscriptions as L ON S.id_mailsubscriber=L.id_mailsubscriber',
     
    648649        spip_log("mailsubscribers_synchronise_liste $liste: " . count($subs) . " abonnes deja dans la liste",
    649650                "mailsubscribers" . _LOG_DEBUG);
     651        $i=0;
    650652        foreach ($subs as $sub) {
    651653                // OK il est toujours dans les abonnes
     
    656658                        //echo "unsubscribe ".$sub['email']."<br />";
    657659                        $unsubscribe($sub['email'], array('listes' => $listes, 'notify' => false, 'remove' => true));
     660                        $i++;
    658661                }
    659662                if (time() >= $max_time) {
     663                        spip_log("mailsubscribers_synchronise_liste $liste: $i desabonnes de la liste mais temps ecoule", "mailsubscribers" . _LOG_DEBUG);
    660664                        return false;
     665                }
     666        }
     667        spip_log("mailsubscribers_synchronise_liste $liste: $i desabonnes de la liste", "mailsubscribers" . _LOG_DEBUG);
     668        unset($subs);
     669
     670        // on enleve de la liste ceux qui ont deja ete abonnes dans le passe mais se sont desinscrit car on ne les reabonnera pas
     671        $unsubs = sql_allfetsel('S.email',
     672                'spip_mailsubscribers as S JOIN spip_mailsubscriptions as L ON S.id_mailsubscriber=L.id_mailsubscriber',
     673                'L.id_mailsubscribinglist=' . intval($id_mailsubscribinglist) . ' AND L.id_segment=0 AND L.statut=' . sql_quote('refuse') . ' AND ' . sql_in('S.email', array_keys($abonnes_emails)));
     674        spip_log("mailsubscribers_synchronise_liste $liste: " . count($unsubs) . " ne veulent pas etre reabonnes a la liste", "mailsubscribers" . _LOG_DEBUG);
     675        foreach ($unsubs as $unsub) {
     676                if (isset($abonnes_emails[$unsub['email']])) {
     677                        unset($abonnes_emails[$unsub['email']]);
    661678                }
    662679        }
     
    665682        // si il reste du monde dans $abonnes, c'est ceux qui ne sont pas en base
    666683        // on les subscribe
     684        $i=0;
    667685        foreach ($abonnes_emails as $email => $abonne) {
    668686                //echo "subscribe ".$email."<br />";
     
    680698                }
    681699                $subscribe($email, $data_subscriber);
     700                $i++;
    682701                if (time() >= $max_time) {
     702                        spip_log("mailsubscribers_synchronise_liste $liste: $i/".count($abonnes_emails)." abonnes mais temps ecoule", 'mailsubscribers' . _LOG_DEBUG);
    683703                        return false;
    684704                }
  • _plugins_/mailsubscribers/trunk/paquet.xml

    r111250 r111632  
    22        prefix="mailsubscribers"
    33        categorie="communication"
    4         version="2.9.0"
     4        version="2.9.1"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.