PDA

View Full Version : Question about PM DataManager...


Jaxel
05-09-2010, 09:46 PM
Okay, I have a comma delimited string.... "1,319" stored in $media['subscriptions']

I am using the following code:
if ($media['subscriptions'])
{
$recipients = str_replace(',',';',$media['subscriptions']);

$pmdm =& datamanager_init('PM', $vbulletin);
$pmdm->set('fromuserid', $vbulletin->userinfo['userid']);
$pmdm->set('fromusername', $vbulletin->userinfo['username']);
$pmdm->set('title', "this is a test title");
$pmdm->set('message', "this is a test message");
$pmdm->overridequota = true;
$pmdm->set_recipients($recipients, $botpermissions);
$pmdm->set('dateline', TIMENOW);
$pmdm->save();
}

When this code processes, I get the following error...

The following users were not found: 1, 319

Now I have several problems with this...

1 - user #1 DOES exist, as that is me, so this shouldn't be happening...
2 - 319 actually doesn't exist, however I would like it to IGNORE this error and send the message to the other users. Is this possible?

--------------- Added 1273473733 at 1273473733 ---------------

Okay... I got it working... sort of, I now have a new error...
if ($media['subscriptions'])
{
$users = $vbulletin->db->query_read("SELECT username FROM " . TABLE_PREFIX . "user WHERE userid IN (".$media['subscriptions'].")");

while ($user = $vbulletin->db->fetch_array($users))
{
$recipients[] = $user['username'];
}

$recipients = implode(';', $recipients);

$dm =& datamanager_init('PM', $vbulletin);
$dm->set('fromuserid', $vbulletin->userinfo['userid']);
$dm->set('fromusername', $vbulletin->userinfo['username']);
$dm->set('title', "this is a test title");
$dm->set('message', "this is a test message");
$dm->overridequota = true;
$dm->set_recipients($recipients, $botpermissions);
$dm->set('dateline', TIMENOW);
$dm->save();
}



However, using this code, I have a new error...
INSERT INTO pmtext
(fromuserid, fromusername, title, message, dateline, touserarray, pmtextid) VALUES
(2, 'testaccount', 'this is a test title', 'this is a test message', 1273473635, 'a:1:{s:3:\"bcc\";a:1:{i:1;s:5:\"Jaxel\";}}', 2);

MySQL Error : Duplicate entry '2' for key 1
Error Number : 1062
Username : testaccount
Classname : vB_Database
MySQL Version :

Stack Trace:

#0 vB_Database->halt() called in [path]/includes/class_core.php on line 421
#1 vB_Database->execute_query() called in [path]/includes/class_core.php on line 439
#2 vB_Database->query_write() called in [path]/includes/class_dm.php on line 740
#3 vB_DataManager->db_insert() called in [path]/includes/class_dm.php on line 890
#4 vB_DataManager->save() called in [path]/media/media_comment.php on line 80
#5 require_once([path]/media/media_comment.php) called in [path]/media_ajax.php on line 87



This error doesn't seem to make sense to me... It DOES process an insert in the database, and the PM goes through. This error pops up because for some odd reason it is running the insert code TWICE... which it shouldnt be doing.