MyBB.support, le portail francophone de MyBB

Version complète : Envoyer un MP via un script PHP
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Voila, pour des raisons personnelles, je me vois dans l'obligation de dev' un module externe a MyBB qui dans certains cas, envoye un message (MP) à certains joueurs ...

La doc. etant assez complexe pour aller chippoter avec les datahandler, je me suis inspiré d'un plug déjà existant pour creer ma fonction (de test jusqu'ici, je vous l'accorde, je ne verifie rien !, je veux juste pour le moment que ca marche)

Voici jusqu'ici ce que j'ai concocté :
Code PHP :
<?php
define
('IN_MYBB'1);
require_once 
'../global.php';

pm_send(1);

function 
pm_send($user
{
    global 
$mybb;
    
    
//bot user admin id !
    
$id_bot 3639;
    
    
$pm_subject 'Message a soumettre';
    
$pm_message 'Titre dudit message';
    
    
// PM
    
require_once "../inc/datahandlers/pm.php";
    
$pmhandler = new PMDataHandler();
    
$pmhandler->admin_override true;

    
$pm = array(
        
"subject" => $pm_subject,
        
"message" => $pm_message,
        
"icon" => "-1",
        
"toid" => $user,
        
"fromid" => $id_bot,
        
"do" => '',
        
"pmid" => ''
    
);
    
$pm['options'] = array(
        
"signature" => "0",
        
"disablesmilies" => "0",
        
"savecopy" => "0",
        
"readreceipt" => "0"
    
);

    
$pmhandler->set_data($pm);
            
    if(!
$pmhandler->validate_pm())
    {
        
// There some problem sending the PM
        
echo 'bug';
    }
    else
    {
        
$pminfo $pmhandler->insert_pm();
        echo 
'envoye';
    }
}
?>

La page .php se trouve dans un dossier contenu dans le dossier général de MyBB. Lorsque que j'éxecute cette page sur mon navigateur, elle me retourne 'envoye' or lorsque je verifie les MP de mon compte (user['uid'] = 1), je n'ai rien reçu ...

Quelqu'un a une petite idée pour moi ? Wink

Bonne soirée.
La valeur de la variable serait plutot "to" et non pas "toid" ici :
"to" => $user,
En faisant la-dite, manipulation, le script ne renvoye plus 'envoye' mais 'bug' ... donc que le mp serait invalide ... :/
J'ai fait un script similaire et il fonctionne bien avec la variable "to".

Dans la routine les seules autres differences sont que j'assigne 0 pour "icon", que ma variable "to" est un array() et le contenu de mes options est :
Code PHP :
$pm['options'] = array(
        
"signature" => "0",
        
"disablesmilies" => "0",
        
"savecopy" => "0",
        
"readreceipt" => "0"
    
); 
jusque la je vous suis, par contre, la variable to est enft la valeur de la clé uid de l'array user de base si je ne me trompe, quelque chose comme : "$user['uid']

C'est ca que vous entendez par 'un array()' ? parce que sinon ca veut dire que j'ai rien compris au fonctionnement des datahandler ... je pensais que le to devait définir le uid du receveur ... donc un int ... peut-importe comment il arrive (via un array ou directement en int) ...
Un array() en PHP est assigné comme suit:
Code PHP :
$user 'Malak';
$destinataire = array();
$destinataire[] = $user

Ou encore :
Code PHP :
$user 'Malak';
$destinataire = array($user); 

Dans ton code :
Code PHP :
$user 'Malak';
    
$pm = array(
        
"subject" => $pm_subject,
        
"message" => $pm_message,
        
"icon" => 0,
        
"to" => array($user),
        
"fromid" => intval($id_bot),
        
"do" => '',
        
"pmid" => ''
    
); 

P.S. Ici le "to" représente les "username".
Autant pour moi, je viens d'approfondir le fichier datahandler/pm.php et effectivement, vous aviez raison :

1. "to"=>array('receiver1','receiver2','...'),
2. "fromid"=>intval($userid),

Tout ceci étant bien défini dans la verification du pm (fonctions verify_recipient() et verify_sender())

Merci beaucoup d'avoir pris le temps de me repondre Wink
Je passe en résolu Wink
 Utilitaire de traduction fourni par Regentronique