Procházet zdrojové kódy

Added SwiftMailerHandler, added write to MailHandler

Gyula Sallai před 14 roky
rodič
revize
a1bc483041

+ 17 - 7
src/Monolog/Handler/MailHandler.php

@@ -75,6 +75,23 @@ abstract class MailHandler extends AbstractHandler
     {
         return $this->messageFormat;
     }
+        
+    /**
+     * Send a mail with the given content
+     * 
+     * @param string $content
+     */
+    abstract protected function send($content); 
+    
+    /**
+     * {@inheritdoc}
+     */
+    protected function write(array $record)
+    {
+        $content = $record['message'];
+        
+        $this->send($content);
+    }
     
     /**
      * Create a message to send from the given log entry messages
@@ -129,11 +146,4 @@ abstract class MailHandler extends AbstractHandler
         return 'Application logs:\n %records%';
     }
     
-    /**
-     * Send a mail with the given message
-     * 
-     * @param string $message
-     */
-    abstract protected function send($message); 
-
 }

+ 47 - 0
src/Monolog/Handler/SwiftMailerHandler.php

@@ -0,0 +1,47 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+/**
+ * SwiftMailerHandler uses Swift_Mailer to send the emails
+ * 
+ * @author Gyula Sallai
+ */
+class SwiftMailerHandler extends MailHandler
+{
+    
+    protected $mailer;
+    protected $message;
+    
+    /**
+     * @param \Swift_Mailer $mailer The mailer to use
+     * @param \Swift_Message $message An example message for real messages,
+     *                                only the body will be replaced
+     */
+    public function __construct(\Swift_Mailer $mailer, \Swift_Message $message)
+    {
+        $this->mailer  = $mailer;
+        $this->message = $message;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function send($content)
+    {
+        $message = clone $this->message;
+        $message->setBody($content);
+        
+        $this->mailer->send($message);
+    }
+    
+}

+ 11 - 2
tests/Monolog/Handler/MailHandlerTest.php

@@ -1,5 +1,14 @@
 <?php
 
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
 namespace Monolog\Handler;
 
 use Monolog\Logger;
@@ -34,9 +43,9 @@ class MailHandlerTest extends TestCase
         
         $handler = $this->getMockForAbstractClass('Monolog\\Handler\\MailHandler');
         $handler->expects($this->once())
-            ->method('write');
+            ->method('send');
             
-        $this->assertTrue($handler->handle($record));
+        $handler->handle($record);
     }
     
 }