| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 | 
							- <?php
 
- /**
 
-  * @file
 
-  * Sends system emails in HTML.
 
-  */
 
- /**
 
-  * Implements hook_permission().
 
-  *
 
-  * Defines a permission for setting the per-user plaintext option.
 
-  */
 
- function htmlmail_permission() {
 
-   $args = array(
 
-     '!htmlmail' => url('http://drupal.org/project/htmlmail'),
 
-     '%htmlmail' => 'HTML Mail',
 
-   );
 
-   return array(
 
-     'choose htmlmail_plaintext' => array(
 
-       'title' => t('Choose to receive plaintext emails via %htmlmail', $args),
 
-       'description' => t(
 
-         'Granting this permission allows users to choose whether to receive all their emails in plaintext, rather than the default format provided by the <a href="!htmlmail">%htmlmail</a> module.', $args
 
-       ),
 
-     ),
 
-   );
 
- }
 
- /**
 
-  * Implements hook_help().
 
-  */
 
- function htmlmail_help($path, $arg) {
 
-   switch ($path) {
 
-     case 'admin/config/system/htmlmail':
 
-       return '<h2>' . t('Theming') . '</h2><p>' . t('The email message goes through three transformations before sending:') . '</p>';
 
-     case 'admin/help#htmlmail':
 
-       return '<p>'
 
-         . t('<a href="!htmlmail">HTML Mail</a> lets you theme your messages the same way you theme the rest of your website.',
 
-           array('!htmlmail' => 'http://drupal.org/project/htmlmail')
 
-         ) . '</p>';
 
-     default:
 
-       return '';
 
-   }
 
- }
 
- /**
 
-  * Implements hook_menu().
 
-  */
 
- function htmlmail_menu() {
 
-   $items['admin/config/system/htmlmail'] = array(
 
-     'title' => 'HTML Mail',
 
-     'description' => 'Configure HTML Mail system-wide settings.',
 
-     'page callback' => 'drupal_get_form',
 
-     'page arguments' => array('htmlmail_admin_settings'),
 
-     'access arguments' => array('administer site configuration'),
 
-     'file' => 'htmlmail.admin.inc',
 
-   );
 
-   $items['admin/config/system/htmlmail/settings'] = array(
 
-     'title' => 'Settings',
 
-     'type' => MENU_DEFAULT_LOCAL_TASK,
 
-     'weight' => '-2'
 
-   );
 
-   $items['admin/config/system/htmlmail/test'] = array(
 
-     'title' => 'Send Test',
 
-     'page callback' => 'drupal_get_form',
 
-     'page arguments' => array('htmlmail_test_form'),
 
-     'access arguments' => array('access administration pages'),
 
-     'type' => MENU_LOCAL_TASK,
 
-     'file' => 'htmlmail.admin.inc',
 
-   );
 
-   return $items;
 
- }
 
- /**
 
-  * Implements hook_theme().
 
-  *
 
-  * Auto-detects htmlmail template files in the selected theme and in the
 
-  * htmlmail module directory.
 
-  */
 
- function htmlmail_theme() {
 
-   $items = array();
 
-   $module_path = drupal_get_path('module', 'htmlmail');
 
-   $pattern = '/^htmlmail.*\.tpl\.php$/';
 
-   $files = file_scan_directory($module_path, $pattern, array('key' => 'name'));
 
-   if ($theme = htmlmail_get_selected_theme()) {
 
-     $theme_path = drupal_get_path('theme', $theme);
 
-     $files = array_merge($files,
 
-       file_scan_directory($theme_path, $pattern, array('key' => 'name'))
 
-     );
 
-   }
 
-   else {
 
-     $theme_path = $module_path;
 
-   }
 
-   ksort($files);
 
-   foreach ($files as $file) {
 
-     $path = dirname($file->uri);
 
-     $template = substr($file->name, 0, -4);
 
-     $suggestion = str_replace('--', '__', $template);
 
-     $items[$suggestion] = array(
 
-       'variables' => array('message' => array()),
 
-       'template' => $template,
 
-       'path' => $path,
 
-       'theme path' => $theme_path,
 
-     );
 
-   }
 
-   return $items;
 
- }
 
- /**
 
-  * Process variables to format email messages.
 
-  *
 
-  * @see htmlmail.tpl.php
 
-  */
 
- function template_preprocess_htmlmail(array &$variables) {
 
-   $variables['debug'] = variable_get('htmlmail_debug', '0');
 
-   $variables['theme'] = htmlmail_get_selected_theme($variables);
 
-   $variables['module_path'] = drupal_get_path('module', 'htmlmail');
 
-   if (empty($variables['theme'])) {
 
-     $variables['theme'] = 'no theme';
 
-     $variables['theme_path'] = $variables['module_path'];
 
-   }
 
-   else {
 
-     $variables['theme_path'] = drupal_get_path('theme', $variables['theme']);
 
-   }
 
-   $variables['theme_url'] = url(
 
-     $variables['theme_path'], array('absolute' => TRUE)
 
-   );
 
-   $variables['message_id'] = $variables['module'] . '_' . $variables['key'];
 
-   $suggestion = 'htmlmail__' . $variables['module'];
 
-   $variables['theme_hook_suggestions'][] = $suggestion;
 
-   $suggestion .= '__' . $variables['key'];
 
-   $variables['theme_hook_suggestions'][] = $suggestion;
 
- }
 
- /**
 
-  * Implements hook_mail().
 
-  */
 
- function htmlmail_mail($key, &$message, $params) {
 
-   $message['module'] = 'htmlmail';
 
-   $message['key'] = $key;
 
-   $message['subject'] = $params['subject'];
 
-   $message['body'] = explode(
 
-     MAIL_LINE_ENDINGS . MAIL_LINE_ENDINGS,
 
-     $params['body']
 
-   );
 
-   return $message;
 
- }
 
- /**
 
-  * Implements hook_form_FORM_ID_alter().
 
-  */
 
- function htmlmail_form_user_profile_form_alter(&$form, &$form_state) {
 
-   if ($form['#user_category'] != 'account') {
 
-     return;
 
-   }
 
-   if (!(user_access('choose htmlmail_plaintext') || user_access('administer users'))) {
 
-     return;
 
-   }
 
-   $account = $form['#user'];
 
-   $mail = $form['account']['mail'];
 
-   $form['account']['mail'] = array(
 
-     'mail' => $mail,
 
-     'htmlmail_plaintext' => array(
 
-       '#type' => 'checkbox',
 
-       '#title' => t('Plaintext-only emails'),
 
-       '#default_value' => empty($account->data['htmlmail_plaintext']) ? 0 : 1,
 
-       '#description' => t('The %htmlmail module can send emails with fonts, styles, and other HTML formatting.  If you prefer to receive all your emails in unformatted plain text, select this option.',
 
-         array('%htmlmail' => 'HTML Mail')
 
-       ),
 
-     ),
 
-   );
 
- }
 
- /**
 
-  * Implements hook_user_presave().
 
-  */
 
- function htmlmail_user_presave(&$edit, $account, $category) {
 
-   if (user_access('choose htmlmail_plaintext') || user_access('administer users')) {
 
-     $edit['data']['htmlmail_plaintext'] = empty($edit['htmlmail_plaintext']) ? 0 : 1;
 
-     unset($edit['htmlmail_plaintext']);
 
-   }
 
- }
 
- /**
 
-  * Returns an associative array of allowed themes.  The keys are the
 
-  * machine-readable names and the values are the .info file names.
 
-  * Based on code from the og_theme module.
 
-  */
 
- function &htmlmail_get_allowed_themes() {
 
-   $allowed = &drupal_static(__FUNCTION__);
 
-   if (!isset($allowed)) {
 
-     $allowed = array('' => t('No theme'));
 
-     $themes = list_themes();
 
-     module_load_include('inc', 'system', 'system.admin');
 
-     uasort($themes, 'system_sort_modules_by_info_name');
 
-     foreach ($themes as $key => $value) {
 
-       if ($value->status) {
 
-         $allowed[$key] = check_plain($value->info['name']);
 
-       }
 
-     }
 
-   }
 
-   return $allowed;
 
- }
 
- /**
 
-  * Returns the selected theme to use for outgoing emails.
 
-  */
 
- function htmlmail_get_selected_theme(&$message = array()) {
 
-   $selected = isset($message['theme'])
 
-     ? $message['theme'] : variable_get('htmlmail_theme', '');
 
-   if ($selected) {
 
-     // Make sure the selected theme is allowed.
 
-     $themes = &htmlmail_get_allowed_themes();
 
-     if (empty($themes[$selected])) {
 
-       $selected = '';
 
-     }
 
-   }
 
-   return $selected;
 
- }
 
- /**
 
-  * Checks whether a given recipient email prefers plaintext-only messages.
 
-  *
 
-  * @param $email
 
-  *   The recipient email address.
 
-  *
 
-  * @return
 
-  *   FALSE if the recipient prefers plaintext-only messages; otherwise TRUE.
 
-  */
 
- function htmlmail_is_allowed($email) {
 
-   return !($recipient = user_load_by_mail($email))
 
-     || empty($recipient->data['htmlmail_plaintext']);
 
- }
 
 
  |