DataObjects/Core_notify_recur.php
[Pman.Core] / DataObjects / Core_email.php
index 86a02c8..a026695 100644 (file)
@@ -188,18 +188,22 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
         
         foreach ($xpath->query('//img[@src]') as $img) { // process images!
             $href = $img->getAttribute('src');
-            $cid = explode('#', $href);
-            if(isset($cid[1])){
-                $img->setAttribute('src', 'cid:' . $cid[1]);
+            $hash = explode('#', $href);
+            // we name all our cid's as attachment-*
+            // however the src url may be #image-*
+            
+            
+            if(!isset($hash[1])){
+                continue;
+            }
+            $cid = explode('-', $hash[1]);
+            if(!empty($cid[1])){
+                $img->setAttribute('src', 'cid:attachment-' . $cid[1]);
             }
         }
         
-        $unsubscribe = false;
+        $unsubscribe = $this->unsubscribe_url();
         
-        if(!empty($cfg)){
-            $unsubscribe = $cfg ['server_baseurl'] . '/Crm/Unsubscribe/' . $this->id . '/{person.id}';
-        }
-       
         foreach ($xpath->query('//a[@href]') as $a) { 
             
             $href = $a->getAttribute('href');
@@ -236,7 +240,7 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
         
         if(!empty($unsubscribe)){
             $element = $doc->createElement('img');
-        
+            $element->setAttribute('mailembed', 'no');
             $element->setAttribute('src', $cfg ['server_baseurl']  . '/Crm/Open/' . $this->id . '/{person.id}.html');
             $element->setAttribute('width', '1');
             $element->setAttribute('height', '1');
@@ -259,31 +263,41 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
          
         return;
     }
+    
+    function unsubscribe_url()
+    {
+        $unsubscribe = false;
+        
+        $cfg = isset(HTML_FlexyFramework::get()->Pman_Crm) ? HTML_FlexyFramework::get()->Pman_Crm : false;
+        
+        if(!empty($cfg)){
+            $unsubscribe = $cfg ['server_baseurl'] . '/Crm/Unsubscribe/' . $this->id . '/{person.id}';
+        }
+        
+        return $unsubscribe;
+    }
+    
     /**
+     * convert email with contents into a core mailer object. - ready to send..
+     * @param Object|Array $obj Object (or array) to send @see Pman_Core_Mailer
+     *    + subject
+     *    + rcpts || person   << if person is set - then it goes to them...
+     *    + replace_links
+     *    + template
+     *    + mailer_opts
+     *    + person << who it actually goes to..
+     *    
+     * @param bool $force - force re-creation of cached version of email.
      *
-     * Usage:
-     * $this->rcpts = array('sales@roojs.com');
-     * // or 
-     * $this->rcpts = "Tester <sales@roojs.com>";
-     *
-     * 
-     * // then send it..
-     * $x = DB_DataObject::factory('core_enum');
-     * $x->get('name', 'NAME OF TEMPLATE');
-     * $x->send(array(
-     *      'rcpts' => "Tester <sales@roojs.com>",
-     *      'page' => $this
-     *       'link' => 'http://......'
-       );
-     * // on the template use {link:h} to render the link
-     *
-     *
+     * @returns Pman_Core_Mailer
      */
-    function send($obj, $force = true, $send = true)
-    {   
+    
+    function toMailer($obj,$force=false)
+    {
+        
         $contents = (array)$obj;
 
-        if(empty($this->id)){
+        if(empty($this->id) && !empty($contents['template'])){
             $this->get('name', $contents['template']);
         }
         
@@ -291,6 +305,7 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
             $p = new PEAR();
             return $p->raiseError("template [{$contents['template']}] has not been set");
         }
+        
         if(empty($contents['subject'])){
            $contents['subject'] = $this->subject; 
         }
@@ -311,15 +326,22 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
         
         $templateDir = session_save_path() . '/email-cache-' . $ui['name'] ;
         //print_r($this);
+        
+        
         $cfg = array(
             'template'=> $this->tableName() . '-' . $this->id,
             'templateDir' => $templateDir,
             'page' => $this,
-            'contents' => $contents
+            'contents' => $contents,
+            'css_embed' => true, // we should always try and do this with emails...
         );
         if (isset($contents['rcpts'])) {
             $cfg['rcpts'] = $contents['rcpts'];
         }
+        if (isset($contents['mailer_opts']) && is_array($contents['mailer_opts'])) {
+            $cfg = array_merge($contents['mailer_opts'], $cfg);
+        }
+        
         
         $r = new Pman_Core_Mailer($cfg);
         
@@ -330,11 +352,27 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
             $r->images = $images;
         }
         
-        $ret = $r->toData();
-        
-        if(!$send){
-            return $ret;
+        return $r;
+    }
+    function toMailerData($obj,$force=false)
+    {   
+        $r = $this->toMailer($obj, $force);
+        if (is_a($r, 'PEAR_Error')) {
+            return $r;
         }
+        return $r->toData();
+    }
+  
+    function send($obj, $force = true, $send = true)
+    {   
+        if (!$send) {
+            return $this->toMailerData($obj,$force);
+        }
+        $r = $this->toMailer($obj, $force);
+        if (is_a($r, 'PEAR_Error')) {
+            return $r;
+        }
+         
         
         return $r->send();
     }
@@ -366,7 +404,7 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
             "Subject: {t.subject} ",
             "X-Message-ID: {t.id} ",
             "{if:t.replyTo}Reply-To: {t.replyTo:h}{end:}",
-            "{if:t.mailgun-variables}X-Mailgun-Variables: {t.mailgun-variables:h}{end:}"
+            "{if:t.mailgunVariables}X-Mailgun-Variables: {t.mailgunVariables:h}{end:}"
         ))."\n");
         
         
@@ -424,7 +462,7 @@ Content-Transfer-Encoding: 7bit
                 continue;
             }
             
-            $images["attachment-$i->id"] = array(
+            $images["attachment-{$i->id}"] = array(
                 'file' => $i->getStoreName(),
                 'mimetype' => $i->mimetype,
                 'ext' => $y->toExt($i->mimetype),