vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3 Articles (https://vborg.vbsupport.ru/forumdisplay.php?f=187)
-   -   Send PMs (automatically) (https://vborg.vbsupport.ru/showthread.php?t=82786)

Andreas 06-09-2005 10:00 PM

Send PMs (automatically)
 
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'$vbulletinERRTYPE_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.

Erwin 06-10-2005 04:37 AM

This is a FANTASTIC tutorial - people can make up a zillion hacks based on this How-To. :)

Logikos 06-10-2005 05:56 AM

KirbyDE, That is great! I just love this.

Finaly the old vB.org is BACK!

Bad Bunny 06-11-2005 02:09 AM

Wow! Lots of good stuff here. I'm so excited about this new release. Thank you so much for the tutorial, as it really does teach you something useful. Thanks!

VBCoder 06-12-2005 05:05 AM

Kirby,

Is there anyway we can get this info for the other classes?

eXtremeTim 06-13-2005 06:17 AM

Quote:

Originally Posted by VBCoder
Kirby,

Is there anyway we can get this info for the other classes?

If I have time tommorrow I will post up one for the new reply class. Since I had a good deal of time working with it today. I now have my talkerbot hack fully using the new reply datamanager.

M1th 06-14-2005 05:52 PM

To send PMs to more than 1 user:


Retrieving usernames:

To get a list of usernames from an array and output in the form of user1;user2;user3:

PHP Code:

    $user_names $db->query_read("
            SELECT username
            FROM " 
TABLE_PREFIX "user
            WHERE usergroupid = xx
            ORDER BY username ASC
        "
); 

replacing xx with usergroupid
PHP Code:

        $pmto_users = array();
        while (
$name $db->fetch_array($user_names))
        {
            
$pmto_users[] = $name['username'];
        }
        
$db->free_result($user_names); 

To output the $pmto_users array into the format user1;user2;user3 you do:
PHP Code:

$pmtousernames implode(';'$pmto_users); 

Finally, sending the pm -repeat all the steps mentioned by KirbyDE but replace
PHP Code:

$pmdm->set_recipients('newuser'$botpermissions); 

with:

PHP Code:

$pmdm->set_recipients($pmtousernames$botpermissions); 

[$pmtousernames would output to something like user1;user2;user3;etc]

Link14716 06-27-2005 05:41 AM

The PM data manager seems to completely kill the page when I use this function. It just does a white page and no PM is sent.
PHP Code:

function ushop_send_pm($title$text$user$from=0) {
    global 
$vbulletin;
    
    
// require the class
    
require_once(DIR '/includes/class_dm_pm.php');

    
// Who's the PM from?
    
if ($from == OR $from['userid'] == $vbulletin->userinfo['userid']) {
        
$from $vbulletin->userinfo;
    } elseif (
$from == "default") {
        
$from fetch_userinfo($vbulletin->options['ushop_pmfrom']);
    } else {
        
$from fetch_userinfo($from['userid']);
    }
    
    
// Who are we sending this PM to?
    
if (isset($user[0]['userid'])) {
        
// Sending to multiple.
        
foreach ($user as $omguser) {
            
$toarray[] = $omguser['username'];
        }
        
$to implode(";"$toarray);
    } else {
        
// Sending to one.
        
$to $user['username'];
    }
    
    
// create the DM to do error checking and insert the new PM
    
$pmdm =& datamanager_init('PM'$vbulletinERRTYPE_ARRAY);
    
$pmdm->set('fromuserid'$from['userid']);
    
$pmdm->set('fromusername'$from['username']);
    
$pmdm->set('title'$title);
    
$pmdm->set('message'$text);
    
$pmdm->set_recipients($to$from['permissions']);
    
$pmdm->set('dateline'TIMENOW);

    
// If no errors, save.
    
if ($pmdm->errors) {
        return 
$pmdm->errors;
    }
    
$pmdm->save();


I have since went back to using my old function which got the job done. I'll probably try fixing the version of the function that uses the data manager, but for now...

Andreas 06-27-2005 10:17 AM

Quote:

Originally Posted by Link14716
PHP Code:

// require the class
require_once(DIR '/includes/class_dm_pm.php'); 


Remove this line and it'll work :)

flup 06-27-2005 05:45 PM

Code:

$pmdm->set_recipients('newuser', $botpermissions);
What should that line be if it has to be send to the administrator with userid 1 (or just all administrators).


All times are GMT. The time now is 01:24 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.02008 seconds
  • Memory Usage 1,779KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)bbcode_code_printable
  • (11)bbcode_php_printable
  • (3)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete