DataObjects/Core_company.php
[Pman.Core] / DataObjects / Core_email.php
index 5005d1c..78f2146 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Table Definition for core_email
  */
-require_once 'DB/DataObject.php';
+class_exists('DB_DataObject') ? '' : require_once 'DB/DataObject.php';
 
 class Pman_Core_DataObjects_Core_email extends DB_DataObject 
 {
@@ -288,6 +288,7 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
      * @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...
+     *    + rcpts_group (string) << name of group - normally to send admin emails.. (if set, then bcc_group is ignored.)
      *    + replace_links
      *    + template
      *    + mailer_opts
@@ -295,23 +296,47 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
      *    
      * @param bool $force - force re-creation of cached version of email.
      *
-     * @returns Pman_Core_Mailer
+     * @returns Pman_Core_Mailer||PEAR_Error
      */
     
     function toMailer($obj,$force=false)
     {
-        
+        $p = new PEAR();
         $contents = (array)$obj;
 
+         
         if(empty($this->id) && !empty($contents['template'])){
             $this->get('name', $contents['template']);
         }
         
+        if(empty($this->active)){
+            return $p->raiseError("template [{$contents['template']}] is Disabled");
+        }
+        
         if(empty($this->id)){
-            $p = new PEAR();
             return $p->raiseError("template [{$contents['template']}] has not been set");
         }
         
+        // fill in BCC
+        if (!empty($this->bcc_group) && empty($contents['rcpts_group'])) {
+            $admin = DB_DAtaObject::Factory('core_group')->lookupMembersByGroupId($this->bcc_group,'email');
+            
+            if (empty($admin)) {
+                return $p->raiseError("template [{$contents['template']}] - bcc group is empty");
+            }
+            
+            $contents['bcc'] = $admin ;
+        }
+        if (!empty($contents['rcpts_group'])) {
+            
+            $admin = DB_DAtaObject::Factory('core_group')->lookupMembers($contents['rcpts_group'],'email');
+            
+            if (empty($admin)) {
+                return $p->raiseError("Trying to send to {$contents['rcpts_group']} - group is empty");
+            }
+            $contents['rcpts'] = $admin;
+        }
+        
         if(empty($contents['subject'])){
            $contents['subject'] = $this->subject; 
         }
@@ -412,7 +437,7 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
         fwrite($fh, implode("\n", array(
             "From: {if:t.messageFrom}{t.messageFrom:h}{else:}{t.messageFrom():h}{end:}",
             "To: {if:t.person}{t.person.getEmailFrom():h}{else:}{rcpts:h}{end:}",
-            "Subject: {t.subject} ",
+            "Subject: {t.subject:h} ",
             "X-Message-ID: {t.id} ",
             "{if:t.replyTo}Reply-To: {t.replyTo:h}{end:}",
             "{if:t.mailgunVariables}X-Mailgun-Variables: {t.mailgunVariables:h}{end:}"