function balise_FORMULAIRE_CONTACT_dyn($id_machin) { /* c’est ici qu’on met le traitement des données (insertion en base etc). Elle reçoit les valeures retournées par la fonction _stat et doit retourner soit : * un message d’erreur * un tableau représentant un squelette SPIP : 1. le nom du fond (e.g. "formulaires/formulaire_forum") 2. le délais 3. un tableau des paramètres à passer à ce squelette (ensuite accessible par #ENV) On peut acceder ici aux variables postées par le formulaire en utilisation la fonction _request('name'); et faire des traitements en fonction de celles ci pour faire l’insertion en base, envoyer un mail etc... */ global $_FILES, $_HTTP_POST_FILES; // ces variables sont indispensables pour récuperer les documents joints // Récupération de id de la rubrique en cours $rubrique = intval(_request('id_rubrique')); // on recuperer l'id de l'auteur anonymous $connect_id_auteur = intval(_request('id_auteur')); // si il n'est pas dans la base => plugins openpublishing mal installé if (!$connect_id_auteur) { echo "Attention votre URL ne comporte pas d'id_auteur !"; die("Veuillez modifier l'appelle à cette page pour y inclure cet identifiant auteur"); } // récupération des variables du formulaire HTML // données actions $previsualiser = _request('previsualiser'); $valider = _request('valider'); $media = _request('media'); $abandonner = _request('abandonner'); // on quitte et renvoie vers le sommaire if ($abandonner) { $retour = '<div align="center"> <h3>Vous avez abandonné la création d\'un article. <br /> <br /> Aucne information na été enregistrée.</h3> </div>'; $message = '<META HTTP-EQUIV="refresh" content="3; url=spip.php?page=rubrique&id_rubrique=' . $rubrique . '">'; $message = $message . $retour; return $message; } // on recupere l'id article (sinon on créer un nouveau article à chaque prévisualisation ou ajout de document ... $article = intval(stripslashes(_request('article'))); // données pour formulaire document $formulaire_documents = stripslashes(_request('formulaire_documents')); $doc = stripslashes(_request('doc')); $type_doc = stripslashes(_request('type')); // donnée article $surtitre = stripslashes(_request('surtitre')); $titre = stripslashes(_request('titre')); $soustitre = stripslashes(_request('soustitre')); $descriptif = stripslashes(_request('descriptif')); $nom_site = stripslashes(_request('nom_site')); $url_site = stripslashes(_request('url_site')); $chapo = stripslashes(_request('chapo')); $texte = stripslashes(_request('texte')); $ps = stripslashes(_request('ps')); // déclarations de variables supplémentaires (pour la fonction ajout_document) $documents_actifs = array(); // autres variables $lang = _request('var_lang'); $nom = 'changer_lang'; lang_dselect(); $langues = liste_options_langues($nom, $lang); // remise à zero $formulaire_previsu = ''; $bouton = ''; $mess_error = ''; $erreur_document = 0; // filtrage des zones de texte si elles sont emplies if ($titre) { $titre = entites_html($titre); } // on demande un nouvel identifiant if ($previsualiser || $media || $valider) { if (!$article) { $article = op_request_new_id($connect_id_auteur); } } // l'auteur demande la publication de son article if ($valider) { // statut de l'article : proposé $statut = 'prop'; /****** préparation de la mise en base de donnée ********/ // on recupere le secteur et la langue associée $s = spip_query("SELECT id_secteur, lang FROM spip_rubriques WHERE id_rubrique = '{$rubrique}' "); if ($r = spip_fetch_array($s)) { $id_secteur = $r["id_secteur"]; $lang = $r["lang"]; // L'article existe déjà, on fait donc un UPDATE, et non un INSERT $retour = spip_query('UPDATE spip_articles SET titre = ' . spip_abstract_quote($titre) . ', id_rubrique = ' . spip_abstract_quote($rubrique) . ', texte = ' . spip_abstract_quote($texte) . ', statut = ' . spip_abstract_quote($statut) . ', lang = ' . spip_abstract_quote($lang) . ', id_secteur = ' . spip_abstract_quote($id_secteur) . ', ps =' . spip_abstract_quote($ps) . ', nom_site =' . spip_abstract_quote($nom_site) . ', url_site =' . spip_abstract_quote($url_site) . ', surtitre =' . spip_abstract_quote($surtitre) . ', soustitre =' . spip_abstract_quote($soustitre) . ', chapo =' . spip_abstract_quote($chapo) . ', descriptif =' . spip_abstract_quote($descriptif) . ', date = NOW()' . ', date_redac = NOW()' . ', date_modif = NOW()' . ' WHERE id_article = ' . spip_abstract_quote($article)); if ($retour == 1) { // tout c'est bien passé $retour = ''; } else { $retour = "Erreur lors de l'insertion de votre article dans la base de donnée, veuillez contactez les responsables du site"; } } $retour = '<div align="center"> <h3>Votre article a bien été enregistré. <br /> <br /> Il sera publié après validation.</h3> </div>'; $message = '<META HTTP-EQUIV="refresh" content="3; url=spip.php?page=rubrique&id_rubrique=' . $rubrique . '">'; $message = $message . $retour; return $message; } else { // statut de l'article : en préparation $statut = "prepa"; // si l'auteur demande la prévisualisation if ($previsualiser) { // quelques petites vérifications if (strlen($titre) < 3) { $erreur .= _T('forum_attention_trois_caracteres'); } if (!$erreur) { $bouton = _T('Proposer'); } // on rempli le formulaire de prévisualisation $formulaire_previsu = inclure_balise_dynamique(array('formulaires/FORMULAIRE_CONTACT_previsu', 0, array('date_redac' => $date_redac, 'titre' => interdire_scripts(typo($titre)), 'texte' => propre($texte), 'ps' => propre($ps), 'nom_site' => propre($nom_site), 'url_site' => propre($url_site), 'surtitre' => propre($surtitre), 'soustitre' => propre($soustitre), 'chapo' => propre($chapo), 'descriptif' => propre($descriptif), 'erreur' => $erreur)), false); // aucune idée de ce que c'est, mais ça à l'air important $formulaire_previsu = preg_replace("@<(/?)f(orm[>[:space:]])@ism", "<\\1no-f\\2", $formulaire_previsu); } // si l'auteur ajoute un documents if ($media) { // compatibilité php < 4.1 if (!$_FILES) { $_FILES = $GLOBALS['HTTP_POST_FILES']; } // récupération des variables $fichier = $_FILES['doc']['name']; $size = $_FILES['doc']['size']; $tmp = $_FILES['doc']['tmp_name']; $type = $_FILES['doc']['type']; $error = $_FILES['doc']['error']; // vérification si upload OK if (!is_uploaded_file($tmp)) { echo $error; $mess_error = "Erreur d'upload ! le fichier temporaire est introuvable. <br /> Il ce peut que vous tentiez d'uploader un fichier trop volumineux. <br /> La taille maximale autorisée est de 5 Mo"; $erreur_document = 1; } else { inc_ajouter_documents_dist($tmp, $fichier, "article", $article, $type_doc, $id_document, &$documents_actifs); } } // cas d'un nouvel article ou re-affichage du formulaire // Gestion des documents $bouton = "Ajouter un nouveau document"; $formulaire_documents = inclure_balise_dynamique(array('formulaires/formulaire_documents', 0, array('id_article' => $article, 'bouton' => $bouton)), false); // Liste des documents associés à l'article op_liste_vignette($article); // le bouton valider $bouton = _T('Proposer'); // et on remplit le formulaire avec tout ça return array('formulaires/formulaire_contact', 0, array('formulaire_documents' => $formulaire_documents, 'formulaire_previsu' => $formulaire_previsu, 'formulaire_agenda' => $formulaire_agenda, 'bouton' => $bouton, 'article' => $article, 'rubrique' => $rubrique, 'surtitre' => $surtitre, 'soustitre' => $soustitre, 'descriptif' => $descriptif, 'nom_site' => $nom_site, 'url_site' => $url_site, 'chapo' => $chapo, 'ps' => $ps, 'mess_error' => $mess_error, 'url' => $url, 'titre' => interdire_scripts(typo($titre)), 'texte' => $texte)); } }
spip_connect(); ### DBG fich_debug("DBG >> login : $login\n"); // Si l'utilisateur figure deja dans la base, y recuperer les infos $result = spip_query("SELECT * FROM spip_auteurs WHERE login="******" AND source='ldap'"); if (!spip_num_rows($result)) { ### DBG fich_debug("DBG >> Login : $login n'est pas dans la base.\n"); fich_debug("DBG >> statut : ".$GLOBALS['meta']["ldap_statut_import"]."\n"); fich_debug("DBG >> ldap_base : ".$GLOBALS['ldap_base']."\n"); // sinon importer les infos depuis LDAP, // avec le statut par defaut a l'install // Inserer les infos dans la base spip spip_connect_ldap(); auth_ldap_inserer("uid=$login,ou=People,".$GLOBALS['ldap_base'], $GLOBALS['meta']["ldap_statut_import"], $login); $result = spip_query("SELECT * FROM spip_auteurs WHERE login="******" AND source='ldap'"); } $row_auteur = spip_fetch_array($result); ### DBG fich_debug("DBG >> statut :".$row_auteur['statut']."\n"); if ($row_auteur['statut'] == '0minirezo') $cookie_admin = "@".$session_login; $var_f = charger_fonction('session', 'inc'); $cookie_session = $var_f($row_auteur); ### DBG fich_debug("DBG >> $cookie_session\n"); // On poste le cookie de session spip_setcookie('spip_session', $cookie_session); // On loge l'authentification spip_log("login de $login depuis LCS");