function spiplistes_listes_auteurs_elligibles ($id_liste, $statut_liste = '', $faire = '') { $nb_auteurs = 0; $auteurs_array = array(); if($lister_moderateurs = ($faire == 'moderer')) { // recupere la liste des moderateurs $ids_already = spiplistes_mod_listes_get_id_auteur($id_liste); $ids_already = (isset($ids_already[$id_liste]) ? $ids_already[$id_liste] : array()); $sql_where[] = 'statut='.sql_quote('0minirezo'); } else { // recupere la liste des abonnes $ids_already = spiplistes_listes_liste_abo_ids($id_liste); // prepare la liste des non-abonnes elligibles $sql_where = array("email <> ''"); // email obligatoire ! // si liste privee, ne prend que l'equipe de redacs if($statut_liste == _SPIPLISTES_LIST_PRIVATE) { $sql_where[] = "(statut=".sql_quote('0minirezo')." OR statut=".sql_quote('1comite').")"; } } $sql_from = array("spip_auteurs"); // demande la liste des elligibles $sql_result = sql_select("nom,id_auteur,statut", $sql_from, $sql_where, '', array('statut','nom')); if(sql_count($sql_result)) { while($row = sql_fetch($sql_result)) { // ne pas prendre ceux deja abonnes if(in_array($row['id_auteur'], $ids_already)) { continue; } if(!isset($auteurs_array[$row['statut']])) { $auteurs_array[$row['statut']] = array(); } $auteurs_array[$row['statut']][$row['id_auteur']] = $row['nom']; $nb_auteurs++; } } return(array($auteurs_array, $nb_auteurs)); }
function spiplistes_courrier_remplir_queue_envois ($id_courrier, $id_liste, $id_auteur = 0) { $id_courrier = intval($id_courrier); $id_liste = intval($id_liste); spiplistes_debug_log("API: remplir courrier: #$id_courrier, liste: #$id_liste, auteur: #$id_auteur"); if($id_courrier > 0) { $statut_q = sql_quote('a_envoyer'); $id_courrier_q = sql_quote($id_courrier); $sql_valeurs = ""; if($id_liste > 0) { // prendre la liste des abonnes a cette liste $ids_abos = spiplistes_listes_liste_abo_ids($id_liste); if(count($ids_abos)) { $sql_where_q = "(".implode(",", array_map("sql_quote", $ids_abos)).")"; $sql_result = sql_select('id_auteur', 'spip_auteurs', "id_auteur IN $sql_where_q", '' , array('id_auteur')); $ids_auteurs = array(); while($row = sql_fetch($sql_result)) { $ids_auteurs[] = intval($row['id_auteur']); } foreach($ids_abos as $ii) { // l'auteur n'existe plus, le desabonner ! if(!in_array($ii, $ids_auteurs)) { spiplistes_abonnements_auteur_desabonner($ii, 'toutes'); } } if(count($ids_auteurs) > 0) { // remplir la queue d'envois foreach($ids_auteurs as $ii) { $sql_valeurs .= "(".sql_quote($ii).",$id_courrier_q, $statut_q, NOW()),"; } $sql_valeurs = rtrim($sql_valeurs, ","); } } } else if(($id_auteur = intval($id_auteur)) > 0) { // envoi mail test $sql_valeurs = "(".sql_quote($id_auteur).",$id_courrier_q, $statut_q, NOW())"; } if(!empty($sql_valeurs)) { sql_insert( 'spip_auteurs_courriers' , "(" . "id_auteur,id_courrier,statut,maj" . ")" , $sql_valeurs ); $nb_etiquettes = spiplistes_courriers_en_queue_compter( array( "id_courrier=".sql_quote($id_courrier) , "statut=".sql_quote('a_envoyer') ) ); if($nb_etiquettes && ($id_liste > 0)) { spiplistes_courrier_modifier( $id_courrier , array('total_abonnes' => sql_quote($nb_etiquettes)) ); } return(true); } } else { spiplistes_debug_log("ERR: spiplistes_courrier_remplir_queue_envois($id_courrier, $id_liste, $id_auteur) valeur nulle ?"); } return (false); }