Server IP : 185.86.78.101 / Your IP : 216.73.216.124 Web Server : Apache System : Linux 675867-vds-valikoshka1996.gmhost.pp.ua 5.4.0-150-generic #167-Ubuntu SMP Mon May 15 17:35:05 UTC 2023 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /www/wwwroot/mifepriston.org/vendor/yiisoft/yii2-debug/src/panels/ |
Upload File : |
<?php /** * @link https://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC * @license https://www.yiiframework.com/license/ */ namespace yii\debug\panels; use Yii; use yii\base\Event; use yii\debug\models\search\Mail; use yii\debug\Panel; use yii\helpers\FileHelper; use yii\mail\BaseMailer; use yii\mail\MessageInterface; /** * Debugger panel that collects and displays the generated emails. * * @property-read array $messagesFileName * * @author Mark Jebri <mark.github@yandex.ru> * @since 2.0 */ class MailPanel extends Panel { /** * @var string path where all emails will be saved. should be an alias. */ public $mailPath = '@runtime/debug/mail'; /** * @var array current request sent messages */ private $_messages = []; /** * {@inheritdoc} */ public function init() { parent::init(); Event::on('yii\mail\BaseMailer', BaseMailer::EVENT_AFTER_SEND, function ($event) { /* @var $event \yii\mail\MailEvent */ $message = $event->message; /* @var $message MessageInterface */ $messageData = [ 'isSuccessful' => $event->isSuccessful, 'from' => $this->convertParams($message->getFrom()), 'to' => $this->convertParams($message->getTo()), 'reply' => $this->convertParams($message->getReplyTo()), 'cc' => $this->convertParams($message->getCc()), 'bcc' => $this->convertParams($message->getBcc()), 'subject' => $message->getSubject(), 'charset' => $message->getCharset(), ]; $this->addMoreInformation($message, $messageData); // store message as file $fileName = $event->sender->generateMessageFileName(); $mailPath = Yii::getAlias($this->mailPath); FileHelper::createDirectory($mailPath); file_put_contents($mailPath . '/' . $fileName, $message->toString()); $messageData['file'] = $fileName; $this->_messages[] = $messageData; }); } /** * {@inheritdoc} */ public function getName() { return 'Mail'; } /** * {@inheritdoc} */ public function getSummary() { return Yii::$app->view->render('panels/mail/summary', [ 'panel' => $this, 'mailCount' => is_array($this->data) ? count($this->data) : '⚠' ]); } /** * {@inheritdoc} */ public function getDetail() { $searchModel = new Mail(); $dataProvider = $searchModel->search(Yii::$app->request->get(), $this->data); return Yii::$app->view->render('panels/mail/detail', [ 'panel' => $this, 'dataProvider' => $dataProvider, 'searchModel' => $searchModel ]); } /** * Save info about messages of current request. Each element is array holding * message info, such as: time, reply, bc, cc, from, to and other. * @return array messages */ public function save() { return $this->_messages; } /** * Return array of created email files * @return array */ public function getMessagesFileName() { $names = []; foreach ($this->_messages as $message) { $names[] = $message['file']; } return $names; } /** * @param mixed $attr * @return string */ private function convertParams($attr) { if (is_array($attr)) { $attr = implode(', ', array_keys($attr)); } return $attr; } /** * @param MessageInterface $message * @param array $messageData */ private function addMoreInformation(MessageInterface $message, array &$messageData) { // add more information when message is a SwiftMailer message if ($message instanceof \yii\swiftmailer\Message) { $this->addMoreInformationFromSwiftMailer($message, $messageData); } elseif ($message instanceof \yii\symfonymailer\Message) { $this->addMoreInformationFromSymfonyMailer($message, $messageData); } } private function addMoreInformationFromSwiftMailer(MessageInterface $message, array &$messageData) { /* @var $swiftMessage \Swift_Message */ $swiftMessage = $message->getSwiftMessage(); $body = $swiftMessage->getBody(); if (empty($body)) { $parts = $swiftMessage->getChildren(); foreach ($parts as $part) { if (!($part instanceof \Swift_Mime_Attachment)) { /* @var $part \Swift_Mime_MimePart */ if ($part->getContentType() === 'text/plain') { $messageData['charset'] = $part->getCharset(); $body = $part->getBody(); break; } } } } $messageData['body'] = $body; $messageData['time'] = $swiftMessage->getDate(); $messageData['headers'] = $swiftMessage->getHeaders(); } private function addMoreInformationFromSymfonyMailer(MessageInterface $message, array &$messageData) { /** @var \Symfony\Component\Mime\Email $symfonyMessage */ $symfonyMessage = $message->getSymfonyEmail(); /** @var \Symfony\Component\Mime\Part\AbstractPart $part */ $part = $symfonyMessage->getBody(); $body = null; if ($part instanceof \Symfony\Component\Mime\Part\TextPart && 'plain' === $part->getMediaSubtype()) { $messageData['charset'] = $part->asDebugString(); $body = $part->getBody(); } $messageData['body'] = $body; $messageData['headers'] = $part->getPreparedHeaders(); $messageData['time'] = $symfonyMessage->getDate(); } }