summaryrefslogtreecommitdiff
path: root/modules/system
diff options
context:
space:
mode:
Diffstat (limited to 'modules/system')
-rw-r--r--modules/system/mail.sending.inc34
-rw-r--r--modules/system/system.api.php34
-rw-r--r--modules/system/system.module15
3 files changed, 73 insertions, 10 deletions
diff --git a/modules/system/mail.sending.inc b/modules/system/mail.sending.inc
index 6533de07d..96db60bb6 100644
--- a/modules/system/mail.sending.inc
+++ b/modules/system/mail.sending.inc
@@ -3,21 +3,40 @@
/**
* @file
- * Drupal core implementations of the DrupalMailSendingInterface.
+ * Drupal core implementations of MailSystemInterface.
*/
/**
- * The default Drupal mail sending library using PHP's mail function.
+ * The default Drupal mail backend using PHP's mail function.
*/
class DefaultMailSystem implements MailSystemInterface {
/**
+ * Concatenate and wrap the e-mail body for plain-text mails.
+ *
+ * @param $message
+ * A message array, as described in hook_mail_alter().
+ *
+ * @return
+ * The formatted $message.
+ */
+ public function format(array $message) {
+ // Join the body array into one string.
+ $message['body'] = implode("\n\n", $message['body']);
+ // Convert any HTML to plain-text.
+ $message['body'] = drupal_html_to_text($message['body']);
+ // Wrap the mail body for sending.
+ $message['body'] = drupal_wrap_mail($message['body']);
+ return $message;
+ }
+
+ /**
* Send an e-mail message, using Drupal variables and default settings.
- * @see http://php.net/manual/en/function.mail.php the PHP function reference
- * for mail().
- * @see drupal_mail() for information on how $message is composed.
+ *
+ * @see http://php.net/manual/en/function.mail.php
+ * @see drupal_mail()
*
* @param $message
- * Message array as described by DrupalMailSendingInterface.
+ * A message array, as described in hook_mail_alter().
* @return
* TRUE if the mail was successfully accepted, otherwise FALSE.
*/
@@ -44,8 +63,7 @@ class DefaultMailSystem implements MailSystemInterface {
*
* This class is for running tests or for development.
*/
-class TestingMailSystem implements MailSystemInterface {
-
+class TestingMailSystem extends DefaultMailSystem implements MailSystemInterface {
/**
* Accept an e-mail message and store it in a variable.
*
diff --git a/modules/system/system.api.php b/modules/system/system.api.php
index 1f4d1d394..d29a16035 100644
--- a/modules/system/system.api.php
+++ b/modules/system/system.api.php
@@ -12,6 +12,38 @@
*/
/**
+ * Defines one or more hooks that are exposed by a module.
+ *
+ * Normally hooks do not need to be explicitly defined. However, by declaring a
+ * hook explicitly, a module may define a "group" for it. Modules that implement
+ * a hook may then place their implementation in either $module.module or in
+ * $module.$group.inc. If the hook is located in $module.$group.inc, then that
+ * file will be automatically loaded when needed.
+ * In general, hooks that are rarely invoked and/or are very large should be
+ * placed in a separate include file, while hooks that are very short or very
+ * frequently called should be left in the main module file so that they are
+ * always available.
+ *
+ * @return
+ * An associative array whose keys are hook names and whose values are an
+ * associative array containing:
+ * - group: A string defining the group to which the hook belongs. The module
+ * system will determine whether a file with the name $module.$group.inc
+ * exists, and automatically load it when required.
+ *
+ * See system_hook_info() for all hook groups defined by Drupal core.
+ */
+function hook_hook_info() {
+ $hooks['token_info'] = array(
+ 'group' => 'tokens',
+ );
+ $hooks['tokens'] = array(
+ 'group' => 'tokens',
+ );
+ return $hooks;
+}
+
+/**
* Inform the base system and the Field API about one or more entity types.
*
* Inform the system about one or more entity types (i.e., object types that
@@ -700,7 +732,7 @@ function hook_image_toolkits() {
*
* Email messages sent using functions other than drupal_mail() will not
* invoke hook_mail_alter(). For example, a contributed module directly
- * calling the drupal_mail_sending_system()->mail() or PHP mail() function
+ * calling the drupal_mail_system()->mail() or PHP mail() function
* will not invoke this hook. All core modules use drupal_mail() for
* messaging, it is best practice but not manditory in contributed modules.
*
diff --git a/modules/system/system.module b/modules/system/system.module
index cb63659ec..cd35aa8ac 100644
--- a/modules/system/system.module
+++ b/modules/system/system.module
@@ -278,6 +278,19 @@ function system_rdf_namespaces() {
}
/**
+ * Implement hook_hook_info().
+ */
+function system_hook_info() {
+ $hooks['token_info'] = array(
+ 'group' => 'tokens',
+ );
+ $hooks['tokens'] = array(
+ 'group' => 'tokens',
+ );
+ return $hooks;
+}
+
+/**
* Implement hook_entity_info().
*/
function system_entity_info() {
@@ -2762,7 +2775,7 @@ function system_mail($key, &$message, $params) {
$body = token_replace($context['message'], $context);
$message['subject'] .= str_replace(array("\r", "\n"), '', $subject);
- $message['body'][] = drupal_html_to_text($body);
+ $message['body'][] = $body;
}
function system_message_action_form($context) {