Расширение класса 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/
                А окончательного решения нет?
Подскажи плз… Вот ты расширил класс… а как его использовать? как прикрепить к письму нужный файл?
                    Подскажи плз… Вот ты расширил класс… а как его использовать? как прикрепить к письму нужный файл?
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.