function spiplistes_texte_inventaire_abos ($id_abonne, $type_abo, $nom_site_spip) { // fait l'inventaire des abos $listes_abonnements = spiplistes_abonnements_listes_auteur ($id_abonne, true); $nb = count($listes_abonnements); $message_list = ($nb) ? "\n- " . implode("\n- ", $listes_abonnements) . ".\n" : '' ; $m1 = ($nb > 1) ? 'inscription_reponses_s' : 'inscription_reponse_s'; if($nb > 1) { $m2 = _T('spiplistes:inscription_listes_f', array('f' => $type_abo)); } else if($nb == 1) { $m2 = _T('spiplistes:inscription_liste_f', array('f' => $type_abo)); } else { $m2 = _T('spiplistes:vous_abonne_aucune_liste'); } $texte = '' . "\n"._T('spiplistes:'.$m1, array('s' => htmlentities($nom_site_spip))) . ".\n" . $m2.$message_list ; return($texte); }
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); }
/** * CP-20080324 : abonner un id_auteur a une id_liste // CP-20080508 : ou une liste de listes ($id_liste est un tableau de (id)listes) // CP-20090111: ajouter la date d'inscription /* * @return array id_listes ajoutees */ function spiplistes_abonnements_ajouter ($id_auteur, $id_liste) { $r_id_listes = false; if(($id_auteur = intval($id_auteur)) > 0) { $sql_table = "spip_auteurs_listes"; $sql_noms = "(id_auteur,id_liste,date_inscription)"; $curr_abos_auteur = spiplistes_abonnements_listes_auteur($id_auteur); $r_id_listes = array(); if(is_array($id_liste)) { // si une seule liste demandee $sql_valeurs = array(); $msg = array(); foreach($id_liste as $id) { if( (($id = intval($id)) > 0) // si pas encore abonne' && !in_array($id, $curr_abos_auteur) ) { $sql_valeurs[] = "($id_auteur,$id,NOW())"; $msg[] = $id; } } if(count($sql_valeurs)) { $sql_valeurs = implode(",", $sql_valeurs); } } else if( // si une seule liste demandee, et si pas encore abonne' (($id_liste = intval($id_liste)) > 0) && (!$curr_abos || !in_array($id_liste, $curr_abos)) ) { $sql_valeurs = " ($id_auteur,$id_liste,NOW())"; $msg = array($id_liste); $r_id_listes[] = $id_liste; } if($sql_valeurs) { $msg = "#" . implode(",#", $msg); if(sql_insert($sql_table, $sql_noms, $sql_valeurs) === false) { spiplistes_sqlerror_log ("spiplistes_abonnements_ajouter()"); } else { spiplistes_log_api("subscribe id_auteur #$id_auteur to id_liste $msg"); } } } return($r_id_listes); }
function formulaires_gestion_abonnement_traiter_dist($id_liste='') { //spiplistes_debug_log('formulaires_gestion_abonnement_traiter_dist()'); $d = _request('d'); $listes = _request('listes'); $format = _request('suppl_abo'); $stop = intval(_request('stop')); if ($auteur = auteur_cookie_ou_session($d)) { $id_auteur = $auteur['id_auteur']; $email = $auteur['email']; // la liste des abonnements en cours // pour cet auteur $mes_abos = spiplistes_abonnements_listes_auteur ($id_auteur, true); // demander de stopper une inscription ? if ($stop > 0) { $id_liste = $stop; if (isset ($mes_abos[$id_liste])) { spiplistes_abonnements_auteur_desabonner ($id_auteur, $id_liste); $contexte = array( 'message_ok' => _T('spiplistes:vous_etes_desinscrit') ); } } else { $prev_format = spiplistes_format_abo_demande($id_auteur); $listes_souhaitees = (is_array($listes) && count($listes)) ? $listes : array() ; if (count ($listes_souhaitees)) { $listes_souhaitees = array_flip ($listes_souhaitees); // abonner aux listes demandées foreach (array_keys($listes_souhaitees) as $id_liste) { if (!isset($mes_abos[$id_liste])) { spiplistes_abonnements_ajouter ($id_auteur, $id_liste); $mes_abos[$id_liste] = ''; } } // désabonner les listes non souhaitées foreach (array_keys($mes_abos) as $id_liste) { if (!isset ($listes_souhaitees[$id_liste])) { spiplistes_abonnements_auteur_desabonner ($id_auteur, $id_liste); } } // abonner aux listes demandées, // si pas déjà abonné foreach (array_keys($listes_souhaitees) as $id_liste) { if (!isset ($mes_abos[$id_liste])) { if(spiplistes_abonnements_ajouter($id_auteur, $id_liste) !== false) { // @todo a ameliorer, style une ligne de confirmation par liste ? $message_ok = _T('spiplistes:abonnement_modifie'); } } } } else if (count ($mes_abos)) { // tout est déselectionné ? // supprimer tout les abonnements ! spiplistes_abonnements_auteur_desabonner ($id_auteur, 'toutes'); $mes_abos = array(); } if($format != $prev_format) { if ($format == 'non') { if (count ($mes_abos)) { spiplistes_abonnements_auteur_desabonner ($id_auteur, 'toutes'); } $message_ok = _T('spiplistes:desabonnement_valid').' : '.$email; } else { spiplistes_format_abo_modifier($id_auteur, $format); $message_ok = _T('spiplistes:abonnement_modifie'); $message_ok .= '<br />'._T('spiplistes:abonnement_nouveau_format').$format; } } spiplistes_auteurs_cookie_oubli_updateq ('', $d, $true); $contexte = array( 'editable' => true, 'message_ok' => $message_ok, 'format' => $format ); } } return ($contexte); }