If you want to (automatically) send a PM to a user, you can use the Class vB_Datamanager_PM.
This class makes sure that all values are correct, handles quota for the recipients, notification eMails, etc.
Example
PHP Code:
// create the DM to do error checking and insert the new PM
$pmdm =& datamanager_init('PM', $vbulletin, ERRTYPE_ARRAY);
$pmdm->set('fromuserid', 1234);
$pmdm->set('fromusername', 'Welcome-Bot');
$pmdm->set('title', 'Welcom to our Forums');
$pmdm->set('message', "Hello\nI am a Bot and would like to give you a warm welcome :)");
$pmdm->set_recipients('newuser', $botpermissions);
$pmdm->set('dateline', TIMENOW);
If anything goes wrong you can check for errors using
PHP Code:
$pmdm->errors
This is an erray containing the errors.
If everything is OK
PHP Code:
$pmdm->save();
This will send a PM to user newuser telling him
Quote:
Hello.
I am a Bot and would like to give you a warm welcome
The message will appear to be coming from User Welcom-Bot (Userid 1234).
$botpermissions must be the permissions for the sending user, but can just be empty.
If you want to send PMs no matter if the PM box of the recipient is full or not:
PHP Code:
$botpermissions['adminpermissions'] = 2;
If you want, you can set other options as well ($pmdm->set_info(...)):
forward = 1/0 if this is a forwarded PM, Default=0
savecopy = 1/0 to keep a copy if the PM in outbox, Default=0
receipt = 1/0 to request a read-receipt, Default=0
parentpmid = ID of the PM you are responding to (if applicable)
Furthermore you can specify ($pmdm->set(...)):
iconid = ID of the message icon the PM should carry, Default=0
showsignature = 0/1 Whether the signature should be shown or not, Default=0
showsmilie = 0/1 Wheter smilies should be parsed or not, Default=1
For multiple receipients just use user1;user2;useer3.
This How-To is (C) 2005 by KirbyDE and you are not allowed to redistribute it in any way without my explicit consent.
least urs might be working..mine keeps sending multiple PM's to the same person. argh
If its doubling up the name like that without the semicolon it shouldnt be sending multiple pms? try doing the same thing I did (put the pmdm->errors into the implode and then echo that variable and see what the exact error is thats being stored ?
$pmdm->overridequota = true; works fine for me. Although I think it needs to be right after you initialize the class like this:
$pmdm =& datamanager_init('PM', $vbulletin, ERRTYPE_ARRAY);
$pmdm->overridequota = true;
You might also need to set $botpermissions in set recipients like this:
$pmdm->set_recipients($recipient, $botpermissions);
Well.. I have stored the userid into another custom table..and it is not the userid that is currently accessing the page. I didn't store the username..
If there is no way to send to the userid using the functions then I guess I can always just store the username also... Good point.
Well.. I have stored the userid into another custom table..and it is not the userid that is currently accessing the page. I didn't store the username..
If there is no way to send to the userid using the functions then I guess I can always just store the username also... Good point.
You could always just do a query to get the name. There is likely a better solution that is beyond me though...