PDA

View Full Version : Send email to support staff


Mythotical
02-08-2010, 02:28 AM
Here's the deal, I have it set so when a new ticket is created it sends a notification to all support staff based on usergroup perms, the problem is it won't send and as far as I know it isn't pulling data to send the email.

Here is the code:
// Notify Support Staff
$ids = '';
// Gather all usergroup information
$usergroups = $vbulletin->db->query_read("SELECT * FROM `" . TABLE_PREFIX . "usergroup`");
while ($usergroup = $vbulletin->db->fetch_array($usergroups))
{
// only use if the usergroups are support staff or admin
if ($usergroup['usergroupid'] == '6' OR $issupport)
{
$ids .= ',' . $usergroup['usergroupid'];
}
}

// of course if not empty then continue
if (!empty($ids))
{
// gather information on all users that are in the usergroups that are set as staff
$users = $vbulletin->db->query_read("
SELECT userid, username
FROM `" . TABLE_PREFIX . "user`
WHERE usergroupid IN (0$ids)
ORDER BY username
");
while ($user = $vbulletin->db->fetch_array($users))
{
// self explanatory I hope
$supportstaff[$user['userid']] = array
(
'userid' => $user['userid'],
'username' => $user['username']
);
}
}
// assign variables which I'm not sure are even working
$userids = $supportstaff['userid'];
$tostaff = fetch_userinfo($userids);
$toemail = $tostaff['email'];
$subject = $vbulletin->options['bbtitle'] ." New Ticket Created";
$message = "A new ticket has been created. Please visit the link below to view the ticket.<br />Ticket: ".$vbulletin->options['bburl']."/".$support_file."?do=ticket&amp;id=".$ticketid."";
vbmail($toemail, $subject, $message, $headers);


Keep in mind everything you see in there is for testing purposes only, once I have it working I plan to make phrases and such to use in the emails.

Anyway, I have been trying a few things to get this working, any help would be much appreciated.

Adrian Schneider
02-08-2010, 05:41 AM
How about something like this $ids = array();

foreach ($vbulletin->usergroupcache as $usergroupid => $usergroup) {
if ($usergroupid == 6 or $usergroup['issupport']) {
$ids[] = $usergroupid;
}
}

if ($ids = implode(', ', $ids)) {
$result = $vbulletin->db->query_read("
SELECT userid
, username
, email
FROM " . TABLE_PREFIX . "user
WHERE usergroupid IN ($ids)
ORDER
BY username
");

while ($user = $vbulletin->db->fetch_array($result)) {
vbmail(
$user['email'],
sprintf('%s New Ticket Created', $vbulletin->options['bbtitle']),
sprintf(
'A new ticket has been created. Please visit the link below to
view the ticket.<br />Ticket: %s/%s/?do=ticket&amp;id=%d',

$vbulletin->options['bburl'],
$support_file,
$ticketid
)
);
}
}

Mythotical
02-09-2010, 03:37 AM
Tried what you had above, had to change $usergroup['issupport'] to $usergroup['pl9_support'] but emails still not going out to staff. Here is what I am wondering, the sprintf, why use that? Seems as though its not telling it what to do or am I wrong?

Any other suggestions?

Adrian Schneider
02-09-2010, 03:47 AM
Why not do some debugging...?

Mythotical
02-09-2010, 03:49 AM
EDIT: Checked up on sprintf and low and behold I had emails waiting that were telling me support tickets exist. So that tells me it is delaying on sending out emails. Is that how it is supposed to work? I have never used sprintf so not sure how it should work.

--------------- Added 1265698069 at 1265698069 ---------------

Adrian, thanks a bunch, it works now that I see there is a delay in sending which I do like.

Now the next issue is that I am having to use $usergroup['pl9_support'] == 16 which means that the setting has to be set to only support staff with no other options, I did it this way on purpose, but how do I go about pulling pl9_support without having to see if the value is set to 16? If I drop == 16 then it will send notifications to everyone.