class AutobanDbLogController in Automatic IP ban (Autoban) 8
Autoban database logging.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\dblog\Controller\DbLogController
- class \Drupal\autoban_dblog\Controller\AutobanDbLogController
- class \Drupal\dblog\Controller\DbLogController
Expanded class hierarchy of AutobanDbLogController
File
- modules/
autoban_dblog/ src/ Controller/ AutobanDbLogController.php, line 25 - Contains \Drupal\autoban_dblog\Controller\AutobanDbLogController.php .
Namespace
Drupal\autoban_dblog\ControllerView source
class AutobanDbLogController extends DbLogController {
/**
* The autoban object.
*
* @var \Drupal\autoban\Controller\AutobanController
*/
protected $autoban;
/**
* Construct the AutobanAnalyzeForm.
*
* @param \Drupal\Core\Database\Connection $database
* A database connection.
* @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
* A module handler.
* @param \Drupal\Core\Datetime\DateFormatterInterface $date_formatter
* The date formatter service.
* @param \Drupal\Core\Form\FormBuilderInterface $form_builder
* The form builder service.
* @param \Drupal\autoban\Controller\AutobanController $autoban
* Autoban object.
*/
public function __construct(Connection $database, ModuleHandlerInterface $module_handler, DateFormatterInterface $date_formatter, FormBuilderInterface $form_builder, AutobanController $autoban) {
parent::__construct($database, $module_handler, $date_formatter, $form_builder);
$this->autoban = $autoban;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('database'), $container
->get('module_handler'), $container
->get('date.formatter'), $container
->get('form_builder'), $container
->get('autoban'));
}
/**
* Parent buildFilterQuery.
*/
protected function buildFilterQuery() {
return parent::buildFilterQuery();
}
/**
* Override overview() method.
*/
public function overview() {
$autobanController = $this->autoban;
$filter = $this
->buildFilterQuery();
$rows = [];
$classes = static::getLogLevelClassMap();
$this->moduleHandler
->loadInclude('dblog', 'admin.inc');
$build['dblog_filter_form'] = $this->formBuilder
->getForm('Drupal\\dblog\\Form\\DblogFilterForm');
$header = [
// Icon column.
'',
[
'data' => $this
->t('Type'),
'field' => 'w.type',
'class' => [
RESPONSIVE_PRIORITY_MEDIUM,
],
],
[
'data' => $this
->t('Date'),
'field' => 'w.wid',
'sort' => 'desc',
'class' => [
RESPONSIVE_PRIORITY_LOW,
],
],
$this
->t('Message'),
[
'data' => $this
->t('User'),
'field' => 'ufd.name',
'class' => [
RESPONSIVE_PRIORITY_MEDIUM,
],
],
[
'data' => $this
->t('IP address'),
'field' => 'w.hostname',
'class' => [
RESPONSIVE_PRIORITY_MEDIUM,
],
],
[
'data' => $this
->t('Operations'),
'class' => [
RESPONSIVE_PRIORITY_LOW,
],
],
];
$query = $this->database
->select('watchdog', 'w')
->extend('\\Drupal\\Core\\Database\\Query\\PagerSelectExtender')
->extend('\\Drupal\\Core\\Database\\Query\\TableSortExtender');
$query
->fields('w', [
'wid',
'uid',
'severity',
'type',
'timestamp',
'message',
'variables',
'link',
'hostname',
]);
$query
->leftJoin('users_field_data', 'ufd', 'w.uid = ufd.uid');
if (!empty($filter['where'])) {
$query
->where($filter['where'], $filter['args']);
}
$result = $query
->limit(50)
->orderByHeader($header)
->execute();
foreach ($result as $dblog) {
$message = $this
->formatMessage($dblog);
if ($message && isset($dblog->wid)) {
$title = Unicode::truncate(Html::decodeEntities(strip_tags($message)), 256, TRUE, TRUE);
$log_text = Unicode::truncate($title, 56, TRUE, TRUE);
$url = Url::fromRoute('dblog.event', [
'event_id' => $dblog->wid,
], [
'attributes' => [
// Provide a title for the link for useful hover hints. The
// Attribute object will escape any unsafe HTML entities in the
// final text.
'title' => $title,
],
]);
$message = Link::fromTextAndUrl($log_text, $url);
}
$username = [
'#theme' => 'username',
'#account' => $this->userStorage
->load($dblog->uid),
];
$ip = $dblog->hostname;
if (!empty($ip) && $autobanController
->canIpBan($ip)) {
// Retrieve Autoban Ban Providers list.
$providers = [];
$banManagerList = $autobanController
->getBanProvidersList();
if (!empty($banManagerList)) {
$destination = $this
->getDestinationArray();
foreach ($banManagerList as $id => $item) {
$url_item = Url::fromRoute('autoban.direct_ban', [
'ips' => $ip,
'provider' => $id,
], [
'query' => [
'destination' => $destination['destination'],
],
]);
$url_link = Link::fromTextAndUrl($item['name'], $url_item);
$providers[$id] = $url_link
->toString();
}
}
}
$providers_list = !empty($providers) ? ' ' . implode(', ', $providers) : '';
$rows[] = [
'data' => [
// Cells.
[
'class' => [
'icon',
],
],
$this
->t($dblog->type),
$this->dateFormatter
->format($dblog->timestamp, 'short'),
$message,
[
'data' => $username,
],
$ip,
[
'data' => [
'#markup' => $dblog->link . $providers_list,
],
],
],
// Attributes for table row.
'class' => [
Html::getClass('dblog-' . $dblog->type),
$classes[$dblog->severity],
],
];
}
$build['dblog_table'] = [
'#type' => 'table',
'#header' => $header,
'#rows' => $rows,
'#attributes' => [
'id' => 'admin-dblog',
'class' => [
'admin-dblog',
],
],
'#empty' => $this
->t('No log messages available.'),
'#attached' => [
'library' => [
'dblog/drupal.dblog',
],
],
];
$build['dblog_pager'] = [
'#type' => 'pager',
];
return $build;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
AutobanDbLogController:: |
protected | property | The autoban object. | |
AutobanDbLogController:: |
protected | function |
Parent buildFilterQuery. Overrides DbLogController:: |
|
AutobanDbLogController:: |
public static | function |
Instantiates a new instance of this class. Overrides DbLogController:: |
|
AutobanDbLogController:: |
public | function |
Override overview() method. Overrides DbLogController:: |
|
AutobanDbLogController:: |
public | function |
Construct the AutobanAnalyzeForm. Overrides DbLogController:: |
|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
DbLogController:: |
protected | property | The database service. | |
DbLogController:: |
protected | property | The date formatter service. | |
DbLogController:: |
protected | property |
The form builder service. Overrides ControllerBase:: |
|
DbLogController:: |
protected | property |
The module handler service. Overrides ControllerBase:: |
|
DbLogController:: |
protected | property | The user storage. | |
DbLogController:: |
protected | function | Creates a Link object if the provided URI is valid. | |
DbLogController:: |
public | function | Displays details about a specific database log message. | |
DbLogController:: |
public | function | Formats a database log message. | |
DbLogController:: |
public static | function | Gets an array of log level classes. | |
DbLogController:: |
public | function | Shows the most frequent log messages of a given event type. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |