function spiplistes_courriers_statut_compter ($statut='tous') { $sql_where = spiplistes_listes_sql_where_or( ($statut == 'tous') ? _SPIPLISTES_COURRIERS_STATUTS : $statut ); return(spiplistes_sql_compter('spip_courriers', $sql_where)); }
function spiplistes_auteur_abonnement_details ($id_auteur, $auteur_statut, $email) { include_spip("inc/spiplistes_api"); include_spip("inc/spiplistes_api_presentation"); global $connect_statut , $connect_toutes_rubriques , $connect_id_auteur ; $result = ""; $flag_editable = ( (($connect_statut == '0minirezo') && $connect_toutes_rubriques) || ($connect_id_auteur == $id_auteur) ); if($flag_editable) { // recupere la liste des abonnements disponibles $sql_where = spiplistes_listes_sql_where_or(_SPIPLISTES_LISTES_STATUTS_PERIODIQUES) . " OR statut=".sql_quote(_SPIPLISTES_LIST_PUBLIC); // les auteurs ont droit aux listes privees (internes) if(($auteur_statut == '1comite') || ($auteur_statut == '0minirezo')) { $sql_where .= " OR statut=".sql_quote(_SPIPLISTES_LIST_PRIVATE); } $sql_result = sql_select( array('id_liste','titre','texte','date','statut') , "spip_listes" , $sql_where , '' , array("titre ASC") ); $nb_listes_dispo = sql_count($sql_result); //spiplistes_log(gettype($nb_listes_dispo).":".$nb_listes_dispo); // si liste disponible, affiche formulaire if($sql_result && $nb_listes_dispo) { // recupere la liste des listes $listes = array(); while($row = sql_fetch($sql_result)) { $texte = propre($row['texte']); if(strlen($legend = textebrut($texte)) > 40) { $texte = couper($texte, 40); } $texte = strip_tags($texte, '<strong>'); $listes[] = array( 'id_liste' => intval($row['id_liste']) , 'titre' => $row['titre'] , 'texte' => $texte , 'date' => $row['date'] , 'statut' => $row['statut'] , 'legend' => $legend ); } // end while // si retour de formulaire, ajoute/retire les abonnements if(_request('btn_abonnements_valider')) { $abos_set = _request('abos_set'); $abo_ajoute = array(); // liste des abonnements de id_auteur $auteur_abos_current_list = spiplistes_abonnements_listes_auteur($id_auteur); // ajoute/retire les abonnements desires if(count($abos_set)) { // Abonnements ? foreach($abos_set as $value) { if(!in_array($value, $auteur_abos_current_list)) { $abo_ajoute[] = $value; } } if(count($abo_ajoute)) { spiplistes_abonnements_ajouter($id_auteur, $abo_ajoute); } // Desabonnements ? foreach($auteur_abos_current_list as $value) { if(!in_array($value, $abos_set)) { spiplistes_abonnements_auteur_desabonner($id_auteur, $value); } } } // desabonne de tout else { if(spiplistes_abonnements_auteur_desabonner($id_auteur, "toutes") === false) { $result .= spiplistes_boite_alerte(_T('spiplistes:Erreur_sur_la_base'), true); } } } // end if // si retour de formulaire, modifie le format de reception if($abo_format = _request('abo_format')) { spiplistes_format_abo_modifier($id_auteur, $abo_format); } // recupere le format d'abonnement de id_auteur $abo_format = spiplistes_format_abo_demande($id_auteur); // recupere la liste ou auteur est abonne $auteur_abos_current_list = spiplistes_abonnements_listes_auteur($id_auteur); $bloc_visible = _request('btn_abonnements_valider'); $debut_block = ($bloc_visible ? "spiplistes_debut_block_visible" : "spiplistes_debut_block_invisible"); $result .= "" . "<!-- formulaire abonnement spiplistes -->\n" . "<a name='abonnement'></a>\n" . debut_cadre_enfonce(_DIR_PLUGIN_SPIPLISTES_IMG_PACK."courriers_listes-24.png" , true, '', _T('spiplistes:listes_de_diffusion_')) . spiplistes_bouton_block_depliable( _T('spiplistes:abonnements_aux_courriers') , $bloc_visible , "abos_block") . "<div class='verdana2'>" ; if($n = count($auteur_abos_current_list)) { $result .= $n."/" . spiplistes_nb_listes_str_get ($nb_listes_dispo) . ". " . _T('spiplistes:format_de_reception')." : " . ( (in_array($abo_format, array('html', 'texte'))) ? _T('spiplistes:'.$abo_format) : "<"._T('spiplistes:aucun').">" ) ; } else { $result .= _T('spiplistes:Sans_abonnement'); } $result .= "" . "</div>\n" . $debut_block("abos_block") . "<form action='".generer_url_ecrire("auteur_infos", "id_auteur=$id_auteur")."' method='post' style='margin-bottom:0;' name='abos_formulaire'>\n" . debut_cadre_formulaire("", true) . "\n<p class='verdana2' style='margin-top:0;margin-bottom:0;'>" . ( ($abo_format!='html' && $abo_format!='texte') ? _T('spiplistes:Alert_abonnement_sans_format') : _T('spiplistes:vous_etes_abonne_aux_listes_selectionnees_').":" ) . "</p>\n" // . "<!-- liste des abonnements -->\n" . "<ul class='liste-listes'>\n" ; foreach($listes as $key=>$value) { $id_liste = $value['id_liste']; $auteur_est_abonne = in_array($id_liste, $auteur_abos_current_list); $checked = $auteur_est_abonne ? "checked='checked'" : ""; $label = $auteur_est_abonne ? "Arreter_abonnement_a" : "Abonner_a"; $label = _T("spiplistes:".$label)." ".$value['titre']; $prochain_envoi = ($value['date'] > 0) ? _T('spiplistes:Prochain_envoi_').": <span style='font-weight:bold;'>".affdate_heure($value['date'])."</span>" : _T('spiplistes:envoi_non_programme') ; $result .= "" . "<li>\n" . "<label>\n" . "<input name='abos_set[]' type='checkbox' value='$id_liste' title=\"$label\" $checked />\n" . spiplistes_bullet_titre_liste('puce', $value['statut'], '', true) . "<span title=\"".$value['legend']."\">\n" . "<span class='titre'>".typo($value['titre'])."</span> \n" . "<span class='description'>".typo($value['texte'])." </span>\n" . "<span class='periodicite'>($prochain_envoi)</span>\n" . "</span>\n" . "</label></li>\n" ; } $result .= "" . "</ul>\n" . "<!-- fin liste des abonnements -->\n" . fin_cadre_formulaire(true) // // selection du format de reception . debut_cadre_formulaire("margin-top:1ex", true) . ((empty($abo_format) || ($abo_format=="non")) ? "<p>"._T('spiplistes:Format_obligatoire_pour_diffusion')."</p>" : "" ) . _T('spiplistes:format_de_reception') . "<ul class='liste-format'>\n" ; $checked = ($abo_format=="html" ? "checked='checked'" : ""); $result .= "" . "<li style='width:50%;float:left;'>\n" . " <input type='radio' name='abo_format' value='html' id='format_rcpt_html' title='"._T('spiplistes:html')."' $checked />" . " <label for='format_rcpt_html'>"._T('spiplistes:version_html')."</label></li>\n" ; $checked = ($abo_format=="texte" ? "checked='checked'" : ""); $result .= "" . "<li>\n" . " <input type='radio' name='abo_format' value='texte' id='format_rcpt_texte' title='"._T('spiplistes:texte')."' $checked />" . " <label for='format_rcpt_texte'>"._T('spiplistes:version_texte')."</label></li>\n" . "</ul>\n" . fin_cadre_formulaire(true) ; if(spiplistes_format_valide($abo_format) && ($abo_format!="non")) { $result .= "" . debut_cadre_formulaire("margin-top:1ex", true) . "<ul class='liste-format-desabo'>\n" . "<li>\n" . spiplistes_form_input_radio('abo_format', 'non', _T('spiplistes:Suspendre_abonnements') , false, true, false) . "</li>\n" . "</ul>\n" . fin_cadre_formulaire(true) ; } $result .= "" // . "<div style='text-align:right;margin-top:1ex;'><input type='submit' name='btn_abonnements_valider' " . " value='"._T('spiplistes:Valider_abonnement')."' class='fondo' /></div>\n" . "</form>\n" . fin_block() . fin_cadre_enfonce(true) ; } } return($result); }
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(); }
/** * cron_spiplistes_cron() renvoie: * - nul, si la tache n'a pas a etre effectuee * - positif, si la tache a ete effectuee * - negatif, si la tache doit etre poursuivie ou recommencee * @return null|int */ function cron_spiplistes_cron ($last_time) { include_spip('inc/utils'); include_spip('inc/spiplistes_api_globales'); include_spip('base/spiplistes_tables'); include_spip('inc/spiplistes_api'); include_spip('inc/spiplistes_api_courrier'); include_spip('inc/spiplistes_api_abstract_sql'); $prefix_log = 'CRON: '; // initialise les options (prefs spiplistes) foreach(array( 'opt_suspendre_trieuse' ) as $key) { $$key = spiplistes_pref_lire($key); } if($opt_suspendre_trieuse == 'oui') { spiplistes_log($prefix_log.'SUSPEND MODE !!!'); if(spiplistes_courriers_en_queue_compter('etat='.sql_quote('')) > 0) { include_spip('inc/spiplistes_meleuse'); return(spiplistes_meleuse($last_time)); } else { return($last_time); } } $current_time = time(); $sql_select = array( 'id_liste', 'titre', 'titre_message', 'date', 'maj' , 'message_auto', 'periode', 'lang', 'patron', 'statut' ); // demande les listes auto a' envoyer (date <= maintenant) $sql_where = 'message_auto='.sql_quote('oui').' AND date > 0 AND date <= NOW() AND ('.spiplistes_listes_sql_where_or(_SPIPLISTES_LISTES_STATUTS_OK).') ' ; $listes_privees_et_publiques = sql_select( $sql_select , 'spip_listes' , $sql_where ); $nb_listes_ok = sql_count($listes_privees_et_publiques); spiplistes_debug_log($prefix_log.'nb listes depart: '.$nb_listes_ok); if($nb_listes_ok > 0) { $mod_listes_ids = spiplistes_mod_listes_get_id_auteur('toutes'); while($row = sql_fetch($listes_privees_et_publiques)) { // initalise les variables foreach($sql_select as $key) { $$key = $row[$key]; } $id_liste = intval($id_liste); $periode = intval($periode); $envoyer_quand = $date; $dernier_envoi = $maj; // demande id_auteur de la liste pour signer le courrier // si plusieurs moderateurs, prend le premier $id_auteur = (isset($mod_listes_ids[$id_liste]) && ($mod_listes_ids[$id_liste][0] > 0)) ? $mod_listes_ids[$id_liste][0] : 1 // attribue a l'admin principal si manquant ; // Tampon date prochain envoi (dans 'date') et d'envoi (dans 'maj') $sql_set = $next_time = false; if(in_array($statut, explode(';', _SPIPLISTES_LISTES_STATUTS_PERIODIQUES))) { // prendre la date du jour plutot que la dernier date choisie // sinon, une lettre quotidienne du mois precedent // se verra envoyee autant de fois que de jours en attente //$job_time = strtotime($envoyer_quand); $job_time = strtotime(spiplistes_sql_now()); $job_heure = date('H', $job_time); $job_minute = date('i', $job_time); $job_mois = date('m', $job_time); $job_jour = (($statut == _SPIPLISTES_LIST_PUB_MONTHLY) ? 1 : date('j', $job_time)); $job_an = date('Y'); // la date est forcee par celle du systeme (eviter erreurs) switch($statut) { case _SPIPLISTES_LIST_PRIV_YEARLY: case _SPIPLISTES_LIST_PUB_YEARLY: $next_time = mktime($job_heure, $job_minute, 0, $job_mois, $job_jour, $job_an+1); break; case _SPIPLISTES_LIST_PRIV_MENSUEL: case _SPIPLISTES_LIST_PRIV_MONTHLY: case _SPIPLISTES_LIST_PUB_MENSUEL: case _SPIPLISTES_LIST_PUB_MONTHLY: $next_time = mktime($job_heure, $job_minute, 0, $job_mois+1, $job_jour, $job_an); break; case _SPIPLISTES_LIST_PRIV_HEBDO: case _SPIPLISTES_LIST_PRIV_WEEKLY: case _SPIPLISTES_LIST_PUB_HEBDO: case _SPIPLISTES_LIST_PUB_WEEKLY: $next_time = mktime($job_heure, $job_minute, 0, $job_mois, $job_jour+7, $job_an); break; case _SPIPLISTES_LIST_PRIV_DAILY: case _SPIPLISTES_LIST_PUB_DAILY: $next_time = mktime($job_heure, $job_minute, 0, $job_mois, $job_jour+$periode, $job_an); break; default: $sql_set = array('date' => sql_quote(''), 'message_auto' => sql_quote('non')); break; } } else if($periode) { $next_time = time() + (_SPIPLISTES_TIME_1_DAY * $periode); } else { // pas de periode ? c'est un envoyer_maintenant. // applique le tampon date d'envoi et repasse la liste en auto non $sql_set = array('date' => sql_quote(''), 'message_auto' => sql_quote('non')); } if($next_time || count($sql_set)) { if($next_time) { // prochaine date d'envoi dans 'date' $sql_set = array('date' => sql_quote(normaliser_date($next_time))); } $sql_set['maj'] = 'NOW()'; sql_update( 'spip_listes' , $sql_set , 'id_liste='.sql_quote($id_liste).' LIMIT 1' ); } ///////////////////////////// // preparation du courrier a placer dans le panier (spip_courriers) // en cas de periode, la date est dans le passe' // pour avoir les elements publies depuis cette date if ( empty($titre_message) && (spiplistes_pref_lire_defaut('opt_completer_titre_nom_site', 'oui') == 'oui') ) { $titre .= _T('spiplistes:_de_') . spiplistes_nom_site_texte($lang); } else { $titre = $titre_message; } spiplistes_debug_log ($prefix_log.'utiliser patron '._SPIPLISTES_PATRONS_DIR.$patron); list($courrier_html, $courrier_texte) = spiplistes_courriers_assembler_patron ( _SPIPLISTES_PATRONS_DIR . $patron , array('date' => $dernier_envoi, 'patron'=>$patron, 'lang'=>$lang)); //$taille_courrier_ok = (($n = spiplistes_strlen(spiplistes_courrier_version_texte($courrier_html))) > 10); $taille_courrier_ok = (($n = strlen($courrier_texte)) > 10); spiplistes_debug_log($prefix_log.'taille courrier pour la liste #'.$id_liste.' : '.$n); if($taille_courrier_ok) { include_spip('inc/filtres'); $courrier_html = spiplistes_liens_absolus ($courrier_html); $date_debut_envoi = $date_fin_envoi = "''"; $statut = _SPIPLISTES_COURRIER_STATUT_ENCOURS; } else { $date_debut_envoi = $date_fin_envoi = 'NOW()'; $statut = _SPIPLISTES_COURRIER_STATUT_VIDE; spiplistes_debug_log($prefix_log.'courrier vide'); } // Place le courrier dans le casier $id_courrier = sql_insert( 'spip_courriers' , '(' . 'titre ,date ,statut ,type ,id_auteur ,id_liste ,date_debut_envoi ,date_fin_envoi ,texte ,message_texte' . ')' , '(' . sql_quote($titre) . ',NOW()' . ','.sql_quote($statut) . ','.sql_quote(_SPIPLISTES_COURRIER_TYPE_LISTEAUTO) . ','.sql_quote($id_auteur) . ','.sql_quote($id_liste) . ','.$date_debut_envoi . ','.$date_fin_envoi . ','.sql_quote($courrier_html) . ','.sql_quote($courrier_texte) . ')' ); if($taille_courrier_ok) { // place les etiquettes // (ajout des abonnes dans la queue (spip_auteurs_courriers)) spiplistes_courrier_remplir_queue_envois($id_courrier, $id_liste); } } // end while // fin traitement des listes } ///////////////////////////// // Si panier des etiquettes plein, appel de la meleuse if( $n = spiplistes_courriers_en_queue_compter('etat='.sql_quote('')) ){ spiplistes_debug_log($prefix_log.$n.' job(s), appel meleuse'); include_spip('inc/spiplistes_meleuse'); return(spiplistes_meleuse($last_time)); } else { spiplistes_debug_log($prefix_log.'NO JOB'); } return ($last_time); } // cron_spiplistes_cron()