Добавить получателя письма о заказе на основе данных заказа

#
Добавить получателя письма о заказе на основе данных заказа
В заказе есть поле регион. При заказе оно передается в экземпляр Shop_Payment_System_Handler, в переменную $_orderParams.

На основе региона нужно добавить получателей админского письма о заказе. Т.е. если регион =1, шлем копию письма на email первый_email, если регион =2, шлем копию письма на email второй_email.

Пока реализовал подписку на событие "заказ оформлен" через хук:


<?php

defined('HOSTCMS') || exit('HostCMS: access denied.');

/**
* Region.
*/
class Region_Observer
{
    /**
     * Рассылаем копию письма ответственным менеджерам
     * @param $object
     * @param $args
     */
    public function sendMessages($object, $args)
    {
       // тут обработчик


    }
}


Подписка в типовой ТДС, которая заказ обрабатывает:


// Оповещаем компонент "Регионы" о заказе
Core_Event::attach('Shop_Payment_System_Handler.onAfterExecute', array('Region_Observer', 'sendMessages'));


Итого наблюдатель получает экземпляр Shop_Payment_System_Handler. Из него я получаю данные заказа.

Помогите, как отправить письмо о заказе. Заранее спасибо
Модератор
#
Re: Добавить получателя письма о заказе на основе данных заказа
Предлагаю другой вариант, в системе есть стандартный обработчик - Shop_Payment_System_Handler, от него унаследованы все обработчики. Вы пишите свой обработчик, унаследованный от Shop_Payment_System_Handler, даете ему имя, пускай My_Shop_Payment_System_Handler, в нем просто переопределяете метод getAdminEmails(),
class My_Shop_Payment_System_Handler extends Shop_Payment_System_Handler
{
   /**
    * Get array of admin emails
    * @return array
    */
   public function getAdminEmails()
   {
      $aEmails = parent::getAdminEmails();

      // Своя логика, добавляем нужные адреса в $aEmails
      if (xxx)
      {
         $aEmails[] = 'адрес1';
      }
      elseif (yyy)
      {
         $aEmails[] = 'адрес2';
      }
      
      return $aEmails;
   }
}

и потом все свои обработчики наследуете не от Shop_Payment_System_Handler, а от My_Shop_Payment_System_Handler
Авторизация