Компонент k2_Store в стандартной комплектации, при изменении статуса заказа, отправляет один и тот же шаблон покупателю(полный текст заказа- товар, оплата, контакты и тд.)
Появилась необходимость отправлять покупателю письмо с информацией о смене статуса заказа, без подробного отчета о покупке.
Для корректировки этого процесса необходимо внести изменения в файл
/components/com_k2store/helpers/orders.php
Необходимо продублировать функцию "public static function sendUserEmail", но с новыми параметрами, назовем ее "sendUserEmailNotyfy"
public static function sendUserEmailNotyfy($user_id, $order_id, $payment_status, $order_status, $order_state_id)
{
$mainframe =JFactory::getApplication();
jimport('joomla.filesystem.file');
// grab config settings for sender name and email
$config = JFactory::getConfig();
$k2store_params = JComponentHelper::getParams('com_k2store');
$k2params = JComponentHelper::getParams('com_k2');
if(version_compare(JVERSION, '3.0', 'ge')) {
$mailfrom = $k2store_params->get('emails_defaultemail', $config->get('mailfrom'));
$fromname = $k2store_params->get('emails_defaultname', $config->get('fromname'));
} else {
$mailfrom = $k2store_params->get('emails_defaultname', $config->getValue('config.mailfrom'));
$fromname = $k2store_params->get('emails_defaultname', $config->getValue('config.fromname'));
}
$sitename = $k2store_params->get( 'sitename', $mainframe->getCfg('sitename') );
$siteurl = $k2store_params->get( 'siteurl', JURI::root() );
//now get the order table's id based on order id
$id = self::_getOrderKey($order_id);
//inventory
//TODO::move this function to the plugin.
require_once (JPATH_ADMINISTRATOR.'/components/com_k2store/library/inventory.php');
K2StoreInventory::setInventory($id, $order_state_id);
//now get the receipient
$recipient = self::_getRecipient($order_id);
if($user_id && empty($recipient->billing_first_name)) {
$recipient->name = JFactory::getUser($user_id)->name;
} else {
$recipient->name = $recipient->billing_first_name.' '.$recipient->billing_last_name;
}
$mailer =JFactory::getMailer();
$mode = 1;
$subject = 'Статус вашего заказа был изменен на : '.JText::_($order_status);
$tags = array(
'[ORDER_ID]' => $id
);
foreach ($tags as $key => $value)
{
$subject = str_replace($key, $id, $subject);
}
$msg = '';
$msg .= 'Тело письма в формате HTML, формат можно взять из файла components/com_k2store_view/order/orderemail.php';
$admin_emails = trim($k2store_params->get('admin_email')) ;
$admin_emails = explode(',',$admin_emails ) ;
//send email
if ($recipient)
{
$mailer->addRecipient($recipient->user_email);
// $mailer->addCC( $config->get('admin_email'));
//$mailer->addCC( $admin_emails );
$mailer->setSubject( $subject );
$mailer->setBody($msg);
$mailer->IsHTML($mode);
$mailer->setSender(array( $mailfrom, $fromname ));
$mailer->send();
}
//Если не нужно отправлять дубликат администраторам, то удаляем этот пункт
if($admin_emails) {
$mailer =JFactory::getMailer();
$mailer->addRecipient($admin_emails);
$mailer->setSubject( $subject );
$mailer->setBody($msg);
$mailer->IsHTML($mode);
$mailer->setSender(array( $mailfrom, $fromname ));
$mailer->send();
}
return true;
}
Следующий шаг - меняем вызов шаблона при смене статуса, редактируем файл
/administrator/components/com_k2store/controllers/orders.php
В функции function orderstatesave() меняем строку на:
if(isset($notify_customer) && $notify_customer == 1) {
require_once(JPATH_SITE.'/components/com_k2store/helpers/orders.php');
K2StoreOrdersHelper::sendUserEmailNotyfy($order->user_id, $order->order_id, $order->transaction_status, $order->order_state, $order->order_state_id);