vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB5 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=263)
-   -   Help with Datamanager/Sending Private Messages (https://vborg.vbsupport.ru/showthread.php?t=314762)

neilsimp1 10-07-2014 09:19 PM

Help with Datamanager/Sending Private Messages
 
Hi

I'm following instructions from https://vborg.vbsupport.ru/showthrea...ata+manager+pm to create a datamanager and send a PM.

Everything looks good in my code, I believe, except that I'm having trouble including/requiring the files:
core/includes/functions.php
core/includes/class_core.php
per http://www.vbulletin.com/docs/html/data_managers

the file I'm working from is located in /public/my/includes/myscript.php, so what I'm trying is:

PHP Code:

include('privateMessage.php');//script in same folder, this one loads fine

//then later on...
api_send_privateMessage($fromuserid$fromusername$title$message$recipient);
//which is located in privateMessage.php 

So in privateMessage.php:
PHP Code:

require_once(realpath(__DIR__).'/../../core/includes/functions.php');
require_once(
realpath(__DIR__).'/../../core/includes/class_core.php');    
    
function 
api_send_privateMessage($fromuserid$fromusername$title$message$recipients){
    
$pmdm =& datamanager_init('PM'$vbulletinERRTYPE_ARRAY);
    
$pmdm->set('fromuserid'$fromuserid);
    
$pmdm->set('fromusername'$fromusername);
    
$pmdm->set('title'$title);
    
$pmdm->set('message'$message);
    
$pmdm->set_recipients($recipients$botpermissions);
    
$pmdm->set('dateline'TIMENOW); 
    
$pmdm->save();
    
    return 
$pmdm->errors;


If I comment out the require_once's, I get an error saying that datamanager_init is not found, so I know it's calling the function correctly.


I've tried various combinations of pointing to functions.php and class_core.php, but I keep end up getting "Access denied." on a blank white page, without it ever completing and going to the next actual web page.


Can somebody point out my (hopefully) obvious mistake?
This has been driving me crazy, any help would be appreciated.

ozzy47 10-07-2014 10:15 PM

That is a vB3 article, that will not work in vB5 it is completely different.

Dead Eddie 10-07-2014 10:24 PM

Use the API

vB_Api_Content_Privatemessage::add()

neilsimp1 10-07-2014 10:51 PM

Thanks.
I looked all over to find something specific to vb5, but that was really all Google could get for me. Would you be able to point me where I can find documentation on that? Sorry, I'm just looking at vBulletin for the first time, so it's all new.

Dead Eddie 10-08-2014 01:37 AM

Quote:

Originally Posted by neilsimp1 (Post 2518078)
Thanks.
I looked all over to find something specific to vb5, but that was really all Google could get for me. Would you be able to point me where I can find documentation on that? Sorry, I'm just looking at vBulletin for the first time, so it's all new.

Mostly just look at the code. There really isn't any developer documentation and the stuff on this site is user built.

This is an example of calling the text API (for a new thread). Should give you an idea of where to start (since, basically, you're creating a text node, with additional PM data). Read the comments on the API method I referenced above and, if you're still stuck, someone will likely try to help.

TheAdminMarket 10-08-2014 06:47 PM

Haven't worked with vB5 but seems that you're missing something. You've in your code:
PHP Code:

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

but unless if I'm blind, can't see the value assigment for variable: $botpermissions. You must give admin permissions for PMs to be sure that it will bypass any restriction (eg total amount of PMs, PMs per xxx time)

For vB4 I was using:
PHP Code:

// Bypass message amount restrictions
$botpermissions['adminpermissions'] = 2;
$pmSystem->set_recipients($item["username"], $botpermissions); 


neilsimp1 11-11-2014 07:30 PM

I've done a bit more digging, and I believe I'm close with something like this:

PHP Code:

$data = array('sentto' => $recipients,
            
'msgRecipients' => $recipients,
            
'msgtype' 'message',
            
'title' => $title
            
'rawtext' => $message
            
'sender' => $fromuserid,
            
'contenttypeid' => 27);
        
$pm_library vB_Library::instance('Content_Privatemessage');

$options = array();        

$pm_library->add($data$options); 

But I'm getting the error below, pretty much no matter what I do with the parameters at this point.
I'm not sure if it's the $data or the $options array that's having the "Illegal offset" problems, evan after looking at /vb/library/content/privatemessage.php

Code:

Warning: Illegal offset type in isset or empty in .../vb/library/content/privatemessage.php on line 1723 Warning: Illegal offset type in .../vb/library/content/privatemessage.php on line 1787 Warning: Illegal offset type in .../vb/library/content/privatemessage.php on line 564 API Error
Error: database_cant_escape_param
Args:
array (
  0 => 'array',
)


Can anyone point me in the right direction?

Dead Eddie 11-12-2014 01:25 AM

I'm just guessing here...but it looks like 'sentto' probably isn't formatted correctly.

If I were debugging it, I'd probably add a few var_dumps in vB_Library_Content_Privatemessage:add() around where it calls the checkFolders method and inspect the variables it's passing. You'll probably catch one that's dropping invalid data (I'd start with the one at line 555).

neilsimp1 11-13-2014 09:10 PM

I can't thank you enough...

Just got it working with:
PHP Code:

$recipients[0] = 1;//UserID of admin 

which before was [0]['userid']

And these options:
PHP Code:

$options['nl2br'] = true;
$options['skipDupCheck'] = true;
$options['skipNotification'] = true;
$options['skipFloodCheck'] = true

Now on to the next task - having the script create a user account.


Thanks again for the help!


All times are GMT. The time now is 12:39 AM.

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

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01274 seconds
  • Memory Usage 1,759KB
  • 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
  • (7)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (9)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
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete