Расширение класса minishop2.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 (там я закомментировал форматирование ФИО пользователя, у меня все клиенты — юр. лица, и форматирование ломает правильное написание названия).

Всем заранее спасибо за ответы!
Павел Ширяев
12 июня 2015, 07:50
modx.pro
2
3 607
+1

Комментарии: 2

Павел Ширяев
17 июня 2015, 12:27
0
Совершенно случайно нашел решение здесь:

modx.pro/development/3168-how-not-to-hacking-on-third-party-classes/
    Павел
    22 февраля 2017, 14:05
    0
    А окончательного решения нет?
    Подскажи плз… Вот ты расширил класс… а как его использовать? как прикрепить к письму нужный файл?
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2