X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=DataObjects%2FCore_email.php;h=45e8036e0d52d79d1c2a6c9b646e4cd726fb4bf3;hb=1be157d7159abd552bfb15bc236127485c454caa;hp=e86128b183c6c84bbb7f9813110a3ff87161ba7f;hpb=26d6fe405fb7f69698b023a7adcb8794039fc2a1;p=Pman.Core diff --git a/DataObjects/Core_email.php b/DataObjects/Core_email.php index e86128b1..45e8036e 100644 --- a/DataObjects/Core_email.php +++ b/DataObjects/Core_email.php @@ -21,11 +21,10 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject public $owner_id; public $is_system; public $active; - public $bcc_group; + public $bcc_group_id; public $test_class; - - + /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE @@ -41,6 +40,29 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject $tn.subject LIKE '%{$this->escape($q['search']['nameortitle'])}%' "); } + $cgm = DB_DataObject::Factory('core_group_member')->tableName();; + + $this->selectAdd(" + ( + SELECT + count(user_id) + FROM + {$cgm} + WHERE + to_group_id = {$cgm}.group_id + ) + AS group_member_count, + + ( + SELECT + count(user_id) + FROM + {$cgm} + WHERE + bcc_group_id = {$cgm}.group_id + ) + AS bcc_group_member_count + "); } function beforeDelete($dependants_array, $roo) @@ -61,6 +83,23 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject $this->makeCopy($roo); } + + if ($this->to_group_id != -1) { + + $c = DB_DataObject::factory('core_group_member'); + $c->group_id = $this->to_group_id; + + if (!$c->count()) { + 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)); + } + } + + } } function makeCopy($roo) @@ -305,23 +344,25 @@ 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'); + + if (!empty($this->bcc_group_id) && empty($contents['rcpts_group'])) { + $admin = DB_DAtaObject::Factory('core_group')->lookupMembersByGroupId($this->bcc_group_id,'email'); if (empty($admin)) { return $p->raiseError("template [{$contents['template']}] - bcc group is empty"); @@ -339,13 +380,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()); @@ -356,6 +404,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); @@ -381,6 +430,10 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject $cfg = array_merge($contents['mailer_opts'], $cfg); } + if(isset($contents['css_inline'])){ + $cfg['css_inline'] = $contents['css_inline']; + } + $r = new Pman_Core_Mailer($cfg); $imageCache = session_save_path() . '/email-cache-' . $ui['name'] . '/mail/' . $this->tableName() . '-' . $this->id . '-images.txt'; @@ -404,6 +457,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) @@ -412,30 +474,6 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject return $this->toMailerData($obj,$force); } - if(!empty($obj['rcpts_gp'])) { - $rcpts = $obj['rcpts_gp']; - if (strpos($obj['rcpts_gp'], '@') == false) { - $rcpts = array(); - $gp = DB_DataObject::factory('core_group'); - $gp->get('name', $obj['rcpts_gp']); - foreach ($gp->members() as $v) { - $rcpts[] = $v->email; - } - $obj['rcpts'] = $rcpts; - } - } - - if (!empty($obj['is_subject_replace'])) { - $mapping = array( - '/{person.name}/' => $obj['person']->name - ); - $subject = $obj['subject']; - foreach ($mapping as $pattern => $replace) { - $subject = preg_replace($pattern,$replace,$subject); - } - $obj['subject'] = $subject; - } - $r = $this->toMailer($obj, $force); if (is_a($r, 'PEAR_Error')) { @@ -498,7 +536,7 @@ Content-Transfer-Encoding: 7bit if (!file_exists(dirname($cachePath))) { mkdir(dirname($cachePath), 0700, true); } - + print_R($this->bodytext);exit; file_put_contents($cachePath, $this->bodytext); }