X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=DataObjects%2FCore_email.php;h=de91473dfe3d38d9ad668eb21d6839fe63bba33e;hb=1c49b447ea70bc1b855e1f8d27352e4cb16a900b;hp=23a1770bbb605b4fcdfca07ed267da963c0cb870;hpb=370f36a3ab33ee2eb74f54e7107ce426fa52805d;p=Pman.Core diff --git a/DataObjects/Core_email.php b/DataObjects/Core_email.php index 23a1770b..de91473d 100644 --- a/DataObjects/Core_email.php +++ b/DataObjects/Core_email.php @@ -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 { @@ -301,30 +301,39 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject function toMailer($obj,$force=false) { + require_once 'PEAR.php'; + $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('groups')->lookupMembers($this->bcc_group,'email'); + $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 ; + + $contents['bcc'] = $admin ; } if (!empty($contents['rcpts_group'])) { - $admin = DB_DAtaObject::Factory('groups')->lookupMembers($contents['rcpts_group'],'email'); + $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"); @@ -332,15 +341,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()); @@ -351,6 +365,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); @@ -363,14 +378,19 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject 'contents' => $contents, 'css_embed' => true, // we should always try and do this with emails... ); + if (isset($contents['rcpts'])) { $cfg['rcpts'] = $contents['rcpts']; } + + if (isset($contents['attachments'])) { + $cfg['attachments'] = $contents['attachments']; + } + if (isset($contents['mailer_opts']) && is_array($contents['mailer_opts'])) { $cfg = array_merge($contents['mailer_opts'], $cfg); } - $r = new Pman_Core_Mailer($cfg); $imageCache = session_save_path() . '/email-cache-' . $ui['name'] . '/mail/' . $this->tableName() . '-' . $this->id . '-images.txt'; @@ -394,6 +414,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) @@ -401,11 +430,12 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject if (!$send) { return $this->toMailerData($obj,$force); } + $r = $this->toMailer($obj, $force); + if (is_a($r, 'PEAR_Error')) { return $r; } - return $r->send(); } @@ -434,7 +464,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:}"