summaryrefslogtreecommitdiff
path: root/kolab.org/www/drupal-7.15/sites/all/modules/devel/devel.mail.inc
diff options
context:
space:
mode:
Diffstat (limited to 'kolab.org/www/drupal-7.15/sites/all/modules/devel/devel.mail.inc')
-rw-r--r--kolab.org/www/drupal-7.15/sites/all/modules/devel/devel.mail.inc79
1 files changed, 79 insertions, 0 deletions
diff --git a/kolab.org/www/drupal-7.15/sites/all/modules/devel/devel.mail.inc b/kolab.org/www/drupal-7.15/sites/all/modules/devel/devel.mail.inc
new file mode 100644
index 0000000..4d3a721
--- /dev/null
+++ b/kolab.org/www/drupal-7.15/sites/all/modules/devel/devel.mail.inc
@@ -0,0 +1,79 @@
+<?php
+/**
+ * @file
+ * MailSystemInterface for logging mails to the filesystem.
+ *
+ * To enable, save a variable in settings.php (or otherwise) whose value
+ * can be as simple as:
+ *
+ * $conf['mail_system'] = array(
+ * 'default-system' => 'DevelMailLog',
+ *);
+ *
+ * Saves to temporary://devel-mails dir by default. Can be changed using
+ * 'devel_debug_mail_directory' variable. Filename pattern controlled by
+ * 'devel_debug_mail_file_format' variable.
+ *
+ */
+
+class DevelMailLog extends DefaultMailSystem {
+
+ public function composeMessage($message) {
+ $mimeheaders = array();
+ $message['headers']['To'] = $message['to'];
+ foreach ($message['headers'] as $name => $value) {
+ $mimeheaders[] = $name . ': ' . mime_header_encode($value);
+ }
+
+ $line_endings = variable_get('mail_line_endings', MAIL_LINE_ENDINGS);
+ $output = join($line_endings, $mimeheaders) . $line_endings;
+ $output .= $message['subject'] . $line_endings;
+ $output .= preg_replace('@\r?\n@', $line_endings, $message['body']);
+ return $output;
+ }
+
+ public function getFileName($message) {
+ $output_directory = $this->getOutputDirectory();
+ $this->makeOutputDirectory($output_directory);
+
+ $output_file_format = variable_get('devel_debug_mail_file_format', '%to-%subject-%datetime.mail.txt');
+ $tokens = array(
+ '%to' => $message['to'],
+ '%subject' => $message['subject'],
+ '%datetime' => date('y-m-d_his'),
+ );
+ return $output_directory . '/' . $this->dirify(str_replace(array_keys($tokens), array_values($tokens), $output_file_format));
+ }
+
+ private function dirify($string) {
+ return preg_replace('/[^a-zA-Z0-9_\-\.@]/', '_', $string);
+ }
+ /**
+ * Save an e-mail message to a file, using Drupal variables and default settings.
+ *
+ * @see http://php.net/manual/en/function.mail.php
+ * @see drupal_mail()
+ *
+ * @param $message
+ * A message array, as described in hook_mail_alter().
+ * @return
+ * TRUE if the mail was successfully accepted, otherwise FALSE.
+ */
+ public function mail(array $message) {
+ $output = $this->composeMessage($message);
+ $output_file = $this->getFileName($message);
+
+ return file_put_contents($output_file, $output);
+ }
+
+ protected function makeOutputDirectory($output_directory) {
+ if (!file_prepare_directory($output_directory, FILE_CREATE_DIRECTORY)) {
+ throw new Exception("Unable to continue sending mail, $output_directory is not writable");
+ }
+ }
+
+ public function getOutputDirectory() {
+ return variable_get('devel_debug_mail_directory', 'temporary://devel-mails');
+ }
+}
+?>