function exec_spiplistes_courrier_previsu () { global $meta; include_spip('base/abstract_sql'); include_spip('inc/presentation'); include_spip('inc/distant'); include_spip('inc/date'); include_spip('inc/urls'); include_spip('inc/meta'); include_spip('inc/filtres'); include_spip('inc/lang'); include_spip('inc/spiplistes_api'); include_spip('inc/spiplistes_api_courrier'); include_spip('inc/spiplistes_api_abstract_sql'); include_spip('public/assembler'); spiplistes_debug_log ('ACTION: exec_spiplistes_courrier_previsu()'); $eol = PHP_EOL; $int_values = array( 'id_rubrique', 'id_mot', 'id_courrier', 'id_liste' , 'annee', 'mois', 'jour', 'heure', 'minute' ); $str_values = array( 'lang' , 'avec_intro', 'message_intro' , 'avec_patron', 'patron', 'patron_pos' , 'avec_sommaire' , 'titre', 'message', 'pied_patron' , 'Confirmer', 'date' , 'lire_base', 'format', 'plein_ecran' , 'date_sommaire' , 'oeil_html', 'oeil_texte' ); foreach(array_merge($str_values, $int_values) as $key) { $$key = _request($key); // méfiance sur jQuery 1.4.4 qui semble // ne plus transmettre les vars qu'en 1.4.2 // @todo: a creuser, verifier les autres vars ajax transmises //spiplistes_debug_log('PREVISU: '.$key.': '.$$key); } foreach($int_values as $key) { $$key = intval($$key); } $date = format_mysql_date($annee,$mois,$jour,$heure,$minute); $charset = $meta['charset']; $contexte = array( 'id_courrier' => $id_courrier , 'lang' => $lang ); list($lien_html, $lien_texte) = spiplistes_courriers_assembler_patron ( _SPIPLISTES_PATRONS_TETE_DIR . spiplistes_pref_lire('lien_patron') , $contexte , !((spiplistes_pref_lire('opt_lien_en_tete_courrier') == 'oui') && $id_courrier) ); // si envoi a une liste, reprendre le patron de pied de la liste list($pied_html, $pied_texte) = spiplistes_pied_page_assembler_patron($id_liste, $lang); $texte_intro = $texte_patron = $tampon_html = $tampon_texte = $sommaire_html = ''; if(spiplistes_pref_lire('opt_ajout_tampon_editeur') == 'oui') { list($tampon_html, $tampon_texte) = spiplistes_tampon_assembler_patron(); } if($lire_base) { // prendre le courrier enregistre dans la base $sql_select = 'texte,titre' . (($format=='texte') ? ',message_texte' : ''); if( $id_courrier && ($row = sql_fetsel($sql_select, "spip_courriers", "id_courrier=".sql_quote($id_courrier), "", "", 1)) ) { foreach(explode(",", $sql_select) as $key) { $$key = propre($row[$key]); } //if($plein_ecran) { $texte_html = '' . $lien_html . $texte . $pied_html . $tampon_html ; if($format=="texte") { header("Content-Type: text/plain; charset=$charset"); // forcer IE a afficher en ligne. header("Content-Disposition: inline; filename=spiplistes-previsu.txt"); $message_texte = empty($message_texte) ? spiplistes_courrier_version_texte($texte_html) : spiplistes_courrier_version_texte($lien_texte) . spiplistes_courrier_version_texte($message_texte) . $pied_texte . spiplistes_courrier_version_texte($tampon_texte) ; echo($message_texte); exit(0); } // else $texte_html = '' . '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN">'.$eol . (($lang) ? '<html lang="'.$lang.'" dir="ltr">'.$eol : '') . '<head>'.$eol . '<meta http-equiv="Content-Type" content="text/html; charset='.$charset.'">'.$eol . '<meta http-equiv="Pragma" content="no-cache">'.$eol . '<title>'.textebrut($titre).'</title>'.$eol . '</head>'.$eol . '<body style="text-align:center">'.$eol . '<div style="margin:0 auto">'.$eol . $texte_html . '</div>'.$eol . '</body>'.$eol . '</html>'.$eol ; ajax_retour($texte_html); exit(0); //} // end if plein_ecran } else { echo(_T('spiplistes:Erreur_courrier_introuvable')); } } ////////////////////////////////////////////////// // si nouveau courrier (pas dans la base), generer un apercu else { //spiplistes_debug_log('ACTION: generate preview'); $intro_html = $intro_texte = $sommaire_html = $sommaire_texte = ''; if($avec_intro == 'oui') { $ii = propre($message_intro); $intro_html = '<div>'.$ii.'</div>'.$eol; $intro_texte = spiplistes_courrier_version_texte($ii).$eol.$eol; } if($avec_patron == 'oui') { // generer le contenu (editeur) include_spip('public/assembler'); $contexte_template = array( 'date' => trim ($date) , 'id_rubrique' => $id_rubrique , 'id_mot' => $id_mot , 'patron' => $patron , 'lang' => $lang , 'sujet' => $titre , 'message' => $message ); $titre_html = _T('spiplistes:lettre_info').' '.$nomsite; $titre_texte = spiplistes_courrier_version_texte($titre_html) . $eol; list($message_html, $message_texte) = spiplistes_courriers_assembler_patron ( _SPIPLISTES_PATRONS_DIR . $patron , $contexte_template); } // end if($avec_patron == 'oui') else { $titre_html = propre($titre); $message_html = propre($message); $titre_texte = spiplistes_courrier_version_texte($titre_html) . $eol; $message_texte = spiplistes_courrier_version_texte($message_html) . $eol; } if($avec_sommaire == 'oui') { if($id_rubrique > 0) { $sql_where = array('id_rubrique='.sql_quote($id_rubrique) , "statut=".sql_quote('publie')); if($date_sommaire == 'oui') { $sql_where[] = "date >= " . sql_quote($date); } if($sql_result = sql_select("titre,id_article" , "spip_articles" , $sql_where )) { while($row = sql_fetch($sql_result)) { $url = (spiplistes_spip_est_inferieur_193()) ? generer_url_article($row['id_article']) : generer_url_entite($row['id_article'], 'article') ; $ii = typo($row['titre']); $sommaire_html .= "<li> <a href='" . $url . "'>" . $ii . '</a></li>'.$eol; $sommaire_texte .= " - " . textebrut($ii) . "\n " . $url . $eol; } } } if($id_mot > 0) { if($sql_result = sql_select("a.titre,a.id_article" , "spip_articles AS a LEFT JOIN spip_mots_articles AS m ON a.id_article=m.id_article" , array( "a.statut=".sql_quote('publie') , "m.id_mot=".sql_quote($id_mot) , "a.date >= " . sql_quote($sql_date) ) )) { while($row = sql_fetch($sql_result)) { $ii = typo($row['titre']); $url = (spiplistes_spip_est_inferieur_193()) ? generer_url_article($row['id_article']) : generer_url_entite($row['id_article'], 'article') ; $sommaire_html .= "<li> <a href='" . $url . "'> " . $ii . "</a></li>\n"; $sommaire_texte .= " - " . textebrut($ii) . "\n " . $url . $eol; } } } if(!empty($sommaire_html)) { $sommaire_html = "<ul>" . $sommaire_html . "</ul>\n"; $message_html = ($patron_pos == "avant") ? $message_html . $sommaire_html : $sommaire_html . $message_html ; $message_texte = ($patron_pos == "avant") ? $message_texte . $eol . $sommaire_texte : $sommaire_texte . $eol . $message_texte ; } } // end if($avec_sommaire == 'oui') $form_action = ($id_courrier) ? generer_url_ecrire(_SPIPLISTES_EXEC_COURRIER_GERER, 'id_courrier='.$id_courrier) : generer_url_ecrire(_SPIPLISTES_EXEC_COURRIER_GERER) ; $message_html = spiplistes_liens_absolus ($intro_html . $message_html); $message_texte = spiplistes_liens_absolus ($intro_texte . $message_texte); spiplistes_debug_log('ACTION: generate page'); $page_result = '' // boite courrier au format html . debut_cadre_couleur('', true) . "<form id='choppe_patron-1' action='$form_action' method='post' name='choppe_patron-1'>\n" . "<div id='previsu-html' class='switch-previsu'>\n" . _T('spiplistes:version_html') . " / " . "<a href='javascript:jQuery(this).switch_previsu()'>" . _T('spiplistes:version_texte') . "</a>\n" . "<div class='previsu-content'>\n" . $message_html . $message_erreur . $pied_html . $tampon_html . "</div>\n" . "</div>\n" // fin id='previsu-html . "<div id='previsu-texte' class='switch-previsu' style='display:none;'>\n" . "<a href='javascript:jQuery(this).switch_previsu()'>" . _T('spiplistes:version_html') . "</a>\n" . " / " . _T('spiplistes:version_texte') . "<div class='previsu-content'>\n" . "<pre>" . $message_texte . $message_erreur . $pied_texte . $tampon_texte . "</pre>" . "</div>\n" . "</div>\n" // fin id='previsu-texte . "<p style='text-align:right;margin-bottom:0;'>" . "<input type='hidden' name='modifier_message' value='oui' />\n" . ( ($id_courrier) ? "<input type='hidden' name='id_courrier' value='$id_courrier' />\n" : "<input type='hidden' name='new' value='oui' />\n" ) . "<input type='hidden' name='titre' value=\"".htmlspecialchars($titre)."\">\n" . "<input type='hidden' name='message' value=\"".htmlspecialchars($message_html)."\">\n" . "<input type='hidden' name='message_texte' value=\"".htmlspecialchars($message_texte)."\">\n" . "<input type='hidden' name='date' value='$date'>\n" . "<input type='submit' name='btn_courrier_valider' value='"._T('bouton_valider')."' class='fondo' /></p>\n" . "</form>\n" . fin_cadre_couleur(true) . "<br />\n" ; echo($page_result); } exit(0); }
function exec_spiplistes_courrier_edit(){ include_spip('inc/barre'); include_spip('inc/documents'); include_spip('base/spiplistes_tables'); include_spip('inc/spiplistes_api'); include_spip('inc/spiplistes_api_presentation'); include_spip('inc/spiplistes_dater_envoi'); include_spip('inc/spiplistes_api_courrier'); include_spip('public/assembler'); include_spip('inc/spiplistes_naviguer_paniers'); global $connect_statut , $connect_toutes_rubriques , $connect_id_auteur , $spip_ecran , $compteur_block ; $eol = "\n"; $id_temp = false; $type = _request('type'); $id_courrier = intval(_request('id_courrier')); foreach(array('btn_courrier_apercu') as $key) { $$key = _request($key); } if($id_courrier > 0) { /////////////////////////// // Edition /modification d'un courrier $sql_select_array = array('titre','texte','message_texte','type','statut','id_auteur'); if($row = spiplistes_courriers_premier($id_courrier, $sql_select_array)) { foreach($sql_select_array as $key) { $$key = $row[$key]; } $titre = entites_html($titre); $texte = entites_html($texte); } else { $id_courrier = false; } } // n'existe pas encore ? // placer un marqueur pour les documents joints else { $id_temp = 0-intval(substr(creer_uniqid(),0,5)); } // l'edition du courrier est reservee aux super-admins // ou aux admin createur du courrier $flag_editable = (($connect_statut == "0minirezo") && ($connect_toutes_rubriques || ($connect_id_auteur == $id_auteur) || !$id_courrier)); if($flag_editable) { if(!$id_courrier) { // si pas de ID courrier, c'est une creation $statut = _SPIPLISTES_COURRIER_STATUT_REDAC; $type = _SPIPLISTES_COURRIER_TYPE_NEWSLETTER; $new = 'oui'; $titre = _T('spiplistes:Nouveau_courrier'); $clearonfocus = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\""; } else { $clearonfocus = ""; } $gros_bouton_retour = ($id_courrier) ? icone( _T('spiplistes:retour_link') , generer_url_ecrire(_SPIPLISTES_EXEC_COURRIER_GERER, "id_courrier=$id_courrier") , spiplistes_items_get_item('icon', $statut) , "rien.gif" , "" , false ) : "" ; $boite_documents = afficher_documents_colonne( ($id_courrier ? $id_courrier : $id_temp ) , 'courrier'); } //////////////////////////////////// // PAGE CONTENU //////////////////////////////////// $titre_page = _T('spiplistes:edition_du_courrier'); // Permet entre autres d'ajouter les classes a' la page : <body class='$rubrique $sous_rubrique'> $rubrique = _SPIPLISTES_PREFIX; $sous_rubrique = "courrier_edit"; $commencer_page = charger_fonction('commencer_page', 'inc'); echo($commencer_page(_T('spiplistes:spiplistes') . " - " . $titre_page, $rubrique, $sous_rubrique)); if(!$flag_editable) { 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_info_id(_T('spiplistes:Courrier_numero_'), $id_courrier, true) . spiplistes_naviguer_paniers_courriers(_T('spiplistes:aller_au_panier_'), true) . $boite_documents . 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() // ne pas gener l'edition . pipeline('affiche_droite', array('args'=>array('exec'=>$sous_rubrique),'data'=>'')) . debut_droite($rubrique, true) ; $page_result .= "" // le bloc pour apercu (retour ajax) . "<div id='apercu-courrier' style='clear:both;tex-align:center'></div>\n" // . debut_cadre_formulaire('', true) . "<a name='haut-block' id='haut-block'></a>\n" // // // bloc titre . "\n<table cellpadding='0' cellspacing='0' border='0' width='100%'>\n" . "<tr width='100%'>" . "<td>" . $gros_bouton_retour . "</td>" . "<td><img src='"._DIR_IMG_PACK."/rien.gif' width='10'></td>\n" . "<td width='100%'>" . ($id_courrier ? _T('spiplistes:Modifier_un_courrier__') : _T('spiplistes:Creer_un_courrier_') )."<br />\n" . spiplistes_gros_titre($titre, '', true) . "</td>\n" . "</tr></table>\n" . "<hr />\n" ; // // debut formulaire $page_result .= "" . "<form action='".generer_url_ecrire(_SPIPLISTES_EXEC_COURRIER_GERER , ($id_courrier ? "id_courrier=$id_courrier" : "") ) ."' method='post' name='formulaire_courrier_edit' id='formulaire_courrier_edit'>\n" . "<input type='hidden' name='modifier_message' value=\"oui\" />\n" . "<input type='hidden' name='id_courrier' value='$id_courrier' />\n" // // bloc sujet du courrier . "<label for='sujet_courrier'>"._T('spiplistes:sujet_courrier').":</label>\n" . "<input id='sujet_courrier' type='text' class='formo' name='titre' value=\"$titre\" size='40' $clearonfocus />\n" . "<p style='margin-bottom:1.75em;'>"._T('spiplistes:Courrier_edit_desc')."</p>\n" ; $titre_block_depliable = _T('spiplistes:Generer_le_contenu'); $page_result .= '' // // generer le contenu // Reprise du Formulaire adapte de abomailman () // MaZiaR - NetAktiv // tech@netaktiv.com . debut_cadre_relief(_DIR_PLUGIN_SPIPLISTES_IMG_PACK.'stock_insert-slide.gif', true) //. bouton_block_invisible(md5(_T('spiplistes:charger_patron'))) . spiplistes_bouton_block_depliable($titre_block_depliable, false, md5(_T('spiplistes:charger_patron'))) . "<span class='verdana2 triangle_label' onclick=\"javascript:$('#triangle".$compteur_block."').click();\">" . (spiplistes_spip_est_inferieur_193() ? $titre_block_depliable : "") . "</span>\n" . spiplistes_debut_block_invisible(md5(_T('spiplistes:charger_patron'))) // . '<div id="ajax-loader" align="right">' . '<script type="text/javascript">'.$eol . 'document.write(\'<img src="' . _DIR_PLUGIN_SPIPLISTES_IMG_PACK . 'ajax_indicator.gif" alt="" />\');' . '</script>'.$eol . '<noscript>'.$eol . spiplistes_boite_alerte (_T('spiplistes:javascript_inactif'), true) . $eol . '</noscript>'.$eol //. '<img src="' . _DIR_PLUGIN_SPIPLISTES_IMG_PACK . 'ajax_indicator.gif" alt="" />' . '</div>'.$eol ; if(strpos($GLOBALS['meta']['langues_multilingue'], ",") !== false) { $page_result .= "" // selecteur de langues . "<div class='boite-generer-option'>\n" . "<label class='verdana2'>"._T('spiplistes:Langue_du_courrier_') . "<select name='lang' class='fondo'>\n" . liste_options_langues('changer_lang') . "</select></label>\n" . "</div>\n" ; } $page_result .= "" // Prendre en compte a partir de quelle date ? . spiplistes_dater_envoi( 'courrier', $id_courrier, $statut , $flag_editable , _T('spiplistes:Contenu_a_partir_de_date_') , normaliser_date(time()), 'btn_changer_date' , false ) ; $page_result .= "" // texte introduction a placer avant le patron et sommaire . '<div class="boite-generer-option">'.$eol . '<label class="verdana2">' . '<input type="checkbox" id="avec_intro" name="avec_intro" value="non" />' . _T('spiplistes:avec_introduction') . '</label>'.$eol . '<div id="choisir_intro" class="option">'.$eol . '<label class="verdana2" style="display:block;" for="message_intro">' . _T('spiplistes:introduction_du_courrier_').':</label>'.$eol . afficher_barre('document.formulaire_courrier_edit.message_intro') . '<textarea id="message_intro" name="message_intro" '.$GLOBALS['browser_caret'].' rows="5" cols="40" wrap="soft" style="width:100%">'.$eol . '</textarea>' . '</div>'.$eol . '</div>'.$eol ; // selection du patron $page_result .= '' . "<div class='boite-generer-option'>\n" . "<label class='verdana2'>" . "<input type='checkbox' id='avec_patron' name='avec_patron' value='non' />" . _T('spiplistes:a_partir_de_patron') . "</label>\n" . "<div id='choisir_patron' class='option'>" . "<label class='verdana2'>" . _T('spiplistes:choisir_un_patron_').":</label>\n" . spiplistes_boite_selection_patrons ("", true, _SPIPLISTES_PATRONS_DIR, "patron", 1) . "<div id='patron_pos' style='display:none'>\n" . "<span class='verdana2'>" . _T('spiplistes:generer_patron_'). "</span>\n" . spiplistes_form_input_radio ('patron_pos', 'avant', _T('spiplistes:generer_patron_avant'), true, true, false) . spiplistes_form_input_radio ('patron_pos', 'apres', _T('spiplistes:generer_patron_apres'), false, true, false) . "</div>\n" . "</div>\n" . "</div>\n" ; // Generer un sommaire $page_result .= "" . "<div class='boite-generer-option'>\n" . "<label class='verdana2'>" . "<input type='checkbox' id='avec_sommaire' name='avec_sommaire' value='non' />" . _T('spiplistes:generer_un_sommaire') . "</label>\n" . "<div id='choisir_sommaire' class='option'>"; $page_result .= "" // // selecteur de rubriques . "<label class='verdana2' for='ajouter_rubrique'>"._T('spiplistes:Lister_articles_de_rubrique').":</label>\n" . "<select name='id_rubrique' id='ajouter_rubrique' class='formo'>\n" . "<option value=''></option>\n" . spiplistes_arbo_rubriques() . "</select>\n" . "<br />\n" // // selecteur des mots-cles . "<label class='verdana2' for='ajouter_motcle'>"._T('spiplistes:Lister_articles_mot_cle').":</label>\n" . "<select name='id_mot' id='ajouter_motcle' class='formo'>\n" . "<option value=''></option>\n" ; if (version_compare($GLOBALS['spip_version_code'], '1.9300', '<')){ $rqt_gmc = sql_select (array('id_groupe','titre'), 'spip_groupes_mots', "articles=".sql_quote('oui')); }else{ $rqt_gmc = sql_select (array('id_groupe','titre'), 'spip_groupes_mots', "tables_liees LIKE '%articles%'"); } while ($row = sql_fetch($rqt_gmc)) { $id_groupe = intval($row['id_groupe']); $titre = $row['titre']; $page_result .= "<option value='' disabled='disabled'>". supprimer_numero (typo($titre)) . "</option>\n"; $rqt_mc = sql_select (array('id_mot','titre'), 'spip_mots', "id_groupe=".sql_quote($id_groupe)); while ($row = sql_fetch($rqt_mc)) { $id_mot = intval($row['id_mot']); $titre = supprimer_numero (typo($row['titre'])); $page_result .= "<option value='$id_mot'>-- $titre</option>\n"; } } $page_result .= "" . "</select><br />\n" // // a partir de la date selectionnee plus haut . spiplistes_form_input_item ('checkbox', 'date_sommaire', 'oui' , _T('spiplistes:sommaire_date_debut'), $sommaire_date == 'oui', true, false) . "</div>\n" . "</div>\n" ; // fin generer le sommaire // choisir son patron de pied $page_result .= "" . "<div class='boite-generer-option'>\n" . "<label class='verdana2'>" . _T('spiplistes:avec_patron_pied__') . spiplistes_boite_selection_patrons (_SPIPLISTES_PATRONS_PIED_DEFAUT, true, _SPIPLISTES_PATRONS_PIED_DIR, "pied_patron", 1) . "</label>\n" . "</div>\n" ; $page_result .= "" . "<p class='verdana2'>\n" . _T('spiplistes:Cliquez_Generer_desc' , array('titre_bouton'=>_T('spiplistes:generer_Apercu'), 'titre_champ_texte'=>_T('spiplistes:texte_courrier')) ) . "</p>\n" . "<p class='verdana2'>\n" ._T('spiplistes:calcul_patron_attention') . "</p>\n" . spiplistes_form_bouton_valider ('Valider', _T('spiplistes:generer_Apercu')) . fin_block() // fin_block_invisible . fin_cadre_relief(true) . "<br />\n" ; // // bloc du courrier (titre, texte), toujours visible $page_result .= '' . '<label for="texte_courrier">'._T('spiplistes:texte_courrier').'</label>' . afficher_barre('document.formulaire_courrier_edit.message') . '<textarea id="texte_courrier" name="message" '.$GLOBALS['browser_caret'].' class="porte_plume_partout barre_inserer formo" rows="20" cols="40" wrap=soft>'.$eol . $texte . '</textarea>'.$eol . (!$id_courrier ? '<input type="hidden" name="new" value="oui" />'.$eol : '') // . '<p style="text-align:right;">'.$eol . '<input type="submit" onclick="this.value=\'oui\';" id="btn_courrier_edit" ' . ' name="btn_courrier_valider" value="'._T('bouton_valider').'" class="fondo" /></p>'.$eol // le marqueur pour les documents joints . (($id_temp!==false) ? '<input type="hidden" name="id_temp" value="' . $id_temp . '" />'.$eol : '') // // fin formulaire . '</form>'.$eol . fin_cadre_formulaire(true) ; echo($page_result); // COURRIER EDIT FIN --------------------------------------------------------------- echo pipeline('affiche_milieu',array('args'=>array('exec'=>$sous_rubrique),'data'=>'')) , spiplistes_html_signature(_SPIPLISTES_PREFIX) , fin_gauche(), fin_page(); }
function spiplistes_boite_patron ($flag_editable, $id_liste , $exec_retour, $nom_bouton_valider, $chemin_patrons, $titre_boite = "" , $msg_patron = false, $patron = "") { // bloc selection patron $result = "" . debut_cadre_relief(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."patron-24.png", true) . "<div class='verdana1' style='text-align: center;'>\n" ; $titre_boite = "<strong>$titre_boite</strong>\n"; if($flag_editable) { // inclusion du script de gestion des layers de SPIP if(($patron === true) || (is_string($patron) && empty($patron))) { $result .= "" . spiplistes_bouton_block_depliable ($titre_boite, true, md5($nom_bouton_valider)) . (spiplistes_spip_est_inferieur_193() ? $titre_boite : "") . spiplistes_debut_block_visible(md5($nom_bouton_valider)) ; } else { $result .= "" . spiplistes_bouton_block_depliable ($titre_boite, false, md5($nom_bouton_valider)) . (spiplistes_spip_est_inferieur_193() ? $titre_boite : "") . spiplistes_debut_block_invisible(md5($nom_bouton_valider)) ; } } else { $result .= $titre_boite; } if($flag_editable) { $result .= "\n" . "<form action='".generer_url_ecrire($exec_retour, "id_liste=$id_liste")."' method='post' style='margin:1ex;'>\n" . spiplistes_boite_selection_patrons ($patron, true, $chemin_patrons) . "<div style='margin-top:1em;text-align:right;'><input type='submit' name='$nom_bouton_valider' value='"._T('bouton_valider')."' class='fondo' /></div>\n" . "</form>\n" . fin_block() ; } else { } $result .= "\n" . "<div style='text-align:center'>\n" . ($msg_patron ? $msg_patron : "<span style='color:gray;'><"._T('spiplistes:aucun')."></span>\n") . "</div>\n" . "</div>\n" . fin_cadre_relief(true); ; return($result); }
/** * Permet de forcer l'abonnement a une liste * $statut = "tous" => '6forum' + '1comite' + '0minirezo' * si statut == 'aucun', desabonne tous * @global string $connect_id_auteur * @global boolean $connect_toutes_rubriques * @global int $connect_id_auteur * @param int $id_liste * @param string $statut * @param boolean $forcer_format_reception * @return boolean */ function spiplistes_listes_forcer_abonnement ($id_liste, $statut, $forcer_format_reception) { global $connect_statut , $connect_toutes_rubriques , $connect_id_auteur ; $id_liste = intval($id_liste); if ($id_liste <= 0) { return(false); } $sql_where = ''; if($statut=="tous") { $sql_where = " (statut=".sql_quote('6forum')." OR statut=".sql_quote('1comite')." OR statut=".sql_quote('0minirezo').")"; } if($statut=="auteurs") { $sql_where = " (statut=".sql_quote('1comite')." OR statut=".sql_quote('0minirezo').")"; } else if(in_array($statut, array('6forum', '1comite', '0minirezo'))) { $sql_where = " statut=".sql_quote($statut).""; } if(!empty($sql_where)) { // cherche les non-abonnes /* * "SELECT id_auteur FROM spip_auteurs WHERE $sql_where AND LENGTH(email) AND id_auteur NOT IN ($selection)" */ $selection = (spiplistes_spip_est_inferieur_193()) ? "SELECT id_auteur FROM spip_auteurs_listes WHERE id_liste=".sql_quote($id_liste) : sql_select("id_auteur", "spip_auteurs_listes", "id_liste=".sql_quote($id_liste),'','','','','',false) ; $sql_result = sql_select( 'id_auteur' , 'spip_auteurs' , array( $sql_where , "LENGTH(email)" , "id_auteur NOT IN ($selection)" ) ); if($sql_result) { $sql_values = $elargis = ""; $nb = sql_count($sql_result); if($nb > 0) { while($row = sql_fetch($sql_result)) { $sql_values .= " (".sql_quote(intval($row['id_auteur'])) . ", $id_liste, NOW()" // rajoute le format si force' . (($forcer_format_reception) ? "," . sql_quote($forcer_format_reception) : "") . "),"; $elargis .= sql_quote(intval($row['id_auteur'])); } if(!empty($sql_values)) { $sql_values = rtrim($sql_values, ","); $sql_result = sql_insert('spip_auteurs_listes' , "(id_auteur, id_liste, date_inscription" . ($forcer_format_reception ? ",format" : "") . ")" , $sql_values ); if($sql_result === false) { spiplistes_sqlerror_log("listes_forcer_abonnement"); return(false); } else { spiplistes_log($nb . " AUTEURS ($statut) ADDED TO LISTE #$id_liste BY ID_AUTEUR #$connect_id_auteur"); if($forcer_format_reception) { // le format est demande' force'. // rajouter les abonnes manquants a spip_auteurs_elargis $sql_insert = " INSERT INTO spip_auteurs_elargis (id_auteur,`spip_listes_format`) SELECT l.id_auteur,l.format FROM spip_auteurs_listes AS l WHERE l.id_liste=" . sql_quote($id_liste) . " AND NOT EXISTS (SELECT NULL FROM spip_auteurs_elargis AS e WHERE l.id_auteur = e.id_auteur) "; if(sql_query($sql_insert) === false) { spiplistes_sqlerror_log("listes_forcer_abonnement"); } else { spiplistes_log("RECEPT. FORMAT MODIFIED FOR ID_LISTE #$id_liste BY ID_AUTEUR #$connect_id_auteur"); } } return($nb); } } } return(0); // pas d'abo a rajouter. Pas une erreur. } return(false); } else if($statut == "aucun") { // desabonner tous $result = 0; $sql_result = sql_delete('spip_auteurs_listes', "id_liste=".sql_quote($id_liste)); if($sql_result) { spiplistes_log("auteurs (tous) removed from id_liste #$id_liste by id_auteur #$connect_id_auteur"); $result++; return($result); } } return(false); } // end spiplistes_listes_forcer_abonnement()
, array('date_heure DESC') , 1 ); return($date_f); } function balise_DATE_MODIF_FORUM($p) { $p->code = 'calcul_DATE_MODIF_FORUM()'; $p->statut = 'php'; return $p; } // CP-20080906 : compatibilité SPIP 192d // autoriser_webmestre_dist() considere que _ID_WEBMESTRES est defini // mais c'est une option en 192d ?! if(spiplistes_spip_est_inferieur_193() && !function_exists('autoriser_webmestre')) { function autoriser_webmestre($faire, $type, $id, $qui, $opt) { $def_webmestre = defined('_ID_WEBMESTRES') ? in_array($qui['id_auteur'], explode(':', _ID_WEBMESTRES)) : true ; $r = $def_webmestre && ($qui['statut'] == '0minirezo') && !$qui['restreint'] ; // spiplistes_log('resultat de autoriser_webmestre() '.gettype($r).' '. ($r ? 'OK' : 'niet')); return($r);
/** * ecrire dans la table 'spip_meta' le champ... * en general pour les preferences * @return true */ function spiplistes_ecrire_metas() { if(spiplistes_spip_est_inferieur_193()) { include_spip('inc/meta'); ecrire_metas(); } return (true); }
function spiplistes_auteurs_non_abonnes_compter () { static $nb; if($nb === null) { $selection = (spiplistes_spip_est_inferieur_193()) ? 'SELECT id_auteur FROM spip_auteurs_listes GROUP BY id_auteur' : sql_select('id_auteur', 'spip_auteurs_listes', '','id_auteur','','','','',false) ; $sql_where = array( 'statut!='.sql_quote('5poubelle') , 'statut!='.sql_quote('nouveau') , 'id_auteur NOT IN ('.$selection.')' ); $nb = sql_countsel('spip_auteurs', $sql_where); } return($nb); }
function exec_spiplistes_import_export(){ include_spip('inc/presentation'); include_spip('inc/acces'); include_spip('inc/spiplistes_api'); include_spip('inc/spiplistes_api_presentation'); global $connect_statut , $connect_toutes_rubriques , $connect_id_auteur ; static $eol = PHP_EOL; // initialise les variables postées par le formulaire foreach(array( 'btn_valider_import', 'abos_liste', 'format_abo', 'forcer_abo' // retour import , 'btn_valider_export', 'export_id' // retour export , 'separateur', 'exporter_statut_auteur' ) as $key) { $$key = _request($key); } $separateur = (($separateur == 'tab') ? "\t" : ';'); $flag_admin = ($connect_statut == "0minirezo") && $connect_toutes_rubriques; $flag_moderateur = false; $flag_autorise = $flag_admin || ( $flag_moderateur = ($listes_moderees = spiplistes_mod_listes_id_auteur($connect_id_auteur)) ) ; // exportation de liste. Retour formulaire local. // les admins tt rubriques peuvent tt exporter // le moderateur ne peut exporter que sa liste if( $flag_autorise && ( $flag_admin || in_array($export_id, $listes_moderees) ) ) { // generation du fichier export ? if($btn_valider_export && $export_id) { $sql_select = array('a.email', 'a.nom', 'a.login', 'a.statut'); $sql_from = array('spip_auteurs AS a'); $sql_where = array("a.statut!=".sql_quote('5poubelle')); if(($id_liste = intval($export_id)) > 0) { // exportation d'une liste ID ? $sql_from[] = "spip_auteurs_listes AS l"; $sql_where[] = "l.id_liste=".sql_quote($id_liste); $sql_where[] = "a.id_auteur=l.id_auteur"; } else { // autre type de liste if($export_id == "sans_abonnement") { if(spiplistes_spip_est_inferieur_193()) { $sql_where[] = "a.id_auteur NOT IN (SELECT id_auteur FROM spip_auteurs_listes GROUP BY id_auteur)"; } else { $selection = sql_select("id_auteur", "spip_auteurs_listes", '','id_auteur','','','','',false); $sql_where[] = "a.id_auteur NOT IN ($selection)"; } } else if($export_id == "desabo") { $sql_from[] = "spip_auteurs_elargis AS f"; $sql_where[] = "a.id_auteur=f.id_auteur"; $sql_where[] = "f.`spip_listes_format`=".sql_quote('non'); } } $sql_result = sql_select( $sql_select , $sql_from , $sql_where ); $nb_inscrits = sql_count($sql_result); $exporter_statut_auteur = ($exporter_statut_auteur == 'oui'); $str_export = '' . '# ' . spiplistes_html_signature(_SPIPLISTES_PREFIX, false).$eol . '# '._T('spiplistes:membres_liste').$eol . '# liste id: $export_id\n' . '# '.spiplistes_nom_site_texte().$eol . '# '.$GLOBALS['meta']['adresse_site'].$eol . '# date: '.date('Y-m-d').$eol . '# nb abos: '.$nb_inscrits.$eol.$eol . '#'.$eol . '# \'email\''.$separateur.'\'login\''.$separateur.'\'nom\'' . ($exporter_statut_auteur ? $separateur.'\'statut\'' : '') . $eol.$eol ; while($row = sql_fetch($sql_result)) { $str_export .= $row['email'].$separateur.$row['login'].$separateur.$row['nom'] . ($exporter_statut_auteur ? $separateur.$row['statut'] : '') . "\n" ; } // envoie le fichier header('Content-type: text/plain'); header('Content-Disposition: attachment; filename="export_liste_$export_id-'.date("Y-m-d").'.txt"'); echo ($str_export); exit; } // fin de generation du fichier export } //////////////////////////////////// // PAGE CONTENU //////////////////////////////////// $titre_page = _T('spiplistes:listes_de_diffusion_'); // Permet entre autres d'ajouter les classes a' la page : <body class='$rubrique $sous_rubrique'> $rubrique = _SPIPLISTES_PREFIX; $sous_rubrique = "import_export"; $commencer_page = charger_fonction('commencer_page', 'inc'); echo($commencer_page(_T('spiplistes:spiplistes') . " - " . _T('spiplistes:import_export'), $rubrique, $sous_rubrique)); // la gestion du courrier est réservée aux admins 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) . 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() . pipeline('affiche_droite', array('args'=>array('exec'=>$sous_rubrique),'data'=>'')) . debut_droite($rubrique, true) ; // importation $flag_import_fichier_ok = (count($_FILES) && is_array($fichier_import = $_FILES['fichier_import']) && !$fichier_import['error']); if($btn_valider_import && $flag_import_fichier_ok) { if(!($abos_liste && is_array($abos_liste) && count($abos_liste))) { // A oublie' de selectionner une liste de destination $page_result .= spiplistes_boite_alerte(_T('spiplistes:Selectionnez_une_liste_pour_import'), true); } } // import form $page_result .= "" . debut_cadre_trait_couleur(_DIR_PLUGIN_SPIPLISTES_IMG_PACK.'listes_in-24.png', true , '', _T('spiplistes:Importer')) . "<p class='verdana2'>"._T('spiplistes:_aide_import')."</p>\n" ; if($flag_import_fichier_ok) { //syslog(LOG_NOTICE, 'memory_limit: ' . get_cfg_var('memory_limit')); //syslog(LOG_NOTICE, 'memory_get_usage[1]: ' . memory_get_usage()); //syslog(LOG_NOTICE, 'memory_get_peak_usage[1]: ' . memory_get_peak_usage()); //syslog(LOG_NOTICE, 'filesize: ' . filesize($fichier_import['tmp_name'])); if($abos_liste && is_array($abos_liste) && count($abos_liste)) { include_spip('inc/spiplistes_import'); $page_result .= '' . debut_boite_info(true) . spiplistes_titre_boite_info(_T('spiplistes:Resultat_import')) . spiplistes_import( $fichier_import['tmp_name'] , $fichier_import['name'] , $abos_liste , $format_abo , $separateur , $flag_admin , $listes_moderees , $forcer_abo ) . fin_boite_info(true) . '<br />' ; } } $list = sql_select( array('id_liste','titre','texte') , 'spip_listes' , spiplistes_listes_sql_where_or(_SPIPLISTES_LISTES_STATUTS_OK)); $nb_listes = sql_count($list); if($nb_listes) { $listes_array = array(); while($row = sql_fetch($list)) { $listes_array[] = $row; } } if(!$nb_listes) { $page_result .= spiplistes_boite_alerte(_T('spiplistes:Pas_de_liste_pour_import'), true); } else { $page_result .= "" . "<form action='" . generer_url_ecrire(_SPIPLISTES_EXEC_IMPORT_EXPORT) . "' method='post' enctype='multipart/form-data'name='importform'>\n" . debut_cadre_relief("", true, "", _T('spiplistes:Liste_de_destination')) . "<p class='verdana2'>"._T('spiplistes:Selectionnez_une_liste_de_destination')."</p>\n" . "<ul class='liste-listes verdana2'>\n" ; $listes_sans_patron = array(); if(count($listes_array) > 0) { // une liste sans patron ne peut pas contenir d'abonnés. // récupère la liste des listes qui n'ont pas de patron. $sql_result = sql_select('id_liste', 'spip_listes' , array("patron=''" , "(statut=".implode(" OR statut=", array_map("sql_quote", explode(";", _SPIPLISTES_LISTES_STATUTS_OK))).")" ) ); while($row = sql_fetch($sql_result)) { $listes_sans_patron[] = $row['id_liste']; } } // liste des listes (destination) $couleur_ligne = 0; foreach($listes_array as $row) { $id_liste = $row['id_liste'] ; if( !in_array($id_liste, $listes_sans_patron) && ($flag_admin || in_array($id_liste, $listes_moderees)) ) { $titre = couper($row['titre'], 30, '...'); $texte = couper($row['texte'], 30, '...'); $label = _T('spiplistes:Liste_de_destination').": $titre"; $checked = ($nb_listes == 1) ? "checked='checked'" : ""; $class = ($couleur_ligne++ % 2) ? "class='row-even'" : ""; $page_result .= "" . "<li style='padding:4px' $class >" . "<input name='abos_liste[]' type='checkbox' id='abos_$id_liste' value='$id_liste' title=\"$label\" $checked />\n" . "<label for='abos_$id_liste'><strong>".$titre."</strong> <em>".$texte."</em></label>\n" . "</li>\n" ; } } $page_result .= "" . "</ul>" . fin_cadre_relief(true) // // Sélection du format de réception . debut_cadre_relief("", true, "", _T('spiplistes:format_de_reception_')) . "<ul class='liste-listes verdana2'>\n" . "<li>" . spiplistes_form_input_radio('format_abo', 'html', _T('spiplistes:html'), true, true, false) . "</li>\n" . "<li>" . spiplistes_form_input_radio('format_abo', 'texte', _T('spiplistes:texte'), false, true, false) . "</li>\n" . "<li>" . spiplistes_form_input_radio('format_abo', 'non', _T('spiplistes:desabonnement'), false, true, false) . "</li>\n" . "</ul>" . fin_cadre_relief(true) // // cadre insertion nom de fichier . debut_cadre_relief("", true, "", _T('spiplistes:importer_fichier')) . "<input type='file' size='40' name='fichier_import' />" // . spiplistes_fieldset_separateur($separateur) // // forcer les abonnements . spiplistes_fieldset_option( _T('spiplistes:option_import_') , 'forcer_abo' , 'oui' , _T('spiplistes:forcer_abos_'), ($forcer_abo == 'oui') ) // . fin_cadre_relief(true) . spiplistes_form_bouton_valider('btn_valider_import') . spiplistes_form_fin(true) ; } // end else $page_result .= fin_cadre_trait_couleur(true); // fin formulaire import // export //(original from erational.org) // formulaire d'export if ($nb_listes > 0) { $page_result .= "" . debut_cadre_trait_couleur(_DIR_PLUGIN_SPIPLISTES_IMG_PACK.'listes_out-24.png', true, "", _T('spiplistes:Exporter')) // exportation par listes . spiplistes_form_debut(generer_url_ecrire(_SPIPLISTES_EXEC_IMPORT_EXPORT), true) . debut_cadre_relief("", true, "", _T('spiplistes:Exporter_une_liste_d_abonnes')) . "<ul class='liste-listes verdana2'>\n" ; $couleur_ligne = 0; foreach($listes_array as $row) { $id_liste = intval($row['id_liste']); if($flag_admin || in_array($id_liste, $listes_moderees)) { $titre = couper($row['titre'], 30, '...'); $class = ($couleur_ligne++ % 2) ? "class='row-even'" : ""; list($nb_abos, $html, $texte) = spiplistes_listes_nb_abonnes_compter($id_liste, true); if($nb_abos > 0) { $page_result .= "" . "<li style='padding:4px' $class >" . spiplistes_form_input_radio('export_id', $id_liste , "<strong>".$titre."</strong> <em>" . spiplistes_nb_abonnes_liste_str_get($id_liste, $nb_abos, $html, $texte) . "</em>" , ($nb_listes==1), true, false) . "</li>\n" ; } } } $page_result .= "" . "</ul>" . fin_cadre_relief(true) . "<!-- fin de liste export -->\n" // // exportation autres . debut_cadre_relief("", true, "", _T('spiplistes:Exporter_une_liste_de_non_abonnes')) . "<div class='verdana2'>\n" . spiplistes_form_input_radio('export_id', 'sans_abonnement', _T('spiplistes:abonne_aucune_liste'), false, true, false) . spiplistes_form_input_radio('export_id', 'desabo', _T('spiplistes:desabonnes'), false, true, false) . "</div>" . fin_cadre_relief(true) . "<fieldset class='verdana2'><legend>"._T('spiplistes:export_etendu_').":</legend>" . spiplistes_form_input_checkbox('exporter_statut_auteur', 'oui' , _T('spiplistes:exporter_statut'), false, true, false) . "</fieldset>\n" // . spiplistes_fieldset_separateur($separateur) // . spiplistes_form_bouton_valider('btn_valider_export') . spiplistes_form_fin(true) . fin_cadre_trait_couleur(true) ; } echo($page_result); echo pipeline('affiche_milieu',array('args'=>array('exec'=>$sous_rubrique),'data'=>'')) , spiplistes_html_signature(_SPIPLISTES_PREFIX) , fin_gauche(), fin_page(); }
} else if ($decal < (3600 * 24 * 7 * 4)) { $semaines = ceil ($decal / (3600 * 24 * 7)); $retour = _T($il_y_a, array("delai"=>"$semaines "._T("date_semaines"))); } else if ($decal < (3600 * 24 * 30 * 6)) { $mois = ceil ($decal / (3600 * 24 * 30)); $retour = _T($il_y_a, array("delai"=>"$mois "._T("date_mois"))); } else { $retour = _T($il_y_a, array("delai"=>" ")).affdate_court($date); } return $retour; } /* CP-20090109 * Deux filtres SPIP2 bien sympathiques pour le formulaire. * */ if (function_exists('spiplistes_spip_est_inferieur_193') AND spiplistes_spip_est_inferieur_193()) { if(!function_exists('oui')) { function oui($c) { return($c ? ' ' : ''); } } if(!function_exists('non')) { function non($c) { return($c ? '' : ' '); } } }
function spiplistes_journal_lire ($logname = NULL, $logdir = NULL, $logsuf = NULL) { // definition des constantes 1.9.3 pour les SPIP anterieurs if (!defined('_DIR_LOG')){ define('_DIR_LOG',defined('_DIR_TMP')?_DIR_TMP:_DIR_SESSION); } if (!defined('_FILE_LOG_SUFFIX')){ define('_FILE_LOG_SUFFIX','.log'); } if (!defined('_FILE_LOG')){ define('_FILE_LOG','spip'); } $logname = ($logname === NULL ? _FILE_LOG : $logname); $logfile = (spiplistes_spip_est_inferieur_193()) ? _DIR_TMP . $logname . '.log' : ($logdir===NULL ? _DIR_LOG : $logdir) . (test_espace_prive()?'prive_':'') //distinguer les logs prives et publics . $logname . ($logsuf === NULL ? _FILE_LOG_SUFFIX : $logsuf) ; $result = (file_exists($logfile)) //? file_get_contents($logfile, false, null, 0, 2048) ? file_get_contents($logfile) : _T('fichier_introuvable', array('fichier', $logfile)) ; $result = "" . "<div class='verdana2' style='height:360px;overflow:scroll;background:url(rien.gif)'>\n" . nl2br($result) . "</div>\n" ; return($result); }
function spiplistes_courrier_supprimer_queue_envois ($sql_where_key, $sql_where_value) { $sql_where = $sql_where_key."=".sql_quote($sql_where_value); switch($sql_where_key) { case 'id_courrier': $result = sql_delete("spip_auteurs_courriers", $sql_where); break; case 'statut': if(spiplistes_spip_est_inferieur_193()) { $result = sql_delete("spip_auteurs_courriers" , "id_courrier IN (SELECT id_courrier FROM spip_courriers WHERE $sql_where)"); } else { // Sur les precieux conseils de MM : // passer la requete en 2 etapes pour assurer portabilite sql $selection = sql_select("id_courrier", "spip_courriers", $sql_where,'','','','','',false); $result = sql_delete("spip_auteurs_courriers", "id_courrier IN ($selection)"); } break; } return($result); }
function spiplistes_bouton_block_depliable ($titre = "", $deplie = true, $nom_block = "", $icone = "") { if(empty($titre)) { $titre = _T("info_sans_titre"); } include_spip('inc/layer'); if(spiplistes_spip_est_inferieur_193()) { $f = ($deplie ? "bouton_block_visible" : "bouton_block_invisible"); $result = $f($nom_block, $icone); } else { $result = bouton_block_depliable($titre, $deplie, $nom_block); } return($result); }