print_mail_form_submit
Drupal 7 print_mail_form_submit($form, &$form_state)
Process the send by-email form submission.
Related topics
1 call to print_mail_form_submit()
File
- sites/
all/ modules/ print/ print_mail/ print_mail.inc, line 267 - Displays and processes the mail send form.
Code
function print_mail_form_submit($form, &$form_state) {
if (!array_key_exists('cancel', $form_state['values'])) {
if (!empty($form_state['values']['fld_from_name'])) {
$from = '"' . mime_header_encode($form_state['values']['fld_from_name']) . '" <' . $form_state['values']['fld_from_addr'] . '>';
}
else {
$from = $form_state['values']['fld_from_addr'];
}
$cid = isset($form_state['values']['cid']) ? $form_state['values']['cid'] : NULL;
$print_mail_text_message = filter_xss_admin(variable_get('print_mail_text_message', t('Message from sender')));
$sender_message = $print_mail_text_message . ':<br /><br /><em>' . nl2br(check_plain($form_state['values']['txt_message'])) . '</em>';
$print = print_controller($form_state['values']['path'], $cid, PRINT_MAIL_FORMAT, $form_state['values']['chk_teaser'], $sender_message);
// Spaces in img URLs must be replaced with %20
$pattern = '!<(img\s[^>]*?)>!is';
$print['content'] = preg_replace_callback($pattern, '_print_replace_spaces', $print['content']);
if ($print !== FALSE) {
$print_mail_send_option_default = variable_get('print_mail_send_option_default', PRINT_MAIL_SEND_OPTION_DEFAULT);
$params = array();
$params['subject'] = $form_state['values']['fld_subject'];
$params['message'] = $sender_message;
$params['link'] = $print['url'];
$params['title'] = $form_state['values']['title'];
$node = $print['node'];
$params['body'] = theme('print', array('print' => $print, 'type' => PRINT_MAIL_FORMAT, 'node' => $node));
// Img elements must be set to absolute
$pattern = '!<(img\s[^>]*?)>!is';
$params['body'] = preg_replace_callback($pattern, '_print_rewrite_urls', $params['body']);
// Convert the a href elements, to make sure no relative links remain
$pattern = '!<(a\s[^>]*?)>!is';
$params['body'] = preg_replace_callback($pattern, '_print_rewrite_urls', $params['body']);
$ok = FALSE;
$use_job_queue = variable_get('print_mail_job_queue', PRINT_MAIL_JOB_QUEUE_DEFAULT);
if ($use_job_queue) {
$queue = DrupalQueue::get('print_mail_send');
}
$addresses = explode(', ', $form_state['values']['txt_to_addrs']);
foreach ($addresses as $to) {
if ($use_job_queue) {
// Use job queue to send mails during cron runs
$queue->createItem(array('module' => 'print_mail', 'key' => $print_mail_send_option_default, 'to' => $to, 'language' => language_default(), 'params' => $params, 'from' => $from));
}
else {
// Send mail immediately using Drupal's mail handler
$ret = drupal_mail('print_mail', $print_mail_send_option_default, $to, language_default(), $params, $from);
}
if ($use_job_queue || $ret['result']) {
flood_register_event('print_mail');
$ok = TRUE;
}
}
if ($ok) {
watchdog('print_mail', '%name [%from] sent %page to [%to]', array('%name' => $form_state['values']['fld_from_name'], '%from' => $form_state['values']['fld_from_addr'], '%page' => $form_state['values']['path'], '%to' => $form_state['values']['txt_to_addrs']));
$site_name = variable_get('site_name', t('us'));
$print_mail_text_confirmation = variable_get('print_mail_text_confirmation', t('Thank you for spreading the word about !site.'));
drupal_set_message(check_plain(t($print_mail_text_confirmation, array('!site' => $site_name))));
$nodepath = drupal_get_normal_path($form_state['values']['path']);
db_update('print_mail_page_counter')
->fields(array(
'sentcount' => 1,
'sent_timestamp' => REQUEST_TIME,
))
->condition('path', $nodepath, '=')
->expression('sentcount', 'sentcount + :inc', array(':inc' => count($addresses)))
->execute();
}
}
}
$form_state['redirect'] = preg_replace('!^book/export/html/!', 'node/', $form_state['values']['path']);
}

