FluxBB.fr

Le site des utilisateurs francophones de FluxBB.

Vous n'êtes pas identifié(e).

#1 03-08-2012 00:05:51

Marty
Membre
Inscription : 27-09-2010
Messages : 3

[Résolu] Notification ou PM lors du déplacement d'un sujet

Bonjour, tout d'abord merci à la communauté fr pour le support de fluxbb.

J'aimerai savoir si un mod ou un hack existe permettant l'envoie automatique d'un message privé ou d'une notification à l'auteur du sujet lors du déplacement de son sujet.

Ou si une modif est faisable wink

Hors ligne

#2 03-08-2012 06:00:25

WinuX
Membre
Inscription : 18-07-2010
Messages : 390

Re : [Résolu] Notification ou PM lors du déplacement d'un sujet

Oui c'est faisable.
Tout d'abord il te faut la mod mp installé sur ton forum.
Ensuite le reste se joue au niveau du moderate.php

En théorie il suffit simplement de récupérer l'id et le pseudo de l'auteur du topic en fonction de l'id de celui ci, pis de faire une requête sql permettant "d'envoyer" un mp.

Le tout étant assez complexe, je vais te donner la solution.

Moderate.php chercher :

// Move one or more topics
if (isset($_REQUEST['move_topics']) || isset($_POST['move_topics_to']))
{

Ajouter ensuite :

global $pun_config, $pun_user;

// S'il n'y a qu'un seul topic à déplacer
if(isset($_REQUEST['move_topics'])){
	$tid =  (int) $_REQUEST['move_topics'];
	
	// On récupère les infos de l'auteur
	$sql = $db->query('SELECT p.poster_id, p.poster, t.subject FROM '.$db->prefix.'posts AS p LEFT JOIN '.$db->prefix.'topics AS t ON p.id = t.first_post_id WHERE t.id = '.$tid);
	$data = $db->fetch_assoc($sql);

	// On défini les variables	
	$now = time();
	$dest = array('id' => (int) $data['poster_id'], 'username' => $data['poster']);
	$titre = 'Votre topic '.$data['subject'].' vient d\'être déplacé.'; // Le titre du mp à envoyer
	$message = 'Bonjour,'."\n". // Le message du mp à envoyer
	'Nous vous informons que votre topic [url='.$pun_config['o_base_url'].'/viewtopic.php?id='.$tid.']'.$data['subject'].'[/url] a été déplacé dans un autre forum.'."\n".
	'Merci de votre compréhension, pour plus de détail n\'hésitez pas à contacter un membre du staff.'."\n\n".
	'Cordialement';

	// On récupère le shared_id
	$result_shared = $db->query('SELECT last_shared_id FROM '.$db->prefix.'messages ORDER BY last_shared_id DESC LIMIT 1') or error('Unable to fetch last_shared_id', __FILE__, __LINE__, $db->error());
	if (!$db->num_rows($result_shared))
		$shared_id = '1';
	else{
		$shared_result = $db->result($result_shared);
		$shared_id = $shared_result + '1';
	}

	// On execute les requêtes sql qui permettent d'ajouter le mp en bdd
	$db->query('INSERT INTO '.$db->prefix.'messages (shared_id, last_shared_id, owner, subject, message, sender, receiver, sender_id, receiver_id, sender_ip, hide_smilies, posted, show_message, showed) VALUES(\''.$shared_id.'\', \''.$shared_id.'\', \''.$dest['id'].'\', \''.$db->escape($titre).'\', \''.$db->escape($message).'\', \''.$db->escape($pun_user['username']).'\', \''.$db->escape($dest['username']).'\', \''.$pun_user['id'].'\', \''.$db->escape($dest['id']).'\', \''.get_remote_address().'\', "0",  \''.$now.'\', "1", "0")') or error('Unable to send the message.', __FILE__, __LINE__, $db->error());
	$new_mp = $db->insert_id();
	
	$db->query('UPDATE '.$db->prefix.'messages SET last_post_id='.$new_mp.', last_post='.$now.', last_poster=\''.$db->escape($pun_user['username']).'\' WHERE shared_id='.$shared_id.' AND show_message=1 AND owner='.$dest['id']) or error('Unable to update the message.', __FILE__, __LINE__, $db->error());
	$db->query('UPDATE '.$db->prefix.'users SET num_pms=num_pms+1 WHERE id='.$dest['id']) or error('Unable to update user', __FILE__, __LINE__, $db->error());


// S'il y a plusieurs topics à déplacer
}else{
	$tids = array_map('intval', explode(',', $_POST['move_topics_to']));

	// On parcourt toutes les id une à une
	foreach($tids AS $tid){	
			
		// On récupère les infos de l'auteur
		$sql = $db->query('SELECT p.poster_id, p.poster, t.subject FROM '.$db->prefix.'posts AS p LEFT JOIN '.$db->prefix.'topics AS t ON p.id = t.first_post_id WHERE t.id = '.$tid);
		$data = $db->fetch_assoc($sql);

		// On défini les variables	
		$now = time();
		$dest = array('id' => (int) $data['poster_id'], 'username' => $data['poster']);
		$titre = 'Votre topic '.$data['subject'].' vient d\'être déplacé.'; // Le titre du mp à envoyer
		$message = 'Bonjour,'."\n". // Le message du mp à envoyer
		'Nous vous informons que votre topic [url='.$pun_config['o_base_url'].'/viewtopic.php?id='.$tid.']'.$data['subject'].'[/url] a été déplacé dans un autre forum.'."\n".
		'Merci de votre compréhension, pour plus de détail n\'hésitez pas à contacter un membre du staff.'."\n\n".
		'Cordialement';

		// On récupère le shared_id
		$result_shared = $db->query('SELECT last_shared_id FROM '.$db->prefix.'messages ORDER BY last_shared_id DESC LIMIT 1') or error('Unable to fetch last_shared_id', __FILE__, __LINE__, $db->error());
		if (!$db->num_rows($result_shared))
			$shared_id = '1';
		else{
			$shared_result = $db->result($result_shared);
			$shared_id = $shared_result + '1';
		}

		// On execute les requêtes sql qui permettent d'ajouter le mp en bdd
		$db->query('INSERT INTO '.$db->prefix.'messages (shared_id, last_shared_id, owner, subject, message, sender, receiver, sender_id, receiver_id, sender_ip, hide_smilies, posted, show_message, showed) VALUES(\''.$shared_id.'\', \''.$shared_id.'\', \''.$dest['id'].'\', \''.$db->escape($titre).'\', \''.$db->escape($message).'\', \''.$db->escape($pun_user['username']).'\', \''.$db->escape($dest['username']).'\', \''.$pun_user['id'].'\', \''.$db->escape($dest['id']).'\', \''.get_remote_address().'\', "0",  \''.$now.'\', "1", "0")') or error('Unable to send the message.', __FILE__, __LINE__, $db->error());
		$new_mp = $db->insert_id();
		
		$db->query('UPDATE '.$db->prefix.'messages SET last_post_id='.$new_mp.', last_post='.$now.', last_poster=\''.$db->escape($pun_user['username']).'\' WHERE shared_id='.$shared_id.' AND show_message=1 AND owner='.$dest['id']) or error('Unable to update the message.', __FILE__, __LINE__, $db->error());
		$db->query('UPDATE '.$db->prefix.'users SET num_pms=num_pms+1 WHERE id='.$dest['id']) or error('Unable to update user', __FILE__, __LINE__, $db->error());
	}
}

Testé, installé sur mon propre forum et approuvé smile

Hors ligne

#3 03-08-2012 15:26:15

Marty
Membre
Inscription : 27-09-2010
Messages : 3

Re : [Résolu] Notification ou PM lors du déplacement d'un sujet

Un grand merci WinuX mes modérateurs sont ravis ^^

Hors ligne

Pied de page des forums