diff -upr stable/ticketing/ticket.admin.group.inc development/ticketing/ticket.admin.group.inc --- stable/ticketing/ticket.admin.group.inc 2008-11-26 16:13:23.000000000 +0200 +++ development/ticketing/ticket.admin.group.inc 2009-04-08 15:16:20.000000000 +0300 @@ -477,6 +477,32 @@ function _ticket_admin_email_form($def = '#required' => false, ); + $form['queued'] = array( + '#type' => 'fieldset', + '#title' => t('Queued request notification').':', + '#collapsible' => TRUE, + '#collapsed' => false + ); + + $form['queued']['qsubject'] = array( + '#type' => 'textfield', + '#title' => t('Queued request e-mail subject'), + '#description' => t("Format of outgoing mail subject. Characters to use: a-z A-Z 0-9 ,.-+*/%[]{}() Special macros: %qid - Queue id, %g - Group, %tc - Ticket creator, %pri - Priority, %sc - Scope, %si - Site, %cd - Create date, %ss - Short summary, %dt - Detail. If you don't want notification leave this field empty.'"), + '#default_value' => isset($def['qsubject']) ? $def['qsubject'] : NULL, + '#size' => 60, + '#maxlength' => 50, + '#required' => true, + ); + + $form['queued']['qtemplate'] = array( + '#type' => 'textarea', + '#title' => t('Queued request body template'), + '#default_value' => isset($def['qtemplate']) ? $def['qtemplate'] : NULL, + '#description' => t("Characters to use: a-z A-Z 0-9 ,.-+*/%[]{}() Special macros: the same as in case of queued request e-mail subject. If you don't want notification leave this field empty."), + '#rows' => '8', + '#required' => false, + ); + return $form; } @@ -529,9 +555,9 @@ function ticket_admin_group_template_edi function ticket_admin_group_template_edit_submit($form, &$form_state) { /** e-mail jellemzok szerkesztese */ $SQL = "UPDATE {ticket_template} SET mail_address = '%s', sender_address = '%s', tsubject = '%s', esubject = '%s', asubject = '%s'"; - $SQL .= ", usubject = '%s', sep = '%s', e_type = %d, e_pos = %d, unchanged_day = %d, tt_header = '%s', tt_body = '%s'"; - $SQL .= ", tt_footer = '%s', etemplate = '%s', atemplate = '%s', utemplate = '%s' WHERE gid = %d"; - db_query($SQL, $form_state['values']['mail_address'], $form_state['values']['sender_address'], $form_state['values']['tsubject'], $form_state['values']['esubject'], $form_state['values']['asubject'], $form_state['values']['usubject'], $form_state['values']['sep'], $form_state['values']['e_type'], $form_state['values']['e_pos'], $form_state['values']['unchanged_day'], $form_state['values']['tt_header'], $form_state['values']['tt_body'], $form_state['values']['tt_footer'], $form_state['values']['etemplate'], $form_state['values']['atemplate'], $form_state['values']['utemplate'], $form_state['values']['gid']); + $SQL .= ", usubject = '%s', qsubject = '%s', sep = '%s', e_type = %d, e_pos = %d, unchanged_day = %d, tt_header = '%s', tt_body = '%s'"; + $SQL .= ", tt_footer = '%s', etemplate = '%s', atemplate = '%s', utemplate = '%s', qtemplate = '%s' WHERE gid = %d"; + db_query($SQL, $form_state['values']['mail_address'], $form_state['values']['sender_address'], $form_state['values']['tsubject'], $form_state['values']['esubject'], $form_state['values']['asubject'], $form_state['values']['usubject'], $form_state['values']['qsubject'], $form_state['values']['sep'], $form_state['values']['e_type'], $form_state['values']['e_pos'], $form_state['values']['unchanged_day'], $form_state['values']['tt_header'], $form_state['values']['tt_body'], $form_state['values']['tt_footer'], $form_state['values']['etemplate'], $form_state['values']['atemplate'], $form_state['values']['utemplate'], $form_state['values']['qtemplate'], $form_state['values']['gid']); } /************************************************************ diff -upr stable/ticketing/ticket.mail.inc development/ticketing/ticket.mail.inc --- stable/ticketing/ticket.mail.inc 2008-11-26 16:13:23.000000000 +0200 +++ development/ticketing/ticket.mail.inc 2009-04-08 15:46:02.000000000 +0300 @@ -14,7 +14,20 @@ function _ticket_mail_header(&$message, $message['headers']['Sender'] = $message['headers']['Return-Path'] = $message['headers']['Errors-To'] = $params['template']['mail_address']; - if ($message['id'] != 'ticket_new_assigned') { + if ($message['id'] == 'ticket_add_queue') { + $SQL = "SELECT mailto, email_name FROM {ticket_email} WHERE gid=%d"; + $result = db_query($SQL, $params['gid']); + $mailto = array(); + while ($row = db_fetch_array($result)) { + $mailto[] = $row['email_name'].' <'.$row['mailto'].'>'; + } + $message['to'] = implode(', ', $mailto); + } elseif ($message['id'] == 'ticket_new_assigned') { + $SQL = "SELECT u.mail FROM {ticket_event} te, {users} u WHERE te.eid = %d AND te.reassigned = u.uid"; + $result = db_query($SQL, $params['eid']); + $mail = db_fetch_array($result); + $message['to'] = $mail['mail']; + } else { // akik masolatot kapnak a levelrol $result = db_query("SELECT cc FROM {ticket_ticket} WHERE tid = %d", $params['tid']); $row = db_fetch_array($result); @@ -31,11 +44,6 @@ function _ticket_mail_header(&$message, $mailto[] = $row['email_name'].' <'.$row['mailto'].'>'; } $message['to'] = implode(', ', $mailto); - } elseif ($message['id'] == 'ticket_new_assigned') { - $SQL = "SELECT u.mail FROM {ticket_event} te, {users} u WHERE te.eid = %d AND te.reassigned = u.uid"; - $result = db_query($SQL, $params['eid']); - $mail = db_fetch_array($result); - $message['to'] = $mail['mail']; } } @@ -264,3 +272,24 @@ function _ticket_mail_template_assigned( } } +function _ticket_mail_template_queued(&$params) { + $SQL = 'SELECT tq.qid, u.name, u.mail, tg.group_name, tp.priority_name, tsc.scope_name, tst.site_name, tq.created, tq.summary, tq.detail'; + $SQL .= ' FROM {ticket_queue} tq, {users} u, {ticket_group} tg, {ticket_priority} tp, {ticket_scope} tsc, {ticket_site} tst'; + $SQL .= ' WHERE tq.qid = %d AND tq.uid = u.uid AND tq.gid = tg.gid AND tq.priority_id=tp.priority_id AND tq.scope_id = tsc.scope_id AND tq.site_id = tst.site_id'; + $result = db_query($SQL, $params['qid']); + if ($row = db_fetch_array($result)) { + $params['template']['var']['%qid'] = $row['qid']; + $params['template']['var']['%g'] = $row['group_name']; + $params['template']['var']['%tc'] = $row['name'] . ' <' . $row['mail'] . '>'; + $params['template']['var']['%pri'] = $row['priority_name']; + $params['template']['var']['%sc'] = $row['scope_name']; + $params['template']['var']['%si'] = $row['site_name']; + $params['template']['var']['%cd'] = $row['created']; + $params['template']['var']['%ss'] = $row['summary']; + $params['template']['var']['%dt'] = $row['detail']; + + // tokens substitution + $params['template']['qtemplate'] = strtr($params['template']['qtemplate'], $params['template']['var']); + $params['template']['qsubject'] = strtr($params['template']['qsubject'], $params['template']['var']); + } +} diff -upr stable/ticketing/ticket.module development/ticketing/ticket.module --- stable/ticketing/ticket.module 2009-03-11 17:24:24.000000000 +0200 +++ development/ticketing/ticket.module 2009-04-08 14:28:15.000000000 +0300 @@ -1028,6 +1028,21 @@ function ticket_mail($key, &$message, $p } } break; + + case 'add_queue': + _ticket_mail_template_queued($params); + if ( ! empty($params['template']['qsubject']) ) { + $message['subject'] = $params['template']['qsubject']; + $message['body'] = drupal_wrap_mail($params['template']['qtemplate']); + + $message['result'] = drupal_mail_send($message); + // Log errors + if (!$message['result']) { + watchdog('mail', 'Error sending e-mail (from %from to %to).', array('%from' => $message['from'], '%to' => $message['to']), WATCHDOG_ERROR); + drupal_set_message(t('Unable to send e-mail. Please contact the site admin, if the problem persists.'), 'error'); + } + } + break; } } } diff -upr stable/ticketing/ticket.pages.inc development/ticketing/ticket.pages.inc --- stable/ticketing/ticket.pages.inc 2009-03-11 17:24:24.000000000 +0200 +++ development/ticketing/ticket.pages.inc 2009-04-08 14:24:22.000000000 +0300 @@ -993,6 +993,16 @@ function ticket_add_queue_submit($form, $SQL = "INSERT INTO {ticket_queue} (uid, gid, priority_id, scope_id, site_id, created, summary, detail)"; $SQL .= " VALUES (%d, %d, %d, %d, %d, %d, '%s', '%s')"; db_query($SQL, $user->uid, $form_state['values']['gid'], $form_state['values']['priority'], $form_state['values']['scope'], $form_state['values']['site'], time(), $form_state['values']['summary'], $form_state['values']['detail']); + + // send notification + $qid = db_last_insert_id('{ticket_queue}', 'qid'); + $result = db_query("SELECT * FROM {ticket_template} WHERE gid = %d", $form_state['values']['gid']); + $template = db_fetch_array($result); + if ( !empty($template['mail_address'] ) ) { + drupal_mail('ticket', 'add_queue', '', language_default(), array('qid' => $qid, 'gid' => $form_state['values']['gid'], 'template' => $template), NULL, FALSE); + } + + drupal_set_message(t('Thank you! Your request queued.'), 'status'); drupal_goto('ticket/'.$form_state['values']['u_id'].'/'.$form_state['values']['gid']); }