Пример #1
0
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;
}
Пример #2
0
/**
 * 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;
}
Пример #3
0
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);
}