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(); }
function exec_spiplistes_courriers_casier () { include_spip ('inc/acces'); include_spip ('inc/filtres'); include_spip ('inc/config'); include_spip ('inc/barre'); include_spip ('inc/mots'); include_spip ('inc/documents'); include_spip('inc/spiplistes_api_globales'); include_spip('inc/spiplistes_api'); include_spip('inc/spiplistes_api_presentation'); include_spip('inc/spiplistes_naviguer_paniers'); global $connect_statut , $connect_toutes_rubriques , $connect_id_auteur , $supp_dest ; /////////////////////////// // initialise les variables postées par formulaire (formulaire gerer) foreach(array( 'btn_confirmer_envoi', 'id_courrier', 'id_liste', 'id_auteur_test', 'btn_annuler_envoi' , 'statut' , 'btn_supprimer_courrier' , 'btn_arreter_envoi' // si valide, contient id du courrier ) as $key) { $$key = _request($key); } foreach(array('id_courrier', 'id_liste', 'id_auteur_test' , 'btn_supprimer_courrier', 'btn_arreter_envoi' ) as $key) { $$key = intval($$key); } $flag_admin = ($connect_statut == "0minirezo") && $connect_toutes_rubriques; $flag_moderateur = count($listes_moderees = spiplistes_mod_listes_id_auteur($connect_id_auteur)); $flag_createur = ($id_courrier && ($connect_id_auteur == spiplistes_courrier_id_auteur_get($id_courrier))); $flag_modifiable = ($flag_admin || $flag_moderateur || $flag_createur); if($flag_modifiable) { // annuler le destinataire d'un courrier (retour de courrier_gerer) // repasse le courrier en mode 'redac' if($btn_annuler_envoi) { spiplistes_courrier_modifier( $id_courrier , array( 'email_test' => '' , 'id_liste' => 0 , 'total_abonnes' => 0 , 'statut' => _SPIPLISTES_COURRIER_STATUT_REDAC ) ); } // confirmer l'envoi d'un courrier if($btn_confirmer_envoi) { // passe le courrier directement a la meleuse if($id_liste >= 0) { // destinataire(s) = abonnés à une liste // si id_liste == 0, destinataire = adresse email de test spiplistes_courrier_supprimer_queue_envois('id_courrier', $id_courrier); spiplistes_courrier_remplir_queue_envois($id_courrier, $id_liste, $id_auteur_test); if($id_liste > 0) { spiplistes_debug_log('SEND id_courrier #'.$id_courrier . ' ON id_liste #'.$id_liste . ' BY id_auteur #'.$connect_id_auteur ); } else { spiplistes_debug_log('SEND id_courrier #'.$id_courrier . ' TO id_auteur #'.$id_auteur_test . ' TEST BY id_auteur #'.$connect_id_auteur ); } } spiplistes_courrier_statut_modifier($id_courrier, _SPIPLISTES_COURRIER_STATUT_ENCOURS); } // supprimer un courrier des cases if($btn_supprimer_courrier) { sql_delete("spip_courriers", "id_courrier=".sql_quote($btn_supprimer_courrier)." LIMIT 1"); spiplistes_courrier_supprimer_queue_envois('id_courrier', $btn_supprimer_courrier); } // arreter un courrier en cours d'envoi if($btn_arreter_envoi) { spiplistes_courrier_modifier( $btn_arreter_envoi , array( 'statut' => _SPIPLISTES_COURRIER_STATUT_STOPE , 'date_fin_envoi' => "NOW()" ) ); spiplistes_courrier_supprimer_queue_envois('id_courrier', $btn_arreter_envoi); } } // end if $flag_modifiable //////////////////////////////////// // PAGE CONTENU //////////////////////////////////// $titre_page = _T('spiplistes:casier_a_courriers'); // Permet entre autres d'ajouter les classes a' la page : <body class='$rubrique $sous_rubrique'> $rubrique = _SPIPLISTES_PREFIX; $sous_rubrique = "courriers_casier"; $commencer_page = charger_fonction('commencer_page', 'inc'); echo($commencer_page(_T('spiplistes:spiplistes') . " - " . $titre_page, $rubrique, $sous_rubrique)); // la gestion des courriers est réservée aux admins if($connect_statut != "0minirezo") { 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_naviguer_paniers_courriers(_T('spiplistes:aller_au_panier_'), 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() . spiplistes_boite_info_spiplistes(true) . pipeline('affiche_droite', array('args'=>array('exec'=>$sous_rubrique),'data'=>'')) . debut_droite($rubrique, true) ; $icone = _DIR_PLUGIN_SPIPLISTES_IMG_PACK.'courriers_listes-24.png'; $_skip_statut = "Sauter une table pour afficher chronos"; // Début de liste $listes_statuts = array( _SPIPLISTES_COURRIER_STATUT_ENCOURS, _SPIPLISTES_COURRIER_STATUT_REDAC , _SPIPLISTES_COURRIER_STATUT_READY , $_skip_statut , _SPIPLISTES_COURRIER_STATUT_AUTO, _SPIPLISTES_COURRIER_STATUT_PUBLIE , _SPIPLISTES_COURRIER_STATUT_VIDE, _SPIPLISTES_COURRIER_STATUT_IGNORE , _SPIPLISTES_COURRIER_STATUT_STOPE, _SPIPLISTES_COURRIER_STATUT_ERREUR ); $mes_statuts = ($statut && in_array($statut, $listes_statuts)) ? array($statut) : $listes_statuts; foreach($mes_statuts as $statut) { if($statut == $_skip_statut) { // liste des courriers programmés (des listes) $page_result .= "" . spiplistes_afficher_pile_messages() . "<br />" ; } else { $page_result .= "" . spiplistes_lister_courriers_listes( spiplistes_items_get_item("tab_t", $statut) . ( ($desc = spiplistes_items_get_item("desc", $statut)) ? "<br /><span style='font-weight:normal;'>$desc</span>" : "" ) , spiplistes_items_get_item("icon", $statut) , 'courriers' , $statut , false , 'position' , _SPIPLISTES_EXEC_COURRIER_GERER ) ; } } echo($page_result); echo pipeline('affiche_milieu',array('args'=>array('exec'=>$sous_rubrique),'data'=>'')) , spiplistes_html_signature(_SPIPLISTES_PREFIX) , fin_gauche(), fin_page(); } // exec_spip_listes()
function exec_spiplistes_courrier_gerer () { include_spip('inc/barre'); include_spip('inc/documents'); include_spip('base/spiplistes_tables'); include_spip('inc/spiplistes_api'); include_spip('inc/spiplistes_api_courrier'); include_spip('inc/spiplistes_api_presentation'); include_spip('inc/spiplistes_destiner_envoi'); include_spip('inc/spiplistes_naviguer_paniers'); global $connect_statut , $connect_toutes_rubriques , $connect_id_auteur , $spip_ecran ; $eol = "\n"; // initialise les variables postees par le formulaire foreach(array( 'type' , 'id_courrier' , 'btn_courrier_valider', 'titre', 'message', 'message_texte' // (formulaire edition) _SPIPLISTES_EXEC_COURRIER_EDIT , 'new' // idem , 'btn_changer_destination', 'radio_destination', 'email_test', 'id_liste' // (formulaire local) destinataire , 'change_statut' // (formulaire spiplistes_boite_autocron) 'publie' pour annuler envoi par boite autocron , 'btn_dupliquer_courrier' // (formulaire local) dupliquer le courrier , 'supp_dest' , 'id_temp' // pour recuperer les documents joints ) as $key) { $$key = _request($key); } foreach(array('id_courrier', 'id_liste', 'btn_dupliquer_courrier') as $key) { $$key = intval($$key); } foreach(array('email_test','titre','message','message_texte') as $key) { $$key = trim($$key); } $texte = $message; $page_result = $message_erreur = $str_destinataire = $boite_confirme_envoi = ''; $flag_admin = ($connect_statut == "0minirezo") && $connect_toutes_rubriques; $flag_moderateur = count($listes_moderees = spiplistes_mod_listes_id_auteur($connect_id_auteur)); $flag_createur = ($id_courrier && ($connect_id_auteur == spiplistes_courrier_id_auteur_get($id_courrier))); // l'edition du courrier est reservee... $flag_autorise = ( // aux super-admins $flag_admin // ou a un moderateur || $flag_moderateur // ou au createur du courrier || $flag_createur ); if($flag_autorise) { // Modification de courrier if($btn_dupliquer_courrier > 0) { $id_courrier = $btn_dupliquer_courrier; } // effectue les modifications demandees si retour local ou retour editeur if($id_courrier > 0) { if($btn_dupliquer_courrier > 0) { if($row = sql_fetsel('titre,texte', 'spip_courriers', 'id_courrier='.sql_quote($id_courrier),'','',1)) { $titre = typo($row['titre']); $texte = typo($row['texte']); // // @see: http://www.spip-contrib.net/SPIP-Listes#comment441566 //$texte = typo($row['message_texte']); $str_log = "id_courrier #$id_courrier"; $statut = _SPIPLISTES_COURRIER_STATUT_REDAC; $type = _SPIPLISTES_COURRIER_TYPE_NEWSLETTER; $id_courrier = sql_insert( 'spip_courriers' , "(titre,texte,message_texte,date,statut,type,id_auteur)" , "(".sql_quote($titre).",".sql_quote($texte).",".sql_quote($message_texte) .",NOW(),".sql_quote($statut).",".sql_quote($type).",".sql_quote($connect_id_auteur).")" ); spiplistes_log("$str_log DUPLICATED TO #$id_courrier BY ID_AUTEUR #$connect_id_auteur"); } else { spiplistes_log("ERR: DUPLICATION FROM id_courrier #$id_courrier (missing ?)"); } } if($btn_changer_destination) { if($radio_destination == 'email_test') { // demande d'envoi au mail de test (retour formulaire local) if(email_valide($email_test)) { if(!($id_auteur_test = spiplistes_idauteur_depuis_email($email_test))) { // verifie si l'adresse est dans la table des auteurs // si inconnue, refuse d'envoyer $message_erreur .= spiplistes_boite_alerte (_T('spiplistes:Erreur_Adresse_email_inconnue'), true); } else { $format_abo = spiplistes_format_abo_demande($id_auteur_test); /* * meme le compte qui veut recevoir un test doit avoir * un format de reception */ if( in_array($format_abo, spiplistes_formats_autorises()) && ($format_abo != 'non') ) { // Ok. Enregistre l'adresse test spiplistes_courrier_modifier( $id_courrier , array( 'email_test' => $email_test , 'total_abonnes' => 1 , 'id_liste' => ($id_liste = 0) , 'statut' => ($change_statut = _SPIPLISTES_COURRIER_STATUT_READY) ) ); } else { $message_erreur .= spiplistes_boite_alerte (_T('spiplistes:destinataire_sans_format_alert'), true); } $str_destinataire = _T('spiplistes:email_adresse') . " : $email_test"; } } else { $message_erreur .= spiplistes_boite_alerte (_T('spiplistes:Erreur_Adresse_email_invalide'), true); } } // end if($radio_destination == 'email_test') else if($radio_destination == 'id_liste') { // demande d'envoi a une liste (retour formulaire local) if($id_liste > 0) { if( ($nb_abos = spiplistes_listes_nb_abonnes_compter($id_liste)) > 0 ) { $str_destinataire = "" . _T('spiplistes:sur_liste') . " : <a href='".generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_GERER, "id_liste=$id_liste")."'>" . spiplistes_listes_liste_fetsel($id_liste, 'titre') . "</a>" . " " . spiplistes_nb_abonnes_liste_str_get($id_liste, $nb_abos) ; spiplistes_courrier_modifier( $id_courrier , array( 'email_test' => "" , 'total_abonnes' => $nb_abos , 'id_liste' => $id_liste , 'statut' => ($change_statut = _SPIPLISTES_COURRIER_STATUT_READY) ) ); } else { $message_erreur .= spiplistes_boite_alerte (_T('spiplistes:Erreur_liste_vide'), true); } } } // end if($radio_destination } // if($btn_changer_destination else if($btn_courrier_valider) { // retour editeur local if(!empty($titre)) { $sql_set = array( 'titre' => $titre , 'texte' => $texte , 'message_texte' => $message_texte ); spiplistes_courrier_modifier($id_courrier, $sql_set); spiplistes_courrier_attacher_documents($id_courrier, $id_temp); } else { $message_erreur .= spiplistes_boite_alerte (_T('spiplistes:Erreur_courrier_titre_vide'), true); } } // FIN DES MODIFICATIONS } // Ok. recharge les donnees pour completer le formulaire $sql_select_array = array('titre', 'texte', 'email_test', 'statut'); if($row = spiplistes_courriers_premier($id_courrier, $sql_select_array)) { foreach($sql_select_array as $key) { $$key = $row[$key]; } } // end if($id_courrier > 0) } // end if($flag_autorise) ////////////////////////////////////////////////////// // Nouveau courrier //// if(($connect_statut == "0minirezo") && ($new == 'oui')) { // retour editeur. Creation du courrier if(!empty($titre)) { $statut = _SPIPLISTES_COURRIER_STATUT_REDAC; $type = _SPIPLISTES_COURRIER_TYPE_NEWSLETTER; $id_courrier = sql_insert( 'spip_courriers' , "(titre,texte,message_texte,date,statut,type,id_auteur)" , "(".sql_quote($titre).",".sql_quote($texte).",".sql_quote($message_texte) .",NOW(),".sql_quote($statut).",".sql_quote($type).",".sql_quote($connect_id_auteur).")" ); spiplistes_courrier_attacher_documents($id_courrier, $id_temp); } else { $message_erreur .= spiplistes_boite_alerte (_T('spiplistes:Erreur_courrier_titre_vide'), true); } } ////////////////////////////////////////////////////// // recharge le courrier pour edition if($id_courrier > 0) { $sql_select_tmp = "email_test,date,titre,texte,message_texte,type,statut,date_debut_envoi,date_fin_envoi"; $sql_select_int = "id_liste,id_auteur,total_abonnes,nb_emails_envoyes,nb_emails_echec,nb_emails_non_envoyes,nb_emails_texte,nb_emails_html"; $sql_select_str = "titre"; $sql_select = $sql_select_int.",".$sql_select_str.",".$sql_select_tmp; if($row = sql_fetsel($sql_select, "spip_courriers", "id_courrier=".sql_quote($id_courrier), '', '', 1)) { foreach(explode(",", $sql_select) as $key) { $$key = $row[$key]; } foreach(explode(",",$sql_select_int) as $key) { $$key = intval($$key); } foreach(explode(",",$sql_select_str) as $key) { $$key = typo($$key); } if($change_statut == _SPIPLISTES_COURRIER_STATUT_READY) { //$titre = propre($titre); // pas de propre ici, ca fait un <p> </p> // Le statut n'est modifie ici, mais // par courrier_casier en retour de ce formulaire // $texte = spiplistes_courrier_propre($texte); $texte = spiplistes_texte_propre ($texte); spiplistes_courrier_modifier( $id_courrier , array( 'titre' => $titre , 'texte' => $texte ) ); spiplistes_log("ID_COURRIER #$id_courrier titre,texte MODIFIED BY ID_AUTEUR #$connect_id_auteur"); $statut = $change_statut; } else if($change_statut == _SPIPLISTES_COURRIER_STATUT_STOPE){ spiplistes_courrier_supprimer_queue_envois('id_courrier', $id_courrier); spiplistes_log("ID_COURRIER #$id_courrier CANCELLED BY ID_AUTEUR #$connect_id_auteur"); } // prepare le texte texte seul if(!in_array($statut, array( _SPIPLISTES_COURRIER_STATUT_REDAC , _SPIPLISTES_COURRIER_STATUT_READY , _SPIPLISTES_COURRIER_STATUT_PUBLIE , _SPIPLISTES_COURRIER_STATUT_STOPE )) ) { //$texte = spiplistes_courrier_propre($texte); $texte = spiplistes_texte_propre ($texte); } if(!empty($message_texte)){ $alt_message_texte = _T('spiplistes:calcul_patron'); } else{ $alt_message_texte = _T('spiplistes:calcul_html'); $message_texte = spiplistes_courrier_version_texte($texte); } // construit la boite de selection destinataire $boite_selection_destinataire = (($statut==_SPIPLISTES_COURRIER_STATUT_REDAC) || ($statut==_SPIPLISTES_COURRIER_STATUT_READY)) ? spiplistes_destiner_envoi($id_courrier, $id_liste , $flag_admin , $flag_moderateur , $listes_moderees , $statut, $type, 'btn_changer_destination', $email_test) : "" ; } } // end if() ////////////////////////////////////////////////////// // preparation des boutons si droits $gros_bouton_modifier = $gros_bouton_dupliquer = $gros_bouton_supprimer = $gros_bouton_arreter_envoi = ''; if($flag_autorise) { if(($statut == _SPIPLISTES_COURRIER_STATUT_REDAC) || ($statut == _SPIPLISTES_COURRIER_STATUT_READY)) { // Le courrier peut-etre modifie si en preparation $gros_bouton_modifier = "<!-- bouton modifier -->\n" . icone ( _T('spiplistes:Modifier_ce_courrier') // legende bouton , generer_url_ecrire(_SPIPLISTES_EXEC_COURRIER_EDIT,'id_courrier='.$id_courrier) // lien , spiplistes_items_get_item('icon', $statut) // image du fond , "edit.gif" // image de la fonction. Ici, le crayon , '' // alignement , false // pas echo, demande retour ) . $eol ; } // Le courrier peut-etre supprime si obsolete if(in_array($statut, array(_SPIPLISTES_COURRIER_STATUT_REDAC , _SPIPLISTES_COURRIER_STATUT_PUBLIE , _SPIPLISTES_COURRIER_STATUT_AUTO , _SPIPLISTES_COURRIER_STATUT_VIDE , _SPIPLISTES_COURRIER_STATUT_IGNORE , _SPIPLISTES_COURRIER_STATUT_STOPE , _SPIPLISTES_COURRIER_STATUT_ERREUR)) ) { $gros_bouton_supprimer = '<div style="margin-top:1ex">' . icone ( _T('spiplistes:Supprimer_ce_courrier') , generer_url_ecrire(_SPIPLISTES_EXEC_COURRIERS_LISTE, 'btn_supprimer_courrier='.$id_courrier) , _DIR_PLUGIN_SPIPLISTES_IMG_PACK.'poubelle_msg.gif' , '' , 'right' , false ) . '</div>'.$eol ; } // Un courrier publie ou stoppe peut-etre duplique pour edition // on revient sur cette page avec le contenu recupere if(in_array($statut, array(_SPIPLISTES_COURRIER_STATUT_PUBLIE , _SPIPLISTES_COURRIER_STATUT_AUTO , _SPIPLISTES_COURRIER_STATUT_STOPE)) ) { $gros_bouton_dupliquer = "<div style='margin-top:1ex;'>" . icone ( _T('spiplistes:dupliquer_ce_courrier') , generer_url_ecrire(_SPIPLISTES_EXEC_COURRIER_GERER, "btn_dupliquer_courrier=$id_courrier") , _DIR_PLUGIN_SPIPLISTES_IMG_PACK.'stock_mail.gif' , _DIR_IMG_PACK."creer.gif" , "right" , false ) . "</div>\n" ; } if($statut == _SPIPLISTES_COURRIER_STATUT_ENCOURS) { // L'envoi d'un courrier en cours peut etre stoppe $gros_bouton_arreter_envoi = icone ( _T('spiplistes:Arreter_envoi') // si arreter envoi, passe la main a exec/spiplistes_courriers_casier , generer_url_ecrire(_SPIPLISTES_EXEC_COURRIERS_LISTE, "btn_arreter_envoi=$id_courrier") , _DIR_PLUGIN_SPIPLISTES_IMG_PACK."courriers_redac-24.png" , _DIR_PLUGIN_SPIPLISTES_IMG_PACK."stop-top-right-24.png" , "right" , false ) . fin_cadre_relief(true) ; } if($statut == _SPIPLISTES_COURRIER_STATUT_READY) { if(!$id_liste && !$id_auteur_test) { // normalement, la validation est locale, mais si l'utilisateur // part sur un casier, le retour ici est incomplet... // cas particulier d'un appel d'un courrier ready a partir des casiers // il faut recreer $id_auteur_test si id_liste == 0 if(!($id_auteur_test = spiplistes_idauteur_depuis_email($email_test))) { spiplistes_log("ERR: id_auteur_test #$id_auteur_test (id_auteur missing ?)"); } } if(($id_liste > 0) || ($id_auteur_test > 0)) { $boite_confirme_envoi = debut_cadre_couleur('', true) // formulaire de confirmation envoi // renvoie sur la page des casiers . '<form action="' . generer_url_ecrire(_SPIPLISTES_EXEC_COURRIERS_LISTE,'id_courrier='.$id_courrier) . '" method="post">'.$eol . '<p style="text-align:center;font-weight:bold;" class="verdana2">' . _T('spiplistes:confirme_envoi') . '</p>'.$eol . '<input type="hidden" name="id_liste" value="'.$id_liste.'" />'.$eol . '<input type="hidden" name="id_courrier" value="'.$id_courrier.'" />'.$eol . '<input type="hidden" name="id_auteur_test" value="'.$id_auteur_test.'" />'.$eol . '<div style="text-align:left;">'.$eol . '<input type="submit" name="btn_annuler_envoi" value="' . _T('spiplistes:annuler_envoi').'" class="fondo" style="float:left" />'.$eol . '<div style="text-align:right;width:100%">'.$eol . '<input type="submit" name="btn_confirmer_envoi" value="' . _T('spiplistes:Envoyer_ce_courrier').'" class="fondo" />'.$eol . '</div>'.$eol . '</div>'.$eol . '</form>' . fin_cadre_couleur(true) ; } } } ///////////////////// // prepare le message statut du courrier if($id_courrier > 0) { $le_type = _T('spiplistes:message_type'); if($statut != _SPIPLISTES_COURRIER_STATUT_REDAC) { if(!empty($email_test)) { $str_destinataire = _T('spiplistes:email_adresse') . " : <span style='font-weight:bold;color:gray;'>$email_test</span>"; } else { if($row = sql_fetsel('titre', 'spip_listes', "id_liste=".sql_quote($id_liste), '', '', 1)) { $str_destinataire = "" . _T('spiplistes:Liste_de_destination') . " : <a href='".generer_url_ecrire(_SPIPLISTES_EXEC_LISTE_GERER, "id_liste=$id_liste")."'>" . typo($row['titre']) . "</a>" . " " . spiplistes_nb_abonnes_liste_str_get($id_liste) ; } else { $str_destinataire = _T('spiplistes:Courriers_sans_liste'); } } } // $str_statut_courrier = ""; switch($statut) { case _SPIPLISTES_COURRIER_STATUT_REDAC: $str_statut_courrier = _T('spiplistes:message_en_cours')."<br />" . ( ($flag_autorise) ? _T('spiplistes:modif_envoi') : "" ) ; break; case _SPIPLISTES_COURRIER_STATUT_READY: $str_statut_courrier = "" . _T('spiplistes:message_presque_envoye') . "<br />" . $str_destinataire . "<br />\n" ; break; case _SPIPLISTES_COURRIER_STATUT_ENCOURS: $str_statut_courrier = "" . _T('spiplistes:message_en_cours')."<br />$str_destinataire<br /><br />" //. "<a href='?exec=spip_listes'>["._T('spiplistes:voir_historique')."]</a>" ; break; case _SPIPLISTES_COURRIER_STATUT_PUBLIE: case _SPIPLISTES_COURRIER_STATUT_AUTO: $str_statut_courrier = "" . "<span>" . "<strong>"._T('spiplistes:message_arch')."</strong></span>" . "<ul>" . " <li>$str_destinataire</li>" . " <li>"._T('spiplistes:envoi_date').affdate_heure($date)."</li>" . " <ul>" . " <li>"._T('spiplistes:envoi_debut').affdate_heure($date_debut_envoi)."</li>" . " <li>"._T('spiplistes:envoi_fin').affdate_heure($date_fin_envoi)."</li>" . " </ul>" . " <li>"._T('spiplistes:nbre_abonnes').$total_abonnes."</li>" . " <ul>" . " <li>"._T('spiplistes:format_html__n', array('n' => $nb_emails_html))."</li>" . " <li>"._T('spiplistes:format_texte__n', array('n' => $nb_emails_texte))."</li>" . " <li>"._T('spiplistes:desabonnes')." : ".$nb_emails_non_envoyes."</li>" . " </ul>" . " <li>"._T('spiplistes:erreur_envoi').$nb_emails_echec."</li>" . "</ul>" ; } // end switch() if(!empty($str_statut_courrier)) { $str_statut_courrier = "<span class='verdana2'>".$str_statut_courrier."</span>"; } } // end if() //////////////////////////////////// // 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_gerer"; $commencer_page = charger_fonction('commencer_page', 'inc'); echo($commencer_page(_T('spiplistes:spiplistes') . " - " . trim($titre_page), $rubrique, $sous_rubrique)); // la gestion des listes de courriers est reservee aux admins if($connect_statut != "0minirezo") { 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() . pipeline('affiche_droite', array('args'=>array('exec'=>$sous_rubrique),'data'=>'')) . debut_droite($rubrique, true) ; if($id_courrier > 0) { ///////////////////// // construction du ventre $page_result .= "\n<!-- construction du ventre -->\n" . $message_erreur . debut_cadre_relief(spiplistes_items_get_item('icon', $statut), true) . "<table width='100%' border='0' cellspacing='0' cellpadding='0'>" . "<tr>" . "<td>".spiplistes_gros_titre($titre, spiplistes_items_get_item('puce', $statut), true)."</td>" . "<td rowspan='2' style='vertical-align:top;width:90px;'>" // si besoin, l'un de ces trois boutons apparait . $gros_bouton_modifier . $gros_bouton_arreter_envoi . $gros_bouton_dupliquer ."</td>" . "</tr>\n" . "<tr> " . "<td>" . "<p class='verdana2' style='font-size:120%;color:red;font-weight:bold;'>$le_type</p>\n" . "<p class='verdana2'>$str_statut_courrier</p>\n" . "</td>" . "</tr>\n" . "</table>" . $boite_confirme_envoi . $boite_selection_destinataire . "<br />\n" ; function spiplistes_generer_oeil ($params) { return( " <a href='" . generer_url_ecrire(_SPIPLISTES_EXEC_COURRIER_PREVUE, $params) . "' title='"._T('spiplistes:Apercu_plein_ecran')."' target='_blank'>\n" . spiplistes_icone_oeil() . "</a>" ); } // previsu $params = "id_courrier=$id_courrier&id_liste=$id_liste"; $oeil_html = spiplistes_generer_oeil($params. "&lire_base=oui&plein_ecran=oui"); $oeil_texte = spiplistes_generer_oeil($params . "&lire_base=oui&plein_ecran=oui&format=texte"); $page_result .= "" . 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') . $oeil_html . " / " . "<a href='javascript:jQuery(this).switch_previsu()'>" . _T('spiplistes:version_texte') . $oeil_texte . "<div>\n" . "<iframe class='previsu-edit'" . " src='".generer_url_ecrire(_SPIPLISTES_EXEC_COURRIER_PREVUE, $params . "&lire_base=oui") . "' width='100%' height='500'></iframe>\n" . "</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" . $oeil_html . " / " . _T('spiplistes:version_texte') . "</a> $oeil_texte\n" . "<div>\n" //. "<pre>" . "<iframe class='previsu-edit'" . " src='".generer_url_ecrire(_SPIPLISTES_EXEC_COURRIER_PREVUE, $params . "&format=texte&lire_base=oui") ."' width='100%' height='500'></iframe>\n" //. "</pre>" . "</div>\n" . "</div>\n" // fin id='previsu-texte . "</form>\n" . fin_cadre_couleur(true) // // fin de la boite . fin_cadre_relief(true) // . $gros_bouton_supprimer ; } // end if else { $page_result .= (empty($message_erreur)) ? spiplistes_boite_alerte (_T('spiplistes:Erreur_courrier_introuvable'), true) : $message_erreur ; } echo($page_result); // GERER COURRIER: FIN DE PAGE echo pipeline('affiche_milieu',array('args'=>array('exec'=>$sous_rubrique),'data'=>'')) , spiplistes_html_signature(_SPIPLISTES_PREFIX) , fin_gauche(), fin_page(); } // end function exec_spiplistes_courrier_gerer ()