handle empty companies
[Pman.Core] / DataObjects / Core_email.php
index 4c547d6..03b9072 100644 (file)
@@ -61,6 +61,11 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
                     bcc_group_id = {$cgm}.group_id
             )  AS bcc_group_member_count
         ");
+       
+       if (!empty($_REQUEST['_hide_system_emails'])) {
+           $this->whereAddIn("!{$this->tableName()}.name", array('EVENT_ERRORS_REPORT'), 'string');
+       }
+       
     }
     
     function beforeDelete($dependants_array, $roo)
@@ -87,17 +92,9 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
             $c = DB_DataObject::factory('core_group_member');            
             $c->group_id = $this->to_group_id;
                         
-            if (!$c->count()) {
-                //cannot go to second check
-                if (!empty($request['_ignore_group_count'])) {
-                    if (!$request['_ignore_group_count']) {
-                        $roo->jerr('no_member',array('errcode'=> 100));
-                    }
-                } else {
-                    $roo->jerr('no_member',array('errcode'=> 100));
-                }
+            if (!$c->count() && empty($request['_ignore_group_count'])) {
+                $roo->jerr('Failed to create email template - No member found in recieptent group',array('errcode'=> 100));
             }
-            
         }
     }
     
@@ -263,6 +260,10 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
             if (!$replace_links) {
                 continue;
             }
+           if (empty($cfg)) {
+               continue;
+           }
+           // not available if server_baseurl not set... and crm module not used.
             $link = DB_DataObject::factory('crm_mailing_list_link');
             $link->setFrom(array(
                 'url' => $href
@@ -282,7 +283,7 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
             
         }
         
-        if(!empty($unsubscribe)){
+        if(!empty($unsubscribe) && !empty($cfg)){
             $element = $doc->createElement('img');
             $element->setAttribute('mailembed', 'no');
             $element->setAttribute('src', $cfg ['server_baseurl']  . '/Crm/Open/' . $this->id . '/{person.id}.html');
@@ -360,10 +361,12 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
         
         // fill in BCC
         
-        if (!empty($this->bcc_group_id) && empty($contents['rcpts_group'])) {
-            $admin = DB_DAtaObject::Factory('core_group')->lookupMembersByGroupId($this->bcc_group_id,'email');
+        if (!empty($this->bcc_group_id) && $this->bcc_group_id > 0 && empty($contents['bcc']) && empty($contents['rcpts_group'])) {
+            $admin_grp = DB_DAtaObject::Factory('core_group')->load($this->bcc_group_id);
+           
+           $admin = $admin_grp ?  $admin_grp->members('email') : false;
             
-            if (empty($admin)) {
+            if (empty($admin) && $admin_grp->name != 'Empty Group') { // allow 'empty group mname'
                 return $p->raiseError("template [{$contents['template']}] - bcc group is empty");
             }
             
@@ -383,10 +386,20 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
         if(empty($contents['subject'])){
            $contents['subject'] = $this->subject; 
         }
-
+        
         if (!empty($contents['subject_replace'])) {
-            foreach ($contents['mapping'] as $pattern => $replace) {
-                $contents['subject'] = preg_replace($pattern,$replace,$contents['subject']);
+            
+            // do not use the mapping 
+            if (isset($contents['mapping'])) {
+                foreach ($contents['mapping'] as $pattern => $replace) {
+                    $contents['subject'] = preg_replace($pattern,$replace,$contents['subject']);
+                }
+            }
+            
+            foreach ($contents as $k => $v) {
+                if (is_string($v)) {
+                    $contents['subject'] = str_replace('{'. $k . '}', $v, $contents['subject']);
+                }
             }
         }
         
@@ -403,11 +416,8 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
         }
          
         require_once 'Pman/Core/Mailer.php';
-              
         
         $templateDir = session_save_path() . '/email-cache-' . $ui['name'] ;
-        //print_r($this);
-        
         
         $cfg = array(
             'template'=> $this->tableName() . '-' . $this->id,
@@ -476,7 +486,6 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
         $r = $this->toMailer($obj, $force);
         
         if (is_a($r, 'PEAR_Error')) {
-            print_r('test');exit;
             return $r;
         }
         
@@ -658,7 +667,7 @@ Content-Transfer-Encoding: 7bit
         if (!empty($master)) {
             $opts['master'] = $mail_template_dir . $master .'.html';
         }
-        print_r($opts);
+        //print_r($opts);
         require_once 'Pman/Core/Import/Core_email.php';
         $x = new Pman_Core_Import_Core_email();
         $x->get('', $opts);