/**
* 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
{
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
* @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
*
* @param bool $force - force re-creation of cached version of email.
*
- * @returns Pman_Core_Mailer
+ * @returns Pman_Core_Mailer||PEAR_Error
*/
function toMailer($obj,$force=false)
{
-
+ $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)){
- $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;
}
'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';
}
return $r->toData();
}
-
+
+ /**
+ *
+ * DEPRICATED !!! - DO NOT USE THIS !!!
+ */
+
function send($obj, $force = true, $send = true)
{
if (!$send) {
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:}"
}
+ // 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);
+
+ }
+
+
}