/**
* 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
$tn.subject LIKE '%{$this->escape($q['search']['nameortitle'])}%'
");
}
+
+ $this->selectAdd("
+ (
+ SELECT
+ count(user_id)
+ FROM
+ core_group_member
+ WHERE
+ to_group_id = core_group_member.group_id
+ )
+ AS group_member_count
+ ");
}
function beforeDelete($dependants_array, $roo)
$this->makeCopy($roo);
}
+
+ if ($this->to_group != -1) {
+ $c = DB_DataObject::factory('core_group_member');
+ $c->setFrom(array(
+ 'groud_id' => $this->to_group
+ ));
+ print_r($this->to_group);
+ print_r($c);
+ print_r($c->count());exit;
+ if (!$c->find(true)) {
+
+ }
+ }
}
function makeCopy($roo)
foreach ($xpath->query('//img[@src]') as $img) { // process images!
$href = $img->getAttribute('src');
- $cid = explode('#', $href);
- if(isset($cid[1])){
- $img->setAttribute('src', 'cid:' . $cid[1]);
+ $hash = explode('#', $href);
+ // we name all our cid's as attachment-*
+ // however the src url may be #image-*
+
+
+ if(!isset($hash[1])){
+ continue;
+ }
+ $cid = explode('-', $hash[1]);
+ if(!empty($cid[1])){
+ $img->setAttribute('src', 'cid:attachment-' . $cid[1]);
}
}
- $unsubscribe = false;
+ $unsubscribe = $this->unsubscribe_url();
- if(!empty($cfg)){
- $unsubscribe = $cfg ['server_baseurl'] . '/Crm/Unsubscribe/' . $this->id . '/{person.id}';
- }
-
foreach ($xpath->query('//a[@href]') as $a) {
$href = $a->getAttribute('href');
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');
$html = $doc->getElementsByTagName('html');
- $html->item(0)->appendChild($element);
+ if ($html->length) {
+ $html->item(0)->appendChild($element);
+ }
$this->plaintext = str_replace("{unsubscribe_link}", $unsubscribe, $this->plaintext);
}
return;
}
- function send($obj, $force = true, $send = true)
- {
+ function unsubscribe_url()
+ {
+ $unsubscribe = false;
+
+ $cfg = isset(HTML_FlexyFramework::get()->Pman_Crm) ? HTML_FlexyFramework::get()->Pman_Crm : false;
+
+ if(!empty($cfg)){
+ $unsubscribe = $cfg ['server_baseurl'] . '/Crm/Unsubscribe/' . $this->id . '/{person.id}';
+ }
+
+ 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.
+ *
+ * @returns Pman_Core_Mailer||PEAR_Error
+ */
+
+ function toMailer($obj,$force=false)
+ {
+ require_once 'PEAR.php';
+
+ $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)){
- return PEAR::raiseError("template [{$contents['template']}]has not been set");
+ 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;
}
+
+ //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());
}
require_once 'Pman/Core/Mailer.php';
+
$templateDir = session_save_path() . '/email-cache-' . $ui['name'] ;
+ //print_r($this);
+
- $r = new Pman_Core_Mailer(array(
+ $cfg = array(
'template'=> $this->tableName() . '-' . $this->id,
'templateDir' => $templateDir,
'page' => $this,
- 'contents' => $contents
- ));
+ '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';
$r->images = $images;
}
- $ret = $r->toData();
+ 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 !!!
+ *
+ * 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)
+ {
+ if (!$send) {
+ return $this->toMailerData($obj,$force);
+ }
+
+ $r = $this->toMailer($obj, $force);
- if(!$send){
- return $ret;
+ if (is_a($r, 'PEAR_Error')) {
+ return $r;
}
- return $r->send($ret);
+ return $r->send();
}
function cachedMailWithOutImages($force = false, $replace_links = true)
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:}{foreach:rcpts,v}{v:h},{end:}{end:}",
- "Subject: {t.subject} ",
+ "To: {if:t.person}{t.person.getEmailFrom():h}{else:}{rcpts:h}{end:}",
+ "Subject: {t.subject:h} ",
"X-Message-ID: {t.id} ",
- "{if:t.replyTo}Reply-To: {t.replyTo:h}{end:}"
+ "{if:t.replyTo}Reply-To: {t.replyTo:h}{end:}",
+ "{if:t.mailgunVariables}X-Mailgun-Variables: {t.mailgunVariables:h}{end:}"
))."\n");
continue;
}
- $images["attachment-$i->id"] = array(
+ $images["attachment-{$i->id}"] = array(
'file' => $i->getStoreName(),
'mimetype' => $i->mimetype,
'ext' => $y->toExt($i->mimetype),
function messageFrom()
{
- return '"' . addslashes($this->from_name) . '" <' . $this->from_email. '>' ;
+ if (empty($this->from_name)) {
+ return trim($this->from_email);
+ }
+ return trim('"' . addslashes($this->from_name) . '" <' . $this->from_email. '>') ;
}
function formatDate($dt, $format = 'd/M/Y')
}
+ // 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);
+
+ }
+
+
}