X-Git-Url: http://git.roojs.org/?p=Pman.Core;a=blobdiff_plain;f=DataObjects%2FCore_email.php;h=78f21462993769d6f7f056578cd8937666284ca6;hp=1f9318d6dfd2ee0b18a71fc55b79cc5a40a603f4;hb=5d4ac076dc4f620fbb91944eead3e0af66216a03;hpb=5bd77922632fd6a713085ed9497d662d923ded39 diff --git a/DataObjects/Core_email.php b/DataObjects/Core_email.php index 1f9318d6..78f21462 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 { @@ -20,6 +20,12 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject public $from_name; public $owner_id; public $is_system; + public $active; + public $bcc_group; + public $test_class; + + + /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE @@ -240,7 +246,7 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject if(!empty($unsubscribe)){ $element = $doc->createElement('img'); - + $element->setAttribute('mailembed', 'no'); $element->setAttribute('src', $cfg ['server_baseurl'] . '/Crm/Open/' . $this->id . '/{person.id}.html'); $element->setAttribute('width', '1'); $element->setAttribute('height', '1'); @@ -276,39 +282,61 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject return $unsubscribe; } + /** + * convert email with contents into a core mailer object. - ready to send.. + * @param Object|Array $obj Object (or array) to send @see Pman_Core_Mailer + * + subject + * + rcpts || person << if person is set - then it goes to them... + * + rcpts_group (string) << name of group - normally to send admin emails.. (if set, then bcc_group is ignored.) + * + replace_links + * + template + * + mailer_opts + * + person << who it actually goes to.. + * + * @param bool $force - force re-creation of cached version of email. * - * Usage: - * $this->rcpts = array('sales@roojs.com'); - * // or - * $this->rcpts = "Tester "; - * - * - * // then send it.. - * $x = DB_DataObject::factory('core_enum'); - * $x->get('name', 'NAME OF TEMPLATE'); - * $x->send(array( - * 'rcpts' => "Tester ", - * 'page' => $this - * 'mailer_opts' => array( <<< additional options, like urlmap..) - * 'link' => 'http://......' - ); - * // on the template use {link:h} to render the link - * - * + * @returns Pman_Core_Mailer||PEAR_Error */ - function send($obj, $force = true, $send = true) - { + + function toMailer($obj,$force=false) + { + $p = new PEAR(); $contents = (array)$obj; - if(empty($this->id)){ + + 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)){ - $p = new PEAR(); 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($admin)) { + return $p->raiseError("template [{$contents['template']}] - bcc group is empty"); + } + + $contents['bcc'] = $admin ; + } + if (!empty($contents['rcpts_group'])) { + + $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"); + } + $contents['rcpts'] = $admin; + } + if(empty($contents['subject'])){ $contents['subject'] = $this->subject; } @@ -355,11 +383,32 @@ class Pman_Core_DataObjects_Core_email extends DB_DataObject $r->images = $images; } - $ret = $r->toData(); - - if(!$send){ - return $ret; + return $r; + } + function toMailerData($obj,$force=false) + { + $r = $this->toMailer($obj, $force); + if (is_a($r, 'PEAR_Error')) { + return $r; + } + return $r->toData(); + } + + /** + * + * DEPRICATED !!! - DO NOT USE THIS !!! + */ + + function send($obj, $force = true, $send = true) + { + if (!$send) { + return $this->toMailerData($obj,$force); + } + $r = $this->toMailer($obj, $force); + if (is_a($r, 'PEAR_Error')) { + return $r; } + return $r->send(); } @@ -388,7 +437,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:}" @@ -449,7 +498,7 @@ Content-Transfer-Encoding: 7bit continue; } - $images["attachment-$i->id"] = array( + $images["attachment-{$i->id}"] = array( 'file' => $i->getStoreName(), 'mimetype' => $i->mimetype, 'ext' => $y->toExt($i->mimetype), @@ -499,5 +548,30 @@ Content-Transfer-Encoding: 7bit } + // fixme - this is now in core/udatedatabase.. + + function initMail($mail_template_dir, $name, $master='') + { + $cm = DB_DataObject::factory('core_email'); + if ($cm->get('name', $name)) { + return; + } + +// $basedir = $this->bootLoader->rootDir . $mail_template_dir; + + $opts = array(); + + $opts['file'] = $mail_template_dir. $name .'.html'; + if (!empty($master)) { + $opts['master'] = $mail_template_dir . $master .'.html'; + } + print_r($opts); + require_once 'Pman/Core/Import/Core_email.php'; + $x = new Pman_Core_Import_Core_email(); + $x->get('', $opts); + + } + + }