Skip to content
Snippets Groups Projects

Create akismet.views.inc

akismet.views.inc 0 → 100644
+ 200
0
<?php
/**
* @file
* Provide views data for akismet module.
*
* @ingroup views_module_handlers
*/
/**
* Implements hook_views_data().
*/
function akismet_views_data() {
$data['akismet']['table']['group'] = t('Akismet');
$data['akismet']['table']['base'] = [
'title' => t('Akismet'),
'help' => t('Stores Akismet responses for content.'),
];
$data['akismet']['entity'] = [
'title' => t('Entity type'),
'help' => t('Entity type of the content.'),
'field' => [
'id' => 'standard',
],
'filter' => [
'id' => 'string',
],
'sort' => [
'id' => 'standard',
],
'argument' => [
'id' => 'string',
],
];
$data['akismet']['id'] = [
'title' => t('ID'),
'help' => t('Unique entity ID of the content.'),
'field' => [
'id' => 'numeric',
],
'filter' => [
'id' => 'numeric',
],
'sort' => [
'id' => 'numeric',
],
'argument' => [
'id' => 'standard',
],
];
$data['akismet']['form_id'] = [
'title' => t('Form ID'),
'help' => t('The form_id of the form being protected.'),
'field' => [
'id' => 'standard',
],
'filter' => [
'id' => 'string',
],
'sort' => [
'id' => 'standard',
],
'argument' => [
'id' => 'string',
],
];
$data['akismet']['guid'] = [
'title' => t('GUID'),
'help' => t('The GUID returned by Akismet.'),
'field' => [
'id' => 'standard',
],
'filter' => [
'id' => 'string',
],
'sort' => [
'id' => 'standard',
],
'argument' => [
'id' => 'string',
],
];
$data['akismet']['changed'] = [
'title' => t('Changed'),
'help' => t('Timestamp when the data was changed.'),
'field' => [
'id' => 'date',
],
'filter' => [
'id' => 'date',
],
'sort' => [
'id' => 'date',
],
];
$data['akismet']['moderate'] = [
'title' => t('Needs Moderation'),
'help' => t('Whether the content needs to be moderated.'),
'field' => [
'id' => 'boolean',
],
'filter' => [
'id' => 'boolean',
'label' => t('Needs Moderation'),
'type' => 'yes-no',
'accept null' => TRUE,
'use_equal' => TRUE,
],
'sort' => [
'id' => 'standard',
],
];
$data['akismet']['classification'] = [
'title' => t('Classification'),
'help' => t('Result of text analysis: "ham", "spam" or "unsure".'),
'field' => [
'id' => 'standard',
],
'filter' => [
'id' => 'string',
],
'sort' => [
'id' => 'standard',
],
'argument' => [
'id' => 'string',
],
];
return $data;
}
/**
* Implements hook_views_data_alter().
*/
function akismet_views_data_alter(array &$data) {
$entityTypeManager = \Drupal::entityTypeManager();
// Provide integration with node and comment node types.
$entityTypeIds = [
'node',
'comment',
];
foreach ($entityTypeIds as $entityTypeId) {
$entityType = $entityTypeManager->getDefinition($entityTypeId, FALSE);
if ($entityType && $entityType->hasHandlerClass('views_data')) {
$base_table = $entityTypeManager
->getHandler($entityTypeId, 'views_data')
->getViewsTableForEntityType($entityType);
// Entity relationship to akismet data.
$data[$base_table]['akismet_relationship'] = [
'title' => t('@entity_label Akismet data', ['@entity_label' => $entityType->getLabel()]),
'help' => t('Link results to Akismet spam prevention data.'),
'relationship' => [
'group' => t('Akismet'),
'label' => t('Akismet'),
'base' => 'akismet',
'base field' => 'id',
'field' => $entityType->getKey('id'),
'relationship field' => $entityType->getKey('id'),
'id' => 'standard',
'extra' => [
[
'field' => 'entity',
'value' => $entityTypeId,
],
],
],
];
// Akismet table relationship to the entity.
$data['akismet'][$entityTypeId . '_relationship'] = [
'title' => t('Related @entity_label entity', ['@entity_label' => $entityType->getLabel()]),
'help' => t('Link to related @entity_label.', ['@entity_label' => $entityType->getLabel()]),
'relationship' => [
'group' => $entityType->getLabel(),
'label' => $entityType->getLabel(),
'base' => $base_table,
'base field' => $entityType->getKey('id'),
'field' => 'id',
'id' => 'standard',
'extra' => [
[
'left_field' => 'entity',
'value' => $entityTypeId,
],
],
],
];
}
}
}
Loading