Расширение класса minishop2.class.php
Всем привет!
Сделал некоторую доработку для MS2:
1. На событие msOnCreateOrder плагином формируется файл;
2. Этот файл цепляется к письму о создании заказа, которое улетает менеджеру.
Второй пункт решил просто добавлением функции SendEmailWithAttach в классе minishop2.class.php:
Данная функция просто скопирована со стандартной sendEmail, но добавлена переменная, в которую передается путь до файла-вложения. Далее эта функция вызывается вместо sendEmail при отправке письма менеджеру, с предварительной проверкой, на какое событие срабатывает отправка (если отправляется по new, то работает моя функция; если по любому другому — работает стандартная).
Ну и теперь самый главный вопрос. При обновлении MS2 все эти труды затрутся. Вопрос: как правильно и грамотно расширить класс minishop2.class.php, не внося изменения в исходный файл?
Как сделать то же самое, скажем, с msorderhandler.class.php (там я закомментировал форматирование ФИО пользователя, у меня все клиенты — юр. лица, и форматирование ломает правильное написание названия).
Всем заранее спасибо за ответы!
Сделал некоторую доработку для MS2:
1. На событие msOnCreateOrder плагином формируется файл;
2. Этот файл цепляется к письму о создании заказа, которое улетает менеджеру.
Второй пункт решил просто добавлением функции SendEmailWithAttach в классе minishop2.class.php:
public function sendEmailWithAttach($email, $subject, $body = 'no body set', $attachment) {
if (!isset($this->modx->mail) || !is_object($this->modx->mail)) {
$this->modx->getService('mail', 'mail.modPHPMailer');
}
$this->modx->mail->set(modMail::MAIL_FROM, $this->modx->getOption('emailsender'));
$this->modx->mail->set(modMail::MAIL_FROM_NAME, $this->modx->getOption('site_name'));
$this->modx->mail->setHTML(true);
$this->modx->mail->set(modMail::MAIL_SUBJECT, trim($subject));
$this->modx->mail->set(modMail::MAIL_BODY, $body);
$this->modx->mail->address('to', trim($email));
$this->modx->mail->attach(MODX_BASE_PATH . $attachment);
if (!$this->modx->mail->send()) {
$this->modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$this->modx->mail->mailer->ErrorInfo);
}
$this->modx->mail->reset();
}
Данная функция просто скопирована со стандартной sendEmail, но добавлена переменная, в которую передается путь до файла-вложения. Далее эта функция вызывается вместо sendEmail при отправке письма менеджеру, с предварительной проверкой, на какое событие срабатывает отправка (если отправляется по new, то работает моя функция; если по любому другому — работает стандартная).
Ну и теперь самый главный вопрос. При обновлении MS2 все эти труды затрутся. Вопрос: как правильно и грамотно расширить класс minishop2.class.php, не внося изменения в исходный файл?
Как сделать то же самое, скажем, с msorderhandler.class.php (там я закомментировал форматирование ФИО пользователя, у меня все клиенты — юр. лица, и форматирование ломает правильное написание названия).
Всем заранее спасибо за ответы!
Комментарии: 2
Совершенно случайно нашел решение здесь:
modx.pro/development/3168-how-not-to-hacking-on-third-party-classes/
modx.pro/development/3168-how-not-to-hacking-on-third-party-classes/
А окончательного решения нет?
Подскажи плз… Вот ты расширил класс… а как его использовать? как прикрепить к письму нужный файл?
Подскажи плз… Вот ты расширил класс… а как его использовать? как прикрепить к письму нужный файл?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.