MyBB.support, le portail francophone de MyBB
[Réglé] Envoyer un MP via un script PHP - Version imprimable

+- MyBB.support, le portail francophone de MyBB (https://mybb.fr)
+-- Forum : Plug-ins et modules pour MyBB (https://mybb.fr/forum-32.html)
+--- Forum : Support (https://mybb.fr/forum-15.html)
+--- Sujet : [Réglé] Envoyer un MP via un script PHP (/thread-5704.html)



Envoyer un MP via un script PHP - Malak - 16-06-2012

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.


RE: Envoyer un MP via un script PHP - exdiogene - 16-06-2012

La valeur de la variable serait plutot "to" et non pas "toid" ici :
"to" => $user,



RE: Envoyer un MP via un script PHP - Malak - 16-06-2012

En faisant la-dite, manipulation, le script ne renvoye plus 'envoye' mais 'bug' ... donc que le mp serait invalide ... :/


RE: Envoyer un MP via un script PHP - exdiogene - 16-06-2012

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"
    
); 



RE: Envoyer un MP via un script PHP - Malak - 16-06-2012

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) ...


RE: Envoyer un MP via un script PHP - exdiogene - 17-06-2012

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".


RE: Envoyer un MP via un script PHP - Malak - 17-06-2012

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