Changeset View
Changeset View
Standalone View
Standalone View
branches/5.2.x/core/units/mailing_lists/mailing_list_eh.php
Show First 20 Lines • Show All 49 Lines • ▼ Show 20 Line(s) | |||||
$recipient_type = $this->Application->GetVar('mailing_recipient_type'); | $recipient_type = $this->Application->GetVar('mailing_recipient_type'); | ||||
if ( !$recipient_type ) { | if ( !$recipient_type ) { | ||||
return; | return; | ||||
} | } | ||||
$recipients = $this->Application->GetVar($recipient_type); | $recipients = $this->Application->GetVar($recipient_type); | ||||
if ( $recipients ) { | if ( $recipients ) { | ||||
/** @var kDBItem $object */ | |||||
$object = $event->getObject(); | $object = $event->getObject(); | ||||
/* @var $object kDBItem */ | |||||
$to = $recipient_type . '_' . implode(';' . $recipient_type . '_', array_keys($recipients)); | $to = $recipient_type . '_' . implode(';' . $recipient_type . '_', array_keys($recipients)); | ||||
$object->SetDBField('To', $to); | $object->SetDBField('To', $to); | ||||
} | } | ||||
$this->setRequired($event); | $this->setRequired($event); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 47 Lines • ▼ Show 20 Line(s) | |||||
* @access protected | * @access protected | ||||
*/ | */ | ||||
protected function OnAfterItemDelete(kEvent $event) | protected function OnAfterItemDelete(kEvent $event) | ||||
{ | { | ||||
parent::OnAfterItemDelete($event); | parent::OnAfterItemDelete($event); | ||||
$this->_deleteQueue($event); | $this->_deleteQueue($event); | ||||
/** @var kDBItem $object */ | |||||
$object = $event->getObject(); | $object = $event->getObject(); | ||||
/* @var $object kDBItem */ | |||||
// delete mailing attachments after mailing is deleted | // delete mailing attachments after mailing is deleted | ||||
$attachments = $object->GetField('Attachments', 'file_paths'); | $attachments = $object->GetField('Attachments', 'file_paths'); | ||||
if ( $attachments ) { | if ( $attachments ) { | ||||
$attachments = explode('|', $attachments); | $attachments = explode('|', $attachments); | ||||
foreach ($attachments as $attachment_file) { | foreach ($attachments as $attachment_file) { | ||||
if ( file_exists($attachment_file) ) { | if ( file_exists($attachment_file) ) { | ||||
unlink($attachment_file); | unlink($attachment_file); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
} | } | ||||
/** | /** | ||||
* Cancels given mailing and deletes all it's email queue | * Cancels given mailing and deletes all it's email queue | ||||
* | * | ||||
* @param kEvent $event | * @param kEvent $event | ||||
*/ | */ | ||||
function OnCancelMailing($event) | function OnCancelMailing($event) | ||||
{ | { | ||||
/** @var kDBItem $object */ | |||||
$object = $event->getObject( Array('skip_autoload' => true) ); | $object = $event->getObject( Array('skip_autoload' => true) ); | ||||
/* @var $object kDBItem */ | |||||
$ids = $this->StoreSelectedIDs($event); | $ids = $this->StoreSelectedIDs($event); | ||||
if ($ids) { | if ($ids) { | ||||
foreach ($ids as $id) { | foreach ($ids as $id) { | ||||
$object->Load($id); | $object->Load($id); | ||||
$object->SetDBField('Status', MailingList::CANCELLED); | $object->SetDBField('Status', MailingList::CANCELLED); | ||||
$object->Update(); | $object->Update(); | ||||
Show All 9 Lines | |||||
* @param kEvent $event | * @param kEvent $event | ||||
* @return void | * @return void | ||||
* @access protected | * @access protected | ||||
*/ | */ | ||||
protected function OnBeforeItemCreate(kEvent $event) | protected function OnBeforeItemCreate(kEvent $event) | ||||
{ | { | ||||
parent::OnBeforeItemCreate($event); | parent::OnBeforeItemCreate($event); | ||||
/** @var kDBItem $object */ | |||||
$object = $event->getObject(); | $object = $event->getObject(); | ||||
/* @var $object kDBItem */ | |||||
if ( !$this->Application->GetVar('mailing_recipient_type') ) { | if ( !$this->Application->GetVar('mailing_recipient_type') ) { | ||||
// user manually typed email addresses -> normalize | // user manually typed email addresses -> normalize | ||||
$recipients = str_replace(',', ';', $object->GetDBField('To')); | $recipients = str_replace(',', ';', $object->GetDBField('To')); | ||||
$recipients = array_map('trim', explode(';', $recipients)); | $recipients = array_map('trim', explode(';', $recipients)); | ||||
$object->SetDBField('To', implode(';', $recipients)); | $object->SetDBField('To', implode(';', $recipients)); | ||||
} | } | ||||
Show All 24 Lines | |||||
* Dynamically changes required fields | * Dynamically changes required fields | ||||
* | * | ||||
* @param kEvent $event | * @param kEvent $event | ||||
* @return void | * @return void | ||||
* @access protected | * @access protected | ||||
*/ | */ | ||||
protected function setRequired(kEvent $event) | protected function setRequired(kEvent $event) | ||||
{ | { | ||||
/** @var kDBItem $object */ | |||||
$object = $event->getObject(); | $object = $event->getObject(); | ||||
/* @var $object kDBItem */ | |||||
$object->setRequired('MessageHtml', !$object->GetDBField('MessageText')); | $object->setRequired('MessageHtml', !$object->GetDBField('MessageText')); | ||||
$object->setRequired('MessageText', !$object->GetDBField('MessageHtml')); | $object->setRequired('MessageText', !$object->GetDBField('MessageHtml')); | ||||
} | } | ||||
/** | /** | ||||
* Deletes mailing list email queue, when it becomes cancelled | * Deletes mailing list email queue, when it becomes cancelled | ||||
* | * | ||||
* @param kEvent $event | * @param kEvent $event | ||||
* @return void | * @return void | ||||
* @access protected | * @access protected | ||||
*/ | */ | ||||
protected function OnAfterItemUpdate(kEvent $event) | protected function OnAfterItemUpdate(kEvent $event) | ||||
{ | { | ||||
parent::OnAfterItemUpdate($event); | parent::OnAfterItemUpdate($event); | ||||
/** @var kDBItem $object */ | |||||
$object = $event->getObject(); | $object = $event->getObject(); | ||||
/* @var $object kDBItem */ | |||||
$status = $object->GetDBField('Status'); | $status = $object->GetDBField('Status'); | ||||
if ( ($status != $object->GetOriginalField('Status')) && ($status == MailingList::CANCELLED) ) { | if ( ($status != $object->GetOriginalField('Status')) && ($status == MailingList::CANCELLED) ) { | ||||
$this->_deleteQueue($event); | $this->_deleteQueue($event); | ||||
} | } | ||||
} | } | ||||
/** | /** | ||||
* Deletes email queue records related with given mailing list | * Deletes email queue records related with given mailing list | ||||
* | * | ||||
* @param kEvent $event | * @param kEvent $event | ||||
*/ | */ | ||||
function _deleteQueue($event) | function _deleteQueue($event) | ||||
{ | { | ||||
/** @var kDBItem $object */ | |||||
$object = $event->getObject(); | $object = $event->getObject(); | ||||
/* @var $object kDBItem */ | |||||
$sql = 'DELETE FROM ' . $this->Application->getUnitOption('email-queue', 'TableName') . ' | $sql = 'DELETE FROM ' . $this->Application->getUnitOption('email-queue', 'TableName') . ' | ||||
WHERE MailingId = ' . $object->GetID(); | WHERE MailingId = ' . $object->GetID(); | ||||
$this->Conn->Query($sql); | $this->Conn->Query($sql); | ||||
} | } | ||||
/** | /** | ||||
* Allows to safely get mailing configuration variables | * Allows to safely get mailing configuration variables | ||||
▲ Show 20 Lines • Show All 45 Lines • ▼ Show 20 Line(s) | |||||
// queue 10 emails per step summary from all mailing lists (FIFO logic) | // queue 10 emails per step summary from all mailing lists (FIFO logic) | ||||
$to_queue = $this->_ensureDefault('MailingListQueuePerStep'); | $to_queue = $this->_ensureDefault('MailingListQueuePerStep'); | ||||
if ( $to_queue === false ) { | if ( $to_queue === false ) { | ||||
return; | return; | ||||
} | } | ||||
/** @var MailingListHelper $mailing_list_helper */ | |||||
$mailing_list_helper = $this->Application->recallObject('MailingListHelper'); | $mailing_list_helper = $this->Application->recallObject('MailingListHelper'); | ||||
/* @var $mailing_list_helper MailingListHelper */ | |||||
foreach ($mailing_lists as $mailing_id => $mailing_data) { | foreach ($mailing_lists as $mailing_id => $mailing_data) { | ||||
if ( $mailing_data['EmailsTotal'] == 0 ) { | if ( $mailing_data['EmailsTotal'] == 0 ) { | ||||
// no work performed on this mailing list -> calculate totals | // no work performed on this mailing list -> calculate totals | ||||
$updated_fields = $mailing_list_helper->generateRecipients($mailing_id, $mailing_data); | $updated_fields = $mailing_list_helper->generateRecipients($mailing_id, $mailing_data); | ||||
$updated_fields['Status'] = MailingList::PARTIALLY_PROCESSED; | $updated_fields['Status'] = MailingList::PARTIALLY_PROCESSED; | ||||
$mailing_data = array_merge($mailing_data, $updated_fields); | $mailing_data = array_merge($mailing_data, $updated_fields); | ||||
▲ Show 20 Lines • Show All 54 Lines • ▼ Show 20 Line(s) | |||||
LIMIT 0,' . $deliver_count; | LIMIT 0,' . $deliver_count; | ||||
$messages = $this->Conn->Query($sql); | $messages = $this->Conn->Query($sql); | ||||
if (!$messages) { | if (!$messages) { | ||||
// no more messages left in queue | // no more messages left in queue | ||||
return ; | return ; | ||||
} | } | ||||
/** @var MailingListHelper $mailing_list_helper */ | |||||
$mailing_list_helper = $this->Application->recallObject('MailingListHelper'); | $mailing_list_helper = $this->Application->recallObject('MailingListHelper'); | ||||
/* @var $mailing_list_helper MailingListHelper */ | |||||
$mailing_list_helper->processQueue($messages); | $mailing_list_helper->processQueue($messages); | ||||
} | } | ||||
/** | /** | ||||
* Returns HTML of sent e-mail for iframe | * Returns HTML of sent e-mail for iframe | ||||
* | * | ||||
* @param kEvent $event | * @param kEvent $event | ||||
* @return void | * @return void | ||||
* @access protected | * @access protected | ||||
*/ | */ | ||||
protected function OnGetHtmlBody(kEvent $event) | protected function OnGetHtmlBody(kEvent $event) | ||||
{ | { | ||||
$event->status = kEvent::erSTOP; | $event->status = kEvent::erSTOP; | ||||
/** @var kDBItem $object */ | |||||
$object = $event->getObject(); | $object = $event->getObject(); | ||||
/* @var $object kDBItem */ | |||||
echo $object->GetDBField('MessageHtml'); | echo $object->GetDBField('MessageHtml'); | ||||
} | } | ||||
} | } | ||||
No newline at end of file | No newline at end of file |