Index: branches/5.2.x/core/units/mailing_lists/mailing_list_eh.php =================================================================== diff -u -N -r15145 -r15230 --- branches/5.2.x/core/units/mailing_lists/mailing_list_eh.php (.../mailing_list_eh.php) (revision 15145) +++ branches/5.2.x/core/units/mailing_lists/mailing_list_eh.php (.../mailing_list_eh.php) (revision 15230) @@ -1,6 +1,6 @@ SetDBField('To', $to); } + + $this->setRequired($event); } /** + * Prepare recipient list + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnPreCreate(kEvent $event) + { + parent::OnPreCreate($event); + + $this->setRequired($event); + } + + /** * Don't allow to delete mailings in progress * * @param kEvent $event @@ -164,17 +180,45 @@ $object->SetDBField('To', implode(';', $recipients)); } - if ( !$object->GetDBField('MessageText') ) { - $object->setRequired('MessageHtml'); - } - // remember user, who created mailing, because of his name // is needed for "From" field, but mailing occurs from cron $user_id = $this->Application->RecallVar('user_id'); $object->SetDBField('PortalUserId', $user_id); + + $this->setRequired($event); } /** + * Checks, that at least one message text field is filled + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnBeforeItemUpdate(kEvent $event) + { + parent::OnBeforeItemUpdate($event); + + $this->setRequired($event); + } + + /** + * Dynamically changes required fields + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function setRequired(kEvent $event) + { + $object = $event->getObject(); + /* @var $object kDBItem */ + + $object->setRequired('MessageHtml', !$object->GetDBField('MessageText')); + $object->setRequired('MessageText', !$object->GetDBField('MessageHtml')); + } + + /** * Deletes mailing list email queue, when it becomes cancelled * * @param kEvent $event