function exec_spiplistes_maintenance () { include_spip('inc/distant'); include_spip('inc/meta'); include_spip('inc/config'); include_spip('inc/spiplistes_api'); include_spip('inc/spiplistes_api_presentation'); global $connect_statut , $connect_toutes_rubriques , $connect_id_auteur , $couleur_foncee , $spip_lang_right ; // la globale de connect_id_auteur est string // c'est un entier qu'il faut envoyer a autoriser() $connect_id_auteur = intval($GLOBALS['connect_id_auteur']); // initialise les variables postees par le formulaire foreach(array_merge( array( 'btn_supprimer_courriers', 'btn_reset_listes', 'btn_supprimer_listes' , 'btn_modifier_formats', 'confirmer_modifier_formats' , 'btn_supprimer_formats', 'confirmer_supprimer_formats' , 'btn_nettoyer_abos', 'confirmer_nettoyer_abos' )) as $key) { $$key = _request($key); } // la maintenance spiplistes est reservee a l'admin principal $flag_autorise = autoriser('webmestre','','',$connect_id_auteur); $tous_les_statuts_courriers = array(_SPIPLISTES_COURRIER_STATUT_REDAC, _SPIPLISTES_COURRIER_STATUT_READY , _SPIPLISTES_COURRIER_STATUT_ENCOURS , _SPIPLISTES_COURRIER_STATUT_AUTO, _SPIPLISTES_COURRIER_STATUT_PUBLIE , _SPIPLISTES_COURRIER_STATUT_VIDE, _SPIPLISTES_COURRIER_STATUT_IGNORE , _SPIPLISTES_COURRIER_STATUT_STOPE, _SPIPLISTES_COURRIER_STATUT_ERREUR ); $msg_maintenance = array(); $sql_formats_where = spiplistes_formats_autorises('sql_where'); ///////////////// // Faire ce qui est demande par le formulaire if($flag_autorise) { $msg_ok = "<span style='color:green;'>"._T('pass_ok'); $msg_bad = "<span style='font-weight:bold;color:red;'>"._T('pass_erreur'); $msg_end = "</span>\n"; // les courriers if($btn_supprimer_courriers) { foreach($tous_les_statuts_courriers as $statut) { if(_request("supprimer_courriers_$statut")) { if($statut == _SPIPLISTES_COURRIER_STATUT_ENCOURS) { // supprime d'abord de la queue d'envoi spiplistes_courrier_supprimer_queue_envois('statut', $statut); spiplistes_log("RESET spool ID_COURRIER #$id_courrier by ID_AUTEUR #$connect_id_auteur"); } // supprime le courrier $msg = ( spiplistes_courrier_supprimer('statut', $statut) ) ? $msg_ok : $msg_bad ; $msg_maintenance[] = _T('spiplistes:Suppression_de__s', array('s' => spiplistes_items_get_item('tab_t', $statut)."... : ".$msg.$msg_end) ); spiplistes_log("DELETE courrier ID_COURRIER #$id_courrier by ID_AUTEUR #$connect_id_auteur"); } } } // les listes en chronos a repasser en non-chrono // en realite', conserve le statut mais supprime la date d'envoi // ainsi, la trieuse ne preparera pas le courrier if($btn_reset_listes) { foreach(spiplistes_listes_select("id_liste", "message_auto='oui'") as $row) { $id_liste = intval($row['id_liste']); $sql_table = "spip_listes"; $sql_champs = array('message_auto' => 'non', 'date' => ''); $sql_where = "id_liste=$id_liste"; if(_request("reset_liste_$id_liste")) { $msg = ( // reset liste sql_updateq($sql_table, $sql_champs, $sql_where) ) ? $msg_ok : $msg_bad ; $msg_maintenance[] = _T('spiplistes:annulation_chrono_')." : ID_LISTE #$id_liste : ".$msg.$msg_end; spiplistes_log("RESET liste ID_LISTE #$id_liste by ID_AUTEUR #$connect_id_auteur"); } } } // les listes (global) if($btn_supprimer_listes) { foreach(spiplistes_listes_select("id_liste,titre") as $row) { $titre = $row['titre']; $id_liste = intval($row['id_liste']); if(_request("supprimer_liste_$id_liste")) { $sql_where = "id_liste=".sql_quote($id_liste); $msg = spiplistes_listes_liste_supprimer($id_liste) ? $msg_ok : $msg_bad ; $msg_maintenance[] = _T('spiplistes:Suppression_de')." : ".$titre."... : ".$msg.$msg_end; spiplistes_log("DELETE liste ID_LISTE #$id_liste by ID_AUTEUR #$connect_id_auteur"); } } } // les formats if($btn_modifier_formats || $btn_supprimer_formats) { $objet = array('objet' => _T('spiplistes:des_formats')); if($confirmer_modifier_formats && ($format = spiplistes_format_valide(_request('sl-le-format')))) { $msg = ( spiplistes_format_abo_modifier('tous', $format) ) ? $msg_ok : $msg_bad ; $msg_maintenance[] = _T('spiplistes:modification_objet', $objet)." : ".$msg.$msg_end; spiplistes_log("UPDATE ALL format $format by ID_AUTEUR #$connect_id_auteur"); } if($confirmer_supprimer_formats) { $msg = ( // vider la table des formats connus de spiplistes sql_delete("spip_auteurs_elargis", $sql_formats_where) ) ? $msg_ok : $msg_bad ; $msg_maintenance[] = _T('spiplistes:suppression_', $objet)." : ".$msg.$msg_end; spiplistes_log("DELETE formats "._SPIPLISTES_FORMATS_ALLOWED." by ID_AUTEUR #$connect_id_auteur"); } } // les abonnements if($btn_nettoyer_abos && $confirmer_nettoyer_abos) { if($ii = spiplistes_abonnements_zombies()) { sort($ii); $ii = array_unique($ii); $msg = (spiplistes_abonnements_auteur_desabonner($ii)) ? $msg_ok : $msg_bad ; $objet = array('objet' => _T('spiplistes:des_abonnements')); $msg_maintenance[] = _T('spiplistes:nettoyage_', $objet)." : ".$msg.$msg_end; } } // compter les listes $nb_listes = spiplistes_listes_compter(); $nb_listes_desc = spiplistes_nb_listes_str_get ($nb_listes); $listes_array = spiplistes_listes_select("id_liste,statut,titre,message_auto"); // listes auto (crhono) compte'es a part $nb_listes_auto = 0; foreach($listes_array as $row) { if($row['message_auto']=='oui') { $nb_listes_auto++; } } // compter les formats (les abonnes ayant de'fini un format) $nb_abonnes_formats = sql_fetsel("COUNT(id_auteur) as n", "spip_auteurs_elargis", $sql_formats_where); $nb_abonnes_formats = $nb_abonnes_formats['n']; $nb_abonnes_formats_desc = ($nb_abonnes_formats==1) ? _T('spiplistes:1_abonne') : "$nb_abonnes_formats "._T('spiplistes:abonnes') ; $maintenance_url_action = generer_url_ecrire(_SPIPLISTES_EXEC_MAINTENANCE); } //////////////////////////////////// // PAGE CONTENU //////////////////////////////////// $titre_page = _T('titre_admin_tech'); // Permet entre autres d'ajouter les classes a' la page : <body class='$rubrique $sous_rubrique'> $rubrique = _SPIPLISTES_PREFIX; $sous_rubrique = "maintenance"; $commencer_page = charger_fonction('commencer_page', 'inc'); echo($commencer_page(_T('spiplistes:spiplistes') . " - " . trim($titre_page), $rubrique, $sous_rubrique)); if(!$flag_autorise) { die (spiplistes_terminer_page_non_autorisee() . fin_page()); } $page_result = "" . "<br /><br /><br />\n" . spiplistes_gros_titre($titre_page, '', true) . barre_onglets($rubrique, $sous_rubrique) . debut_gauche($rubrique, true) . spiplistes_boite_meta_info(_SPIPLISTES_PREFIX) . pipeline('affiche_gauche', array('args'=>array('exec'=>$sous_rubrique),'data'=>'')) //. creer_colonne_droite($rubrique, true) // spiplistes_boite_raccourcis() s'en occupe . spiplistes_boite_raccourcis(true) . spiplistes_boite_autocron() . spiplistes_boite_info_spiplistes(true) . pipeline('affiche_droite', array('args'=>array('exec'=>$sous_rubrique),'data'=>'')) . debut_droite($rubrique, true) ; if(count($msg_maintenance)) { $page_result .= "<ul style='padding-left:2ex;margin-bottom:2em;'>"; foreach($msg_maintenance as $texte) { $page_result .= "<li>$texte</li>\n"; } $page_result .= "</ul>\n"; } ////////////////////////////////////////////////////// // Boite de maintenance du casier a courriers $objet = array('objet' => _T('spiplistes:des_courriers')); $page_result .= "" . debut_cadre_trait_couleur("administration-24.gif", true, "", _T('spiplistes:maintenance_objet', $objet)) . spiplistes_form_debut ($maintenance_url_action, true) . spiplistes_form_description(_T('spiplistes:conseil_sauvegarder_avant', $objet), true) ; if(spiplistes_courriers_statut_compter()) { $page_result .= spiplistes_form_fieldset_debut(_T('spiplistes:suppression_', $objet), true); foreach($tous_les_statuts_courriers as $statut) { if(spiplistes_courriers_statut_compter($statut)) { $titre = spiplistes_items_get_item('tab_t', $statut); $page_result .= spiplistes_form_input_checkbox ('supprimer_courriers_'.$statut, $statut, $titre, false, true); } } $page_result .= spiplistes_form_fieldset_fin(true); } else { $page_result .= spiplistes_form_message(_T('spiplistes:Casier_vide'), true); } $page_result .= "" . spiplistes_form_bouton_valider ('btn_supprimer_courriers') . spiplistes_form_fin(true) . fin_cadre_trait_couleur(true) ; ///////////////////////////////////////// // boite de maintenance des listes : la date des listes sont remises a zero (supprimer les chronos) $objet = array('objet' => _T('spiplistes:des_listes')); $page_result .= "" . debut_cadre_trait_couleur("administration-24.gif", true, "", _T('spiplistes:maintenance_objet', $objet)) . debut_cadre_relief("", true, "", _T('spiplistes:Supprimer_les_chronos')) ; if($nb_listes_auto) { $page_result .= "" . spiplistes_form_debut ($maintenance_url_action, true) . "<p class='verdana2'>"._T('spiplistes:suppression_chronos_desc')."</p>\n" . spiplistes_form_description(_T('spiplistes:conseil_sauvegarder_avant', $objet), true) . spiplistes_form_fieldset_debut ( _T('spiplistes:suppression_chronos_', $objet).spiplistes_fieldset_legend_detail(_T('spiplistes:total').": $nb_listes_auto / $nb_listes_desc", true) , true) ; foreach($listes_array as $row) { if($row['message_auto']=='oui') { $titre = $row['titre']; $statut = ""; $id_liste = intval($row['id_liste']); $page_result .= spiplistes_form_input_checkbox ('reset_liste_'.$id_liste, $id_liste, $statut.$titre, false, true); } } $page_result .= "" . spiplistes_form_fieldset_fin(true) . spiplistes_form_bouton_valider('btn_reset_listes') . spiplistes_form_fin(true) ; } else { $page_result .= spiplistes_form_message(_T('spiplistes:pas_de_liste_en_auto'), true); } $page_result .= "" . fin_cadre_relief(true) ; ///////////////////////////////////////// // supprimer les listes $page_result .= "" . debut_cadre_relief("", true, "", _T('spiplistes:Supprimer_les_listes')) ; if($nb_listes) { $page_result .= "" . spiplistes_form_debut ($maintenance_url_action, true) . spiplistes_form_description(_T('spiplistes:conseil_sauvegarder_avant', $objet), true) . spiplistes_form_fieldset_debut ( _T('spiplistes:suppression_', $objet).spiplistes_fieldset_legend_detail(_T('spiplistes:total').": $nb_listes_desc", true) , true) ; foreach($listes_array as $row) { $id_liste = intval($row['id_liste']); $titre = $row['titre']; $statut = "<img src='".spiplistes_items_get_item("puce", $row['statut'])."' alt='".spiplistes_items_get_item("alt", $row['statut'])."' width='9' height='9' style='margin: 0 0.25ex' />"; $page_result .= spiplistes_form_input_checkbox ('supprimer_liste_'.$id_liste, $id_liste, $statut.$titre, false, true); } $page_result .= "" . spiplistes_form_fieldset_fin(true) . spiplistes_form_bouton_valider ('btn_supprimer_listes') . spiplistes_form_fin(true) ; } else { $page_result .= spiplistes_form_message(_T('spiplistes:pas_de_liste'), true); } $page_result .= "" . fin_cadre_relief(true) . fin_cadre_trait_couleur(true) ; ////////////////////////////////////////////////////// // Boite maintenance des formats $objet = array('objet' => _T('spiplistes:des_formats')); $page_result .= "" . debut_cadre_trait_couleur("administration-24.gif", true, "", _T('spiplistes:maintenance_objet', $objet)) ; if($nb_abonnes_formats > 0) { $page_result .= "" // forcer les formats de reception . spiplistes_form_debut ($maintenance_url_action, true) . spiplistes_form_description(_T('spiplistes:conseil_sauvegarder_avant', $objet), true) . spiplistes_form_fieldset_debut ( _T('spiplistes:forcer_formats_', $objet) . spiplistes_fieldset_legend_detail(_T('spiplistes:total').": $nb_abonnes_formats_desc", true) , true) . spiplistes_form_input_checkbox ('confirmer_modifier_formats', 'oui' , _T('spiplistes:forcer_formats_desc'), false, true) . "<div id='sl-modif-fmt'>\n" . spiplistes_form_input_radio ($name = "sl-le-format", "html", _T('spiplistes:html'), true, true) . spiplistes_form_input_radio ($name, "texte", _T('spiplistes:texte'), false, true) . spiplistes_form_input_radio ($name, "non", _T('spiplistes:aucun'), false, true) . "</div>\n" . spiplistes_form_fieldset_fin(true) . spiplistes_form_bouton_valider('btn_modifier_formats') . spiplistes_form_fin(true) . "<hr />\n" // supprimer les formats . spiplistes_form_debut ($maintenance_url_action, true) . spiplistes_form_description(_T('spiplistes:conseil_sauvegarder_avant', $objet), true) . spiplistes_form_fieldset_debut ( _T('spiplistes:suppression_', $objet) . spiplistes_fieldset_legend_detail(_T('spiplistes:total').": $nb_abonnes_formats_desc", true) , true) . spiplistes_form_input_checkbox ('confirmer_supprimer_formats', 'oui', _T('spiplistes:confirmer_supprimer_formats'), false, true) . spiplistes_form_fieldset_fin(true) . spiplistes_form_bouton_valider('btn_supprimer_formats') . spiplistes_form_fin(true) ; } else { $page_result .= spiplistes_form_message(_T('spiplistes:pas_de_format'), true); } $page_result .= "" . fin_cadre_trait_couleur(true) ; ////////////////////////////////////////////////////// // Boite maintenance des abonnements $objet = array('objet' => _T('spiplistes:des_abonnements')); $page_result .= "" . debut_cadre_trait_couleur('administration-24.gif', true, '', _T('spiplistes:maintenance_objet', $objet)) ; $ii = spiplistes_abonnements_zombies(); if(($nb_abos = count($ii)) > 0) { $nb_auteurs = $ii; sort($nb_auteurs); $nb_auteurs = count(array_unique($nb_auteurs)); $nb_abos = spiplistes_str_abonnes($nb_abos); $nb_auteurs = spiplistes_str_auteurs($nb_auteurs); $page_result .= "" . spiplistes_form_debut ($maintenance_url_action, true) . spiplistes_form_description(_T('spiplistes:conseil_sauvegarder_avant', $objet), true) . spiplistes_form_fieldset_debut( _T('spiplistes:nettoyage_', $objet) . spiplistes_fieldset_legend_detail(_T('spiplistes:total').": $nb_abos, $nb_auteurs", true) , true) . spiplistes_form_input_checkbox ('confirmer_nettoyer_abos', 'oui' , _T('spiplistes:confirmer_nettoyer_abos'), false, true) . spiplistes_form_fieldset_fin(true) . spiplistes_form_bouton_valider('btn_nettoyer_abos') . spiplistes_form_fin(true) ; } else { $page_result .= spiplistes_form_message(_T('spiplistes:pas_de_pb_abonnements'), true); } $page_result .= "" . fin_cadre_trait_couleur(true) ; // Fin de la page echo($page_result); echo pipeline('affiche_milieu',array('args'=>array('exec'=>$sous_rubrique),'data'=>'')) , spiplistes_html_signature(_SPIPLISTES_PREFIX) , fin_gauche(), fin_page(); } // exec_spiplistes_maintenance()
/** * @versin CP-20080603 * @return la boite en liste des abonnes a une liste * si $id_liste == 0, liste tous les abonnements * @param $id_liste entier * @param $statut_liste staut ou false * @param $tri string: 'statut', 'nom', ou 'nombre' (qte) * @param $debut id_auteur du premier affiche * @param $script_retour string */ function spiplistes_listes_boite_abonnes ($id_liste, $statut_liste, $tri, $debut, $script_retour) { global $spip_lang_left, $spip_lang_right; $id_liste = intval($id_liste); $legende_tableau = ''; // construction de la req SQL $sql_select = " aut.id_auteur AS id_auteur, aut.statut AS statut, aut.login AS login, aut.nom AS nom, aut.email AS email, aut.url_site AS url_site, fmt.`spip_listes_format` AS format, UPPER(aut.nom) AS unom, COUNT(lien.id_liste) as compteur"; $sql_from = " spip_auteurs AS aut LEFT JOIN spip_auteurs_listes AS lien ON aut.id_auteur=lien.id_auteur LEFT JOIN spip_listes AS liste ON (lien.id_liste = liste.id_liste) LEFT JOIN spip_auteurs_elargis AS fmt ON aut.id_auteur=fmt.id_auteur"; $sql_where = array("aut.statut <> ".sql_quote('5poubelle')); if($id_liste > 0) { $sql_where[] = "lien.id_liste=".sql_quote($id_liste); } $sql_group = 'aut.id_auteur'; switch ($tri) { case 'statut': $sql_order = array('statut','login','unom'); break; case 'nombre': $sql_order = array('compteur DESC','unom'); break; default: $tri = 'nom'; $sql_order = array('unom'); } $nb_auteurs = sql_countsel('spip_auteurs'); if($sql_result = sql_select(array('id_auteur', 'format'), 'spip_auteurs_listes')) { $abonnes = array(); while($row = sql_fetch($sql_result)) { if(!isset($abonnes[$row['id_auteur']])) { $abonnes[$row['id_auteur']] = array(); $nb_abonnes++; } $abonnes[$row['id_auteur']][$row['format']]++; $abonnes[$row['format']]++; } } if(!$id_liste) { $legende_tableau = trim(spiplistes_str_auteurs($nb_auteurs)) . ', ' . _T('spiplistes:_dont_') . spiplistes_str_abonnes ($nb_abonnes) ; if(isset($abonnes['non']) && $abonnes['non']) { $legende_tableau .= _T('spiplistes:_dont_n_sans_format_reception', array('n' => $abonnes['non'])); } else if($nb_abonnes) { $legende_tableau .= _T('spiplistes:_avec_'); } $legende_tableau .= ($ii = intval($abonnes['html'])) ? spiplistes_str_abonnements(intval($abonnes['html'])) . _T('spiplistes:_au_format_s', array('s' => _T('spiplistes:html'))) : '' ; $legende_tableau .= ($jj = intval($abonnes['texte'])) ? ($ii?', ':''). spiplistes_str_abonnements(intval($abonnes['texte'])) . _T('spiplistes:_au_format_s', array('s' => _T('spiplistes:texte'))) : '' ; $legende_tableau .= '' . '.' ; } $nombre_abonnes = ($id_liste > 0) ? spiplistes_abonnements_compter($id_liste ? "id_liste=".sql_quote($id_liste) : "") // demande inventaire complet des auteurs (liste abonnes_tous) : sql_countsel("spip_auteurs") ; // reglage du debut if(!$debut) { // si js pas active, recupere dans l'url $debut = intval(_request('debut')); } if ($debut > ($ii = $nombre_abonnes - _SPIPLISTES_LIGNES_PAR_PAGE)) { $debut = max(0, $ii); } $sql_result = sql_select($sql_select, $sql_from, $sql_where, $sql_group, $sql_order, $debut . ',' . _SPIPLISTES_LIGNES_PAR_PAGE); if ($sql_result === false) { spiplistes_sqlerror_log("listes_boite_abonnes"); } $auteurs = array(); $les_auteurs = array(); while ($row = sql_fetch($sql_result)) { if ($row['statut'] == '0minirezo') { $row['restreint'] = sql_count(sql_select( "*" , "spip_auteurs_rubriques" , "id_auteur=".sql_quote($row['id_auteur']) )); } $auteurs[] = $row; $les_auteurs[] = $row['id_auteur']; } $lettres_onglet = array(); if($nombre_abonnes > 10) { // SELECT DISTINCT UPPER(LEFT(nom,1)) AS l, COUNT(*) AS n FROM spip_auteurs GROUP BY l ORDER BY l $sql_result = sql_select( array("DISTINCT UPPER(LEFT(aut.nom,1)) AS l" , "COUNT(*) AS n") , (($id_liste > 0) ? $sql_from : 'spip_auteurs AS aut') , $sql_where , "l" , array("l") ); if($result === false) { spiplistes_sqlerror_log("listes_boite_abonnes"); } else { $count = 0; while ($row = sql_fetch($sql_result)) { $lettres_onglet[$row['l']] = $count; $count += intval($row['n']); } } } $legende_tableau = ($id_liste) ? spiplistes_nb_abonnes_liste_str_get($id_liste) : $legende_tableau ; $result = "" . "<div id='"._SPIPLISTES_ID_PETITE_BOITE."'>\n" . "<div class='verdana2' id='legend-abos1-propre'>" . '<small>' . $legende_tableau . '</small>' . "</div>\n" ; function spiplistes_lien_ajaxsqueeze ($r_script, $r_param, $a_script, $a_param, $id_dest, $title, $html) { $exec_url = generer_url_ecrire($r_script, $r_param); $action_url = generer_action_auteur($a_script, $a_param); $result = "<a href='" . $exec_url . "'" . " onclick=\"javascript:return AjaxSqueeze('$action_url', '$id_dest', '$exec_url', event)\"" . " title='".$title."'>".$html."</a>"; return($result); } ////////////////////////////////// // tableau des resultats $result .= "" . "<table border='0' cellpadding='3' cellspacing='0' width='100%' class='verdana1 spiplistes-abos'>\n" ; $colspan = 0; // titres du tableau (a-la-SPIP, en haut) $icon_auteur = spiplistes_corrige_img_pack("<img src='"._DIR_IMG_PACK."/admin-12.gif' alt='' border='0' />"); $id_liste_url = ($id_liste ? "&id_liste=$id_liste" : ""); $result .= "" . "<tr bgcolor='#DBE1C5'>" // // #1: statut auteur (icone) . "<th width='20'>" . ( ($tri=='statut') ? $icon_auteur : spiplistes_lien_ajaxsqueeze ($script_retour, "id_liste=$id_liste&tri=statut&debut=0" , _SPIPLISTES_ACTION_LISTE_ABONNES , $id_liste." 0 statut", _SPIPLISTES_ID_PETITE_BOITE , _T('lien_trier_statut'), $icon_auteur) ) . "</th>\n" ; $colspan++; // #2: nom $result .= "" . "<th>" . ( ($tri == '' || $tri=='nom') ? _T('info_nom') : spiplistes_lien_ajaxsqueeze ($script_retour, "id_liste=$id_liste&tri=nom&debut=0" , _SPIPLISTES_ACTION_LISTE_ABONNES , $id_liste." 0 nom", _SPIPLISTES_ID_PETITE_BOITE , _T('lien_trier_nom'), _T('info_nom')) ) . "</th>\n"; $colspan++; // #3: contact mail $result .= "" . "<th>" . _T('email') . "</th>\n" ; $colspan++; $result .= "" // #4: site . "<th>"._T('info_site') . "</th>\n"; $colspan++; $result .= "" // #5: Format si abonne . "<th>"._T('spiplistes:format') . "</th>\n" ; $colspan++; // si dans la page abonnes_tous, inventaire nb abonnements if($id_liste == 0) { // #6: Nombre d'abonnements // si js inactif, $exec_url prend le relais $result .= "" . "<th>" . ( ($tri=='nombre') ? _T('spiplistes:nb_abos') : spiplistes_lien_ajaxsqueeze ($script_retour, "id_liste=$id_liste&tri=nombre&debut=0" , _SPIPLISTES_ACTION_LISTE_ABONNES , $id_liste." 0 nombre", _SPIPLISTES_ID_PETITE_BOITE , _T('spiplistes:lien_trier_nombre'), _T('spiplistes:nb_abos')) ) . "</th>\n" ; $colspan++; } // #7: Modifier l'abonnement $result .= "" . "<th>" . _T('spiplistes:modifier') . "</th>\n" ; $colspan++; // #8: supprimer l'abonne' $result .= "" . "<th title='"._T('spiplistes:supprimer_un_abo')."'>" . _T('spiplistes:sup_') . "</th>\n" ; $colspan++; // fin de la ligne de titre $result .= "</tr>\n"; // onglets de pagination (si pagination) if ($nombre_abonnes > _SPIPLISTES_LIGNES_PAR_PAGE) { $result .= "" . "<tr class='onglets'><td colspan='$colspan'>" ; // onglets : affiche les chiffres $result .= "<!-- onglets chiffres -->\n"; for ($j=0; $j < $nombre_abonnes; $j+=_SPIPLISTES_LIGNES_PAR_PAGE) { if ($j > 0) $result .= " | "; if ($j == $debut) { $result .= "<strong>$j</strong>"; } else { // si js inactif, $exec_url prend le relais $exec_url = generer_url_ecrire($script_retour, "id_liste=$id_liste&tri=$tri&debut=$j"); // sinon, ajax animera la boite des abos $action_url = generer_action_auteur(_SPIPLISTES_ACTION_LISTE_ABONNES , $id_liste." ".$j." ".$tri); // $action_url = parametre_url($action_url, "redirect=$script_retour"); $result .= "<a href='" . parametre_url($exec_url, 'redirect', $script_retour) . "' onclick=\"return AjaxSqueeze('$action_url', '"._SPIPLISTES_ID_PETITE_BOITE."', '$exec_url', event)\">" . $j . "</a>\n" ; } if (($debut > $j) && ($debut < $j+_SPIPLISTES_LIGNES_PAR_PAGE)) { $result .= " | <strong>$debut</strong>"; } } $result .= "" . "</td></tr>\n" ; // onglets : affichage des lettres $result .= "" . "<tr class='onglets'><td colspan='$colspan'>\n" . "<!-- onglets des lettres -->\n" ; foreach ($lettres_onglet as $key => $val) { // si js inactif, $exec_url prend le relais $exec_url = generer_url_ecrire($script_retour, "id_liste=$id_liste&tri=$tri&debut=$val"); // sinon, ajax animera la boite des abos $action_url = generer_action_auteur(_SPIPLISTES_ACTION_LISTE_ABONNES , $id_liste." ".$val." ".$tri); $result .= ($val == $debut) ? "<strong>$key</strong> " : "<a href='" . parametre_url($exec_url, 'redirect', $exec_url) . "' onclick=\"return AjaxSqueeze('$action_url', '"._SPIPLISTES_ID_PETITE_BOITE."', '$exec_url',event)\">" . $key . "</a>\n" ; } $result .= "" . "</td></tr>\n" ; $result .= "" //. "<tr height='5'></tr>" ; } //translate extra field data list(,,,$trad,$val) = explode("|",_T("spiplistes:options")); $trad = explode(",",$trad); $val = explode(",",$val); $trad_map = array(); for($index_map=0;$index_map<count($val);$index_map++) { $trad_map[$val[$index_map]] = $trad[$index_map]; } $a_title_abo = array( 'html' => " title=\""._T('spiplistes:Abonner_format_html')."\"" , 'texte' => " title=\""._T('spiplistes:Abonner_format_texte')."\"" , 'desabo' => " title=\""._T('spiplistes:Desabonner')."\"" ); $ii = 1; ////////////////////////////////// // ici commence la vraie boucle // les auteurs (la liste) foreach ($auteurs as $row) { // couleur de ligne $couleur_ligne = (($ii++) % 2) ? '#eee' : '#fff'; $result .= "" . "<tr style='background-color: $couleur_ligne'>" // // #1: statut auteur (icone) . "<td>" . spiplistes_bonhomme_statut($row) . "</td>\n" // // #2: nom . "<td>" . "<a href='".generer_url_ecrire(_SPIPLISTES_EXEC_ABONNE_EDIT, "id_auteur=".$row['id_auteur'])."'>".typo($row['nom']).'</a>' . ( ($connect_statut == '0minirezo' && $row['restreint']) ? " <small>"._T('statut_admin_restreint')."</small>" : "" ) . "</td>\n" // // #3: contact mail . "<td>" . ( (strlen($row['email'])>3) ? "<a href='mailto:".$row['email']."'>" . spiplistes_corrige_img_pack("<img src='"._DIR_IMG_PACK."m_envoi_rtl.gif' alt='' /></a>") : "<span title='"._T('spiplistes:Pas_adresse_email')."'>•</span>" ) . "</td>\n" // // #4: site . "<td>" . ( (strlen($row['url_site'])>3) ? "<a href='".$row['url_site']."' class='spip_out'>"._T('lien_site')."</a>" : " " ) . "</td>\n" // // #5: Format si abonne . "<td>" . ( (($abo = $row['format']) && (!empty($abo)) && ($abo != 'non')) ? $trad_map[$abo] : "<span title='"._T('spiplistes:Sans_abonnement')."'> - </span>" ) . "</td>\n"; // si dans la page abonnes_tous, inventaire nb abonnements if($id_liste == 0) { $result .= "" // #6: nombre d'abonnement . "<td>" . ( ($row['compteur']) ? "<span class='spiplistes-legend-stitre'>".$row['compteur']."</span>" : "" ) . "</td>\n"; } $result .= "" // // #7: Modifier l'abonnement . "<td>" . "<a name='abo".$row['id_auteur']."'></a>" ; $exec_url = generer_url_ecrire($script_retour,"id_liste=$id_liste&debut=$debut&tri=$tri"); $action_url = generer_action_auteur('spiplistes_changer_statut_abonne', $row['id_auteur']."-format", $exec_url); $action_url_ajax = generer_action_auteur(_SPIPLISTES_ACTION_CHANGER_STATUT_ABONNE, $row['id_auteur']."-format"); $action_url_ajax = parametre_url($action_url_ajax, 'id_liste', $id_liste); $action_url_ajax = parametre_url($action_url_ajax, 'debut', $debut); $action_url_ajax = parametre_url($action_url_ajax, 'tri', $tri); $a_format = array('html' => "", 'texte' => "", 'non' => ""); foreach(array_keys($a_format) as $key) { $legend = ($key == 'non') ? 'format_aucun' : $key; $a_format[$key] = "" . "<a ".$a_title_abo[$key]." href='" . parametre_url($action_url, 'statut', $key) . "' onclick=\"return AjaxSqueeze('" . parametre_url($action_url_ajax, 'statut', $key) ."', '"._SPIPLISTES_ID_GROSSE_BOITE."', '',event)\">" . _T('spiplistes:'.$legend) . "</a>\n" ; } $result .= "" . " " . $a_format[(in_array($abo, array('html','texte')) ? 'non' : 'texte')] . " | " . $a_format[(($abo == 'html') ? 'texte' : 'html')] . "</td>\n" ; // #8: supprimer l'abonne' de la liste (ne supprime pas dans la table auteurs) $exec_url = generer_url_ecrire($script_retour,"id_liste=$id_liste&debut=$debut&tri=$tri"); $action_url = generer_action_auteur('spiplistes_changer_statut_abonne', $row['id_auteur']."-supprimer", $exec_url); $action_url_ajax = generer_action_auteur(_SPIPLISTES_ACTION_CHANGER_STATUT_ABONNE, $row['id_auteur']."-supprimer"); $action_url_ajax = parametre_url($action_url_ajax, 'id_liste', $id_liste); $action_url_ajax = parametre_url($action_url_ajax, 'debut', $debut); $action_url_ajax = parametre_url($action_url_ajax, 'tri', $tri); $action_url_ajax = parametre_url($action_url_ajax, 'script_retour', $script_retour); $result .= "" . "<td class='supprimer_cet_abo'>" . "<a ".$a_title_abo[$key]." href='$action_url'" . " onclick=\"return AjaxSqueeze('" . $action_url_ajax ."', '"._SPIPLISTES_ID_GROSSE_BOITE."', '',event)\"" . " title='"._T('spiplistes:supprimer_cet_abo')."'" . ">" . " <span>"._T('spiplistes:supprimer_cet_abo')."</span>" . "</a>\n" . "</td>\n" ; // fin de la ligne du tableau $result .= "</tr>\n"; } // $result .= "" . "</table>\n" ; // fleche de pagination si besoin $debut_suivant = $debut + _SPIPLISTES_LIGNES_PAR_PAGE; if (($debut_suivant < $nombre_abonnes) || ($debut > 0)) { $exec_url = generer_url_ecrire($script_retour, "id_liste=$id_liste&tri=$tri&debut=$debut"); $result .= "" . "<table id='bas' width='100%' border='0'>" . "<tr bgcolor='white'><td style='text-align: $spip_lang_left'>" ; if ($debut > 0) { $debut_prec = strval(max($debut - _SPIPLISTES_LIGNES_PAR_PAGE, 0)); $action_url = generer_action_auteur(_SPIPLISTES_ACTION_LISTE_ABONNES , $id_liste." ".$debut_prec." ".$tri); $result .= "" . "<a href='" . parametre_url($action_url, 'redirect', $exec_url) . "' onclick=\"return AjaxSqueeze('$action_url', '"._SPIPLISTES_ID_PETITE_BOITE."', '$exec_url',event)\">" . "<<<" . "</a>\n" ; } if($debut_suivant < $nombre_abonnes) { $action_url = generer_action_auteur(_SPIPLISTES_ACTION_LISTE_ABONNES , $id_liste." ".$debut_suivant." ".$tri); $result .= "" . "</td><td style='text-align: $spip_lang_right'>\n" . "<!-- fleche suivante -->\n" . "<a href='" . parametre_url($action_url, 'redirect', $exec_url) . "' onclick=\"return AjaxSqueeze('$action_url', '"._SPIPLISTES_ID_PETITE_BOITE."', '$exec_url',event)\">" . ">>>" . "</a>\n" ; } $result .= "" . "</td></tr>\n" . "</table>\n" ; } $result .= "" . "</div>\n" // end _SPIPLISTES_ID_PETITE_BOITE ; return($result); }