function formulaires_forum_prive_traiter_dist($objet, $id_objet, $id_forum, $forcer_previsu, $statut, $retour = '') { $forum_insert = charger_fonction('forum_insert', 'inc'); $id_reponse = $forum_insert($objet, $id_objet, $id_forum, $statut); if ($id_reponse) { // En cas de retour sur (par exemple) {#SELF}, on ajoute quand // meme #forum12 a la fin de l'url, sauf si un #ancre est explicite if ($retour) { if (!strpos($retour, '#')) { $retour .= '#forum' . $id_reponse; } } else { // le retour par defaut envoie sur le thread, ce qui permet // de traiter elegamment le cas des forums moderes a priori. // Cela assure aussi qu'on retrouve son message dans le thread // dans le cas des forums moderes a posteriori, ce qui n'est // pas plus mal. if (function_exists('generer_url_forum')) { $retour = generer_url_forum($id_reponse); } else { $thread = sql_fetsel('id_thread', 'spip_forum', 'id_forum=' . $id_reponse); spip_log('id_thread=' . $thread['id_thread'], 'forum'); $retour = generer_url_entite($thread['id_thread'], 'forum'); } } $res = array('redirect' => $retour, 'id_forum' => $id_forum); } else { $res = array('message_erreur' => _T('forum:erreur_enregistrement_message')); } return $res; }
/** * Traiter la saisie de #FORMULAIRE_FORUM * tout est delegue a inc_forum_insert() * * @param string $objet * @param int $id_objet * @param int $id_forum * @param int|array $ajouter_mot * mots ajoutes coches par defaut * @param $ajouter_groupe * groupes ajoutables * @param $afficher_previsu * previsu oui ou non * @param $retour * url de retour * @return array|bool */ function formulaires_forum_traiter_dist($objet, $id_objet, $id_forum, $ajouter_mot, $ajouter_groupe, $afficher_previsu, $retour) { $forum_insert = charger_fonction('forum_insert', 'inc'); // Antispam basique : // si l'input invisible a ete renseigne, ca ne peut etre qu'un bot if (strlen(_request(_request('cle_ajouter_document')))) { tracer_erreur_forum('champ interdit (nobot) rempli'); return array('message_erreur' => _T('forum:erreur_enregistrement_message')); } if (defined('_FORUM_AUTORISER_POST_ID_FORUM') and _FORUM_AUTORISER_POST_ID_FORUM and _request('id_forum')) { $id_forum = _request('id_forum'); } $id_reponse = $forum_insert($objet, $id_objet, $id_forum); if ($id_reponse) { // En cas de retour sur (par exemple) {#SELF}, on ajoute quand // meme #forum12 a la fin de l'url, sauf si un #ancre est explicite if ($retour) { if (!strpos($retour, '#')) { $retour .= '#forum' . $id_reponse; } } else { // le retour par defaut envoie sur le thread, ce qui permet // de traiter elegamment le cas des forums moderes a priori. // Cela assure aussi qu'on retrouve son message dans le thread // dans le cas des forums moderes a posteriori, ce qui n'est // pas plus mal. if (function_exists('generer_url_forum')) { $retour = generer_url_forum($id_reponse); } else { $thread = sql_fetsel('id_thread', 'spip_forum', 'id_forum=' . $id_reponse); spip_log('id_thread=' . $thread['id_thread'], 'forum'); $retour = generer_url_entite($thread['id_thread'], 'forum'); } } $res = array('redirect' => $retour, 'id_forum' => $id_reponse); } else { $res = array('message_erreur' => _T('forum:erreur_enregistrement_message')); } return $res; }
function inc_forum_insert_dist($force_statut = NULL) { $id_article = intval(_request('id_article')); $id_breve = intval(_request('id_breve')); $id_forum = intval(_request('id_forum'))>0?intval(_request('id_forum')):0; $id_rubrique = intval(_request('id_rubrique')); $id_syndic = intval(_request('id_syndic')); $reqret = rawurldecode(_request('retour_forum')); $retour = ($reqret !== '!') ? $reqret : forum_insert_nopost($id_forum, $id_article, $id_breve, $id_syndic, $id_rubrique); $c = array('statut'=>'off'); foreach(array('id_article','id_breve','id_rubrique','id_syndic') as $k) if ($$k) $c[$k] = $$k; foreach (array( 'titre', 'texte', 'nom_site', 'url_site' ) as $champ) $c[$champ] = _request($champ); $c['auteur'] = sinon($GLOBALS['visiteur_session']['nom'], $GLOBALS['visiteur_session']['session_nom']); $c['email_auteur'] = sinon($GLOBALS['visiteur_session']['email'], $GLOBALS['visiteur_session']['session_email']); $c = pipeline('pre_edition',array( 'args'=>array( 'table' => 'spip_forum', 'id_objet' => $id_forum, 'action'=>'instituer' ), 'data'=>forum_insert_statut($c, $retour, $force_statut) )); $id_message = forum_insert_base($c, $id_forum, $id_article, $id_breve, $id_syndic, $id_rubrique, $c['statut'], $retour); if (!$id_message) return array($retour,0); // echec // En cas de retour sur (par exemple) {#SELF}, on ajoute quand // meme #forum12 a la fin de l'url, sauf si un #ancre est explicite if ($reqret !== '!') return array(strpos($retour, '#') ? $retour : $retour.'#forum'.$id_message,$id_message); // le retour par defaut envoie sur le thread, ce qui permet // de traiter elegamment le cas des forums moderes a priori. // Cela assure aussi qu'on retrouve son message dans le thread // dans le cas des forums moderes a posteriori, ce qui n'est // pas plus mal. $url = function_exists('generer_url_forum') ? generer_url_forum($id_message) : generer_url_entite($id_message, 'forum'); return array($url,$id_message); }