bynder-4.0.0-beta1/src/Exception/BynderException.php
src/Exception/BynderException.php
<?php
namespace Drupal\bynder\Exception;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\Core\Messenger\MessengerTrait;
/**
* Base exception class for Bynder.
*/
abstract class BynderException extends \Exception {
use StringTranslationTrait;
use MessengerTrait;
/**
* Admin permission related to this exception.
*
* @var string
*/
protected $adminPermission = 'administer bynder configuration';
/**
* User-facing for admin users.
*
* @var string
*/
protected $adminMessage;
/**
* Message to be logged in the Drupal's log.
*
* @var string
*/
protected $logMessage;
/**
* Arguments for the log message.
*
* @var array
*/
protected $logMessageArgs;
/**
* Constructs BundleNotExistException.
*/
public function __construct(
$message,
$admin_message = NULL,
$log_message = NULL,
$log_message_args = []
) {
$this->adminMessage = $admin_message ?: $message;
$this->logMessage = $log_message ?: $this->adminMessage;
$this->logMessageArgs = $log_message_args;
parent::__construct($message);
}
/**
* Displays message to the user.
*/
public function displayMessage() {
if (\Drupal::currentUser()->hasPermission($this->adminPermission)) {
$this->messenger()->addError($this->adminMessage);
}
else {
$this->messenger()->addError($this->getMessage());
}
}
/**
* Logs exception into Drupal's log.
*
* @return \Drupal\bynder\Exception\BynderException
* This exception.
*/
public function logException() {
\Drupal::logger('bynder')->error($this->logMessage, $this->logMessageArgs);
return $this;
}
}
