/** * @return boolean */ function spiplistes_vider_tables () { include_spip('base/abstract_sql'); // ne supprime pas la table spip_auteurs_elargis (utilisee par inscription2, echoppe, ... ? ) $sql_tables = "spip_listes, spip_courriers, spip_auteurs_courriers, spip_auteurs_listes, spip_auteurs_mod_listes"; spiplistes_log("DROPT TABLES ".$sql_tables); sql_drop_table($sql_tables, true); // effacer les metas (prefs, etc.) $sql_spiplistes_metas = array( 'spiplistes_version' , 'spiplistes_base_version' , 'spiplistes_charset_envoi' , 'spiplistes_lots' , 'abonnement_config' , _SPIPLISTES_META_PREFERENCES ); spiplistes_log("DELETE meta: " . implode(", ", $sql_spiplistes_metas)); sql_delete('spip_meta', "nom=".implode(" OR nom=", array_map("sql_quote", $sql_spiplistes_metas))); // recharge les metas en cache spiplistes_ecrire_metas(); return(true); } // spiplistes_vider_tables ()
function exec_spiplistes_config () { include_spip('inc/distant'); include_spip('inc/spiplistes_api'); include_spip('inc/spiplistes_api_presentation'); include_spip('inc/meta'); include_spip('inc/config'); //spiplistes_debug_log ('Appel page de configuration'); global $connect_statut , $connect_toutes_rubriques , $connect_id_auteur , $couleur_foncee , $spip_lang_right ; $eol = PHP_EOL; $flag_editable = (($connect_statut == "0minirezo") && ($connect_toutes_rubriques)); if($flag_editable) { $adresse_defaut = (email_valide($GLOBALS['meta']['email_defaut'])) ? $GLOBALS['meta']['email_defaut'] : $GLOBALS['meta']['email_webmaster'] ; $keys_complement_courrier = array( 'opt_personnaliser_courrier' , 'opt_lien_en_tete_courrier', 'lien_patron' , 'opt_ajout_tampon_editeur', 'tampon_patron' , 'opt_completer_titre_nom_site' , 'opt_ajout_lien_desabo' ); $keys_complement_courrier = array_merge($keys_complement_courrier , $_tampon_cles = explode(",", _SPIPLISTES_TAMPON_CLES)); $tampon_labels = array_flip($_tampon_cles); foreach($tampon_labels as $key=>$value) { $tampon_labels[$key] = _T('spiplistes:'.$key); } $keys_opt_formabo = array( 'opt_plier_deplier_formabo' // effet plier/deplier dans le formulaire abonnement ); $keys_param_valider = array( 'email_defaut' , 'smtp_server' , 'smtp_login' , 'smtp_pass' , 'smtp_port' , 'mailer_smtp' , 'smtp_identification' , 'smtp_sender' , 'spiplistes_lots' , 'spiplistes_charset_envoi' ); $keys_str_param_valider = array( 'email_reply_to' // adresse mail de retour , 'email_return_path_defaut' // adresse mail de retour pour les erreurs ); $keys_opts_param_valider = array( 'opt_simuler_envoi' // demande à la méleuse de simuler l'envoi du courrier , 'opt_suspendre_trieuse' // suspendre la trieuse. Les listes restent en attente , 'opt_suspendre_meleuse' // suspendre les envois de courriers ); $keys_console_syslog = array( 'opt_console_debug' // console en mode verbose , 'opt_console_syslog' // envoyer le journal sur syslog , 'opt_log_voir_destinataire' // ecrire adresse mail des destinataires dans les journaux ); // initialise les variables postées par le formulaire foreach(array_merge( array( 'abonnement_valider', 'abonnement_config', 'param_reinitialise' , 'btn_formabo_valider' , 'btn_complement_courrier' , 'btn_param_valider' , 'btn_console_syslog' , 'voir_logs' ) , $keys_opt_formabo , $keys_complement_courrier , $keys_param_valider , $keys_str_param_valider , $keys_opts_param_valider , $keys_console_syslog ) as $key) { $$key = _request($key); } // historiquement, ajoute le nom du site en // fin de titre. Permettre de ne pas le faire. $in_post = _request('opt_completer_titre_nom_site'); $in_meta = spiplistes_pref_lire('opt_completer_titre_nom_site'); $opt_completer_titre_nom_site = // ni dans le POST, ni dans les metas ? (!$in_post && !$in_meta) // comportement par défaut ? 'oui' // un imput vide n'est jamais renvoyé // donc si manquant, c'est un 'non' : ($in_post ? $in_post : 'non'); $doit_ecrire_metas = false; $str_log = ''; if(!isset($GLOBALS['meta'][_SPIPLISTES_META_PREFERENCES])) { $GLOBALS['meta'][_SPIPLISTES_META_PREFERENCES] = array(); } if($abonnement_valider && $abonnement_config) { ecrire_meta('abonnement_config', $abonnement_config); $doit_ecrire_metas = true; $str_log .= "abonnement_config = $abonnement_config, "; } if($btn_formabo_valider) { foreach($keys_opt_formabo as $key) { //spiplistes_log("$key ".$$key); spiplistes_ecrire_key_in_serialized_meta( $key , ($$key = (!empty($$key) ? $$key : 'non')) , _SPIPLISTES_META_PREFERENCES ); $str_log .= $key.' = '.$$key.', '; } $doit_ecrire_metas = true; } if($btn_complement_courrier) { foreach($keys_complement_courrier as $key) { spiplistes_ecrire_key_in_serialized_meta( $key , ($$key = (!empty($$key) ? $$key : 'non')) , _SPIPLISTES_META_PREFERENCES ); $str_log .= $key.' = '.$$key.', '; } $doit_ecrire_metas = true; } if($btn_param_valider) { foreach($keys_param_valider as $key) { if(($key != 'email_defaut') || email_valide($email_defaut)) { $str_log .= $key.' = ' . (($key == 'smtp_pass') ? str_repeat('*', strlen($$key)) : $$key) . ', '; ecrire_meta($key, trim($$key)); } } foreach($keys_str_param_valider as $key) { if( ($key == 'email_reply_to') || ($key == 'email_return_path_defaut') ) { $$key = ($ii = email_valide($$key)) ? $ii : $adresse_defaut ; } spiplistes_ecrire_key_in_serialized_meta ($key, $$key, _SPIPLISTES_META_PREFERENCES); $str_log .= $key.' = '.$$key.', '; } foreach($keys_opts_param_valider as $key) { $$key = (!empty($$key)) ? $$key : 'non'; spiplistes_ecrire_key_in_serialized_meta ($key, $$key, _SPIPLISTES_META_PREFERENCES); $str_log .= $key.' = '.$$key.', '; } $doit_ecrire_metas = true; } if($btn_console_syslog) { if(!spiplistes_server_rezo_local()) { } foreach($keys_console_syslog as $key) { if($key == $opt_log_voir_destinataire) { $opt_log_voir_destinataire = (!empty($$key)) ? $$key : 'non'; } if( // si pas sur réseau privé et option syslog validé, // retire l'option syslog (cas de copie de base du LAN sur celle du WAN) ($key == 'opt_console_syslog') && !spiplistes_server_rezo_local() ) { $$key = 'non'; } else { $$key = (!empty($$key)) ? $$key : 'non'; } spiplistes_ecrire_key_in_serialized_meta($key, $$key, _SPIPLISTES_META_PREFERENCES); $str_log .= $key.' = '.$$key.', '; } $doit_ecrire_metas = true; } if($doit_ecrire_metas) { // recharge les metas en cache spiplistes_ecrire_metas(); } if(!empty($str_log)) { $str_log = rtrim($str_log, ', '); spiplistes_log("CONFIGURE id_auteur #$connect_id_auteur : ".$str_log); } // // Adresse mail pour les retours (Reply-to:) // @see: http://www.w3.org/Protocols/rfc822/ $email_reply_to = spiplistes_pref_lire('email_reply_to'); // Adresse mail pour les retours en erreur (Return-path:) // @see: http://www.w3.org/Protocols/rfc822/ // Plus ou moins obsolete, ou non respecte' $email_return_path_defaut = spiplistes_pref_lire('email_return_path_defaut'); $smtp_identification = (isset($GLOBALS['meta']['smtp_identification']) && ($GLOBALS['meta']['smtp_identification']=='oui')) ? "oui" : "non"; $mailer_smtp = (isset($GLOBALS['meta']['mailer_smtp']) && ($GLOBALS['meta']['mailer_smtp']=='oui')) ? "oui" : "non"; $smtp_port = (isset($GLOBALS['meta']['smtp_port']) && (!empty($GLOBALS['meta']['smtp_port']))) ? $GLOBALS['meta']['smtp_port'] : "25"; $smtp_server = (isset($GLOBALS['meta']['smtp_server']) && (!empty($GLOBALS['meta']['smtp_server']))) ? $GLOBALS['meta']['smtp_server'] : "localhost"; $smtp_sender = (email_valide($GLOBALS['meta']['smtp_sender'])) ? $GLOBALS['meta']['smtp_sender'] : $GLOBALS['meta']['email_webmaster']; } //////////////////////////////////// // PAGE CONTENU //////////////////////////////////// $titre_page = _T('icone_configuration_site'); // Permet entre autres d'ajouter les classes a' la page : <body class='$rubrique $sous_rubrique'> $rubrique = 'configuration'; $sous_rubrique = _SPIPLISTES_PREFIX; $commencer_page = charger_fonction('commencer_page', 'inc'); echo($commencer_page(_T('spiplistes:spiplistes') . " - " . $titre_page, $rubrique, $sous_rubrique)); // la configuration spiplistes est réservée aux supers-admins if(!$flag_editable) { die (spiplistes_terminer_page_non_autorisee() . fin_page()); } $page_result = '' . '<br style="line-height:3em" />' . $eol . spiplistes_gros_titre(_T('titre_page_config_contenu'), '', true) . barre_onglets($rubrique, $sous_rubrique) . debut_gauche($rubrique, true) . spiplistes_boite_meta_info(_SPIPLISTES_PREFIX) . pipeline('affiche_gauche', array('args'=>array('exec'=>'spiplistes_config'),'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'=>'spiplistes_config'),'data'=>'')) . debut_droite($rubrique, true) ; ////////////////////////////////////////////////////// // Boite Mode d'inscription des visiteurs $checked1 = $checked2 = ''; ($GLOBALS['meta']['abonnement_config'] == 'simple') ? $checked1 = "checked='checked'" : $checked2 = "checked='checked'" ; $page_result .= '' . debut_cadre_trait_couleur("redacteurs-24.gif", true, '', _T('spiplistes:mode_inscription')) . '<form action="' . generer_url_ecrire(_SPIPLISTES_EXEC_CONFIGURE) . '" method="post">' . $eol . "<p class='verdana2'>" . $eol . "<input type='radio' name='abonnement_config' value='simple' $checked1 id='statut_simple' />" . $eol . "<label for='statut_simple'>"._T('spiplistes:abonnement_simple').'</label>' . $eol . "</p>" . $eol . "<p class='verdana2'>" . $eol . "<input type='radio' name='abonnement_config' value='membre' $checked2 id='statut_membre' />" . $eol . "<label for='statut_membre'>"._T('spiplistes:abonnement_code_acces').'</label>' . $eol . "</p>" . $eol // bouton de validation . "<div style='text-align:right;'><input type='submit' name='abonnement_valider' class='fondo' value='"._T('bouton_valider')."' /></div>" . $eol . "</form>" . $eol . fin_cadre_trait_couleur(true) ; ////////////////////////////////////////////////////// // Formulaire abonnement $checked1 = ((spiplistes_pref_lire('opt_plier_deplier_formabo') == 'oui') ? "checked='checked'" : ''); $page_result .= '' . debut_cadre_trait_couleur("redacteurs-24.gif", true, '', _T('spiplistes:formulaire_abonnement')) . "<form action='".generer_url_ecrire(_SPIPLISTES_EXEC_CONFIGURE)."' method='post'>" . $eol . "<p class='verdana2'>" . $eol . "<input type='checkbox' name='opt_plier_deplier_formabo' value='oui' $checked1 id='plier_deplier' />" . $eol . "<label for='plier_deplier'>"._T('spiplistes:formulaire_abonnement_effet').'</label>' . $eol . "</p>" . $eol // bouton de validation . "<div style='text-align:right;'><input type='submit' name='btn_formabo_valider' class='fondo' value='"._T('bouton_valider')."' /></div>" . $eol . "</form>" . $eol . fin_cadre_trait_couleur(true) ; ////////////////////////////////////////////////////// // Boite parametrage complément du courrier $opt_personnaliser_courrier = (spiplistes_pref_lire('opt_personnaliser_courrier') == 'oui'); $opt_completer_titre_nom_site = (spiplistes_pref_lire('opt_completer_titre_nom_site') == 'oui'); $opt_lien_en_tete_courrier = (spiplistes_pref_lire('opt_lien_en_tete_courrier') == 'oui'); $lien_patron = spiplistes_pref_lire('lien_patron'); $opt_ajout_tampon_editeur = (spiplistes_pref_lire('opt_ajout_tampon_editeur') == 'oui'); $opt_ajout_lien_desabo = (spiplistes_pref_lire('opt_ajout_lien_desabo') == 'oui'); $tampon_patron = spiplistes_pref_lire('tampon_patron'); foreach($_tampon_cles as $key) { $$key = spiplistes_pref_lire($key); } $page_result .= '' . debut_cadre_trait_couleur(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."courriers_complement-24.png", true, '', _T('spiplistes:Complement_des_courriers')) . spiplistes_form_debut(generer_url_ecrire(_SPIPLISTES_EXEC_CONFIGURE), true) // // personnaliser le courrier (reprend les données de *_auteur) . "<!-- personnaliser le courrier -->" . $eol . debut_cadre_relief('', true, '', _T('spiplistes:personnaliser_le_courrier')) . "<p class='verdana2'>"._T('spiplistes:personnaliser_le_courrier_desc')."</p>" . "<label class='verdana2'>" . "<input type='checkbox' name='opt_personnaliser_courrier' value='oui' " . (($opt_personnaliser_courrier == 'oui') ? "checked='checked'" : '') . ' />' . $eol . _T('spiplistes:personnaliser_le_courrier_label').'</label>' . $eol . fin_cadre_relief(true) // // ajout du renvoi de tete, lien courrier . debut_cadre_relief('', true, '', _T('spiplistes:Complement_lien_en_tete')) . "<p class='verdana2'>"._T('spiplistes:Complement_lien_en_tete_desc')."</p>" . '<input type="checkbox" name="opt_lien_en_tete_courrier" value="oui" id="opt-lien-en-tete-courrier" ' . (($opt_lien_en_tete_courrier) ? 'checked="checked"' : '') . ' />' . $eol . "<label class='verdana2' for='opt-lien-en-tete-courrier'>"._T('spiplistes:Complement_ajouter_lien_en_tete').'</label>' . $eol // // lien courrier: boite de selection . "<div id='div-lien-en-tete-courrier' style='".(!$opt_lien_en_tete_courrier ? "display:none;" : '')."margin-top:1em;'>" . '<label class="verdana2" style="padding-left:2ex;">' . _T('spiplistes:Patron_du_lien').'.' . $eol . spiplistes_boite_selection_patrons($lien_patron, true, _SPIPLISTES_PATRONS_TETE_DIR, "lien_patron", 1) . '</label>' . $eol . "</div>" . $eol // fin bloc div-lien-en-tete-courrier . fin_cadre_relief(true) // // compléter le titre des listes par le nom du serveur ? . debut_cadre_relief('', true, '', _T('spiplistes:completer_titre_courrier_nom_site')) . '<label class="verdana2" style="padding-left:2ex;">' . '<input type="checkbox" name="opt_completer_titre_nom_site" value="oui" id="opt_completer_titre_nom_site" ' . (($opt_completer_titre_nom_site) ? 'checked="checked"' : '') . ' />' . $eol . _T('spiplistes:completer_titre_courrier_nom_site_desc') . $eol . '</label>' . $eol . fin_cadre_relief(true) // // opt_ajout_lien_desabo . debut_cadre_relief('', true, '', _T('spiplistes:lien_gestion_inscription')) . '<p class="verdana2">'._T('spiplistes:lien_gestion_inscription_desc').'</p>'.$eol . '<input type="checkbox" name="opt_ajout_lien_desabo" value="oui" id="opt_ajout_lien_desabo" ' . ($opt_ajout_lien_desabo ? 'checked="checked"' : '') . ' />' . $eol . '<label class="verdana2" for="opt_ajout_lien_desabo">' . _T('spiplistes:lien_gestion_inscription_label').'</label>'.$eol . fin_cadre_relief(true) // // ajout tampon editeur . debut_cadre_relief('', true, '', _T('spiplistes:Complement_tampon_editeur')) . "<p class='verdana2'>"._T('spiplistes:Complement_tampon_editeur_desc')."</p>" . "<input type='checkbox' name='opt_ajout_tampon_editeur' value='oui' id='opt-ajout-tampon-editeur' " . ($opt_ajout_tampon_editeur ? "checked='checked'" : '') . " />" . $eol . "<label class='verdana2' for='opt-ajout-tampon-editeur'>"._T('spiplistes:Complement_tampon_editeur_label').'</label>' . $eol // // coordonnées editeur: bloc coordonnes_editeur . "<div id='div-ajout-tampon-editeur' style='".(!$opt_ajout_tampon_editeur ? "display:none;" : '')."margin-top:1em;'>" // tampon sélecteur . "<label class='verdana2' style='padding-left:2ex;'>"._T('spiplistes:patron_du_tampon_') . $eol . spiplistes_boite_selection_patrons($tampon_patron, true, _SPIPLISTES_PATRONS_TAMPON_DIR, "tampon_patron", 1) . '</label>' . "<ul class='verdana2' style='list-style:none;padding-left:2ex;'>" . $eol ; foreach($_tampon_cles as $key) { $value = ($$key == 'non') ? '' : $$key; $page_result .= '' . "<li><label for='id_$key'>".$tampon_labels[$key].":</label>" . "<input type='text' name='$key' id='id_$key' size='40' class='forml' value=\"{$value}\" /></li>" . $eol ; } $page_result .= '' . "</ul>" . $eol . "</div>" . $eol // fin bloc div-ajout-tampon-editeur . fin_cadre_relief(true) // // bouton de validation . "<div style='text-align:right;'><input type='submit' name='btn_complement_courrier' class='fondo' value='"._T('bouton_valider')."' /></div>" . $eol . spiplistes_form_fin(true) . fin_cadre_trait_couleur(true) ; function spiplistes_cadre_input_text($titre, $name, $value, $size=30, $class='forml') { static $eol = PHP_EOL; $str = debut_cadre_relief('', true, '', $titre) . '<input type="text" name="'.$name.'" value="'.$value.'" size="'.$size.'" class="'.$class.'" />' . $eol . fin_cadre_relief(true); return($str); } ////////////////////////////////////////////////////// // Boite parametrage envoi du courrier $page_result .= '' . debut_cadre_trait_couleur(_DIR_PLUGIN_SPIPLISTES_IMG_PACK.'courriers_envoyer-24.png', true, '', _T('spiplistes:Envoi_des_courriers')) . spiplistes_form_debut(generer_url_ecrire(_SPIPLISTES_EXEC_CONFIGURE), true) // // adresse email de retour (reply-to) . spiplistes_cadre_input_text(_T('spiplistes:adresse_envoi_defaut') , 'email_defaut' , $adresse_defaut ) // // adresse email du smtp sender . spiplistes_cadre_input_text(_T('spiplistes:adresse_smtp') , 'smtp_sender' , $smtp_sender ) // // adresse de retour (reply-to) . spiplistes_cadre_input_text(_T('spiplistes:adresse_email_reply_to') , 'email_reply_to' , $email_reply_to ) // // adresse return-path de retour (on-error reply-to) . spiplistes_cadre_input_text(_T('spiplistes:adresse_on_error_defaut') , 'email_return_path_defaut' , $email_return_path_defaut ) // // Méthode d'envoi . debut_cadre_relief('', true, '', _T('spiplistes:methode_envoi')) . "<div class='verdana2'>" . $eol . _T('spiplistes:pas_sur') . bouton_radio("mailer_smtp", "non", _T('spiplistes:php_mail'), $mailer_smtp == "non", "changeVisible(this.checked, 'smtp', 'none', 'block');") . "<br />" . $eol . bouton_radio("mailer_smtp", "oui", _T('spiplistes:utiliser_smtp'), $mailer_smtp == "oui" , "changeVisible(this.checked, 'smtp', 'block', 'none');") . "</div>" . $eol // // si 'smtp', affiche bloc de paramétrage . "<ul id='smtp' class='verdana2' style='list-style: none;display:".(($mailer_smtp == "oui") ? "block" : "none")."'>" . $eol . "<li>"._T('spiplistes:smtp_hote')." : <input type='text' name='smtp_server' value='$smtp_server' size='30' class='forml' /></li>" . $eol . "<li>"._T('spiplistes:smtp_port')." : <input type='text' name='smtp_port' value='$smtp_port' size='4' class='fondl' /></li>" . $eol . "<li>"._T('spiplistes:requiert_identification')." : " . bouton_radio("smtp_identification", "oui", _T('item_oui'), ($smtp_identification == "oui"), "changeVisible(this.checked, 'smtp-auth', 'block', 'none');") . " " . bouton_radio("smtp_identification", "non", _T('item_non'), ($smtp_identification == "non"), "changeVisible(this.checked, 'smtp-auth', 'none', 'block');")."</li>" . $eol . "</ul>" . $eol . "<ul id='smtp-auth' class='verdana2' style='list-style:none;display:".(($smtp_identification == "oui") ? "block" : "none" )."'>" . $eol . "<li>" . "<label for='smtp_login'>"._T('item_login')." : </label>" . $eol . "<input type='text' id='smtp_login' name='smtp_login' value='".$GLOBALS['meta']['smtp_login']."' size='30' class='fondl' />" . $eol . "</li>" . $eol . "<li>" . "<label for='smtp_pass'>"._T('entree_passe_ldap')." : </label>" . $eol . "<input type='password' id='smtp_pass' name='smtp_pass' value='".$GLOBALS['meta']['smtp_pass']."' size='30' class='fondl' />" . $eol . "</li>" . $eol . "</ul>" . $eol . fin_cadre_relief(true) // // le nombre de lots d'envois . debut_cadre_relief('', true, '', _T('spiplistes:parametrer_la_meleuse')) . spiplistes_boite_select_de_formulaire ( spiplistes_array_values_in_keys(explode(";", _SPIPLISTES_LOTS_PERMIS)), $GLOBALS['meta']['spiplistes_lots'] , 'spiplistes_lots', 'spiplistes_lots' , 1, '', 'fondo', _T('spiplistes:nombre_lot')." : ", '', 'verdana2') . '<br />' . $eol // // sélection du charset d'envoi . spiplistes_boite_select_de_formulaire ( spiplistes_array_values_in_keys(explode(";", _SPIPLISTES_CHARSETS_ALLOWED)), $GLOBALS['meta']['spiplistes_charset_envoi'] , 'spiplistes_charset_envoi', 'spiplistes_charset_envoi' , 1, '', 'fondo', _T('spiplistes:Jeu_de_caracteres')." : ", '', 'verdana2') . fin_cadre_relief(true) ; // // options simulation des envois, suspendre le tri, la meleuse $page_result .= '' . debut_cadre_relief('', true, '', _T('spiplistes:mode_suspendre_trieuse')) . spiplistes_form_input_checkbox ( 'opt_suspendre_trieuse' , 'oui', _T('spiplistes:Suspendre_le_tri_des_listes') , (spiplistes_pref_lire('opt_suspendre_trieuse') == 'oui'), true, false) . fin_cadre_relief(true) // . debut_cadre_relief('', true, '', _T('spiplistes:mode_suspendre_meleuse')) . spiplistes_form_input_checkbox ( 'opt_suspendre_meleuse' , 'oui', _T('spiplistes:suspendre_lenvoi_des_courriers') , (spiplistes_pref_lire('opt_suspendre_meleuse') == 'oui'), true, false) . fin_cadre_relief(true) // . debut_cadre_relief('', true, '', _T('spiplistes:mode_simulation')) . spiplistes_form_input_checkbox ( 'opt_simuler_envoi' , 'oui', _T('spiplistes:simuler_les_envois') , (spiplistes_pref_lire('opt_simuler_envoi') == 'oui'), true, false) . fin_cadre_relief(true) // . spiplistes_form_bouton_valider('btn_param_valider', _T('bouton_valider'), true) . spiplistes_form_fin(true) . fin_cadre_trait_couleur(true) ; ////////////////////////////////////////////////////// // La console $page_result .= '<a id="regler-console" name="regler-console"></a>' . debut_cadre_trait_couleur(_DIR_PLUGIN_SPIPLISTES_IMG_PACK.'console-24.gif', true, '', _T('spiplistes:log_console')) . spiplistes_form_debut(generer_url_ecrire(_SPIPLISTES_EXEC_CONFIGURE), true) // // la console en mode debug ? . debut_cadre_relief('', true, '', _T('spiplistes:log_console_debug')) . spiplistes_form_input_checkbox ( 'opt_console_debug' , 'oui' , _T('spiplistes:log_console_debug_activer') , (spiplistes_pref_lire('opt_console_debug') == 'oui'), true, false) . fin_cadre_relief(true) // . debut_cadre_relief('', true, '', _T('spiplistes:log_details_console')) . spiplistes_form_input_checkbox ( 'opt_log_voir_destinataire' , 'oui' , _T('spiplistes:log_voir_destinataire') , (spiplistes_pref_lire('opt_log_voir_destinataire') == 'oui'), true, false) . fin_cadre_relief(true) ; // Paramétrer la console de debug/logs si sur LAN if(spiplistes_server_rezo_local()) { $page_result .= '' . debut_cadre_relief('', true, '', _T('spiplistes:log_console_syslog')) . '<p class="verdana2">'._T('spiplistes:log_console_syslog_desc', array('IP_LAN' => $_SERVER['SERVER_ADDR'])).'</p>' . $eol . spiplistes_form_input_checkbox ( 'opt_console_syslog' , 'oui', _T('spiplistes:log_console_syslog_texte') , (spiplistes_pref_lire('opt_console_syslog') == 'oui'), true, false) . fin_cadre_relief(true) ; } $page_result .= '' . spiplistes_form_bouton_valider('btn_console_syslog') . spiplistes_form_fin(true) ; // voir les journaux SPIP if(!($ii = spiplistes_pref_lire('opt_console_syslog')) || ($ii == 'non')) { // si syslog non activé, on visualise les journaux de spip // lien sur logs ou affiche logs /* * CP-20081112: deplace' dans les raccourcis */ /* $page_result .= '' . "<a id='view-spiplistes-log' name='view-spiplistes-log' href='#view-spiplistes-log' class='verdana2'>" . _T('spiplistes:log_voir_les_journaux') . "</a>" . $eol . "<div id='view-spiplistes-log-box'></div>" . $eol ; */ } $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_config()
/** * Mise à jour de la base de données (tables SPIP-Listes uniquement) * * @return string */ function spiplistes_upgrade_base ( $spiplistes_name , $spiplistes_current_version , $spiplistes_current_version_base , $spiplistes_real_version_base ) { //spiplistes_debug_log("spiplistes_upgrade_base(),); if($spiplistes_current_version_base && ($spiplistes_current_version_base >= $spiplistes_real_version_base)) { // La base est a jour return($spiplistes_current_version_base); } // faire la mise a jour spiplistes_debug_log("UPGRADING DATABASE $spiplistes_name $spiplistes_current_version_base TO $spiplistes_real_version_base"); // 'version_base' n'apparait que dans SPIP-Listes 1.98001 // Cherche sur $spiplistes_version pour les versions precedentes //install $version_base = 1.91; // ou inferieur ? if ( (!$spiplistes_current_version) || ($spiplistes_current_version < 1.98001) ) { // si etait deja installe mais dans une vieille version, on reprend a zero include_spip('base/abstract_sql'); $desc = sql_showtable("spip_listes",true); if (!isset($desc['field']['id_liste'])) $current_version = 0.0; if( sql_getfetsel("*", 'spip_articles' , "statut=".sql_quote('liste')." OR statut=".sql_quote('inact')." OR statut=".sql_quote('poublist')) ) { $current_version=0.0; } if ($current_version==0.0){ // Verifie que les tables spip_listes existent, sinon les creer //spiplistes_debug_log("UPGRADE: current_version: $current_version"); include_spip('base/create'); include_spip('base/abstract_sql'); //Migrer des listes anciennes // a deplacer dans une en fonction $resultat_aff = sql_select("*", 'spip_articles' , "statut=".sql_quote('liste')." OR statut=".sql_quote('inact')." OR statut=".sql_quote('poublist')); if(@sql_count($resultat_aff) > 0) { echo _T('spiplistes:mettre_a_jour'); while ($row = sql_fetch($resultat_aff)) { $id_article=$row['id_article']; $titre_liste=corriger_caracteres($row['titre']); $texte_liste = corriger_caracteres($row['texte']); $date_liste = $row['date']; $langue=$row["lang"]; $statut = $row['statut']; $extra=unserialize($row['extra']); $patron_liste=$extra["squelette"]; $periode_liste=$extra["periode"]; $maj_liste=$extra["majnouv"]; $email_envoi=$extra["email_envoi"]; $message_auto=$extra["auto"]; $options="<p>".$titre_liste."<br/>"; echo $options."</p>"; // ajout du pied de page include_spip('public/assembler'); $contexte_pied = array('lang'=>$langue); $pied = recuperer_fond('modeles/piedmail', $contexte_pied); $id_liste = sql_insertq( "spip_listes" , array( 'titre' => $titre_liste , 'texte' => $texte_liste , 'statut' => $statut , 'date' => $date_liste , 'lang' => $langue , 'pied_page' => $pied ) ); if($message_auto=="oui") sql_update( 'spip_listes' , array( 'patron' => sql_quote($patron_liste) , 'periode' => sql_quote($periode_liste) , 'maj' => "FROM_UNIXTIME(".sql_quote($maj_liste).")" , 'email_envoi' => sql_quote($email_envoi) , 'message_auto' => sql_quote($message_auto) ) , "id_liste=".sql_quote($id_liste) ); //Auteur de la liste (moderateur) sql_delete('spip_auteurs_mod_listes', "id_liste =".sql_quote($id_liste)); sql_insert( 'spip_auteurs_mod_listes' , "(id_auteur, id_liste)" , "(".sql_quote($connect_id_auteur).",".sql_quote($id_liste).")" ); //recuperer les abonnes (peut etre plus tard ?) $abos = sql_select('id_auteur,id_article', 'spip_auteurs_articles' , "id_article=".sql_quote($id_article)); while($abonnes = sql_fetch($abos)){ $abo = intval($abonnes['id_auteur']); sql_insert('spip_auteurs_listes' , "(id_auteur, id_liste)" , "(".sql_quote($abo).",".sql_quote($id_liste).")" ); } //effacer les anciens articles/abo sql_delete('spip_articles', "id_article =".sql_quote($id_article)); sql_delete('spip_auteurs_articles', "id_article =".sql_quote($id_article)); //manque un traitement pour recuperer les courriers } //evaluer les extras de tous les auteurs et les virer $result = sql_select( "extra AS e, spip_auteurs.id_auteur AS i" , 'spip_auteurs' ); while ($row = sql_fetch($result)) { $abo = unserialize($row['e']); $format = $abo['abo'] ; if($format=="texte" || $format=="html") { sql_insert( 'spip_auteurs_elargis' , "(id_auteur,`spip_listes_format`)" , "(".sql_quote($row['i']).",".sql_quote($format).")" ); } else { sql_insert( 'spip_auteurs_elargis' , "(id_auteur, `spip_listes_format`)" , "(".sql_quote($row['i']).",".sql_quote('non').")" ); } } // end while echo _T('spiplistes:regulariser'); $result = sql_select( "a.email, a.id_auteur" , "spip_auteurs AS a, spip_auteurs_listes AS l, spip_auteurs_elargis AS f" , array( "a.id_auteur=f.id_auteur" , "f.spip_listes_format=".sql_quote('non') , "a.id_auteur=l.id_auteur" , "a.statut!=".sql_quote('5poubelle') ) , array("email") ); // while($res = sql_fetch($result)) { sql_delete('spip_auteurs_listes', "id_auteur =".sql_quote($res['id_auteur'])) ; } } // end if(@sql_count($resultat_aff) > 0) ecrire_meta('spiplistes_version',$current_version=$version_base,'non'); } if ($current_version<1.92){ //spiplistes_debug_log("UPGRADE: current_version: $current_version"); echo "SpipListes Maj 1.92<br />"; sql_alter("TABLE spip_listes ADD titre_message varchar(255) NOT NULL default ''"); sql_alter("TABLE spip_listes ADD pied_page longblob NOT NULL"); ecrire_meta('spiplistes_version', $current_version=1.92); } if ($current_version<1.94){ //spiplistes_debug_log("UPGRADE: current_version: $current_version"); echo "SpipListes Maj 1.94<br />"; include_spip('base/abstract_sql'); if (($res = sql_select('id_auteur', 'spip_auteurs_mod_listes')) && (!sql_fetch($res)) && ($desc = sql_showtable("spip_abonnes_listes",true)) && isset($desc['field']['id_auteur']) ) { sql_drop_table("spip_auteurs_mod_listes"); // elle vient d'etre cree par un creer_base inopportun sql_drop_table("spip_auteurs_courriers"); // elle vient d'etre cree par un creer_base inopportun } sql_alter("TABLE spip_auteurs_listes RENAME spip_auteurs_mod_listes"); sql_alter("TABLE spip_abonnes_listes RENAME spip_auteurs_listes"); sql_alter("TABLE spip_abonnes_courriers RENAME spip_auteurs_courriers"); ecrire_meta('spiplistes_version', $current_version=1.94); } if ($current_version<1.95){ //spiplistes_debug_log("UPGRADE: current_version: $current_version"); echo "SpipListes Maj 1.95<br />"; include_spip('base/abstract_sql'); sql_alter("TABLE spip_auteurs_courriers ADD etat varchar(5) NOT NULL default '' AFTER statut"); ecrire_meta('spiplistes_version', $current_version=1.95); } if ($current_version<1.96){ //spiplistes_debug_log("UPGRADE: current_version: $current_version"); echo "SpipListes Maj 1.96<br />"; include_spip('base/abstract_sql'); //installer la table spip_auteurs_elargis si besoin $table_nom = "spip_auteurs_elargis"; sql_query("CREATE TABLE IF NOT EXISTS ".$table_nom." ( `id_auteur` BIGINT NOT NULL , `spip_listes_format` VARCHAR( 8 ) DEFAULT 'non' NOT NULL ) "); //evaluer les extras de tous les auteurs + compter tous les auteurs $result = sql_select( "extra AS e,spip_auteurs.id_auteur AS i" , 'spip_auteurs'); $nb_inscrits = 0; //repartition des extras $cmpt = array('texte'=>0, 'html'=>0, 'non'=>0); while ($row = sql_fetch($result)) { $nb_inscrits++ ; $abo = unserialize($row['e']); $format = $abo['abo'] ; if($format=="texte" || $format=="html") { sql_insert( 'spip_auteurs_elargis' , "(id_auteur, `spip_listes_format`)" , "(".sql_quote($row['i']).",".sql_quote($format).")" ); } else { sql_insert( 'spip_auteurs_elargis' , "(id_auteur, `spip_listes_format`)" , "(".sql_quote($row['i']).",".sql_quote('non').") " ); } if ($abo['abo']) { $cmpt[$abo['abo']] ++; } } echo "<br />html : ".$cmpt['html']." <br />texte : ".$cmpt['texte']."<br />non : ".$cmpt['non']."<br />somme :".$nb_inscrits ; ecrire_meta('spiplistes_version', $current_version=1.96); } if ($current_version<1.97) { //spiplistes_debug_log("UPGRADE: current_version: $current_version"); echo "SpipListes Maj 1.97<br />"; include_spip('base/abstract_sql'); echo "regulariser les desabonnes avec listes...<br />"; $result = sql_select( "a.email,a.id_auteur" , "spip_auteurs AS a, spip_auteurs_listes AS l, spip_auteurs_elargis AS f" , array( "a.id_auteur=f.id_auteur" , "f.spip_listes_format=".sql_quote('non') , "a.id_auteur=l.id_auteur" , "a.statut!=".sql_quote('5poubelle' ) ) , array("email") ); // $nb_inscrits = sql_count($result); echo($nb_inscrits); while($res = sql_fetch($result)) { sql_delete("spip_auteurs_listes", "id_auteur =".sql_quote($res['id_auteur'])) ; } ecrire_meta('spiplistes_version', $current_version=1.97); } // end if ($current_version<1.97) if ($current_version<1.98) { echo "SpipListes Maj 1.98<br />"; include_spip('base/abstract_sql'); echo "regulariser l'index"; $table_nom = "spip_auteurs_elargis"; //ajout des index $desc = sql_showtable($table_nom,true); if($desc['key']['PRIMARY KEY']!='id'){ sql_alter("TABLE ".$table_nom." DROP PRIMARY KEY"); if(!isset($desc['fields']['id'])) { sql_alter("TABLE ".$table_nom." ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY"); } else { sql_alter("TABLE ".$table_nom." ADD PRIMARY KEY (id)"); } } if($desc['key']['KEY id_auteur']) { sql_alter("TABLE ".$table_nom." DROP INDEX id_auteur, ADD INDEX id_auteur (id_auteur)"); } else { sql_alter("TABLE ".$table_nom." ADD INDEX id_auteur (id_auteur)"); } ecrire_meta('spiplistes_version', $current_version=1.98); } spiplistes_ecrire_metas(); } // A partir de SPIP-Listes 1.98001, on se base sur le vrai numero de version de // la base, (plugin.xml: <version_base>) if($spiplistes_current_version_base < $spiplistes_real_version_base) { spiplistes_debug_log("UPGRADING DATABASE version_base: $spiplistes_current_version_base TO $spiplistes_real_version_base"); /* ... */ // ajouter au dessus de cette ligne les patches si besoin pour nouvelle version de la base // fin des ajouts de patches ecrire_meta('spiplistes_base_version', $spiplistes_current_version_base); spiplistes_ecrire_metas(); } return($spiplistes_current_version_base); }
function spiplistes_boite_autocron () { @define('_SPIP_LISTE_SEND_THREADS',1); $connect_id_auteur = intval($GLOBALS['connect_id_auteur']); // initialise les options foreach(array( 'opt_suspendre_trieuse' , 'opt_suspendre_meleuse' , 'opt_simuler_envoi' ) as $key) { $$key = spiplistes_pref_lire($key); } $result = ""; // Informe sur l'etat de la trieuse if($opt_suspendre_trieuse == 'oui') { if(_request('opt_suspendre_trieuse')=='non') { if(autoriser('webmestre','','',$connect_id_auteur)) { spiplistes_ecrire_key_in_serialized_meta ('opt_suspendre_trieuse', $opt_suspendre_trieuse = 'non', _SPIPLISTES_META_PREFERENCES); spiplistes_ecrire_metas(); $result .= "<p class='verdana2' style='margin-bottom:1em;'>"._T('spiplistes:Trieuse_reactivee')."</p>\n"; } } else { $result .= spiplistes_boite_autocron_info(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."stock_timer.gif", true , _T('spiplistes:trieuse_suspendue'), _T('bouton_annuler') , _T('spiplistes:trieuse_suspendue_info'), 'opt_suspendre_trieuse', _DIR_IMG_PACK."warning-24.gif" ); } } // Informe sur l'etat de la meleuse if($opt_suspendre_meleuse == 'oui') { if(_request('opt_suspendre_meleuse')=='non') { if(autoriser('webmestre','','',$connect_id_auteur)) { spiplistes_ecrire_key_in_serialized_meta ('opt_suspendre_meleuse', $opt_suspendre_meleuse = 'non', _SPIPLISTES_META_PREFERENCES); spiplistes_ecrire_metas(); $result .= "<p class='verdana2' style='margin-bottom:1em;'>"._T('spiplistes:Meleuse_reactivee')."</p>\n"; } } else { $result .= spiplistes_boite_autocron_info(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."courriers_envoyer-24.png", true , _T('spiplistes:meleuse_suspendue'), _T('bouton_annuler') , _T('spiplistes:meleuse_suspendue_info'), 'opt_suspendre_meleuse', _DIR_IMG_PACK."warning-24.gif" ); } } // Informe si mode simulation en cours if($opt_simuler_envoi == 'oui') { if(_request('opt_simuler_envoi')=='non') { if(autoriser('webmestre','','',$connect_id_auteur)) { spiplistes_ecrire_key_in_serialized_meta ('opt_simuler_envoi', $opt_simuler_envoi = 'non', _SPIPLISTES_META_PREFERENCES); spiplistes_ecrire_metas(); $result .= "<p class='verdana2' style='margin-bottom:1em;'>"._T('spiplistes:simulation_desactive')."</p>\n"; } } else { $result .= spiplistes_boite_autocron_info(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."courriers_envoyer-24.png", true , _T('spiplistes:Mode_simulation'), _T('bouton_annuler') , _T('spiplistes:mode_simulation_info'), 'opt_simuler_envoi', _DIR_IMG_PACK."warning-24.gif" ); } } include_spip('genie/spiplistes_cron'); $time = time(); $time = cron_spiplistes_cron($time); if($time > 0) { // le CRON n'a rien a faire. Pas de boite autocron return($result); } $nb_etiquettes = spiplistes_courriers_en_queue_compter("etat=".sql_quote('')); $nb_total_abonnes = spiplistes_courriers_total_abonnes(); if(($nb_etiquettes > 0) && ($nb_total_abonnes > 0)) { $result .= "" . "<br />" . debut_boite_info(true) . "<div style='font-weight:bold;text-align:center'>"._T('spiplistes:envoi_en_cours')."</div>" . "<div style='padding : 10px;text-align:center'><img alt='' src='"._DIR_PLUGIN_SPIPLISTES_IMG_PACK."courriers_distribution-48.gif' /></div>" . "<div id='meleuse'>" . ( ($nb_total_abonnes) ? "" . "<p align='center' id='envoi_statut'>"._T('spiplistes:envoi_en_cours')." " . "<strong id='envois_restants'>$nb_etiquettes</strong>/<span id='envois_total'>$nb_total_abonnes</span> " . "(<span id='envois_restant_pourcent'>" . round($nb_etiquettes / $nb_total_abonnes * 100)."</span>%)</p>" : "" ) // message si simulation d'envoi . ( ($opt_simuler_envoi == 'oui') ? "<div style='color:white;background-color:red;text-align:center;line-height:1.4em;'>"._T('spiplistes:mode_simulation')."</div>\n" : "" ) ; $href = generer_action_auteur('spiplistes_envoi_lot','envoyer'); for ($i = 0; $i < _SPIP_LISTE_SEND_THREADS; $i++) { $result .= "<span id='proc$i' class='processus' name='$href'></span>"; } $result .= "" . "<a href='".generer_url_ecrire(_SPIPLISTES_EXEC_COURRIERS_LISTE)."' id='redirect_after'></a>" . "</div>" . "<script><!-- var target = $('#envois_restants'); var total = $('#envois_total').html(); var target_pc = $('#envois_restant_pourcent'); function redirect_fin(){ redirect = $('#redirect_after'); if (redirect.length>0){ href = redirect.attr('href'); setTimeout('document.location.href = \"'+href+'\"',0); } } jQuery.fn.runProcessus = function(url) { var proc = this; var href = url; $(target).load(url,function(data){ restant = $(target).html(); pourcent = Math.round(restant/total*100); $(target_pc).html(pourcent); if (Math.round(restant)>0) $(proc).runProcessus(href); else redirect_fin(); }); } $('span.processus').each(function(){ var href = $(this).attr('name'); $(this).html(ajax_image_searching).runProcessus(href); //run_processus($(this).attr('id')); }); //--> </script>" . "<p class='verdana2'>"._T('spiplistes:texte_boite_en_cours')."</p>" . fin_boite_info(true) ; } return($result); }