DataObjects/Core_email.php
[Pman.Core] / DataObjects / Core_email.php
index c4c9fba..49a513c 100644 (file)
@@ -41,6 +41,18 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
                 $tn.subject LIKE '%{$this->escape($q['search']['nameortitle'])}%'
             ");
         }
+        
+        $this->selectAdd("
+           (
+            SELECT 
+                count(user_id) 
+            FROM 
+                core_group_member 
+            WHERE 
+                to_group_id = core_group_member.group_id
+            ) 
+            AS group_member_count
+        ");
     }
     
     function beforeDelete($dependants_array, $roo)
@@ -61,6 +73,16 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
             $this->makeCopy($roo);
             
         }
+        
+        if ($this->to_group != -1) {
+                  
+            $c = DB_DataObject::factory('core_group_member');            
+            $c->whereAdd("group_id = {$this->to_group}");
+                        
+            if ($c->count() && empty($request['_ignore_group_count'])) {
+                $roo->jerr('no_member',array('errcode'=> 100));
+            }
+        }
     }
     
     function makeCopy($roo)
@@ -305,20 +327,23 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
         
         $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)){
             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');
             
@@ -338,13 +363,20 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
             $contents['rcpts'] = $admin;
         }
         
+        //subject replacement
         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']);
+            }
+        }
         
         if(!empty($contents['rcpts']) && is_array($contents['rcpts'])){
             $contents['rcpts'] = implode(',', $contents['rcpts']);
-        }
+        }     
         
         $ui = posix_getpwuid(posix_geteuid());
         
@@ -355,6 +387,7 @@ 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);
@@ -403,6 +436,15 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
     /**
      *
      * DEPRICATED !!! - DO NOT USE THIS !!!
+     *
+     * use: toMailerData() -- to return the email data..
+     * or
+     * $mailer = $core_email->toMailer($obj, false);
+     * $sent = is_a($mailer,'PEAR_Error') ? false : $mailer->send();
+
+     * toMailer($obj, false)->send()
+     *
+     * 
      */
     
     function send($obj, $force = true, $send = true)
@@ -411,20 +453,8 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject
             return $this->toMailerData($obj,$force);
         }
         
-        if(!empty($obj['rcpts'])) {
-            $rcpts = $obj['rcpts'];
-            if (strpos($obj['rcpts'], '@') == false) {
-                $rcpts = array();
-                $gp = DB_DataObject::factory('core_group');
-                $gp->get('name', $obj['rcpts']);
-                foreach ($gp->members() as $v) {
-                    $rcpts[] = $v->email;
-                }
-                $obj['rcpts'] = $rcpts;
-            }
-        }
-        
         $r = $this->toMailer($obj, $force);
+        
         if (is_a($r, 'PEAR_Error')) {
             return $r;
         }