View source
<?php
function devel_mail_logger_list($form, $form_state) {
$form = array();
$form['delete'] = array(
'#type' => 'submit',
'#value' => t('Delete debug mails'),
'#submit' => array(
'devel_mail_logger_delete_mails',
),
);
$form['send'] = array(
'#type' => 'submit',
'#value' => t('Send test mail'),
'#submit' => array(
'devel_mail_logger_send_test_mail',
),
);
$header = array(
'title' => array(
'data' => t('Date'),
'field' => 'dml.timestamp',
),
'city' => array(
'data' => t('To'),
'field' => 'dml.to',
),
'subject' => array(
'data' => t('Subject'),
'field' => 'dml.subject',
),
array(
'data' => t('Operations'),
'colspan' => 2,
),
);
$query = db_select('devel_mail_logger', 'dml');
$count_query = clone $query;
$count_query
->addExpression('COUNT(dml.id)');
$query = $query
->extend('PagerDefault')
->extend('TableSort');
$query
->fields('dml')
->limit(25)
->orderByHeader($header)
->setCountQuery($count_query);
$records = $query
->execute();
$header = array(
t('Date'),
t('To'),
t('Subject'),
array(
'data' => t('Operations'),
'colspan' => 2,
),
);
$rows = array();
foreach ($records as $rec) {
$row = array();
$row[] = date('Y-m-d H:i', $rec->timestamp);
$row[] = $rec->recipient;
$row[] = $rec->subject;
$row[] = l(t('view'), 'admin/reports/devel_mail_logger/mail/' . $rec->id . '/view');
$row[] = l(t('send'), 'admin/reports/devel_mail_logger/mail/' . $rec->id . '/send');
$rows[] = $row;
}
$form['pager_table'] = array(
'#theme' => 'table',
'#header' => $header,
'#rows' => $rows,
);
$form['pager_pager'] = array(
'#theme' => 'pager',
);
return $form;
}
function devel_mail_logger_delete_mails($form, &$form_state) {
$result = db_truncate('devel_mail_logger')
->execute();
$form_state['redirect'] = 'admin/reports/devel_mail_logger';
}
function devel_mail_logger_show_mail($mail) {
$mail = json_decode($mail->message);
$rows = array();
foreach ($mail->headers as $key => $value) {
$rows[] = array(
array(
'data' => $key,
'header' => true,
),
$value,
);
}
$build['headers'] = array(
'#type' => 'fieldset',
'#title' => 'Headers',
'#collapsed' => TRUE,
'#collapsible' => TRUE,
);
$build['headers']['table'] = array(
'#theme' => 'table',
'#rows' => $rows,
);
$system = drupal_mail_system($mail->module, $mail->key);
$message = $system
->format((array) $mail);
$body = $message['params']->body[0];
$rows = array(
array(
array(
'data' => t('To: '),
'header' => TRUE,
),
t($mail->to),
),
array(
array(
'data' => t('From: '),
'header' => TRUE,
),
t($mail->from),
),
array(
array(
'data' => t('Subject: '),
'header' => TRUE,
),
t($mail->subject),
),
array(
array(
'data' => t('Body: '),
'header' => TRUE,
),
$body,
),
);
$build['mail_table'] = [
'#theme' => 'table',
'#rows' => $rows,
];
return $build;
$output = '';
$output .= '<b>' . t('Subject:') . '</b> ' . $mail->subject;
$output .= '<br/>';
$message = json_decode($mail->message);
$system = drupal_mail_system($message->module, $message->key);
$message = $system
->format((array) $message);
$output .= '<b>' . t('Body') . '</b> ' . $message['body'];
return $output;
}
function devel_mail_logger_send_mail($form, &$form_state, $mail) {
$form = array();
$form['mail'] = array(
'#type' => 'hidden',
'#value' => $mail,
);
$form['email'] = array(
'#type' => 'textfield',
'#title' => t('Email: '),
'#default_value' => $GLOBALS['user']->mail,
'#required' => TRUE,
);
$form['send'] = array(
'#type' => 'submit',
'#value' => t('Send'),
);
return $form;
}
function devel_mail_logger_send_mail_validate($form, &$form_state) {
if (!valid_email_address($form_state['values']['email'])) {
form_set_error('email', t('Please provide a valid email'));
}
}
function devel_mail_logger_send_mail_submit($form, &$form_state) {
$message = json_decode($form_state['values']['mail']->message);
$system = drupal_mail_system($message->module, $message->key);
$message = $system
->format((array) $message);
$module = 'devel_mail_logger';
$key = 'send_mail';
$to = $form_state['values']['email'];
$params['body'] = is_array($message['params']->body) ? $message['params']->body : array(
$message['params']->body,
);
$params['subject'] = $message['subject'];
$lang_code = $message['language'];
if (drupal_mail($module, $key, $to, $lang_code, $params)) {
drupal_set_message(t('Mail send successfully'));
}
else {
drupal_set_message(t('Mail send failed'));
}
$form_state['redirect'] = 'admin/reports/devel_mail_logger';
}
function devel_mail_logger_send_test_mail($form, &$form_state) {
$module = 'devel_mail_logger';
$key = 'send_test';
$to = $GLOBALS['user']->mail;
$params['message'] = 'body';
$params['subject'] = 'subject';
$lang_code = $GLOBALS['user']->language;
if (!$lang_code) {
$lang_code = LANGUAGE_NONE;
}
$result = drupal_mail($module, $key, $to, $lang_code, $params);
if ($result) {
drupal_set_message(t('Email send successfully'));
}
else {
drupal_set_message(t('Email sending failed'), 'error');
}
$form_state['redirect'] = 'admin/reports/devel_mail_logger';
}