function emailITticket($id, $scenario, $admin = false, $debug = false) { global $_josh, $page; $ticket = db_grab('SELECT u.id, (SELECT COUNT(*) FROM users_to_modules a WHERE a.user_id = u.id AND a.module_id = 3) isUserAdmin, t.title, t.created_user, t.description, t.departmentID, ISNULL(u.nickname, u.firstname) first, u.lastname last, u.email, ' . db_updated('u') . ', t.created_date, t.priorityID, t.statusID, d.shortName department, t.type_id, y.description type, u2.email as ownerEmail, t.ownerID, ISNULL(u2.nickname, u2.firstname) as ownerName FROM helpdesk_tickets t LEFT JOIN helpdesk_tickets_types y ON t.type_id = y.id JOIN users u ON t.created_user = u.id JOIN departments d ON t.departmentID = d.departmentID LEFT JOIN users u2 ON t.ownerID = u2.id WHERE t.id = ' . $id); //yellow box if ($scenario == "followup") { $subject = "Followup On Your Helpdesk Ticket"; $message = drawMessage('There\'s been followup on your Helpdesk ticket - please see below. <b>Don\'t reply to this email!</b> Instead, please ' . draw_link('/helpdesk/ticket.php?id=' . $id, 'view your ticket') . ' in the intranet ticketing system.<br><br><b>Note:</b> if you add this sender to your "safe senders list," pictures will always download.'); } elseif ($scenario == "followupadmin") { $subject = "Admin Followup on Helpdesk Ticket"; $message = drawMessage(draw_link('/staff/view.php?id=' . user(), $_SESSION['full_name']) . ' just made an administrative followup on this Helpdesk ticket. Regular staff were not copied on this message.'); } elseif ($scenario == "closed") { $subject = "Your Ticket Has Been Closed"; $message = drawMessage('This is to let you know that your ticket has been closed. <b>Don\'t reply to this email!</b> You can still followup on this thread by ' . draw_link('/helpdesk/ticket.php?id=' . $id, 'viewing your ticket') . ' in the intranet ticketing system.<br><br><b>Note:</b> if you add this sender to your "safe senders list," pictures will always download.'); } elseif ($scenario == "assign") { $subject = "Your Ticket Has Been Assigned"; $message = drawMessage(draw_link('/staff/view.php?id=' . user(), $_SESSION["full_name"]) . ' has assigned this ticket to ' . draw_link('/staff/view.php?id=' . $ticket['ownerID'], $ticket["ownerName"]) . '<b>Don\'t reply to this email!</b> Instead, please ' . draw_link('/helpdesk/ticket.php?id=' . $id, 'view your ticket') . ' in the intranet ticketing system.<br><br><b>Note:</b> if you add this sender to your "safe senders list," pictures will always download.'); } elseif ($scenario == "new") { $subject = "New " . $ticket["department"] . " Ticket Posted"; $message = drawMessage('This is to let you know that a new ticket has just been posted to the Helpdesk. You can ' . draw_link('/helpdesk/ticket.php?id=' . $id, 'view the ticket') . ' in the intranet ticketing system.'); } elseif ($scenario == "critical") { $subject = "Critical " . $ticket["department"] . " Ticket Still Open"; $message = drawMessage('A ticket flagged "Critical" is open on the Helpdesk. You can ' . draw_link('/helpdesk/ticket.php?id=' . $id, 'view the ticket') . ' in the intranet ticketing system.'); } //$message .= drawtableStart() . drawHeaderRow(false, 2); //recipients arrays $users = array(); $admins = array(); if ($ticket["isUserAdmin"]) { $admins[] = $ticket["email"]; } else { $users[] = $ticket["email"]; } if ($page['is_admin']) { $admins[] = $_SESSION["email"]; } else { $users[] = $_SESSION["email"]; } //add owner if ticket is assigned if ($ticket["ownerEmail"]) { $admins[] = $ticket["ownerEmail"]; } //owner logically has to be admin $d_user = new display($page['breadcrumbs'] . $ticket['title'], false, false, 'thread'); $d_admin = new display($page['breadcrumbs'] . $ticket['title'], false, false, 'thread'); $d_user->row(drawName($ticket['created_user'], $ticket['first'] . ' ' . $ticket['last'], $ticket['created_date'], true, BR, $ticket['updated']), draw_h1($ticket['title']) . $ticket['description']); $d_admin->row(drawName($ticket['created_user'], $ticket['first'] . ' ' . $ticket['last'], $ticket['created_date'], true, BR, $ticket['updated']), draw_h1($ticket['title']) . $ticket['description']); //get followups $followups = db_query('SELECT u.id, f.message, (SELECT COUNT(*) FROM users_to_modules u2m WHERE u2m.user_id = u.id AND u2m.module_id = 3 AND u2m.is_admin = 1) isUserAdmin, ISNULL(u.nickname, u.firstname) firstname, u.lastname, u.email, f.created_date, f.is_admin, f.created_user, ' . db_updated('u') . ' FROM helpdesk_tickets_followups f INNER JOIN users u ON f.created_user = u.id WHERE f.ticketID = ' . $id . ' ORDER BY f.created_date'); while ($f = db_fetch($followups)) { $d_admin->row(drawName($f['created_user'], $f['firstname'] . ' ' . $f['lastname'], $f['created_date'], true, BR, $f['updated']), $f['message']); if (!$f['is_admin']) { $d_user->row(drawName($f['created_user'], $f['firstname'] . ' ' . $f['lastname'], $f['created_date'], true, BR, $f['updated']), $f['message']); } if ($f['isUserAdmin']) { $admins[] = $f['email']; } else { $users[] = $f['email']; } } $admins = array_remove($_SESSION['email'], array_unique($admins)); $users = array_remove($_SESSION['email'], array_unique($users)); if ($debug) { die(drawEmail($message . $d_admin->draw())); } //special codes for email //todo: put this in db, possibly by adding something to the users table or something if ($scenario == "new" && $ticket["departmentID"] == 3) { $admins = array('*****@*****.**', '*****@*****.**', '*****@*****.**'); } if ($scenario == "new" && $ticket["departmentID"] == 13) { $admins = array('*****@*****.**', '*****@*****.**'); } if ($scenario == "new" && $ticket["departmentID"] == 2) { $admins = array('*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**'); } if ($scenario == "critical" && $ticket["departmentID"] == 8) { $admins = array('*****@*****.**'); } if (count($admins)) { //$admins = join(", ", $admins); email($admins, drawEmail($message . $d_admin->draw()), $subject); error_debug('admin message emailed to ' . implode(', ', $admins) . ' admins', __FILE__, __LINE__); } if (count($users) && $scenario != "followupadmin" && !$admin) { //$users = join(", ", $users); email($users, drawEmail($message . $d_user->draw()), $subject); error_debug('user message emailed to ' . implode(', ', $users) . ' users', __FILE__, __LINE__); } }
function drawThreadTop($title, $content, $user_id, $fullname, $date, $editurl = false) { global $_josh; $return = '<tr> <td height="150" class="left">' . drawName($user_id, $fullname, $date, true, false) . '</td> <td class="text"><div class="text top"><h1>' . $title . '</h1>'; if ($editurl) { $return .= '<a class="right button floating" href="' . $editurl . '">edit this</a>'; } $return .= str_replace('href="../', 'href="http://' . $_josh['request']['host'] . '/', $content) . ' </div></td> </tr>'; return $return; }
function addRow($type, $title, $name = "", $value = "", $default = "", $required = false, $maxlength = 50, $onchange = false) { global $rows, $js, $months, $month, $today, $year, $_josh; $textlength = $maxlength > 50 ? 50 : $maxlength; $value = trim($value); if ($type == "raw") { $rows .= $title; } else { $rows .= '<tr>'; if ($type != "button" && $type != "submit" && $type != "hidden" && $type != "raw") { $rows .= '<td class="left">' . $title . '</td>'; } if ($type == "text") { //output text, no form element $rows .= '<td>' . $value . '</td>'; } elseif ($type == "date") { $rows .= '<td>' . draw_form_date($name, $value, false, false, $required) . '</td>'; } elseif ($type == "datetime") { $rows .= '<td>' . draw_form_date($name, $value, true) . '</td>'; } elseif ($type == "checkbox") { $rows .= '<td>' . draw_form_checkbox($name, $value) . '</td>'; } elseif ($type == "itext") { $rows .= '<td>' . draw_form_text($name, $value, false, $maxlength) . '</td>'; if ($required) { $js .= "if (!form." . $name . ".value.length) errors[errors.length] = 'the \\'" . $title . "\\' field is empty';" . $_josh["newline"]; } } elseif ($type == "phone") { $rows .= '<td>' . draw_form_text($name, $value, 14, $maxlength) . '</td>'; if ($required) { $js .= "if (!form." . $name . ".value.length) errors[errors.length] = 'the \\'" . $title . "\\' field is empty';" . $_josh["newline"]; } } elseif ($type == "extension") { $rows .= '<td>' . draw_form_text($name, $value, 4, $maxlength) . '</td>'; if ($required) { $js .= "if (!form." . $name . ".value.length) errors[errors.length] = 'the \\'" . $title . "\\' field is empty';" . $_josh["newline"]; } } elseif ($type == "password") { $rows .= '<td>' . draw_form_password($name, $value, $textlength, $maxlength) . '</td>'; if ($required) { $js .= "if (!form." . $name . ".value.length) errors[errors.length] = 'the \\'" . $title . "\\' field is empty';" . $_josh["newline"]; } } elseif ($type == "select") { $rows .= '<td>'; $rows .= draw_form_select($name, $value, $default, $required, false, $onchange); $rows .= '</td>'; } elseif ($type == "user") { $result = db_query("SELECT \n\t\t\t\t\t\t\t\t\t\t\tuserID, \n\t\t\t\t\t\t\t\t\t\t\tISNULL(nickname, firstname) first,\n\t\t\t\t\t\t\t\t\t\t\tlastname last \n\t\t\t\t\t\t\t\t\t\tFROM intranet_users\n\t\t\t\t\t\t\t\t\t\tWHERE isActive = 1\n\t\t\t\t\t\t\t\t\t\tORDER by lastname"); while ($r = db_fetch($result)) { $options[$r["userID"]] = $r["first"] . ", " . $r["last"]; } $rows .= '<td>'; $rows .= draw_form_select($name, $options, $default, $required, false, $onchange); $rows .= '</td>'; } elseif ($type == "department") { $rows .= '<td><select name="' . $name . '">'; $result = db_query("SELECT \n\t\t\t\t\t\t\t\t\t\t\tdepartmentID,\n\t\t\t\t\t\t\t\t\t\t\tdepartmentName,\n\t\t\t\t\t\t\t\t\t\t\tquoteLevel\n\t\t\t\t\t\t\t\t\t\tFROM intranet_departments\n\t\t\t\t\t\t\t\t\t\tWHERE isActive = 1\n\t\t\t\t\t\t\t\t\t\tORDER by precedence"); while ($r = db_fetch($result)) { $rows .= '<option value="' . $r["departmentID"] . '"'; if ($r["departmentID"] == $default) { $rows .= ' selected'; } $rows .= '>'; if ($r["quoteLevel"] == 2) { $rows .= " · "; } elseif ($r["quoteLevel"] == 3) { $rows .= " - "; } $rows .= $r["departmentName"] . '</option>'; } $rows .= '</select></td>'; } elseif ($type == "userpic") { $rows .= '<td>' . drawName($name, $value, $default, true, " ") . '</td>'; } elseif ($type == "textarea") { $rows .= '<td>' . draw_form_textarea($name, $value) . '</td>'; $js .= " tinyMCE.triggerSave();" . $_josh["newline"]; if ($required) { $js .= "if (!form." . $name . ".value.length || (form." . $name . ".value == '<p> </p>')) errors[errors.length] = 'the \\'" . $title . "\\' field is empty';" . $_josh["newline"]; } } elseif ($type == "textarea-plain") { $rows .= '<td>' . draw_form_textarea($name, $value, "noMceEditor") . '</td>'; if ($required) { $js .= "if (!form." . $name . ".value.length) errors[errors.length] = 'the \\'" . $title . "\\' field is empty';" . $_josh["newline"]; } } elseif ($type == "hidden") { $rows .= draw_form_hidden($name, $value); } elseif ($type == "submit") { $rows .= '<td colspan="2" align="center" class="bottom">' . draw_form_submit($title, "button") . '</td>'; } elseif ($type == "button") { $rows .= '<td colspan="2" align="center" class="bottom">' . draw_form_button($title, $value, "button") . '</td>'; } elseif ($type == "file") { $rows .= '<td>' . draw_form_file($name) . '</td>'; } $rows .= '</tr>' . $_josh["newline"]; } }
echo $e["color"]; ?> ;"><?php echo $e["type"]; ?> </span></td> </tr> <tr> <td class="left">Start Date</td> <td><?php echo format_date_time($e["startDate"]); ?> </td> </tr> <tr valign="top"> <td class="left" height="200">Description</td> <td class="text"><?php echo $e["description"]; ?> </td> </tr> <tr valign="top"> <td class="left">Created</td> <td><?php echo drawName($e["createdBy"], $e["first"] . " " . $e["last"], $e["createdOn"], true); ?> </td> </tr> </table> <?php drawBottom();
c.title' . langExt() . ' title FROM cal_events_to_channels e2c JOIN channels c ON e2c.channel_id = c.id WHERE e2c.event_id = ' . $_GET["id"]); while ($c = db_fetch($channels)) { ?> · <?php echo $c["title"]; ?> </a><br> <?php } ?> </td> </tr> <?php } ?> <tr valign="top"> <td class="left"><?php echo getString('posted_by'); ?> </td> <td><?php echo drawName($e["created_user"], $e["first"] . " " . $e["last"], $e["created_date"], true, $e['updated']); ?> </td> </tr> </table> <?php echo drawBottom();
ISNULL(u.nickname, u.firstname) first, u.lastname last, u.id, c.checkoutStart, c.checkoutEnd, c.checkoutNotes, ' . db_updated('u') . ' FROM it_laptops_Checkouts c INNER JOIN users u ON c.checkoutUser = u.id WHERE checkoutLaptopID = " . $_GET["id"] . " ORDER BY checkoutStart DESC'); while ($r = db_fetch($result)) { ?> <tr> <td><?php echo drawName($r["id"], $r["first"] . " " . $r["last"], false, true, $r['updated']); ?> </td> <td><?php echo format_date($r["checkoutStart"]); ?> </td> <td><?php echo format_date($r["checkoutEnd"]); ?> </td> <td><?php echo nl2br($r["checkoutNotes"]); ?> </td> </tr>
function bbDrawTopic($id, $email = false) { global $_josh, $page; if (!($r = db_grab('SELECT t.title' . langExt() . ' title, t.description' . langExt() . ' description, t.created_date, t.is_admin, t.type_id, y.title' . langExt() . ' type, u.id created_user, ISNULL(u.nickname, u.firstname) firstname, u.lastname, ' . db_updated('u') . ' FROM bb_topics t JOIN users u ON t.created_user = u.id LEFT JOIN bb_topics_types y ON t.type_id = y.id WHERE t.id = ' . $id))) { return false; } $return = ''; if ($r['is_admin'] == 1) { $return .= drawMessage(getString('topic_admin')); } $options = ($page['is_admin'] || user() == $r['created_user']) && !$email ? array('edit.php?id=' . $id => getString('edit'), 'javascript:checkDelete();' => getString('delete')) : false; //display topic thread $d = new display($page['breadcrumbs'] . $r['title'], false, $options, 'thread'); //if categories if (getOption('bb_types') && $r['type']) { $r['description'] .= draw_div_class('light', getString('category') . ': ' . draw_link('category.php?id=' . $r['type_id'], $r['type'])); } //channels if (getOption('channels') && ($channels = db_array('SELECT c.title' . langExt() . ' title FROM channels c JOIN bb_topics_to_channels t2c ON c.id = t2c.channel_id WHERE t2c.topic_id = ' . $id . ' ORDER BY title' . langExt()))) { $r['description'] .= draw_div_class('light', 'Networks: ' . implode(', ', $channels)); } $d->row(drawName($r['created_user'], $r['firstname'] . ' ' . $r['lastname'], $r['created_date'], true, BR, $r['updated']), '<h1>' . $r['title'] . '</h1>' . $r['description']); //append followups if ($r['is_admin']) { $return .= $d->draw(); } else { $followups = db_table('SELECT f.description' . langExt() . ' description, ISNULL(u.nickname, u.firstname) firstname, u.lastname, f.created_date, f.created_user, ' . db_updated('u') . ' FROM bb_followups f JOIN users u ON u.id = f.created_user WHERE f.is_active = 1 AND f.topic_id = ' . $id . ' ORDER BY f.created_date'); foreach ($followups as $f) { $d->row(drawName($f['created_user'], $f['firstname'] . ' ' . $f['lastname'], $f['created_date'], true, BR, $f['updated']), $f['description']); } $return .= $d->draw(); if (!$email) { //add a followup form $f = new form('bb_followups', false, getString('add_followup')); $f->unset_fields('topic_id'); langUnsetFields($f, 'description'); $return .= $f->draw(false, false); } } return $return; }