示例#1
0
文件: forum.php 项目: rhertzog/lcs
function enregistre_et_modifie_forum($id_forum, $c=false) {
	if ($err = conserver_original($id_forum)) {
		spip_log("erreur de sauvegarde de l'original, $err");
		return;
	}

	include_spip('inc/modifier');
	return revision_forum($id_forum, $c);
}
function forum_insert_base($c, $id_forum, $objet, $id_objet, $statut, $ajouter_mot = false)
{
    if (!in_array($statut, array('privrac', 'privadm'))) {
        // si le statut est vide, c'est qu'on ne veut pas de ce presume spam !
        if (!$statut or !$objet or !$id_objet) {
            $args = func_get_args();
            spip_log("Erreur sur forum_insert_base " . var_export($args, 1), 'forum.' . _LOG_ERREUR);
            return false;
        }
    }
    // Entrer le message dans la base
    $id_reponse = sql_insertq('spip_forum', array('date_heure' => date('Y-m-d H:i:s'), 'ip' => $GLOBALS['ip'], 'id_auteur' => $GLOBALS['visiteur_session']['id_auteur']));
    if ($id_reponse) {
        if ($id_forum > 0) {
            $id_thread = sql_getfetsel("id_thread", "spip_forum", "id_forum =" . intval($id_forum));
        } else {
            $id_thread = $id_reponse;
        }
        # id_thread oblige INSERT puis UPDATE.
        // Entrer les cles
        sql_updateq('spip_forum', array('id_parent' => $id_forum, 'objet' => $objet, 'id_objet' => $id_objet, 'id_thread' => $id_thread, 'statut' => $statut), "id_forum=" . intval($id_reponse));
        // Entrer les mots-cles associes
        if ($ajouter_mot) {
            mots_du_forum($ajouter_mot, $id_reponse);
        }
        //
        // Entree du contenu et invalidation des caches
        //
        include_spip('action/editer_forum');
        revision_forum($id_reponse, $c);
        // Ajouter un document
        if (isset($_FILES['ajouter_document']) and $_FILES['ajouter_document']['tmp_name']) {
            $files[] = array('tmp_name' => $_FILES['ajouter_document']['tmp_name'], 'name' => $_FILES['ajouter_document']['name']);
            $ajouter_documents = charger_fonction('ajouter_documents', 'action');
            $ajouter_documents('new', $files, 'forum', $id_reponse, 'document');
            // supprimer le temporaire et ses meta donnees
            spip_unlink($_FILES['ajouter_document']['tmp_name']);
            spip_unlink(preg_replace(',\\.bin$,', '.txt', $_FILES['ajouter_document']['tmp_name']));
        }
        // Notification
        $quoi = strncmp($statut, 'priv', 4) == 0 ? 'forumprive' : 'forumposte';
        if ($notifications = charger_fonction('notifications', 'inc')) {
            $notifications($quoi, $id_reponse);
        }
    }
    return $id_reponse;
}
示例#3
0
function forum_insert_base($c, $id_forum, $id_article, $id_breve, $id_syndic, $id_rubrique, $statut, $retour)
{
	$afficher_texte = (_request('afficher_texte') <> 'non');
	$ajouter_mot = _request('ajouter_mot');

	// si le statut est vide, c'est qu'on ne veut pas de ce presume spam !
	if (!$statut)
		return false;

	//  Si forum avec previsu sans bon hash de securite, echec silencieux
	if ($afficher_texte AND forum_insert_noprevisu()) {
		return false;
	}
	if (array_reduce($_POST, 'reduce_strlen', (20 * 1024)) < 0) {
		ask_php_auth(_T('forum_message_trop_long'),
			_T('forum_cliquer_retour',
				array('retour_forum' => $retour)));
	}
	// Entrer le message dans la base
	$id_message = sql_insertq('spip_forum', array(
		'date_heure'=> date('Y-m-d H:i:s'),
		'ip' => $GLOBALS['ip'],
		'id_auteur' => $GLOBALS['visiteur_session']['id_auteur']
	));

	if ($id_forum>0) {
		$id_thread = sql_getfetsel("id_thread", "spip_forum", "id_forum = $id_forum");
	}
	else
		$id_thread = $id_message; # id_thread oblige INSERT puis UPDATE.

	// id_rubrique est parfois passee pour les articles, on n'en veut pas
	if ($id_rubrique > 0 AND ($id_article OR $id_breve OR $id_syndic))
		$id_rubrique = 0;

	// Entrer les cles de jointures et assimilees
	sql_updateq('spip_forum', array('id_parent' => $id_forum, 'id_rubrique' => $id_rubrique, 'id_article' => $id_article, 'id_breve' => $id_breve, 'id_syndic' => $id_syndic, 'id_thread' => $id_thread, 'statut' => $statut), "id_forum = $id_message");

	// Entrer les mots-cles associes
	if ($ajouter_mot) mots_du_forum($ajouter_mot, $id_message);

	//
	// Entree du contenu et invalidation des caches
	//
	include_spip('inc/modifier');
	revision_forum($id_message, $c);

	// Ajouter un document
	if (isset($_FILES['ajouter_document'])
	AND $_FILES['ajouter_document']['tmp_name']) {
		$ajouter_documents = charger_fonction('ajouter_documents', 'inc');
		$ajouter_documents(
			$_FILES['ajouter_document']['tmp_name'],
			$_FILES['ajouter_document']['name'], 'forum', $id_message,
			'document', 0, $documents_actifs);
		// supprimer le temporaire et ses meta donnees
		spip_unlink($_FILES['ajouter_document']['tmp_name']);
		spip_unlink(preg_replace(',\.bin$,',
			'.txt', $_FILES['ajouter_document']['tmp_name']));
	}

	// Notification
	if ($notifications = charger_fonction('notifications', 'inc'))
		$notifications('forumposte', $id_message);

	return $id_message;
}