Changeset View
Changeset View
Standalone View
Standalone View
core/units/email_templates/email_template_eh.php
Show First 20 Lines • Show All 85 Lines • ▼ Show 20 Line(s) | |||||
* @return void | * @return void | ||||
* @access protected | * @access protected | ||||
* @see kDBEventHandler::OnListBuild() | * @see kDBEventHandler::OnListBuild() | ||||
*/ | */ | ||||
protected function SetCustomQuery(kEvent $event) | protected function SetCustomQuery(kEvent $event) | ||||
{ | { | ||||
parent::SetCustomQuery($event); | parent::SetCustomQuery($event); | ||||
/** @var kDBList $object */ | |||||
$object = $event->getObject(); | $object = $event->getObject(); | ||||
/* @var $object kDBList */ | |||||
if ( $event->Special == 'module' ) { | if ( $event->Special == 'module' ) { | ||||
$module = $this->Application->GetVar('module'); | $module = $this->Application->GetVar('module'); | ||||
$object->addFilter('module_filter', '%1$s.Module = ' . $this->Conn->qstr($module)); | $object->addFilter('module_filter', '%1$s.Module = ' . $this->Conn->qstr($module)); | ||||
} | } | ||||
else { | else { | ||||
$object->addFilter('module_filter', '%1$s.Module IN (SELECT Name FROM ' . TABLE_PREFIX . 'Modules WHERE Loaded = 1)'); | $object->addFilter('module_filter', '%1$s.Module IN (SELECT Name FROM ' . TABLE_PREFIX . 'Modules WHERE Loaded = 1)'); | ||||
} | } | ||||
Show All 13 Lines | |||||
*/ | */ | ||||
protected function OnNew(kEvent $event) | protected function OnNew(kEvent $event) | ||||
{ | { | ||||
parent::OnNew($event); | parent::OnNew($event); | ||||
$mapping = Array ('conf' => 'VariableValue', 'site-domain' => 'DefaultEmailRecipients'); | $mapping = Array ('conf' => 'VariableValue', 'site-domain' => 'DefaultEmailRecipients'); | ||||
if ( isset($mapping[$event->Special]) ) { | if ( isset($mapping[$event->Special]) ) { | ||||
/** @var kDBItem $object */ | |||||
$object = $event->getObject(); | $object = $event->getObject(); | ||||
/* @var $object kDBItem */ | |||||
/** @var kDBList $target_object */ | |||||
$target_object = $this->Application->recallObject($event->Special); | $target_object = $this->Application->recallObject($event->Special); | ||||
/* @var $target_object kDBList */ | |||||
$object->SetDBField('Recipients', $target_object->GetDBField($mapping[$event->Special])); | $object->SetDBField('Recipients', $target_object->GetDBField($mapping[$event->Special])); | ||||
} | } | ||||
} | } | ||||
/** | /** | ||||
* Set default headers | * Set default headers | ||||
* | * | ||||
* @param kEvent $event | * @param kEvent $event | ||||
* @return void | * @return void | ||||
* @access protected | * @access protected | ||||
*/ | */ | ||||
protected function OnPreCreate(kEvent $event) | protected function OnPreCreate(kEvent $event) | ||||
{ | { | ||||
parent::OnPreCreate($event); | parent::OnPreCreate($event); | ||||
/** @var kDBItem $object */ | |||||
$object = $event->getObject(); | $object = $event->getObject(); | ||||
/* @var $object kDBItem */ | |||||
$object->SetDBField('Headers', $this->Application->ConfigValue('Smtp_DefaultHeaders')); | $object->SetDBField('Headers', $this->Application->ConfigValue('Smtp_DefaultHeaders')); | ||||
$this->setRequired($event); | $this->setRequired($event); | ||||
} | } | ||||
/** | /** | ||||
* Sets status Front-End Only to selected email events | * Sets status Front-End Only to selected email events | ||||
* | * | ||||
▲ Show 20 Lines • Show All 106 Lines • ▼ Show 20 Line(s) | |||||
// no messages left to send in queue | // no messages left to send in queue | ||||
if ( $processing_type = 'return_progress' ) { | if ( $processing_type = 'return_progress' ) { | ||||
$this->Application->RemoveVar('email_queue_progress'); | $this->Application->RemoveVar('email_queue_progress'); | ||||
$this->Application->Redirect($this->Application->GetVar('finish_template')); | $this->Application->Redirect($this->Application->GetVar('finish_template')); | ||||
} | } | ||||
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); | ||||
if ( $processing_type = 'return_progress' ) { | if ( $processing_type = 'return_progress' ) { | ||||
$emails_sent += $message_count; | $emails_sent += $message_count; | ||||
if ( $emails_sent >= $total_emails ) { | if ( $emails_sent >= $total_emails ) { | ||||
$this->Application->RemoveVar('email_queue_progress'); | $this->Application->RemoveVar('email_queue_progress'); | ||||
$this->Application->Redirect($this->Application->GetVar('finish_template')); | $this->Application->Redirect($this->Application->GetVar('finish_template')); | ||||
▲ Show 20 Lines • Show All 57 Lines • ▼ Show 20 Line(s) | |||||
* @param kEvent $event | * @param kEvent $event | ||||
* @return void | * @return void | ||||
* @access protected | * @access protected | ||||
*/ | */ | ||||
protected function OnAfterItemLoad(kEvent $event) | protected function OnAfterItemLoad(kEvent $event) | ||||
{ | { | ||||
parent::OnAfterItemLoad($event); | parent::OnAfterItemLoad($event); | ||||
/** @var kDBItem $object */ | |||||
$object = $event->getObject(); | $object = $event->getObject(); | ||||
/* @var $object kDBItem */ | |||||
if ( !$this->Application->isDebugMode(false) ) { | if ( !$this->Application->isDebugMode(false) ) { | ||||
if ( $object->GetDBField('AllowChangingRecipient') ) { | if ( $object->GetDBField('AllowChangingRecipient') ) { | ||||
$object->SetDBField('RecipientType', EmailTemplate::RECIPIENT_TYPE_TO); | $object->SetDBField('RecipientType', EmailTemplate::RECIPIENT_TYPE_TO); | ||||
} | } | ||||
else { | else { | ||||
$object->SetDBField('RecipientType', EmailTemplate::RECIPIENT_TYPE_CC); | $object->SetDBField('RecipientType', EmailTemplate::RECIPIENT_TYPE_CC); | ||||
} | } | ||||
} | } | ||||
// process replacement tags | // process replacement tags | ||||
$records = Array (); | $records = Array (); | ||||
$replacement_tags = $object->GetDBField('ReplacementTags'); | $replacement_tags = $object->GetDBField('ReplacementTags'); | ||||
$replacement_tags = $replacement_tags ? unserialize($replacement_tags) : Array (); | $replacement_tags = $replacement_tags ? unserialize($replacement_tags) : Array (); | ||||
foreach ($replacement_tags as $tag => $replacement) { | foreach ($replacement_tags as $tag => $replacement) { | ||||
$records[] = Array ('Tag' => $tag, 'Replacement' => $replacement); | $records[] = Array ('Tag' => $tag, 'Replacement' => $replacement); | ||||
} | } | ||||
/** @var MInputHelper $minput_helper */ | |||||
$minput_helper = $this->Application->recallObject('MInputHelper'); | $minput_helper = $this->Application->recallObject('MInputHelper'); | ||||
/* @var $minput_helper MInputHelper */ | |||||
$xml = $minput_helper->prepareMInputXML($records, Array ('Tag', 'Replacement')); | $xml = $minput_helper->prepareMInputXML($records, Array ('Tag', 'Replacement')); | ||||
$object->SetDBField('ReplacementTagsXML', $xml); | $object->SetDBField('ReplacementTagsXML', $xml); | ||||
$this->setRequired($event); | $this->setRequired($event); | ||||
} | } | ||||
/** | /** | ||||
* Performs custom validation + keep read-only fields | * Performs custom validation + keep read-only fields | ||||
* | * | ||||
* @param kEvent $event | * @param kEvent $event | ||||
*/ | */ | ||||
function _itemChanged($event) | function _itemChanged($event) | ||||
{ | { | ||||
/** @var kDBItem $object */ | |||||
$object = $event->getObject(); | $object = $event->getObject(); | ||||
/* @var $object kDBItem */ | |||||
if ( !$this->Application->isDebugMode(false) ) { | if ( !$this->Application->isDebugMode(false) ) { | ||||
// only allow to enable/disable event while in debug mode | // only allow to enable/disable event while in debug mode | ||||
$to_restore = Array ('Enabled', 'AllowChangingSender', 'AllowChangingRecipient'); | $to_restore = Array ('Enabled', 'AllowChangingSender', 'AllowChangingRecipient'); | ||||
if ( !$object->GetOriginalField('AllowChangingSender') ) { | if ( !$object->GetOriginalField('AllowChangingSender') ) { | ||||
$to_restore = array_merge($to_restore, Array ('CustomSender', 'SenderName', 'SenderAddressType', 'SenderAddress')); | $to_restore = array_merge($to_restore, Array ('CustomSender', 'SenderName', 'SenderAddressType', 'SenderAddress')); | ||||
} | } | ||||
Show All 9 Lines | |||||
if ( $object->GetDBField($restore_field) != $original_value ) { | if ( $object->GetDBField($restore_field) != $original_value ) { | ||||
$object->SetDBField($restore_field, $original_value); | $object->SetDBField($restore_field, $original_value); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
// process replacement tags | // process replacement tags | ||||
if ( $object->GetDBField('ReplacementTagsXML') ) { | if ( $object->GetDBField('ReplacementTagsXML') ) { | ||||
/** @var MInputHelper $minput_helper */ | |||||
$minput_helper = $this->Application->recallObject('MInputHelper'); | $minput_helper = $this->Application->recallObject('MInputHelper'); | ||||
/* @var $minput_helper MInputHelper */ | |||||
$replacement_tags = Array (); | $replacement_tags = Array (); | ||||
$records = $minput_helper->parseMInputXML($object->GetDBField('ReplacementTagsXML')); | $records = $minput_helper->parseMInputXML($object->GetDBField('ReplacementTagsXML')); | ||||
foreach ($records as $record) { | foreach ($records as $record) { | ||||
$replacement_tags[trim($record['Tag'])] = trim($record['Replacement']); | $replacement_tags[trim($record['Tag'])] = trim($record['Replacement']); | ||||
} | } | ||||
Show All 12 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 */ | |||||
$language_prefix = 'l' . $this->Application->GetVar('m_lang') . '_'; | $language_prefix = 'l' . $this->Application->GetVar('m_lang') . '_'; | ||||
$object->setRequired($language_prefix . 'HtmlBody', !$object->GetField('PlainTextBody')); | $object->setRequired($language_prefix . 'HtmlBody', !$object->GetField('PlainTextBody')); | ||||
$object->setRequired($language_prefix . 'PlainTextBody', !$object->GetField('HtmlBody')); | $object->setRequired($language_prefix . 'PlainTextBody', !$object->GetField('HtmlBody')); | ||||
} | } | ||||
/** | /** | ||||
▲ Show 20 Lines • Show All 105 Lines • ▼ Show 20 Line(s) | |||||
* @param kEvent $event | * @param kEvent $event | ||||
* @return void | * @return void | ||||
* @access protected | * @access protected | ||||
*/ | */ | ||||
protected function OnBeforeItemValidate(kEvent $event) | protected function OnBeforeItemValidate(kEvent $event) | ||||
{ | { | ||||
parent::OnBeforeItemValidate($event); | parent::OnBeforeItemValidate($event); | ||||
/** @var kDBItem $object */ | |||||
$object = $event->getObject(); | $object = $event->getObject(); | ||||
/* @var $object kDBItem */ | |||||
// validate email subject and body for parsing errors | // validate email subject and body for parsing errors | ||||
$this->_validateEmailTemplate($object); | $this->_validateEmailTemplate($object); | ||||
// validate sender and recipient addresses | // validate sender and recipient addresses | ||||
if ( $object->GetDBField('CustomSender') ) { | if ( $object->GetDBField('CustomSender') ) { | ||||
$this->_validateAddress($event, 'Sender'); | $this->_validateAddress($event, 'Sender'); | ||||
} | } | ||||
$this->_validateAddress($event, 'Recipient'); | $this->_validateAddress($event, 'Recipient'); | ||||
$this->_validateBindEvent($object); | $this->_validateBindEvent($object); | ||||
} | } | ||||
/** | /** | ||||
* Validates subject and body fields of Email template | * Validates subject and body fields of Email template | ||||
* | * | ||||
* @param kDBItem $object | * @param kDBItem $object | ||||
* @return void | * @return void | ||||
* @access protected | * @access protected | ||||
*/ | */ | ||||
protected function _validateEmailTemplate($object) | protected function _validateEmailTemplate($object) | ||||
{ | { | ||||
/** @var kEmailTemplateHelper $email_template_helper */ | |||||
$email_template_helper = $this->Application->recallObject('kEmailTemplateHelper'); | $email_template_helper = $this->Application->recallObject('kEmailTemplateHelper'); | ||||
/* @var $email_template_helper kEmailTemplateHelper */ | |||||
$email_template_helper->parseField($object, 'Subject'); | $email_template_helper->parseField($object, 'Subject'); | ||||
$email_template_helper->parseField($object, 'HtmlBody'); | $email_template_helper->parseField($object, 'HtmlBody'); | ||||
$email_template_helper->parseField($object, 'PlainTextBody'); | $email_template_helper->parseField($object, 'PlainTextBody'); | ||||
} | } | ||||
/** | /** | ||||
* Validates address using given field prefix | * Validates address using given field prefix | ||||
* | * | ||||
* @param kEvent $event | * @param kEvent $event | ||||
* @param string $field_prefix | * @param string $field_prefix | ||||
* @return void | * @return void | ||||
* @access protected | * @access protected | ||||
*/ | */ | ||||
protected function _validateAddress($event, $field_prefix) | protected function _validateAddress($event, $field_prefix) | ||||
{ | { | ||||
/** @var kDBItem $object */ | |||||
$object = $event->getObject(); | $object = $event->getObject(); | ||||
/* @var $object kDBItem */ | |||||
$address_type = $object->GetDBField($field_prefix . 'AddressType'); | $address_type = $object->GetDBField($field_prefix . 'AddressType'); | ||||
$object->setRequired($field_prefix . 'Address', $address_type > 0); | $object->setRequired($field_prefix . 'Address', $address_type > 0); | ||||
$address = $object->GetDBField($field_prefix . 'Address'); | $address = $object->GetDBField($field_prefix . 'Address'); | ||||
if ( !$address ) { | if ( !$address ) { | ||||
// don't validate against empty address | // don't validate against empty address | ||||
return; | return; | ||||
▲ Show 20 Lines • Show All 81 Lines • ▼ Show 20 Line(s) | |||||
* @param kEvent $event | * @param kEvent $event | ||||
* @return void | * @return void | ||||
* @access protected | * @access protected | ||||
*/ | */ | ||||
protected function OnAfterItemDelete(kEvent $event) | protected function OnAfterItemDelete(kEvent $event) | ||||
{ | { | ||||
parent::OnAfterItemDelete($event); | parent::OnAfterItemDelete($event); | ||||
/** @var kDBItem $object */ | |||||
$object = $event->getObject(); | $object = $event->getObject(); | ||||
/* @var $object kDBItem */ | |||||
$sql = 'SELECT SubscriptionId | $sql = 'SELECT SubscriptionId | ||||
FROM ' . TABLE_PREFIX . 'SystemEventSubscriptions | FROM ' . TABLE_PREFIX . 'SystemEventSubscriptions | ||||
WHERE EmailTemplateId = ' . $object->GetID(); | WHERE EmailTemplateId = ' . $object->GetID(); | ||||
$ids = $this->Conn->GetCol($sql); | $ids = $this->Conn->GetCol($sql); | ||||
if ( !$ids ) { | if ( !$ids ) { | ||||
return; | return; | ||||
} | } | ||||
/** @var kTempTablesHandler $temp_handler */ | |||||
$temp_handler = $this->Application->recallObject('system-event-subscription_TempHandler', 'kTempTablesHandler'); | $temp_handler = $this->Application->recallObject('system-event-subscription_TempHandler', 'kTempTablesHandler'); | ||||
Lint: Generic.Files.LineLength.TooLong: Line exceeds 120 characters; contains 124 characters | |||||
/* @var $temp_handler kTempTablesHandler */ | |||||
$temp_handler->DeleteItems('system-event-subscription', '', $ids); | $temp_handler->DeleteItems('system-event-subscription', '', $ids); | ||||
} | } | ||||
/** | /** | ||||
* Sends selected e-mail event | * Sends selected e-mail event | ||||
* | * | ||||
* @param kEvent $event | * @param kEvent $event | ||||
* @return void | * @return void | ||||
* @access protected | * @access protected | ||||
*/ | */ | ||||
protected function OnSend(kEvent $event) | protected function OnSend(kEvent $event) | ||||
{ | { | ||||
/** @var kDBItem $object */ | |||||
$object = $event->getObject(Array ('skip_autoload' => true)); | $object = $event->getObject(Array ('skip_autoload' => true)); | ||||
There must be no space between the Array keyword and the opening parenthesis Lint: CodingStandard.Array.Array.SpaceAfterKeyword: There must be no space between the Array keyword and the opening parenthesis | |||||
PHP keywords must be lowercase; expected "array" but found "Array" Lint: Generic.PHP.LowerCaseKeyword.Found: PHP keywords must be lowercase; expected "array" but found "Array" | |||||
/* @var $object kDBItem */ | |||||
$ids = $this->StoreSelectedIDs($event); | $ids = $this->StoreSelectedIDs($event); | ||||
foreach ($ids as $id) { | foreach ($ids as $id) { | ||||
$object->Load($id); | $object->Load($id); | ||||
if ( $object->GetDBField('Type') == EmailTemplate::TEMPLATE_TYPE_ADMIN ) { | if ( $object->GetDBField('Type') == EmailTemplate::TEMPLATE_TYPE_ADMIN ) { | ||||
$this->Application->emailAdmin($object->GetDBField('TemplateName')); | $this->Application->emailAdmin($object->GetDBField('TemplateName')); | ||||
} | } | ||||
else { | else { | ||||
$this->Application->emailUser($object->GetDBField('TemplateName')); | $this->Application->emailUser($object->GetDBField('TemplateName')); | ||||
} | } | ||||
} | } | ||||
$this->clearSelectedIDs($event); | $this->clearSelectedIDs($event); | ||||
} | } | ||||
} | } | ||||
No newline at end of file | No newline at end of file |
Line exceeds 120 characters; contains 124 characters