Archives FluxBB.fr

Les archives de FluxBB.fr

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

#501 06-01-2011 19:11:54

Zajon
Membre

Re : Another Private Messaging System 1.2.1

? PLEASE

Hors ligne

#502 06-01-2011 19:20:13

Guims
Membre

Re : Another Private Messaging System 1.2.1

Salut,tu as bien envoyer les fichiers voulus sur ton ftp mais comme dit fanf73, tu dois suivre les indications dans le fichier " lisezmoi.txt " wink

Dernière modification par Guims (06-01-2011 19:20:33)

Hors ligne

#503 06-01-2011 20:55:38

Zajon
Membre

Re : Another Private Messaging System 1.2.1

J'abandonne

Toujours des erreur

Hors ligne

#504 06-01-2011 20:58:55

fanf73
Wik-wiki

Re : Another Private Messaging System 1.2.1

Est-ce que le fichier install_mod.php est bien dans le même dossier que viewforum.php, viewtopic.php, delete.php, ... ?


Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.

Hors ligne

#505 06-01-2011 21:35:21

Zajon
Membre

Re : Another Private Messaging System 1.2.1

Non Pourquoi, on ma dit de mettre tous a la racine

Hors ligne

#506 06-01-2011 21:37:13

fanf73
Wik-wiki

Re : Another Private Messaging System 1.2.1

A la racine de TON FORUM, pas de ton site wink. Vu que tu es sous FluxBB 1.4.2, merci d'utiliser l'autre version de la mod, où tu as déjà posté : http://fluxbb.fr/forums/viewtopic.php?pid=96286#p96286


Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.

Hors ligne

#507 20-03-2011 09:42:24

Nero
Membre

Re : Another Private Messaging System 1.2.1

Bonjour tout le monde moi aussi j'ai quelque problème d'installation !! Je suis en version 1.2.23 de fluxxbb !! smile Mais depuis que j'ai essayer d'installer Another Private Messaging System 1.2.1, je ne peux plus accédez a mon forum et cela me marque :

Parse error: syntax error, unexpected $end in /home/a6243412/public_html/Forum/include/functions.php on line 1127

Comment faire pour remédiez a cette erreur ?

Merci Nero

Hors ligne

#508 20-03-2011 10:51:51

fanf73
Wik-wiki

Re : Another Private Messaging System 1.2.1

Bonjour,

Vérifie les modifications que tu as apportées sont correctes, que tu n'as rien oublié ni fait d'erreur smile


Nous ne faisons pas le travail à votre place mais nous prenons le temps de vous montrer le chemin. Merci de lire ce que l'on vous dit et de réfléchir avant de re-demander une explication.

Hors ligne

#509 20-03-2011 12:00:58

Nero
Membre

Re : Another Private Messaging System 1.2.1

Merci, de toute façon je vais passer a la nouvelle version de FluxBB est tout recommencer !! Merci encore Fan !! smile

Hors ligne

#510 20-03-2011 13:07:58

Guims
Membre

Re : Another Private Messaging System 1.2.1

Je l'ai sur mon forum elle fonctionne très bien ...

Hors ligne

#511 20-03-2011 14:02:24

Nero
Membre

Re : Another Private Messaging System 1.2.1

Merci Guims !! Je viens de l'installer c'est nikel !! smile

Hors ligne

#512 20-03-2011 14:07:29

Guims
Membre

Re : Another Private Messaging System 1.2.1

Cool alors, je commençais à trouver cela dommage de passer en 1.4 parce que tu n'arrive pas à installer une mod happy
Perso jsuis fan de la 1.2.*

Hors ligne

#513 20-03-2011 16:50:30

adaur
Membre

Re : Another Private Messaging System 1.2.1

Je tiens à vous signaler que cette mod contient 3/4 failles corrigées dans ma version 1.4.

Perso jsuis fan de la 1.2.*

Une raison à celà? happy


"As code is more often read than written it's really important to write clean code." - Franz
Twitter: @adaurfr
Mon fork de FluxBB: FeatherBB

Hors ligne

#514 21-03-2011 13:08:41

Guims
Membre

Re : Another Private Messaging System 1.2.1

Salut adaur,

La raison c'est que je suis habituer à cette version wink, j'imagine bien qu'en gardant cette version je vais me retrouver avec beaucoup de failles ... Je n'ai pas les connaissances pour reprendre cette Mod (ou même d'autres), sinon je pense que je l'aurait fait happy.

Hors ligne

#515 15-05-2011 12:16:29

MedaKoke460
Membre

Re : Another Private Messaging System 1.2.1

merci

Hors ligne

#516 16-05-2011 21:42:24

jokerz
Membre

Re : Another Private Messaging System 1.2.1

Merci smile
Mais moi quand j'essaye de l'installer, j'obtient tout le temps une erreur sur les fichiers Index et function . Normal ? Non mais comment faire,

Jokerz,

Dernière modification par jokerz (16-05-2011 21:42:44)

Hors ligne

#517 17-05-2011 13:27:33

Guims
Membre

Re : Another Private Messaging System 1.2.1

Bonjour.

Dans chaque Mod, tu as un "readme" ou "lisez-moi", c'est ce petit fichier qui te dit quoi faire comme modification et où, pour que la mod fonctionne...As-tu suivis cela ?

Hors ligne

#518 17-05-2011 17:33:48

jokerz
Membre

Re : Another Private Messaging System 1.2.1

Oui, c'est bon. En fait, je modifiais une mauvaise ligne tongue

Hors ligne

#519 17-05-2011 21:04:33

Guims
Membre

Re : Another Private Messaging System 1.2.1

Dès que tu installe plusieurs Mods sur ton fofo, il faut bien faire attention à ce qu'on modifie, suivre le readme bêtement n'est pas l'idéal mais c'est cool, tu as vite compris smile

Hors ligne

#520 18-08-2011 02:00:42

ziris
Membre

Re : Another Private Messaging System 1.2.1

Bonjour,

Je viens de finir l'installation (enfin depuis 20h00) mais depuis j'ai une erreur embêtante : Si je laisse tel quel les fichiers j'ai un petit losange bleu avec un point d'interrogation à la place des é ê è ou à ! Si je mets mon ancien fichier template/common.php les caractères redeviennent bien mais là j'ai l'option MP dans le profil qui n'apparaît plus du coup ! comment faire ? le bug vient-il du fichier lang ?

ma version 1.2.22
Version mod :  1.2.1  Pour PunBB :  1.2.x


<?php
/***********************************************************************

  Copyright (C) 2002-2005  Rickard Andersson (rickard@punbb.org)

  This file is part of PunBB.

  PunBB is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published
  by the Free Software Foundation; either version 2 of the License,
  or (at your option) any later version.

  PunBB is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  MA  02111-1307  USA

************************************************************************/

// Activez le mode DEBUG en enlevant // du début de la ligne ci-dessous
//define('PUN_DEBUG', 1);

// Ceci permettra d'afficher en bas de page toutes les requêtes exécutées
// N'ACTIVEZ PAS cela sur un environnement de production !
//define('PUN_SHOW_QUERIES', 1);

if (!defined('PUN_ROOT'))
    exit('La constante PUN_ROOT doit être définie est doit pointer le repertoire racine d\'une installation fonctionnelle de FluxBB.');


// Load the functions script
require PUN_ROOT.'include/functions.php';

// Reverse the effect of register_globals
unregister_globals();


@include PUN_ROOT.'config.php';

// If PUN isn't defined, config.php is missing or corrupt
if (!defined('PUN'))
    exit('Le fichier "config.php" n\'existe pas ou est endommagé. Veuillez lancer <a href="install.php">install.php</a> pour installer FluxBB.');


// Record the start time (will be used to calculate the generation time for the page)
list($usec, $sec) = explode(' ', microtime());
$pun_start = ((float)$usec + (float)$sec);

// Make sure PHP reports all errors except E_NOTICE. FluxBB supports E_ALL, but a lot of scripts it may interact with, do not.
error_reporting(E_ALL ^ E_NOTICE);

// Turn off magic_quotes_runtime
if (get_magic_quotes_runtime())
    set_magic_quotes_runtime(0);

// Strip slashes from GET/POST/COOKIE (if magic_quotes_gpc is enabled)
if (get_magic_quotes_gpc())
{
    function stripslashes_array($array)
    {
        return is_array($array) ? array_map('stripslashes_array', $array) : stripslashes($array);
    }

    $_GET = stripslashes_array($_GET);
    $_POST = stripslashes_array($_POST);
    $_COOKIE = stripslashes_array($_COOKIE);
}

// Seed the random number generator (PHP <4.2.0 only)
if (version_compare(PHP_VERSION, '4.2.0', '<'))
    mt_srand((double)microtime()*1000000);

// If a cookie name is not specified in config.php, we use the default (forum_cookie)
if (empty($cookie_name))
    $cookie_name = 'forum_cookie';

// Define a few commonly used constants
define('PUN_UNVERIFIED', 32000);
define('PUN_ADMIN', 1);
define('PUN_MOD', 2);
define('PUN_GUEST', 3);
define('PUN_MEMBER', 4);


// Load DB abstraction layer and connect
require PUN_ROOT.'include/dblayer/common_db.php';

// Start a transaction
$db->start_transaction();

// Load cached config
@include PUN_ROOT.'cache/cache_config.php';
if (!defined('PUN_CONFIG_LOADED'))
{
    require PUN_ROOT.'include/cache.php';
    generate_config_cache();
    require PUN_ROOT.'cache/cache_config.php';
}


// Enable output buffering
if (!defined('PUN_DISABLE_BUFFERING'))
{
    // For some very odd reason, "Norton Internet Security" unsets this
    $_SERVER['HTTP_ACCEPT_ENCODING'] = isset($_SERVER['HTTP_ACCEPT_ENCODING']) ? $_SERVER['HTTP_ACCEPT_ENCODING'] : '';

    // Should we use gzip output compression?
    if ($pun_config['o_gzip'] && extension_loaded('zlib') && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false || strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate') !== false))
        ob_start('ob_gzhandler');
    else
        ob_start();
}


// Check/update/set cookie and fetch user info
$pun_user = array();
check_cookie($pun_user);

// Attempt to load the common language file
@include PUN_ROOT.'lang/'.$pun_user['language'].'/common.php';
if (!isset($lang_common))
    exit('Il n\'y a pas de pack de langue \''.pun_htmlspecialchars($pun_user['language']).'\' d\'installé. Veuillez ré-installer une langue de ce nom.');

/* Start MOD PM */
require PUN_ROOT.'lang/'.$pun_user['language'].'/pms.php';
/* End MOD PM */

// Check if we are to display a maintenance message
if ($pun_config['o_maintenance'] && $pun_user['g_id'] > PUN_ADMIN && !defined('PUN_TURN_OFF_MAINT'))
    maintenance_message();


// Load cached bans
@include PUN_ROOT.'cache/cache_bans.php';
if (!defined('PUN_BANS_LOADED'))
{
    require_once PUN_ROOT.'include/cache.php';
    generate_bans_cache();
    require PUN_ROOT.'cache/cache_bans.php';
}

// Check if current user is banned
check_bans();


// Update online list
update_users_online();

#---------[ 4. OUVRIR ]---------------------------------------------------------
#

include/common.php


#
#---------[ 5. TROUVER ]---------------------------------------------------------
#

// Check if we are to display a maintenance message
if ($pun_config['o_maintenance'] && $pun_user['g_id'] > PUN_ADMIN && !defined('PUN_TURN_OFF_MAINT'))
    maintenance_message();


#
#---------[ 6. REMPLACER PAR ]---------------------------------------------------
#


/* Start MOD PM */
require PUN_ROOT.'lang/'.$pun_user['language'].'/pms.php';
/* End MOD PM */

// Check if we are to display a maintenance message
if ($pun_config['o_maintenance'] && $pun_user['g_id'] > PUN_ADMIN && !defined('PUN_TURN_OFF_MAINT'))
    maintenance_message();

fichier lang.php

<?php

// Language definitions used by the Private Message System-mod
$lang_pms = array(

// Common
'Login required'        =>    'Vous devez vous identifier pour utiliser les messages privés',
'Disabled PM'        =>    'Vous avez désactivé la messagerie privée',
'Private Messages'        =>    'Messages privés',
'PM'        =>    '<acronym title="Messages Privés">MP</acronym>',
'Quick message'        =>    'Envoyer un message privé',
'Write message'        =>    'Nouveau message',
'Inbox'        =>    'Boîte de réception',
'Outbox'        =>    'Messages envoyés',
'Contacts'        =>    'Contacts',
'Delete'        =>    'Supprimer',
'Please confirm'        =>    'Veuillez confirmer',
'New message'        =>    'Vous avez un message privé non lu&#160;!',
'New messages'        =>    'Vous avez %s messages privés non lus&#160;!',
'See new'        =>    'Voir le nouveau message',
'See news'        =>    'Voir les nouveaux messages',
'No new'        =>    'Pas de nouveau message',
'Full boxes'        =>    'Vos boîtes de messages privés sont pleines&#160;!',
'Empty boxes'        =>    'Vos boîtes de messages privés sont vides.',
'Full to'        =>    'Boîtes de messages privés pleines à %s',
'Select'        =>    'Sélection',
'For select'        =>    'Pour la sélection&#160;:',

// List a box
'Date'        =>    'Date',
'Subject'        =>    'Sujet',
'Sender'        =>    'Expéditeur',
'Receiver'        =>    'Destinataire',
'Mark as read select'        =>    'Marquer comme lus',
'Read redirect'        =>    'Les messages ont été marqués comme lus. Redirection...',
'Mark as unread select'        =>    'Marquer comme non lus',
'Unread redirect'        =>    'Les messages ont été marqués comme non lus. Redirection...',
'Mark all'        =>    'Marquer tous les messages comme lus',
'Read all redirect'        =>    'Tous les messages ont été marqués comme lus. Redirection...',
'Must select'        =>    'Vous devez sélectionner des messages',
'No messages'        =>    'Aucun message',

// View a message
'Reply'        =>    'Répondre',
'Quote'        =>    'Citer',
'Deleted User'        =>    'Utilisateur supprimé',

// Send a message
'Send a message'        =>    'Envoyer un message',
'Send to'        =>    'Envoyer à',
'Send multiple'        =>    'Vous pouvez envoyer le message à plusieurs destinataires en les séparant par des virgules.',
'Save message'        =>    'Enregistrer le message dans la boîte "Messages envoyés"',
'Send'        =>    'Envoyer',
'Sent redirect'        =>    'Message envoyé au membre. Redirection...',
'No user'        =>    'Il n\'y a pas de membre avec le nom d\'utilisateur "%s".',
'Dest full'        =>    'La boîte de réception à %s est pleine, vous ne pouvez pas envoyer de message à cet utilisateur.',
'Sender full'        =>    'Impossible d\'enregistrer le message, vos boîtes sont pleines&#160;!',
'Flood'        =>    'Patientez au moins %s secondes entre deux message. Merci d\'essayer à nouveau un peu plus tard.',
'Must receiver'        =>    'Vous devez indiquer au moins un destinataire',
'Too many receiver'        =>    'Vous ne pouvez envoyer un message qu\'à %s destinataires maximum à la fois.',
'User blocked'        =>    '%s refuse les messages privés.',
'User disable PM'        =>    '%s a désactivé les messages privés.',

// Multidelete
'Multidelete'        =>    'Supprimer plusieurs messages',
'Delete messages comply'        =>    'Etes-vous sûr de vouloir supprimer les messages sélectionnés&#160;?',
'Deleted redirect'        =>    'Messages supprimés. Redirection...',

// Delete
'Delete message'        =>    'Supprimer message',
'Delete message comply'        =>    'Etes-vous sûr de vouloir supprimer le message&#160;?',
'Del redirect'        =>    'Message supprimé. Redirection...',

// Contacts
'Contacts list'        =>    'Liste des contacts',
'Rights contact'        =>    'Droits du contact',
'Authorized messages'        =>    'Messages autorisés',
'Authorize'        =>    'Autoriser',
'Authorize from'        =>    'Autoriser %s à vous envoyer des messages privés',
'Refused messages'        =>    'Messages refusés',
'Refuse'        =>    'Refuser',
'Refuse from'        =>    'Refuser les messages privés de %s',
'Refuse user'        =>    'Refuser les messages privés provenants de ce contact',
'Add to contacts'        =>    'Ajouter aux contacts',
'Add contact'        =>    'Ajouter un contact',
'Contact name'        =>    'Nom du contact',
'User already contact'        =>    'Cet utilisateur est déjà dans votre liste de contact',
'User cannot use'        =>    'L\'utilisateur ne peut pas utiliser la messagerie',
'User not exists'        =>    'L\'utilisateur ne semble pas exister.',
'Added contact redirect'        =>    'Contact ajouté. Redirection...',
'Add'        =>    'Ajouter',
'Quick message x'        =>    'Envoyer un message privé à %s',
'Status redirect'        =>    'Statut contact modifié. Redirection...',
'Multiples status redirect'        =>    'Statuts contacts modifiés. Redirection...',
'No contacts'        =>    'Aucun contact',
'Must select contacts'        =>    'Vous devez sélectionner des contacts',

// Multidelete contacts
'Multidelete contacts'        =>    'Supprimer plusieurs contacts',
'Delete contacts comply'        =>    'Etes-vous sûr de vouloir supprimer les contacts sélectionnés&#160;?',
'Deleted contacts redirect'        =>    'Contacts supprimés. Redirection...',

// Delete contact
'Delete x'        =>    'Supprimer contact "%s"',
'Delete contact confirm'        =>    'Etes-vous sûr de vouloir supprimer ce contact&#160;?',
'Deleted contact redirect'        =>    'Contact supprimé. Redirection...',

// profil.php
'use_pm_option'        =>    'Activer la messagerie privée',
'email_option_infos'        =>    'En activant cette option, un courriel sera envoyé pour tout nouveau message privé.',
'email_option'        =>    'Notification des messages privés par courriel',
'popup_option_infos'        =>    'En activant cette option, une fenêtre pop-up s\'ouvrira sur les forums pour tout nouveau message privé.',
'popup_option'        =>    'Notification des messages privés par pop-up',

);

Merci de votre aide, ça fait maintenant 6 heures que je cherche, il est 2 heures du mat et je ne trouve pas !

Dernière modification par ziris (18-08-2011 02:03:41)

Hors ligne

#521 18-08-2011 02:26:06

ziris
Membre

Re : Another Private Messaging System 1.2.1

je ne sais pas comment j'ai fais mais ça marche là donc je ne touche plus à rien !

Hors ligne

#522 18-05-2013 15:24:26

fakrys
Membre

Re : Another Private Messaging System 1.2.1

bonjour,

Ce qui me gène le plus dans les plugins de messages privés quels qu'ils soient:
l'inscription en clair, comme dans tous les forums d'ailleurs qui ont ça, des MP en base de données!

je trouverais normal qu'on les crypte un minimum.
si il y a une zone privées à respecter par toute personne administrant un forum,
c'est bien celle là!

donc ma question, double, avec option:
pourquoi n'est-ce pas en natif, obligatoire?
et comment y remédier le plus facilement possible?
sans alourdir non seulement le code mais aussi les requêtes!

merci par avance.


oui donc il suffit d'une sauvegarde ou d'une importation partielle,
pour se retrouver avec tout le contenu lisible facilement...
sans avoir besoin de chercher en BDD et se ruiner les yeux!
ce qui signifie qu'il faudrait également que ça reste compatible lors d'une conversion!

Dernière modification par fakrys (18-05-2013 15:26:05)


Fab'

Hors ligne

#523 28-10-2013 11:36:02

Atheus
Membre

Re : Another Private Messaging System 1.2.1

J'ai un petit soucis avec cette mod, et ce, malgré des installations différentes et répétées.
Je développe :
Dans Mon profil, la case ACTIVER LA MESSAGERIE PRIVEE reste toujours décochée.
Malgré la mise à jour du profil, elle reste décochée. (pourtant, ca l'active ou la desactive bien).
Quand je clique sur la case, j'ai une petite erreur qui s'affiche d'ailleurs :

"Null" a la valeur Null ou n'est pas un objet. ligne 126 dans profil.php

Quand je vais voir cette ligne sur le fichier, je n'ai rien si ce n'est un appel de header.php

Dernière modification par Atheus (28-10-2013 16:15:01)

Hors ligne

#524 13-01-2014 17:24:10

tribuforex
Membre

Re : Another Private Messaging System 1.2.1

Bonjour à tous,

J'ai la version Private Messaging - v1.1.2 qui fonctionne très bien sur mon forum.

Une seule petite chose manque : le fait de pouvoir lire le message sur lequel on répond... Lorsque l'on est sur pms_send.php
J'aimerai obtenir comme sur post.php: un bloc pour répondre, puis en dessous les précédent messages...
Répondre serait alors beaucoup plus facile!

Voici mon fichier pms_send.php (qui doit êetre l'original) :

<?php
/***********************************************************************

  Copyright (C) 2002, 2003, 2004  Rickard Andersson (rickard@punbb.org)

  This file is part of PunBB.

  PunBB is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published
  by the Free Software Foundation; either version 2 of the License,
  or (at your option) any later version.

  PunBB is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  MA  02111-1307  USA

************************************************************************/

define('PUN_ROOT', './');
require PUN_ROOT.'include/common.php';

// No guest here !
if ($pun_user['is_guest'])
	redirect('login.php', $lang_pms['Login required']);
	
// User enable PM ?
if (!$pun_user['use_pm'] == '1')
	redirect('profile.php?section=privacy&amp;id='.$pun_user['id'], $lang_pms['Disabled PM']);

// Are we allowed to use this ?
if (!$pun_config['o_pms_enabled'] == '1' || $pun_user['g_pm'] == 0)
	message($lang_common['No permission']);

// Load the additionals language files
require PUN_ROOT.'lang/'.$pun_user['language'].'/post.php';

$p_destinataire = '';
$p_contact = '';
$p_subject = '';
$p_message = '';

$smilies = 1;
$save = 1;

$r = (isset($_REQUEST['reply']) ? intval($_REQUEST['reply']) : 0);
$q = (isset($_REQUEST['quote']) ? intval($_REQUEST['quote']) : 0);

$from_profile = isset($_REQUEST['from_profile']) ? intval($_REQUEST['from_profile']) : '';
$tid = isset($_REQUEST['tid']) ? intval($_REQUEST['tid']) : '';

$errors = array();

if (isset($_POST['form_sent']))
{
	// Make sure form_user is correct
	if ($_POST['form_user'] != $pun_user['username'])
		message($lang_common['Bad request']);
			
	// Smileys
	$smilies = isset($_POST['hide_smilies']) ? 0 : 1;
	$save = isset($_POST['savemessage']) ? 1 : 0;

	// Flood protection
	if ($pun_user['g_id'] > PUN_GUEST)
	{
		$result = $db->query('SELECT posted FROM '.$db->prefix.'messages ORDER BY id DESC LIMIT 1') or error('Impossible de trouver la durée de protection contre le flood', __FILE__, __LINE__, $db->error());
		$last = $db->result($result);
		
		if ((time() - $last) < $pun_user['g_post_flood'])
			$errors[] = sprintf($lang_pms['Flood'],$pun_user['g_post_flood']);
	}
		
	// Check users boxes
	if ($pun_user['g_pm_limit'] != 0 && $pun_user['g_id'] > PUN_GUEST && $pun_user['total_pm'] >= $pun_user['g_pm_limit'] && $save)
		$errors[] = $lang_pms['Sender full'];
	
	// Build receivers list
	$p_destinataire = pun_trim($_POST['p_username']);
	$p_contact = isset($_POST['p_contact']) ? pun_trim($_POST['p_contact']) : '';
    $dest_list = explode(',', $p_destinataire);
	
	if ($p_contact != '0')
		$dest_list[] = $p_contact;
	
	$dest_list = array_map('pun_trim', $dest_list);
	$dest_list = array_unique($dest_list);
	
	foreach ($dest_list as $k=>$v)
	{
		if ($v == '') unset($dest_list[$k]);
	}

    if (count($dest_list) < 1)
		$errors[] = $lang_pms['Must receiver'];
    elseif (count($dest_list) > $pun_config['o_pms_max_receiver'])
		$errors[] = sprintf($lang_pms['Too many receiver'], $pun_config['o_pms_max_receiver']);

	$destinataires = array(); $i = 0;
	foreach ($dest_list as $destinataire)
	{
		// Get receiver infos
		$result = $db->query('SELECT u.id, u.username, u.email, u.notify_mp, u.use_pm, g.g_id, g.g_pm_limit, COUNT(pm.id) AS total_pm, c.allow_msg FROM '.$db->prefix.'users AS u INNER JOIN '.$db->prefix.'groups AS g ON u.group_id=g.g_id LEFT JOIN '.$db->prefix.'messages AS pm ON pm.owner=u.id LEFT JOIN '.$db->prefix.'contacts AS c ON (c.user_id=u.id AND c.contact_id='.$pun_user['id'].') WHERE u.id!=1 AND u.username=\''.$db->escape($destinataire).'\' GROUP BY u.username') or error('Impossible de récupérer l\'identifiant de l\'utilisateur.', __FILE__, __LINE__, $db->error());
		// List users infos
		if ($destinataires[$i] = $db->fetch_assoc($result))
		{
			// Receivers enable PM ?
			if (!$destinataires[$i]['use_pm'] == '1')
				$errors[] = sprintf($lang_pms['User disable PM'], pun_htmlspecialchars($destinataire));			
			// Check receivers boxes
			elseif ($destinataires[$i]['g_id'] > PUN_GUEST && $destinataires[$i]['g_pm_limit'] != 0 && $destinataires[$i]['total_pm'] >= $destinataires[$i]['g_pm_limit'])
				$errors[] = sprintf($lang_pms['Dest full'], pun_htmlspecialchars($destinataire));
			// Are we authorized?
			elseif ($pun_user['g_id'] > PUN_GUEST && $destinataires[$i]['allow_msg'] !== null && $destinataires[$i]['allow_msg'] == 0)
				$errors[] = sprintf($lang_pms['User blocked'], pun_htmlspecialchars($destinataire));				
		}
		else
			$errors[] = sprintf($lang_pms['No user'], pun_htmlspecialchars($destinataire));
			
		$i++;
	}
	
	// Check subject
	$p_subject = pun_trim($_POST['req_subject']);
	
	if ($p_subject == '')
		$errors[] = $lang_post['No subject'];
	elseif (pun_strlen($p_subject) > 70)
		$errors[] = $lang_post['Too long subject'];
	elseif ($pun_config['p_subject_all_caps'] == '0' && strtoupper($p_subject) == $p_subject && $pun_user['g_id'] > PUN_GUEST)
		$p_subject = ucwords(strtolower($p_subject));

	// Clean up message from POST
	$p_message = pun_linebreaks(pun_trim($_POST['req_message']));

	// Check message
	if ($p_message == '')
		$errors[] = $lang_post['No message'];
	else if (strlen($p_message) > 65535)
		$errors[] = $lang_post['Too long message'];
	else if ($pun_config['p_message_all_caps'] == '0' && strtoupper($p_message) == $p_message && $pun_user['g_id'] > PUN_GUEST)
		$p_message = ucwords(strtolower($p_message));

	// Validate BBCode syntax
	if ($pun_config['p_message_bbcode'] == '1' && strpos($p_message, '[') !== false && strpos($p_message, ']') !== false)
	{
		require PUN_ROOT.'include/parser.php';
		$p_message = preparse_bbcode($p_message, $errors);
	}
	
	// Send message(s)	
	if (empty($errors) && !isset($_POST['preview']))
	{
		if ($pun_config['o_pms_notification'] == '1')
		{
			require_once PUN_ROOT.'include/email.php';
			
			// Load the "new_pm" template
			$mail_tpl = trim(file_get_contents(PUN_ROOT.'lang/'.$pun_user['language'].'/mail_templates/new_pm.tpl'));
	
			// The first row contains the subject
			$first_crlf = strpos($mail_tpl, "\n");
			$mail_subject = trim(substr($mail_tpl, 8, $first_crlf-8));
			$mail_message = trim(substr($mail_tpl, $first_crlf));
	
			$mail_subject = str_replace('<board_title>', $pun_config['o_board_title'], $mail_subject);
			$mail_message = str_replace('<sender>', $pun_user['username'], $mail_message);
			$mail_message = str_replace('<board_mailer>', $pun_config['o_board_title'].' '.$lang_common['Mailer'], $mail_message);
		}
		
		foreach ($destinataires as $dest)
		{
			$db->query('INSERT INTO '.$db->prefix.'messages (owner, subject, message, sender, sender_id, sender_ip, smileys, showed, status, posted) VALUES(\''.$dest['id'].'\', \''.$db->escape($p_subject).'\', \''.$db->escape($p_message).'\', \''.$db->escape($pun_user['username']).'\', \''.$pun_user['id'].'\', \''.get_remote_address().'\', \''.$smilies.'\', \'0\', \'0\', \''.time().'\' )') or error('Impossible d\'envoyer le message.', __FILE__, __LINE__, $db->error());
			
			$new_mp = $db->insert_id();
			
			// Save an own copy of the message
			if ($save == 1)
			{
				$db->query('INSERT INTO '.$db->prefix.'messages (owner, subject, message, sender, sender_id, sender_ip, smileys, showed, status, posted) VALUES(\''.$pun_user['id'].'\', \''.$db->escape($p_subject).'\', \''.$db->escape($p_message).'\', \''.$db->escape($dest['username']).'\', \''.$dest['id'].'\', \''.get_remote_address().'\', \''.$smilies.'\', \'1\', \'1\', \''.time().'\' )') or error('Impossible de sauvegarder le message dans le dossier des messages envoyés', __FILE__, __LINE__, $db->error());
			}
			
			// E-mail notification
			if ($pun_config['o_pms_notification'] == '1' && $dest['notify_mp'] == 1)
			{
				$mail_message = str_replace('<pm_url>', $pun_config['o_base_url'].'/pms_list.php?mid='.$new_mp, $mail_message);
				pun_mail($dest['email'], $mail_subject, $mail_message);
			}
		}

		if ($from_profile != '')
			redirect('profile.php?id='.$from_profile, $lang_pms['Sent redirect']);
		elseif ($tid != '')
			redirect('viewtopic.php?id='.$tid, $lang_pms['Sent redirect']);
		else
			redirect('pms_list.php', $lang_pms['Sent redirect']);
	}
}
else {
	// To user(s)
	if (isset($_GET['uid']))
	{
		$users_id = explode('-', $_GET['uid']);
		$users_id = array_map('intval', $users_id);
		foreach ($users_id as $k=>$v)
			if ($v <= 0) unset($users_id[$k]);
		
		$arry_dests = array();
		foreach ($users_id as $user_id)
		{
			$result = $db->query('SELECT username FROM '.$db->prefix.'users WHERE id='.$user_id) or error('Impossible de trouver les informations du message', __FILE__, __LINE__, $db->error());
			
			if (!$db->num_rows($result))
				message($lang_common['Bad request']);
			
			$arry_dests[] = $db->result($result);
		}
			
		$p_destinataire = implode(',', $arry_dests);
	}
	
	// Reply or quote ?
	if ($r != 0 || $q != 0)
	{	
		// Get message info
		$mid = ($r<1 ? $q : $r);
		$result = $db->query('SELECT * FROM '.$db->prefix.'messages WHERE id='.$mid.' AND owner='.$pun_user['id']) or error('Impossible de trouver les informations du message', __FILE__, __LINE__, $db->error());
		
		if (!$db->num_rows($result))
			message($lang_common['Bad request']);
		
		$re_message = $db->fetch_assoc($result);
	
		// Quote the message
		if ($q > 0)
			$p_message = '[quote='.$re_message['sender'].']'.$re_message['message'].'[/quote]';
	
	   // Add subject
		$p_subject = ((strpos($re_message['subject'], 'RE:') !== false) ? $re_message['subject'] : 'RE: '.$re_message['subject']);
	}
}

$page_title = $lang_pms['Send a message'].' / '.$lang_pms['Private Messages'].' / '.pun_htmlspecialchars($pun_config['o_board_title']);

$required_fields = array('req_message' => $lang_common['Message']);
$focus_element = array('post');
$focus_element[] = 'req_message';

if ($r == 0 && $q == 0)
{
	$required_fields['req_subject'] = $lang_common['Subject'];
	$focus_element[] = 'req_subject';
}

require PUN_ROOT.'header666.php';
?>

<div class="block">
	<h2><span><?php echo $lang_pms['Private Messages'] ?></span></h2>
	<div class="box">
		<div class="inbox">
			<ul class="conl">
				<li id="pms_inbox"><a href="pms_list.php?box=0"><?php echo $lang_pms['Inbox']; ?></a></li>
				<li id="pms_sentbox"><a href="pms_list.php?box=1"><?php echo $lang_pms['Outbox']; ?></a></li>
				<li id="pms_contacts"><a href="pms_contacts.php"><?php echo $lang_pms['Contacts']; ?></a></li>
			</ul>
<?php
// Boxes status
if ($pun_user['g_pm_limit'] != 0 && $pun_user['g_id'] > PUN_GUEST)
{	
	if ($mp_boxes_empty)
		echo '<p class="conr">'.$lang_pms['Empty boxes'].'</p>';
	elseif ($mp_boxes_full)
		echo '<p class="conr"><strong>'.$lang_pms['Full boxes'].'</strong></p>';
	else
		echo '<p class="conr">'.sprintf($lang_pms['Full to'],$per_cent_box.'%').'</p>'.
			 '<div id="mp_bar_ext" class="conr"><div id="mp_bar_int" style="width:'.$per_cent_box.'px;"><!-- --></div></div>';
}
?>
			<div class="clearer"></div>
		</div>
	</div>
</div>

<div class="linkst">
	<div class="inbox">
		<ul><li><a href="pms_list.php"><?php echo $lang_pms['Private Messages'] ?></a>&nbsp;</li><li>&raquo;&nbsp;<?php echo $lang_pms['Send a message'] ?></li></ul>
		<div class="clearer"></div>
	</div>
</div>

<?php
// If there are errors, we display them
if (!empty($errors))
{
?>
<div id="posterror" class="block">
	<h2><span><?php echo $lang_post['Post errors'] ?></span></h2>
	<div class="box">
		<div class="inbox">
			<p><?php echo $lang_post['Post errors info'] ?></p>
			<ul>
<?php
	while (list(, $cur_error) = each($errors))
		echo "\t\t\t\t".'<li><strong>'.$cur_error.'</strong></li>'."\n";
?>
			</ul>
		</div>
	</div>
</div>

<?php

}
else if (isset($_POST['preview']))
{
	require_once PUN_ROOT.'include/parser.php';
	$preview_message = parse_message($p_message, !$smilies);

?>
<div id="postpreview" class="blockpost">
	<h2><span><?php echo $lang_post['Post preview'] ?></span></h2>
	<div class="box">
		<div class="inbox">
			<div class="postright">
				<div class="postmsg">
					<?php echo $preview_message."\n" ?>
				</div>
			</div>
		</div>
	</div>
</div>

<?php

}

$cur_index = 1;

?>
<div class="blockform">
	<h2><span><?php echo $lang_pms['Send a message'] ?></span></h2>
	<div class="box">
	<form method="post" id="post" action="pms_send.php" onsubmit="return process_form(this)">
		<div class="inform">
		<fieldset>
			<legend><?php echo $lang_common['Write message legend'] ?></legend>
			<div class="infldset txtarea">
				<input type="hidden" name="form_sent" value="1" />
				<input type="hidden" name="form_user" value="<?php echo pun_htmlspecialchars($pun_user['username']) ?>" />
				<?php echo (($r != 0) ? '<input type="hidden" name="reply" value="1" />' : '') ?>
				<?php echo (($q != 0) ? '<input type="hidden" name="quote" value="1" />' : '') ?>
				<?php echo (($tid != '') ? '<input type="hidden" name="tid" value="'.$tid.'" />' : '') ?>
				<?php echo (($from_profile != '') ? '<input type="hidden" name="from_profile" value="'.$from_profile.'" />' : '') ?>
				<?php if ($r == 0 && $q == 0) : ?>
				<div class="conl">
				<label><strong><?php echo $lang_pms['Send to'] ?></strong><br />
				<input type="text" name="p_username" size="30" value="<?php echo pun_htmlspecialchars($p_destinataire); ?>" tabindex="<?php echo $cur_index++ ?>" /><br /></label>
				</div>
				<div class="conr">
<?php
// Fetch contacts
$result = $db->query('SELECT contact_name FROM '.$db->prefix.'contacts WHERE user_id='.$pun_user['id'].' ORDER BY contact_name ASC') or error('Impossible de trouver la liste des contacts', __FILE__, __LINE__, $db->error());

if ($db->num_rows($result))
{
?>

				<label><?php echo $lang_pms['Contacts'] ?><br />
				<select name="p_contact">
					<option value="0">Autres</option>
<?php
	while ($cur_contact = $db->fetch_assoc($result))
		echo "\t\t\t\t\t".'<option value="'.$cur_contact['contact_name'].'"'.($p_contact == $cur_contact['contact_name'] ? ' selected="selected"' : '').'>'.pun_htmlspecialchars($cur_contact['contact_name']).'</option>'."\n";
?>
				</select>
				<br /></label>
<?php
}
else
	echo '<p>'.$lang_pms['No contacts'].'</p>';
?>
				</div>
				<div class="clearer"></div>
				<p><?php echo $lang_pms['Send multiple'] ?></p>
				<label><strong><?php echo $lang_common['Subject'] ?></strong><br />
				<input class="longinput" type="text" name="req_subject" value="<?php echo ($p_subject != '' ? pun_htmlspecialchars($p_subject) : ''); ?>" size="80" maxlength="255" tabindex="<?php echo $cur_index++ ?>" /><br /></label>
				<?php else : ?>
				<input type="hidden" name="p_username" value="<?php echo pun_htmlspecialchars($p_destinataire) ?>" />
				<input type="hidden" name="req_subject" value="<?php echo $p_subject ?>" />
        		<?php endif; ?>
				<label for="req_message"><strong><?php echo $lang_common['Message'] ?></strong> <a href="#" onclick="window.open('http://www.forex-tribe.com/forum/smilies.php','_blank','toolbar=0, location=1, directories=0, status=0, scrollbars=0, resizable=0, copyhistory=0, menuBar=0, width=484, height=245, left=0, top=0');return(false)" onmouseout="MM_swapImgRestore()"><img title="Smileys" src="http://www.forex-tribe.com/forum/img/puntoolbar/smooth/bt_smilies.png" alt="Smileys" width="16" height="16" border="0" /></a></label>
				<textarea name="req_message" id="req_message" rows="20" cols="95" tabindex="<?php echo $cur_index++ ?>"><?php echo ($p_message != '' ? pun_htmlspecialchars($p_message) : ''); ?></textarea>
				<?php 
				/* Si vous utilisez la PunToolbar, décomentez la ligne suivante : */
				//require PUN_ROOT.'include/puntoolbar.php'; 
				?>
				<ul class="bblinks">
					<li><a href="help.php#bbcode" onclick="window.open(this.href); return false;"><?php echo $lang_common['BBCode'] ?></a>: <?php echo ($pun_config['p_message_bbcode'] == '1') ? $lang_common['on'] : $lang_common['off']; ?></li>
					<li><a href="help.php#img" onclick="window.open(this.href); return false;"><?php echo $lang_common['img tag'] ?></a>: <?php echo ($pun_config['p_message_img_tag'] == '1') ? $lang_common['on'] : $lang_common['off']; ?></li>
					<li><a href="help.php#smilies" onclick="window.open(this.href); return false;"><?php echo $lang_common['Smilies'] ?></a>: <?php echo ($pun_config['o_smilies'] == '1') ? $lang_common['on'] : $lang_common['off']; ?></li>
				</ul>
			</div>
		</fieldset>
<?php
	$checkboxes = array();

	if ($pun_config['o_smilies'] == '1')
		$checkboxes[] = '<label><input type="checkbox" name="hide_smilies" value="1" tabindex="'.$cur_index++.'"'.($smilies == 0 ? ' checked="checked"' : '').' />'.$lang_post['Hide smilies'];

	$checkboxes[] = '<label><input type="checkbox" name="savemessage" value="1" tabindex="'.$cur_index++.'"'.($save == 1 ? ' checked="checked"' : '').' />'.$lang_pms['Save message'];

	if (!empty($checkboxes))
	{
?>
			</div>
			<div class="inform">
				<fieldset>
					<legend><?php echo $lang_common['Options'] ?></legend>
					<div class="infldset">
						<div class="rbox">
							<?php echo implode('<br /></label>'."\n\t\t\t\t", $checkboxes).'<br /></label>'."\n" ?>
						</div>
					</div>
				</fieldset>
<?php
	}
?>
			</div>
			<p><input type="submit" name="submit" value="<?php echo $lang_pms['Send'] ?>" tabindex="<?php echo $cur_index++ ?>" accesskey="s" /><input type="submit" name="preview" value="<?php echo $lang_post['Preview'] ?>" tabindex="<?php echo $cur_index++ ?>" accesskey="p" /><a href="javascript:history.go(-1)"><?php echo $lang_common['Go back'] ?></a></p>
		</form>
        
	</div>
</div>
<?php
	require PUN_ROOT.'footer.php';
?>

Merci d'avance!

NB : j'ai passé plusieurs heures à essayer des choses / à bidouiller... Mon seul résultat à chaque fois a été une erreur MYSQL...

Hors ligne

Pied de page des forums