コード例 #1
0
ファイル: instituer_forum.php プロジェクト: rhertzog/lcs
function instituer_un_forum($statut,$row){

	$id_forum = $row['id_forum'];
	$old = $row['statut'];
 // rien a faire si pas de changement de statut
 	if ($old==$statut)
		return;

	// changer le statut de toute l'arborescence dependant de ce message
	$id_messages = array($id_forum);
	while ($id_messages) {
		sql_updateq("spip_forum", array("statut" => $statut), sql_in("id_forum", $id_messages) ." AND statut = '$old'");

		$id_messages = array_map('reset',sql_allfetsel("id_forum", "spip_forum", sql_in("id_parent", $id_messages)));
	}

	// Notifier de la publication du message, s'il etait 'prop'
	if ($old=='prop' AND $statut=='publie') {
		if ($notifications = charger_fonction('notifications', 'inc')) {
			$notifications('forumvalide', $id_forum);
		}
	}

	// mettre a jour la date du thread
	// si publie, ou que tout le thread est prive,
	// mettre la date du thread a 'maintenant' (date de publi du message)
	// sinon prendre la date_heure du dernier message public
	// c'est imparfait dans le cas ou les crayons ont ete utilises pour modifier ce message entre temps
	// car la date_thread aurait cette derniere date alors que pas le message
	// mais c'est au mieux de ce que l'on peut faire quand on depublie un SPAM ou supprime un message
	if ($statut=='publie' OR $old=='publie') {
		if ($statut=='publie'
			OR !($date_thread = sql_getfetsel("date_heure", "spip_forum", "statut='publie' AND id_thread=".$row['id_thread'], "", "date_heure DESC","0,1"))){
			$date_thread = date('Y-m-d H:i:s');
		}
		sql_updateq("spip_forum", array("date_thread" => $date_thread), "id_thread=".$row['id_thread']);
	}

	// invalider les pages comportant ce forum
	include_spip('inc/invalideur');
	include_spip('inc/forum');
	$index_forum = calcul_index_forum($row['id_article'], $row['id_breve'], $row['id_rubrique'], $row['id_syndic']);
	suivre_invalideur("id='id_forum/$index_forum'");

	// Reindexation du thread (par exemple)
	pipeline('post_edition',
		array(
			'args' => array(
				'table' => 'spip_forum',
				'id_objet' => $id_forum,
				'action' => 'instituer',
			),
			'data' => null
		)
	);
}
コード例 #2
0
ファイル: modifier.php プロジェクト: rhertzog/lcs
function revision_forum($id_forum, $c=false) {

	$t = sql_fetsel("*", "spip_forum", "id_forum=".sql_quote($id_forum));
	if (!$t) {
		spip_log("erreur forum $id_forum inexistant");
		return;
	}

	// Calculer l'invalideur des caches lies a ce forum
	if ($t['statut'] == 'publie') {
		include_spip('inc/invalideur');
		$invalideur = "id='id_forum/"
			. calcul_index_forum(
				$t['id_article'],
				$t['id_breve'],
				$t['id_rubrique'],
				$t['id_syndic']
			)
			. "'";
	} else
		$invalideur = '';

	// Supprimer 'http://' tout seul
	if (isset($c['url_site'])) {
		include_spip('inc/filtres');
		$c['url_site'] = vider_url($c['url_site'], false);
	}

	$r = modifier_contenu('forum', $id_forum,
		array(
			'nonvide' => array('titre' => _T('info_sans_titre')),
			'invalideur' => $invalideur
		),
		$c);

	$id_thread = $t["id_thread"];
	$cles = array();
	foreach (array('id_article', 'id_rubrique', 'id_syndic', 'id_breve')
		 as $k) {
		if (isset($c[$k])) $cles[$k] = $c[$k];
	}

	// Modification des id_article etc
	// (non autorise en standard mais utile pour des crayons)
	// on deplace tout le thread {sauf les originaux}.
	if ($cles) {
		sql_updateq("spip_forum", $cles, "id_thread=$id_thread AND statut!='original'");
		// on n'affecte pas $r, car un deplacement ne change pas l'auteur
	}

	// s'il y a vraiment eu une modif, on
	// enregistre le nouveau date_thread,
	// si le message est bien publie ou si c'est un thread non public
	if ($r AND
		($t['statut'] == 'publie' OR !sql_countsel("spip_forum", "statut='publie' AND id_thread=".intval($id_thread)))) {
		// on ne stocke ni le numero IP courant ni le nouvel id_auteur
		// dans le message modifie (trop penible a l'usage) ; mais du
		// coup attention a la responsabilite editoriale
		/*
		sql_updateq('spip_forum', array('ip'=>($GLOBALS['ip']), 'id_auteur'=>($GLOBALS['visiteur_session']['id_auteur'])),"id_forum=".sql_quote($id_forum));
		*/

		// & meme ca ca pourrait etre optionnel
		sql_updateq("spip_forum", array("date_thread" => date('Y-m-d H:i:s')), "id_thread=".intval($id_thread));
	}
}