Example #1
0
function spiplistes_boitelistes_planning_jour ($planning, $prefix_titre, $coef_graph) {
	$result = "";
	$ii = 0;
	foreach($planning as $liste) {
		$titre_nb_abos = spiplistes_nb_destinataire_str_get($liste['nb_abos']);
		$titre = $prefix_titre.": ".couper($liste['titre'])." ($titre_nb_abos)";
		$height = "height:".max(_SPIPLISTES_MIN_HEIGHT_BAR, ceil($liste['nb_abos'] * $coef_graph))."px;";
		$href = generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_GERER, "id_liste=".$liste['id_liste']);
		$bgcolor = "background-color:#".spiplistes_items_get_item("icon_color", $liste['statut']).";";
		$result .= ""
			. "<a href='$href' class='a-fond-".intval($ii++ % 2)."' title='".$titre."' style='$height $bgcolor'>\n"
			. "</a>\n"
			;
	}
	return($result);
}
function spiplistes_lister_courriers_listes (
	$titre_tableau
	, $image
	, $element='listes'
	, $statut=''
	, $apres_maintenant=false
	, $nom_position='position'
	, $exec
	, $id_auteur=0
	, $pas=10
	, $return=true) {

	include_spip('inc/spiplistes_api');
	include_spip('inc/spiplistes_api_courrier'); 

	$position = intval($_GET[$nom_position]);
	$pas = intval($pas);
	$id_auteur = intval($id_auteur);
	//$retour = _DIR_RESTREINT_ABS.self();
	$clause_where = '';
	
	//////////////////////////////////
	// requete
	// construction de la requete SQL
	// sera (en partie) utilisee plus bas pour compter et pagination
	switch($element) { 
		case 'abonnements':
			$sql_select = "listes.id_liste,listes.titre,listes.statut,listes.date,abos.id_auteur";
			$sql_from = "spip_auteurs_listes AS abos LEFT JOIN spip_listes AS listes ON abos.id_liste=listes.id_liste";
			$sql_where = "abos.id_auteur=".sql_quote($id_auteur);
			$sql_order = "listes.titre";
			break;
		case 'courriers':
			$sql_select = "id_courrier, titre, date, date_debut_envoi,date_fin_envoi, nb_emails_envoyes,total_abonnes,email_test";
			$sql_from = "spip_courriers";
			$sql_where = "statut=".sql_quote($statut);
			$sql_order = "date";
			break;
		case 'listes':
			if (
				// pour lister les listes programmees dans un futur 
				in_array($statut, explode(";", _SPIPLISTES_LISTES_STATUTS_OK)) 
				&& ($apres_maintenant == true)
			) {
				$clause_where.= " AND (maj NOT BETWEEN 0 AND NOW())";
			}
			$sql_select = "id_liste,titre,date,patron,maj,periode,statut";
			$sql_from = "spip_listes";
			$sql_where = "statut=".sql_quote($statut)." $clause_where";
			$sql_order = "date";
			break;
	}
	//
	$resultat_aff = sql_select($sql_select, $sql_from, $sql_where, '', array($sql_order." DESC "), $position.",".$pas);
	
	//////////////////////
	if (($nb_ = @sql_count($resultat_aff)) > 0) {
		
		// titre du tableau
		$en_liste = ""
			. "<div class='liste'>\n"
			. "<div style='position: relative;'>\n"
			. "<div style='position: absolute; top: -12px; left: 3px;'>\n"
			. "<img src='$image' alt='' width='24' height='24' />\n"
			. "</div>\n"
			. "<div style='background-color:white; color:black; padding:3px; padding-left:30px; border-bottom:1px solid #444;' class='verdana2'>\n"
			. "<strong>\n"
			. $titre_tableau
			. "</strong>\n"
			. "</div>\n"
			. "</div>\n"
			. "<table width='100%' cellpadding='2' cellspacing='0' border='0'>\n"
			;
		
		while ($row = sql_fetch($resultat_aff)) {
		
			$titre = $row['titre'];
			$date = $row['date'];
						
			switch ($element){
				case 'abonnements':
					$id_row = $row['id_liste'];
					$url_row	= generer_url_ecrire($exec, 'id_liste='.$id_row);
					$retour = self();
					$url_desabo = generer_action_auteur(_SPIPLISTES_ACTION_CHANGER_STATUT_ABONNE
											, $row['id_auteur'].'-listedesabo-'.$id_row
											, $retour);
					spiplistes_debug_log('desabo: '.$url_desabo);
					spiplistes_debug_log('retour: '.$retour);
					$statut = $row['statut'];
					break;
				case 'courriers':
					$id_row	= $row['id_courrier'];			
					$nb_emails_envoyes	= $row['nb_emails_envoyes'];
					$date_debut_envoi	= $row['date_debut_envoi'];
					$date_fin_envoi	= $row['date_fin_envoi'];
					$total_abonnes	= $row['total_abonnes'];
					$email_test	= $row['email_test'];
					$url_row	= generer_url_ecrire($exec, 'id_courrier='.$id_row);
					break;
				case 'listes':
					$id_row = $row['id_liste'];
					$url_row	= generer_url_ecrire($exec, 'id_liste='.$id_row);
					$patron = $row['patron'];
					$maj = $row['maj'];
					$periode = $row['periode'];
					break;
			}
			
			$en_liste.= ""
				. "<tr class='tr_liste'>\n"
				. "<td width='11' style='vertical-align:top;'>"
				. "<img src='".spiplistes_items_get_item("puce", $statut)."' alt=\""
					. spiplistes_items_get_item("alt", $statut)."\" border='0' style='margin: 3px 1px 1px;' />"
				. "</td>"
				. "<td class='arial2'>\n"
				. "<div>\n"
				. "<a href=\"".$url_row."\" dir='ltr' style='display:block;'>\n"
				. spiplistes_calculer_balise_titre(extraire_multi($titre))
				;
			
			switch($element) {
			// si courriers, donne le nombre de destinataires
				case 'courriers':
					$nb_abo = "";
					if(empty($email_test)) {
						$nb_abo = spiplistes_nb_destinataire_str_get($total_abonnes);
					}
					else {
						$nb_abo = _T('spiplistes:email_adresse');
					}
					if($nb_abo) {
						$en_liste .=
							" <span class='spiplistes-legend-stitre' dir='ltr'>($nb_abo)</span>\n"
							;
					}
					break;
			// si liste, donne le nombre d'abonnes
				case 'listes':
					//$nb_abo = spiplistes_nb_abonnes_liste($id_row);
					// affiche infos complementaires pour les listes
					$en_liste .= ""
						. " <span style='font-size:100%;color:#666666' dir='ltr'>\n"
						. "<span class='spiplistes-legend-stitre'>".spiplistes_nb_abonnes_liste_str_get($id_row)."</span>"
						. "<br />"
						. (
							empty($patron) 
							? "<span class='texte-alerte'>" . _T('spiplistes:liste_sans_patron') . "</span>"
							: _T('spiplistes:patron_') . " <strong>".$patron."</strong>" 
						  )
						 ;
					if (!empty($date) && intval($date)) {
						if($periode) {
							$en_liste .= "<br />"
								. _T('spiplistes:periodicite_tous_les_n_s'
								, array('n' => "  <strong>".$periode."</strong>  "
									, 's' => spiplistes_singulier_pluriel_str_get($periode, _T('spiplistes:jour'), _T('spiplistes:jours'), false)
									)
								)
								;
						}
						else {
							// inutile de preciser le statut, c'est dans le titre du bloc
						}
						$en_liste .= ""
							. ""
							. "<br />" . _T('spiplistes:Prochain_envoi_')
							. " : <strong>".affdate_heure($date)."</strong>"
							;
					}
					$en_liste .= ""
						. "</span>\n"
						;
						break;
			}
								
		//////////////////////
			$en_liste .= ""
				. "</a>\n"
				. "</div>\n"
				. "</td>\n"
				. "<td width='120' class='arial1'>"
				;
			switch($element) {
				case 'abonnements':
					$en_liste .= ""
						. "<a href=\"$url_desabo\" dir='ltr' style='display:block;'>"._T('spiplistes:desabonnement')."</a>\n"
						;
					break;
				case 'courriers':
					// - date debut envoi si encour, sinon date de publication
					if(!in_array($statut, array(_SPIPLISTES_COURRIER_STATUT_REDAC, _SPIPLISTES_COURRIER_STATUT_READY))) {
						$en_liste .= ""
							.	(
								($statut==_SPIPLISTES_COURRIER_STATUT_ENCOURS)
								? _T('spiplistes:envoi_en_cours')
								: affdate_heure($date_fin_envoi)
								)
							;
					}
					break;
			}
			$en_liste .= ""
				. "</td>\n"
				. "<td width='50' class='arial1'><strong>"._T('info_numero_abbreviation').$id_row."</strong></td>\n"
				. "</tr>\n"
				;
		}
		$en_liste.= "</table>\n";
		
		//////////////////////
		// Pagination si besoin
		switch ($element){
			case 'abonnements':
				$sql_select = "COUNT(listes.id_liste) AS n";
				$param = "&id_auteur=$id_auteur";
				break;
			case 'courriers':
				$sql_select = "COUNT(id_courrier) AS n";
				$param = "&statut=$statut";
				break;
			case 'listes':
				$sql_select = "COUNT(id_liste) AS n";
				$param = "";
				break;
		}
		
		$sql_result = sql_select($sql_select, $sql_from, $sql_where);
		
		if(
			$sql_result
			&& ($row = sql_fetch($sql_result)) && ($total = $row['n'])
		) {
			$retour = _request('exec');
			$en_liste .= spiplistes_afficher_pagination($retour, $param, $total, $position, $nom_position, $pas);
		}

		$en_liste .= ""
			. "</div>\n"
			. "<br />\n"
			;
	}

	if($return) return($en_liste);
	else echo($en_liste);
}