Mailer.php
[Pman.Core] / Mailer.php
index cad8d35..700fd17 100644 (file)
@@ -86,6 +86,8 @@ class Pman_Core_Mailer {
       
     var $bcc = false;
     
+    var $body_cls = false;
+    
     function __construct($args) {
         foreach($args as $k=>$v) {
             // a bit trusting..
@@ -124,12 +126,8 @@ class Pman_Core_Mailer {
             $http_host  = $ff->Pman['HTTP_HOST'];
         }
         
-        
         $content->HTTP_HOST = $http_host;
         
-        
-        
-        
         // this should be done by having multiple template sources...!!!
         
         require_once 'HTML/Template/Flexy.php';
@@ -172,6 +170,11 @@ class Pman_Core_Mailer {
             
             // for the html body, we may want to convert the attachments to images.
 //            var_dump($htmlbody);exit;
+            
+            if($content->body_cls && strlen($content->body_cls)){
+                $htmlbody = $this->htmlbodySetClass($htmlbody, $content->body_cls);
+            }
+            
             if ($this->replaceImages) {
                 $htmlbody = $this->htmlbodytoCID($htmlbody);    
             }
@@ -180,7 +183,7 @@ class Pman_Core_Mailer {
                 $htmlbody = $this->htmlbodyCssEmbed($htmlbody);
             }
             
-            if ($this->css_inline) {
+            if ($this->css_inline && strlen($this->css_inline)) {
                 $htmlbody = $this->htmlbodyInlineCss($htmlbody);
             }
             
@@ -454,52 +457,56 @@ class Pman_Core_Mailer {
     }
     
     function htmlbodyInlineCss($html)
-    {
-        $ff = HTML_FlexyFramework::get();
+    {   
         $dom = new DOMDocument();
         
-        // this may raise parse errors as some html may be a component..
         @$dom->loadHTML('<?xml encoding="UTF-8">' .$html);
-        $links = $dom->getElementsByTagName('link');
-        $lc = array();
-        foreach ($links as $link) {  // duplicate as links is dynamic and we change it..!
-            $lc[] = $link;
-        }
-        //<link rel="stylesheet" type="text/css" href="{rootURL}/roojs1/css-mailer/mailer.css">
         
-        foreach ($lc as $i=>$link) {
-            //var_dump($link->getAttribute('href'));
-            
-            if ($link->getAttribute('rel') != 'stylesheet') {
-                continue;
-            }
-            $url  = $link->getAttribute('href');
-            $file = $ff->rootDir . $url;
-            
-            if (!preg_match('#^(http|https)://#', $url)) {
-                $file = $ff->rootDir . $url;
-
-                if (!file_exists($file)) {
-//                    echo $file;
-                    $link->setAttribute('href', 'missing:' . $file);
-                    continue;
-                }
-            } else {
-               $file = $this->mapurl($url);  
-            }
-            
-            $par = $link->parentNode;
-            $par->removeChild($link);
-            $s = $dom->createElement('style');
-            $e = $dom->createTextNode(file_get_contents($file));
-            $s->appendChild($e);
-            $par->appendChild($s);
-            
+        $html = $dom->getElementsByTagName('html');
+        $head = $dom->getElementsByTagName('head');
+        $body = $dom->getElementsByTagName('body');
+        
+        if(!$head->length){
+            $head = $dom->createElement('head');
+            $html->item(0)->insertBefore($head, $body->item(0));
+            $head = $dom->getElementsByTagName('head');
         }
+        
+        $s = $dom->createElement('style');
+        $e = $dom->createTextNode($this->css_inline);
+        $s->appendChild($e);
+        $head->item(0)->appendChild($s);
+        
         return $dom->saveHTML();
+        
+        /* Inline
+        require_once 'HTML/CSS/InlineStyle.php';
+        
+        $doc = new HTML_CSS_InlineStyle($html);
+        
+        $doc->applyStylesheet($this->css_inline);
+        
+        $html = $doc->getHTML();
+        
+        return $html;
+        */
     }
     
-    
+    function htmlbodySetClass($html, $cls)
+    {
+        print_R('run???');exit;
+        $dom = new DOMDocument();
+        
+        @$dom->loadHTML('<?xml encoding="UTF-8">' .$html);
+        
+        $body = $dom->getElementsByTagName('body');
+        
+        $class = $dom->createAttribute('class');
+        $class->value = $cls;
+        $body->item(0)->appendChild($class);
+        
+        return $dom->saveHTML();
+    }
     
     function fetchImage($url)
     {