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));
}
Ejemplo n.º 2
0
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);
}