]> source.dussan.org Git - nextcloud-server.git/commitdiff
use template for txt and html mails to send notification mails
authorBjoern Schiessle <schiessle@owncloud.com>
Wed, 25 Sep 2013 09:51:28 +0000 (11:51 +0200)
committerBjoern Schiessle <schiessle@owncloud.com>
Wed, 25 Sep 2013 09:51:28 +0000 (11:51 +0200)
core/ajax/share.php
core/templates/altmail.php
core/templates/mail.php
lib/defaults.php
lib/public/defaults.php

index 8f5432a0fcb63c61bd372797885e39c388d694e6..293e140d1d5c4251775c3ff42679a2b4fbb1717e 100644 (file)
@@ -91,8 +91,8 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
                        $itemType = $_POST['itemType'];
                        $itemSource = $_POST['itemSource'];
                        $recipient = $_POST['recipient'];
+                       $ownerDisplayName = \OCP\User::getDisplayName();
                        $from = \OCP\Util::getDefaultEmailAddress('sharing-noreply');
-                       $subject = $defaults->getShareNotificationSubject($itemType);
 
                        $noMail = array();
                        $recipientList = array();
@@ -115,6 +115,7 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
                                        $displayName = \OCP\User::getDisplayName($recipient);
                                        $items = \OCP\Share::getItemSharedWithUser($itemType, $itemSource, $recipient);
                                        $filename = trim($items[0]['file_target'], '/');
+                                       $subject = $defaults->getShareNotificationSubject($ownerDisplayName, $filename);
                                        $expiration = null;
                                        if (isset($items[0]['expiration'])) {
                                                $expiration = $items[0]['expiration'];
@@ -128,29 +129,31 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
                                                $foldername = "/Shared";
                                        }
 
-                                       $url = \OCP\Util::linkToAbsolute('files', 'index.php', array("dir" => $foldername));
-                                       $text = $defaults->getShareNotificationText(
-                                                               \OCP\User::getDisplayName(),
-                                                               $filename,
-                                                               $itemType,
-                                                               $url,
-                                                               $expiration
-                                                       );
+                                       $link = \OCP\Util::linkToAbsolute('files', 'index.php', array("dir" => $foldername));
+
+                                       $content = new OC_Template("core", "mail", "");
+                                       $content->assign('link', $link);
+                                       $content->assign('user_displayname', $ownerDisplayName);
+                                       $content->assign('filename', $filename);
+                                       $content->assign('expiration', $expiration);
+                                       $text = $content->fetchPage();
+
+                                       $content = new OC_Template("core", "altmail", "");
+                                       $content->assign('link', $link);
+                                       $content->assign('user_displayname', $ownerDisplayName);
+                                       $content->assign('filename', $filename);
+                                       $content->assign('expiration', $expiration);
+                                       $alttext = $content->fetchPage();
 
+                                       $default_from = OCP\Util::getDefaultEmailAddress('sharing-noreply');
+                                       $from = OCP\Config::getUserValue(\OCP\User::getUser(), 'settings', 'email', $default_from);
+
+                                       // send it out now
                                        try {
-                                               OCP\Util::sendMail(
-                                                               $email,
-                                                               $displayName,
-                                                               $subject,
-                                                               $text,
-                                                               $from,
-                                                               \OCP\User::getDisplayName()
-                                               );
+                                               OCP\Util::sendMail($email, $displayName, $subject, $text, $from, $ownerDisplayName, 1, $alttext);
                                        } catch (Exception $exception) {
                                                $noMail[] = \OCP\User::getDisplayName($recipient);
                                        }
-                               } else {
-                                       $noMail[] = \OCP\User::getDisplayName($recipient);
                                }
                        }
 
index 2551473c6f0939364d95f3739201709281b08a41..f7159a021a8cf811149f989d3e49c98e741e878d 100644 (file)
@@ -1,7 +1,7 @@
 <?php
-print_unescaped($l->t("Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!", array($_['user_displayname'], $_['filename'], $_['link'])));
+$expiration = isset($_['expiration']) ? $_['expiration'] : null;
+print_unescaped($theme->getShareNotificationTextAlt($_['user_displayname'], $_['filename'], $_['link'], $expiration));
 ?>
 
 --
-<?php p($theme->getName() . ' - ' . $theme->getSlogan()); ?>
-<?php print_unescaped("\n".$theme->getBaseUrl());
+<?php print_unescaped($theme->getMailFooterAlt());
index de72b136b135149a73b09bf04b7dbb2b55b12cc4..5570e4caabe0b1e3431a55b18286f5fabb9d6b85 100644 (file)
@@ -12,7 +12,8 @@
 <td bgcolor="#f8f8f8" width="20px">&nbsp;</td>
 <td bgcolor="#f8f8f8" style="font-weight:normal; font-size:0.8em; line-height:1.2em; font-family:verdana,'arial',sans;">
 <?php
-print_unescaped($l->t('Hey there,<br><br>just letting you know that %s shared »%s« with you.<br><a href="%s">View it!</a><br><br>Cheers!', array($_['user_displayname'], $_['filename'], $_['link'])));
+$expiration = isset($_['expiration']) ? $_['expiration'] : null;
+print_unescaped($theme->getShareNotificationTextHtml($_['user_displayname'], $_['filename'], $_['link'], $expiration));
 ?>
 </td>
 </tr>
@@ -20,9 +21,8 @@ print_unescaped($l->t('Hey there,<br><br>just letting you know that %s shared »
 <tr>
 <td bgcolor="#f8f8f8" width="20px">&nbsp;</td>
 <td bgcolor="#f8f8f8" style="font-weight:normal; font-size:0.8em; line-height:1.2em; font-family:verdana,'arial',sans;">--<br>
-<?php p($theme->getName()); ?> -
-<?php p($theme->getSlogan()); ?>
-<br><a href="<?php print_unescaped($theme->getBaseUrl()); ?>"><?php print_unescaped($theme->getBaseUrl());?></a></td>
+<?php print_unescaped($theme->getMailFooterHtml()); ?>
+</td>
 </tr>
 <tr>
 <td bgcolor="#f8f8f8" colspan="2">&nbsp;</td>
index efb6c2c7b327eb5f4749462502d70ffb7501acfa..eb531d1e05236ef6fedbc650dd0ef5ee038f766f 100644 (file)
@@ -49,38 +49,92 @@ class OC_Defaults {
        }
 
        /**
-        *
-        * @param string $itemType typically "file" or "folder"
+        * @brief subject for share notification mail
+        * @param string $user user who shared the item
+        * @pram string $itemName name of the item
         */
-       public function getShareNotificationSubject($itemType) {
+       public function getShareNotificationSubject($user, $itemName) {
                if ($this->themeExist('getShareNotificationSubject')) {
-                       return $this->theme->getShareNotificationSubject($itemType);
+                       return $this->theme->getShareNotificationSubject($user, $itemName);
                } else {
-                       return $this->l->t("A %s was shared with you", array($itemType));
+                       return $this->l->t("%s shared »%s« with you", array($user, $itemName));
                }
        }
 
        /**
+        * @brief mail body for share notification mail (text only)
         * @param string $sender owner of the file/folder
         * @param string $itemName name of the file/folder
-        * @param string $itemType typically "file" or "folder"
         * @param string $link link directly to the file/folder in your ownCloud
         * @param string $expiration expiration date
         */
-       public function getShareNotificationText($sender, $itemName, $itemType, $link, $expiration=null) {
-               if ($this->themeExist('getShareNotificationText')) {
-                       return $this->theme->getShareNotificationText($sender, $itemName, $itemType, $link, $expiration);
+       public function getShareNotificationTextHtml($sender, $itemName, $link, $expiration=null) {
+               if ($this->themeExist('getShareNotificationTextHtml')) {
+                       return $this->theme->getShareNotificationTextHtml($sender, $itemName, $link, $expiration);
                } else {
+
+                       $message = $this->l->t('Hey there,<br><br>just letting you know that %s shared »%s« with you.'.
+                                       '<br><a href="%s">View it!</a>', array($sender, $itemName, $link));
+
+                       if ($expiration) {
+                               $message .= '<br><br>';
+                               $message .= $this->l->t("The share will expire at %s.", array($expiration));
+                       }
+
+                       $message .= '<br><br>';
+                       $message .= $this->l->t('Cheers!');
+
+                       return $message;
+               }
+       }
+
+       /**
+        * @brief mail body for share notification mail (text only)
+        * @param string $sender owner of the file/folder
+        * @param string $itemName name of the file/folder
+        * @param string $link link directly to the file/folder in your ownCloud
+        * @param string $expiration expiration date
+        */
+       public function getShareNotificationTextAlt($sender, $itemName, $link, $expiration=null) {
+               if ($this->themeExist('getShareNotificationTextAlt')) {
+                       return $this->theme->getShareNotificationTextAlt($sender, $itemName, $link, $expiration);
+               } else {
+
+                       $message = $this->l->t("Hey there,\n\njust letting you know that %s shared %s with you.\n".
+                                       "View it: %s", array($sender, $itemName, $link));
+
                        if ($expiration) {
-                               return $this->l->t("%s shared a %s called %s with you. " .
-                                               "The share will expire at %s. ".
-                                               "You can find the %s here: %s",
-                                               array($sender, $itemType, $itemName, $expiration, $itemType, $link));
-                       } else {
-                               return $this->l->t("%s shared a %s called %s with you. ".
-                                               "You can find the %s here: %s",
-                                               array($sender, $itemType, $itemName, $itemType, $link));
+                               $message .= "\n\n";
+                               $message .= $this->l->t("The share will expire at %s.", array($expiration));
                        }
+
+                       $message .= "\n\n";
+                       $message .= $this->l->t('Cheers!');
+
+                       return $message;
+               }
+       }
+
+       public function getMailFooterHtml() {
+               if ($this->themeExist('getMailFooterHtml')) {
+                       return $this->theme->getMailFooterHtml();
+               } else {
+                       $footer = $this->getName() . ' - ' . $this->getSlogan() .
+                                       '<br>' .
+                                       '<a href="'. $this->getBaseUrl() .'">'.$this->getBaseUrl().'</a>';
+
+                       return $footer;
+               }
+       }
+
+               public function getMailFooterAlt() {
+               if ($this->themeExist('getMailFooterAlt')) {
+                       return $this->theme->getMailFooterAlt();
+               } else {
+                       $footer = $this->getName() . ' - ' . $this->getSlogan() .
+                                       "\n" . $this->getBaseUrl();
+
+                       return $footer;
                }
        }
 
index 573831e8eae0d410bd90abe302b38f6dd799441f..10bd07bab54cbeb156588806e7a2b2183430b465 100644 (file)
@@ -35,23 +35,48 @@ class Defaults {
        }
 
        /**
-        * @brief subject for notification mails if a new file was shared
-        * @param string $itemType typically "file" or "folder"
+        * @brief subject for share notification mail
+        * @param string $user user who shared the item
+        * @pram string $itemName name of the item
         */
-       public function getShareNotificationSubject($itemType = "file") {
-               return $this->defaults->getShareNotificationSubject($itemType);
+       public function getShareNotificationSubject($user, $itemName) {
+               return $this->defaults->getShareNotificationSubject($user, $itemName);
        }
 
        /**
-        * @brief mail body for notification mails if a new file was shared
+        * @brief mail body for share notification mail (text only)
         * @param string $sender owner of the file/folder
         * @param string $itemName name of the file/folder
-        * @param string $itemType typically "file" or "folder"
         * @param string $link link directly to the file/folder in your ownCloud
         * @param string $expiration expiration date
         */
-       public function getShareNotificationText($sender, $itemName, $itemType, $link, $expiration) {
-               return $this->defaults->getShareNotificationText($sender, $itemName, $itemType, $link, $expiration);
+       public function getShareNotificationTextAlt($sender, $itemName, $link, $expiration) {
+               return $this->defaults->getShareNotificationTextAlt($sender, $itemName, $link, $expiration);
+       }
+
+       /**
+        * @brief mail body for share notification mail (HTML mail)
+        * @param string $sender owner of the file/folder
+        * @param string $itemName name of the file/folder
+        * @param string $link link directly to the file/folder in your ownCloud
+        * @param string $expiration expiration date
+        */
+       public function getShareNotificationTextHtml($sender, $itemName, $link, $expiration) {
+               return $this->defaults->getShareNotificationTextHtml($sender, $itemName, $link, $expiration);
+       }
+
+       /**
+        * @brief return footer for mails (HTML mail)
+        */
+       public function getMailFooterHtml() {
+               return $this->defaults->getMailFooterHtml();
+       }
+
+               /**
+        * @brief return footer for mails (text only)
+        */
+       public function getMailFooterAlt() {
+               return $this->defaults->getMailFooterAlt();
        }
 
        /**