function formulaires_fusionner_profil_traiter_dist($id_auteur) { refuser_traiter_formulaire_ajax(); $res = array('message_ok' => _T('profils:message_fusion_profil_ok')); if ($id = _request('id_profil_import')) { $profils_fusionner = charger_fonction('profils_fusionner', 'inc'); $profils_fusionner($id_auteur, $id); } return $res; }
function formulaires_configurer_langage_traiter_dist() { include_spip('action/converser'); action_converser_changer_langue(true); refuser_traiter_formulaire_ajax(); // on ne peut pas changer la langue pour tout le hit ici, // car CVT repasse derriere et retablit la langue avant l'appel a traiter() // il faut rediriger ! return array('message_ok' => _T('config_info_enregistree'), 'editable' => true, 'redirect' => self()); }
function formulaires_editer_adresse_traiter_dist($id_adresse = 'new', $objet = '', $id_objet = '', $retour = '') { // si redirection demandee, on refuse le traitement en ajax if ($retour) { refuser_traiter_formulaire_ajax(); } $retours = formulaires_editer_objet_traiter('adresse', $id_adresse, '', '', $retour, ''); $retours['editable'] = true; $retours['message_ok'] = _T('vacarme_commande:message_modification_enregistree'); return $retours; }
function formulaires_vacarme_editer_contact_traiter_dist($id_contact = 'new', $id_organisation = 0, $redirect = '') { if ($redirect) { refuser_traiter_formulaire_ajax(); } $res = formulaires_editer_objet_traiter('contact', $id_contact, $id_organisation, 0, $redirect); if ($redirect) { $res['redirect'] = $redirect; } $res['editable'] = true; $res['message_ok'] = _T('vacarme_commande:message_modification_enregistree'); return $res; }
function formulaires_editer_profil_traiter_dist($id_auteur) { refuser_traiter_formulaire_ajax(); $auteur = sql_fetsel('*', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); $new_email = ""; // si l'email change if (_request('email') and _request('email') !== $auteur['email']) { $new_email = _request('email'); // si c'etait le login, changer aussi le login if ($auteur['email'] == $auteur['login']) { set_request('login', _request('email')); } } include_spip('inc/editer'); // renseigner le nom de la table auteurs (s'il n'a pas été renseigné) if (!_request('nom')) { set_request('nom', _request('prenom') . ' ' . _request('name')); } $res = formulaires_editer_objet_traiter('auteur', $id_auteur); // si l'email change if ($new_email) { // securite si jamais la modif en base n'a pas eu lieu $new_email = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($id_auteur)); // updater les abonnements dans mailsubscribers // si jamais il y a deja in subscriber sur le nouveau mail, ca ne fera rien, et l'ancien email continuera a recevoir // a charge pour l'utilisateur de se desabonner manuellement sur l'ancien if (test_plugin_actif("mailsubscribers")) { sql_updateq("spip_mailsubscribers", array('email' => $new_email), "email=" . sql_quote($auteur['email'])); } } /* if ($email = _request('email')){ if (_request('newsletter')){ $subscribe = charger_fonction("subscribe","newsletter"); $subscribe($email,array('nom'=>_request('nom'),'listes'=>array('profils'),'force'=>true)); } else { $unsubscribe = charger_fonction("unsubscribe","newsletter"); $unsubscribe($email,array('listes'=>array('profils'))); } set_request('newsletter'); } */ if (isset($res['message_ok'])) { $res['message_ok'] = _T('editer_profil:message_ok_profil_modifie'); $res['editable'] = true; } return $res; }
function formulaires_annuaire_tri_traiter($articles = null, $url = null) { refuser_traiter_formulaire_ajax(); $mots = _request('mots'); // supprimer les valeurs vides du tableau mots $mots = array_filter($mots, function($a){ return is_string($a) && trim($a) !== ""; }); if (!$url) { $url = self(); } // Nettoyer l'URL des mots[] qu'elle contiendrait deja $url = parametre_url($url,'mots',''); $url = parametre_url($url, 'mots', $mots); return array('redirect' => $url); }
function formulaires_configurer_identite_traiter_dist() { include_spip('inc/config'); $adresse_site = isset($GLOBALS['meta']['adresse_site']) ? $GLOBALS['meta']['adresse_site'] : ''; if (_request('adresse_site') != $adresse_site) { refuser_traiter_formulaire_ajax(); } set_request('adresse_site', appliquer_adresse_site(_request('adresse_site'))); include_spip('inc/meta'); foreach (array('nom_site', 'slogan_site', 'descriptif_site', 'email_webmaster') as $k) { ecrire_meta($k, _request($k)); } include_spip('inc/texte_mini'); $reload = texte_script(couper(_request('nom_site'), 35)); $reload = "<script type='text/javascript'>if (window.jQuery) jQuery('#bando_identite .nom_site_spip .nom').html('{$reload}');</script>"; return array('message_ok' => _T('config_info_enregistree') . $reload, 'editable' => true); }
/** * Traitements du formulaire de préférences d'un auteur dans l'espace privé * * @return array * Retours des traitements **/ function formulaires_configurer_preferences_traiter_dist() { // si le menudev change, on recharge toute la page… if (!isset($GLOBALS['visiteur_session']['prefs']['activer_menudev']) or $GLOBALS['visiteur_session']['prefs']['activer_menudev'] != _request('activer_menudev')) { refuser_traiter_formulaire_ajax(); } if ($couleur = _request('couleur')) { $GLOBALS['visiteur_session']['prefs']['couleur'] = $couleur; } if ($display = _request('display')) { $GLOBALS['visiteur_session']['prefs']['display'] = $display; } if ($display_navigation = _request('display_navigation')) { $GLOBALS['visiteur_session']['prefs']['display_navigation'] = $display_navigation; } if (!is_null($display_outils = _request('display_outils'))) { $GLOBALS['visiteur_session']['prefs']['display_outils'] = $display_outils; } if ($menudev = _request('activer_menudev')) { $GLOBALS['visiteur_session']['prefs']['activer_menudev'] = $menudev; } if (intval($GLOBALS['visiteur_session']['id_auteur'])) { include_spip('action/editer_auteur'); $c = array('prefs' => serialize($GLOBALS['visiteur_session']['prefs'])); if (_request('imessage')) { $c['imessage'] = _request('imessage'); } auteur_modifier($GLOBALS['visiteur_session']['id_auteur'], $c); } if ($spip_ecran = _request('spip_ecran')) { // Poser un cookie, // car ce reglage depend plus du navigateur que de l'utilisateur $GLOBALS['spip_ecran'] = $spip_ecran; include_spip('inc/cookie'); spip_setcookie('spip_ecran', $_COOKIE['spip_ecran'] = $spip_ecran, time() + 365 * 24 * 3600); } return array('message_ok' => _T('config_info_enregistree'), 'editable' => true); }
function formulaires_vacarme_inscription_client_traiter_dist($retour = '', $url = '') { // Si redirection demandée, on refuse le traitement en ajax if ($retour) { refuser_traiter_formulaire_ajax(); } // Le pseudo SPIP est construit set_request('nom_inscription', trim(_request('prenom') . ' ' . _request('nom'))); // On active le traitement du formulaire d'inscription classique, donc on crée un nouvel utilisateur if (!($id_auteur = verifier_session())) { $mode = tester_config(0); $inscription_dist = charger_fonction('traiter', 'formulaires/inscription'); $retours = $inscription_dist($mode, ''); $id_auteur = sql_getfetsel('id_auteur', 'spip_auteurs', 'email = ' . sql_quote(_request('mail_inscription'))); } // On récupère l'auteur qu'on vient de créer avec l'email du form if ($id_auteur) { // On ajoute des infos au contexte set_request('objet', 'auteur'); set_request('id_objet', $id_auteur); set_request('type', 'principale'); // On crée un contact pour cet utilisateur $editer_contact = charger_fonction('editer_contact', 'action/'); list($id_contact, $err) = $editer_contact('nouveau'); // on ajoute les infos propres au plugin vacarme_commande : organisation, service, type_client $type_client = _request('type_client'); if ($type_client == 'organisation') { $organisation = _request('organisation'); $service = _request('service'); sql_updateq('spip_contacts', array('type_client' => $type_client, 'organisation' => $organisation, 'service' => $service), "id_contact=" . intval($id_contact)); } else { sql_updateq('spip_contacts', array('type_client' => $type_client), "id_contact=" . intval($id_contact)); } //On lie le contact à l'auteur sql_insertq('spip_contacts_liens', array('id_objet' => $id_auteur, 'objet' => 'auteur', "id_contact" => $id_contact)); //assurer la compatibilite sql_updateq('spip_contacts', array('id_auteur' => $id_auteur), "id_contact=" . intval($id_contact)); // On crée l'adresse $editer_adresse = charger_fonction('editer_adresse', 'action/'); $editer_adresse('oui'); // On crée le numero de tel set_request('type', 'principal'); $editer_numero = charger_fonction('editer_numero', 'action/'); $editer_numero('oui'); // On crée le portable if (_request('portable')) { // on stocke cette donnee $numero = _request('numero'); set_request('numero', _request('portable')); set_request('type', 'portable'); set_request('titre', 'Portable'); $editer_portable = charger_fonction('editer_numero', 'action/'); $editer_portable('oui'); } // On crée le fax if (_request('fax')) { // on stocke cette donnee si elle ne l'est pas deja $numero ? '' : ($numero = _request('numero')); set_request('numero', _request('fax')); set_request('type', 'fax'); set_request('titre', 'Fax'); $editer_fax = charger_fonction('editer_numero', 'action/'); $editer_fax('oui'); } } // si necessaire on replace la bonne donnee dans l'environnement $numero ? set_request('numero', $numero) : ''; // Comme conseillé dans la documentation on informe de l'id auteur inscrit $retours['id_auteur'] = $id_auteur; if ($retours['message_ok']) { $lien = generer_url_public("compte", "c=identification"); if ($url) { $lien = parametre_url($lien, 'retour', $url); $retours['message_ok'] = _T('vacarme_commande:formulaire_inscription_message_ok', array(url => $lien)); } else { $retours['message_ok'] = _T('vacarme_commande:formulaire_inscription_message_ok', array(url => $lien)); } } if ($retour) { $retours['redirect'] = $retour; } return $retours; }
function signature_a_confirmer($id_article, $url_page, $nom, $mail, $site, $url, $msg, $lang, &$statut) { include_spip('inc/texte'); include_spip('inc/filtres'); // Si on est deja connecte et que notre mail a ete valide d'une maniere // ou d'une autre, on entre directement la signature dans la base, sans // envoyer d'email. Sinon email de verification if (isset($GLOBALS['visiteur_session']['statut']) and $GLOBALS['visiteur_session']['session_email'] == $GLOBALS['visiteur_session']['email'] and strlen($GLOBALS['visiteur_session']['email']) or isset($GLOBALS['visiteur_session']['email_confirme']) and $GLOBALS['visiteur_session']['session_email'] == $GLOBALS['visiteur_session']['email_confirme'] and strlen($GLOBALS['visiteur_session']['session_email'])) { // Si on est en ajax on demande a reposter sans ajax, car il faut // recharger toute la page pour afficher la signature refuser_traiter_formulaire_ajax(); $statut = 'publie'; // invalider le cache ! include_spip('inc/invalideur'); suivre_invalideur("id='article/{$id_article}'"); // message de reussite return _T('petitions:form_pet_signature_validee'); } // // Cas normal : envoi d'une demande de confirmation // $row = sql_fetsel('titre,lang', 'spip_articles', "id_article=" . intval($id_article)); $lang = lang_select($row['lang']); $titre = textebrut(typo($row['titre'])); if ($lang) { lang_select(); } if (!strlen($statut)) { $statut = signature_test_pass(); } if ($lang != $GLOBALS['meta']['langue_site']) { $url_page = parametre_url($url_page, "lang", $lang, '&'); } $url_page = parametre_url($url_page, 'var_confirm', $statut, '&') . "#sp{$id_article}"; $r = _T('petitions:form_pet_mail_confirmation', array('titre' => $titre, 'nom_email' => $nom, 'nom_site' => $site, 'url_site' => $url, 'url' => $url_page, 'message' => $msg)); $titre = _T('petitions:form_pet_confirmation') . " " . $titre; $envoyer_mail = charger_fonction('envoyer_mail', 'inc'); if ($envoyer_mail($mail, $titre, $r)) { return _T('petitions:form_pet_envoi_mail_confirmation', array('email' => $mail)); } return false; # erreur d'envoi de l'email }
function formulaires_forum_traiter_dist() { // le formulaire forum n'est jamais traite en ajax car il s'acheve par une redirection vers // la bonne page qui doit etre reaffichee dans son ensemble refuser_traiter_formulaire_ajax(); $forum_insert = charger_fonction('forum_insert', 'inc'); list($redirect,$id_forum) = $forum_insert(); return array('redirect'=>$redirect,'id_forum'=>$id_forum); }
/** * Traitement du formulaire d'édition d'une date * * @param string $objet * Type d'objet * @param int $id_objet * Identifiant de l'objet * @param string $retour * URL de redirection après le traitement * @param array|string $options * Options. * @return Array * Retours des traitements */ function formulaires_dater_traiter_dist($objet, $id_objet, $retour = '', $options = array()) { $res = array('editable' => ' '); if (_request('changer')) { $_id_objet = id_table_objet($objet); $table = table_objet($objet); $trouver_table = charger_fonction('trouver_table', 'base'); $desc = $trouver_table($table); if (!$desc) { return array('message_erreur' => _L('erreur')); } #impossible en principe $champ_date = $desc['date'] ? $desc['date'] : 'date'; $set = array(); $charger = charger_fonction("charger", "formulaires/dater/"); $v = $charger($objet, $id_objet, $retour, $options); if ($v['_editer_date']) { if (!($d = dater_recuperer_date_saisie(_request('date_jour')))) { $d = array(date('Y'), date('m'), date('d')); } if (!($h = dater_recuperer_heure_saisie(_request('date_heure')))) { $h = array(0, 0); } $set[$champ_date] = sql_format_date($d[0], $d[1], $d[2], $h[0], $h[1]); } if (isset($desc['field']['date_redac']) and $v['_editer_date_anterieure']) { if (!_request('date_redac_jour') or _request('sans_redac')) { $set['date_redac'] = sql_format_date(0, 0, 0, 0, 0, 0); } else { if (!($d = dater_recuperer_date_saisie(_request('date_redac_jour'), "date_redac"))) { $d = array(date('Y'), date('m'), date('d')); } if (!($h = dater_recuperer_heure_saisie(_request('date_redac_heure')))) { $h = array(0, 0); } $set['date_redac'] = sql_format_date($d[0], $d[1], $d[2], $h[0], $h[1]); } } if (count($set)) { $publie_avant = objet_test_si_publie($objet, $id_objet); include_spip('action/editer_objet'); objet_modifier($objet, $id_objet, $set); $publie_apres = objet_test_si_publie($objet, $id_objet); if ($publie_avant !== $publie_apres) { // on refuse ajax pour forcer le rechargement de la page ici // on refera traiter une 2eme fois, mais c'est sans consequence refuser_traiter_formulaire_ajax(); } } } if ($retour) { $res['redirect'] = $retour; } set_request('date_jour'); set_request('date_redac_jour'); set_request('date_heure'); set_request('date_redac_heure'); return $res; }
function signature_a_confirmer($id_article, $url_page, $nom, $mail, $site, $url, $msg, $lang, &$statut) { // Si on est deja connecte et que notre mail a ete valide d'une maniere // ou d'une autre, on entre directement la signature dans la base, sans // envoyer d'email. Sinon email de verification if ( // Cas 1: on est loge et on signe avec son vrai email ( isset($GLOBALS['visiteur_session']['statut']) AND $GLOBALS['visiteur_session']['session_email'] == $GLOBALS['visiteur_session']['email'] AND strlen($GLOBALS['visiteur_session']['email']) ) // Cas 2: on a deja signe une petition, et on conserve le meme email OR ( isset($GLOBALS['visiteur_session']['email_confirme']) AND $GLOBALS['visiteur_session']['session_email'] == $GLOBALS['visiteur_session']['email_confirme'] AND strlen($GLOBALS['visiteur_session']['session_email']) ) ) { // Si on est en ajax on demande a reposter sans ajax, car il faut // recharger toute la page pour afficher la signature refuser_traiter_formulaire_ajax(); $statut = 'publie'; // invalider le cache ! include_spip('inc/invalideur'); suivre_invalideur("id='varia/pet$id_article'"); // message de reussite : en ajax, preciser qu'il faut recharger la page // pour voir le resultat return _T('form_pet_signature_validee'); } // // Cas normal : envoi d'une demande de confirmation // list($titre, $url_page) = signature_langue($id_article, $url_page); if (!strlen($statut)) $statut = signature_test_pass(); list($sujet, $corps) = signature_demande_confirmation($id_article, $url_page, $nom, $site, $url, $msg, $titre, $statut); $envoyer_mail = charger_fonction('envoyer_mail','inc'); if ($envoyer_mail($mail, $sujet, $corps)) return _T('form_pet_envoi_mail_confirmation',array('email'=>$mail)); return false; # erreur d'envoi de l'email }
/** * Traitement du formulaire de gestion des plugins * * Si une liste d'action est validée, on redirige de formulaire sur * l'action 'actionner' qui les traitera une par une. * * @uses svp_actionner_traiter_actions_demandees() * * @param string $voir * Statut des plugins que l'on souhaite voir : actif, inactif, tous * @param string $verrouille * Types de plugins que l'on souhaite voir : * - 'non' : les plugins utilisateurs * - 'oui' : les plugins verrouillés (plugins-dist) * - 'tous' : les deux ! * @param string|int $id_paquet * Identifiant du paquet dont on veut obtenir une description complète * lors de l'affichage du formulaire * @param string $redirect * URL de redirection après les traitements * @return array * Retours du traitement **/ function formulaires_admin_plugin_traiter_dist($voir = 'actif', $verrouille = 'non', $id_paquet = '', $redirect = '') { $retour = array(); if (_request('valider_actions')) { refuser_traiter_formulaire_ajax(); // Ajout de la liste des actions à l'actionneur // c'est lui qui va effectuer rellement les actions // lors de l'appel de action/actionner $actions = unserialize(_request('_todo')); include_spip('inc/svp_actionner'); svp_actionner_traiter_actions_demandees($actions, $retour, $redirect); } $retour['editable'] = true; return $retour; }
/** * Modification du mot de passe d'un auteur. * Utilise le cookie d'oubli fourni en url ou l'argument du formulaire pour identifier l'auteur * * @param int $id_auteur */ function formulaires_mot_de_passe_traiter_dist($id_auteur = null, $jeton = null) { $res = array('message_ok' => ''); refuser_traiter_formulaire_ajax(); // puisqu'on va loger l'auteur a la volee (c'est bonus) // compatibilite anciens appels du formulaire if (is_null($jeton)) { $jeton = _request('p'); } $row = retrouve_auteur($id_auteur, $jeton); if ($row && ($id_auteur = $row['id_auteur']) && ($oubli = _request('oubli'))) { include_spip('action/editer_auteur'); include_spip('action/inscrire_auteur'); if ($err = auteur_modifier($id_auteur, array('pass' => $oubli))) { $res = array('message_erreur' => $err); } else { auteur_effacer_jeton($id_auteur); $login = $row['login']; $res['message_ok'] = "<b>" . _T('pass_nouveau_enregistre') . "</b>" . "<br />" . _T('pass_rappel_login', array('login' => $login)); include_spip('inc/auth'); $row = sql_fetsel("*", "spip_auteurs", "id_auteur=" . intval($id_auteur)); auth_loger($row); } } return $res; }
/** * Traitement de l'upload d'un logo * * Il est affecte au site si la balise n'est pas dans une boucle, * sinon a l'objet concerne par la boucle ou indiquee par les parametres d'appel * * @param integer $id_auteur Identifiant de l'auteur * @param string $retour Url de redirection apres traitement * @param Array $options Tableau d'option (exemple : image_reduire => 50) * @return Array */ function formulaires_editer_avatar_traiter_dist($id_auteur, $retour = '', $options = array()) { if (!_request('supprimer_logo_on')) { refuser_traiter_formulaire_ajax(); } $traiter = charger_fonction("traiter", "formulaires/editer_logo"); $res = $traiter("auteur", $id_auteur, $retour, $options); return $res; }