X-Git-Url: http://git.roojs.org/?p=Pman.Core;a=blobdiff_plain;f=DataObjects%2FCore_email.php;h=03b9072184b46919f9789805db0cebf2bc2f5d92;hp=5bb7b2c7f7973ee147b03c9dd4a933c54bca69c6;hb=HEAD;hpb=2a48e745abe1af684f4c6ebbc7578f98c498aa5d diff --git a/DataObjects/Core_email.php b/DataObjects/Core_email.php index 5bb7b2c7..02ce3427 100644 --- a/DataObjects/Core_email.php +++ b/DataObjects/Core_email.php @@ -23,9 +23,7 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject public $active; public $bcc_group_id; public $test_class; - - - + /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE @@ -43,26 +41,30 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject $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(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 + ( + SELECT + count(id) + FROM + {$cgm} + WHERE + 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) @@ -72,7 +74,7 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject $i->ontable = $this->tableName(); $i->find(); while ($i->fetch()){ - $i->beforeDelete(); + $i->beforeDelete(array(), $roo); $i->delete(); } } @@ -89,16 +91,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()) { - 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)); } - } } @@ -264,6 +259,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 @@ -283,7 +282,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'); @@ -295,7 +294,7 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject $html->item(0)->appendChild($element); } - $this->plaintext = str_replace("{unsubscribe_link}", $unsubscribe, $this->plaintext); + $this->plaintext = str_replace("{unsubscribe_link}", $unsubscribe, empty($this->plaintext) ? '' : $this->plaintext); } @@ -361,10 +360,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"); } @@ -379,15 +380,33 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject } $contents['rcpts'] = $admin; } - + if (empty($contents['rcpts']) && $this->to_group_id > 0) { + $members = $this->to_group()->members(); + $contents['rcpts'] = array(); + foreach($this->to_group()->members() as $m) { + $contents['rcpts'][] = $m->email; + } + //var_dump($contents['rcpts']); + + } //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']); + + // 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']); + } } } @@ -404,11 +423,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, @@ -537,8 +553,20 @@ Content-Transfer-Encoding: 7bit mkdir(dirname($cachePath), 0700, true); } - file_put_contents($cachePath, $this->bodytext); + if (empty($this->use_file)) { + file_put_contents($cachePath, $this->bodytext); + return; + } + // use-file -- uses the original template... + $mailtext = file_get_contents($this->use_file); + + require_once 'Mail/mimeDecode.php'; + require_once 'Mail/RFC822.php'; + $decoder = new Mail_mimeDecode($mailtext); + $parts = $decoder->getSendArray(); + file_put_contents($cachePath,$parts[2]); + } function cachedImages() @@ -586,6 +614,17 @@ Content-Transfer-Encoding: 7bit return false; } + if (!empty($this->use_file)) { + $ctime = filemtime($cachePath); + $mtime = filemtime($this->use_file); + if($ctime >= $mtime){ + return true; + } + return false; + + } + + $ctime = filemtime($cachePath); $mtime = array(); @@ -635,7 +674,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); @@ -643,5 +682,45 @@ Content-Transfer-Encoding: 7bit } + function testData($person, $dt , $core_notify) + { + + // should return the formated email??? + $pg = HTML_FlexyFramework::get()->page; + + + + + if(empty($this->test_class)){ + $pg->jerr("[{$this->name}] does not has test class"); + } + + require_once "{$this->test_class}.php"; + + $cls = str_replace('/', '_', $this->test_class); + + $x = new $cls; + + $method = "test_{$this->name}"; + + if(!method_exists($x, $method)){ + $pg->jerr("{$method} does not exists in {$cls}"); + } + + $content = $x->{$method}($this, $person); + $content['to'] = $person->getEmailFrom(); + + $content['bcc'] = array(); + $data = $this->toMailerData($content); + return $data; + + + } + function to_group() + { + $g = DB_DataObject::Factory('core_group'); + $g->get($this->to_group_id); + return $g; + } }