Class yii\debug\panels\MailPanel
Inheritance | yii\debug\panels\MailPanel » yii\debug\Panel » yii\base\Component |
---|---|
Available since extension's version | 2.0 |
Source Code | https://github.com/yiisoft/yii2-debug/blob/master/src/panels/MailPanel.php |
Debugger panel that collects and displays the generated emails.
Public Properties
Property | Type | Description | Defined By |
---|---|---|---|
$actions | array | Array of actions to add to the debug modules default controller. | yii\debug\Panel |
$data | mixed | Data associated with panel | yii\debug\Panel |
$detail | string | Content that is displayed in debugger detail view. | yii\debug\Panel |
$error | yii\debug\FlattenException|null | Error while saving the panel | yii\debug\Panel |
$id | string | Panel unique identifier. | yii\debug\Panel |
$mailPath | string | Path where all emails will be saved. | yii\debug\panels\MailPanel |
$messagesFileName | array | yii\debug\panels\MailPanel | |
$module | yii\debug\Module | yii\debug\Panel | |
$name | string | Name of the panel. | yii\debug\Panel |
$summary | string | Content that is displayed at debug toolbar. | yii\debug\Panel |
$tag | string | Request data set identifier. | yii\debug\Panel |
$url | string | URL pointing to panel detail view. | yii\debug\Panel |
Public Methods
Method | Description | Defined By |
---|---|---|
getDetail() | yii\debug\panels\MailPanel | |
getError() | yii\debug\Panel | |
getMessagesFileName() | Return array of created email files | yii\debug\panels\MailPanel |
getName() | yii\debug\panels\MailPanel | |
getSummary() | yii\debug\panels\MailPanel | |
getTraceLine() | Returns a trace line | yii\debug\Panel |
getUrl() | yii\debug\Panel | |
hasError() | yii\debug\Panel | |
init() | yii\debug\panels\MailPanel | |
isEnabled() | Checks whether this panel is enabled. | yii\debug\Panel |
load() | Loads data into the panel | yii\debug\Panel |
save() | Save info about messages of current request. Each element is array holding message info, such as: time, reply, bc, cc, from, to and other. | yii\debug\panels\MailPanel |
setError() | yii\debug\Panel |
Protected Methods
Method | Description | Defined By |
---|---|---|
getLogMessages() | Gets messages from log target and filters according to their categories and levels. | yii\debug\Panel |
Property Details
Path where all emails will be saved. should be an alias.
Method Details
public string getDetail ( ) | ||
return | string |
Content that is displayed in debugger detail view |
---|
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
]);
}
Defined in: yii\debug\Panel::getError()
public yii\debug\FlattenException|null getError ( ) |
public function getError()
{
return $this->error;
}
Defined in: yii\debug\Panel::getLogMessages()
Gets messages from log target and filters according to their categories and levels.
See also \yii\log\Target::filterMessages().
protected array getLogMessages ( $levels = 0, $categories = [], $except = [], $stringify = false ) | ||
$levels | integer |
The message levels to filter by. This is a bitmap of level values. Value 0 means allowing all levels. |
$categories | array |
The message categories to filter by. If empty, it means all categories are allowed. |
$except | array |
The message categories to exclude. If empty, it means all categories are allowed. |
$stringify | boolean |
Convert non-string (such as closures) to strings |
return | array |
The filtered messages. |
---|
protected function getLogMessages($levels = 0, $categories = [], $except = [], $stringify = false)
{
$target = $this->module->logTarget;
$messages = $target->filterMessages($target->messages, $levels, $categories, $except);
if (!$stringify) {
return $messages;
}
foreach ($messages as &$message) {
if (!isset($message[0]) || is_string($message[0])) {
continue;
}
// exceptions may not be serializable if in the call stack somewhere is a Closure
if ($message[0] instanceof \Throwable || $message[0] instanceof \Exception) {
$message[0] = (string) $message[0];
} else {
$message[0] = VarDumper::export($message[0]);
}
}
return $messages;
}
Return array of created email files
public array getMessagesFileName ( ) |
public function getMessagesFileName()
{
$names = [];
foreach ($this->_messages as $message) {
$names[] = $message['file'];
}
return $names;
}
public string getName ( ) | ||
return | string |
Name of the panel |
---|
public function getName()
{
return 'Mail';
}
public string getSummary ( ) | ||
return | string |
Content that is displayed at debug toolbar |
---|
public function getSummary()
{
return Yii::$app->view->render('panels/mail/summary', [
'panel' => $this,
'mailCount' => is_array($this->data) ? count($this->data) : '⚠'
]);
}
Defined in: yii\debug\Panel::getTraceLine()
Returns a trace line
public string getTraceLine ( $options ) | ||
$options | array |
The array with trace |
return | string |
The trace line |
---|
public function getTraceLine($options)
{
/**
* If an internal PHP function, such as `call_user_func`, in the backtrace, the 'file' and 'line' not be available.
* @see https://www.php.net/manual/en/function.debug-backtrace.php#59713
*/
if (!isset($options['file'])) {
return VarDumper::dumpAsString($options);
}
if (!isset($options['text'])) {
$options['text'] = "{$options['file']}:{$options['line']}";
}
$traceLine = $this->module->traceLine;
if ($traceLine === false) {
return $options['text'];
}
$options['file'] = str_replace('\\', '/', $options['file']);
foreach ($this->module->tracePathMappings as $old => $new) {
$old = rtrim(str_replace('\\', '/', $old), '/') . '/';
if (StringHelper::startsWith($options['file'], $old)) {
$new = rtrim(str_replace('\\', '/', $new), '/') . '/';
$options['file'] = $new . substr($options['file'], strlen($old));
break;
}
}
$rawLink = $traceLine instanceof \Closure ? $traceLine($options, $this) : $traceLine;
return strtr($rawLink, ['{file}' => $options['file'], '{line}' => $options['line'], '{text}' => $options['text']]);
}
Defined in: yii\debug\Panel::getUrl()
public string getUrl ( $additionalParams = null ) | ||
$additionalParams | null|array |
Optional additional parameters to add to the route |
return | string |
URL pointing to panel detail view |
---|
public function getUrl($additionalParams = null)
{
$route = [
'/' . $this->module->getUniqueId() . '/default/view',
'panel' => $this->id,
'tag' => $this->tag,
];
if (is_array($additionalParams)) {
$route = ArrayHelper::merge($route, $additionalParams);
}
return Url::toRoute($route);
}
Defined in: yii\debug\Panel::hasError()
public boolean hasError ( ) |
public function hasError()
{
return $this->error !== null;
}
public void init ( ) |
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;
});
}
Defined in: yii\debug\Panel::isEnabled()
Checks whether this panel is enabled.
public boolean isEnabled ( ) | ||
return | boolean |
Whether this panel is enabled. |
---|
public function isEnabled()
{
return true;
}
Defined in: yii\debug\Panel::load()
Loads data into the panel
public void load ( $data ) | ||
$data | mixed |
public function load($data)
{
$this->data = $data;
}
Save info about messages of current request. Each element is array holding message info, such as: time, reply, bc, cc, from, to and other.
public array save ( ) | ||
return | array |
Messages |
---|
public function save()
{
return $this->_messages;
}
Defined in: yii\debug\Panel::setError()
public void setError ( yii\debug\FlattenException $error ) | ||
$error | yii\debug\FlattenException |
public function setError(FlattenException $error)
{
$this->error = $error;
}