forked from a64f7bb4-7358-4778-9fbe-3b882c34cc1d/v1
83 lines
2.1 KiB
PHP
83 lines
2.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file
|
|
* Contains views API hooks for Flag module.
|
|
*/
|
|
|
|
/**
|
|
* Implements hook_views_data().
|
|
*/
|
|
function flag_views_data() {
|
|
$data = [];
|
|
|
|
$data['flag_counts']['count'] = [
|
|
'title' => t('Flag counter'),
|
|
'help' => t('The number of times a piece of content is flagged by any user.'),
|
|
'field' => [
|
|
'id' => 'numeric',
|
|
// 'click sortable' => TRUE,
|
|
],
|
|
/*'sort' => array(
|
|
'id' => 'groupby_numeric',
|
|
),
|
|
'filter' => array(
|
|
'id' => 'numeric',
|
|
),
|
|
'argument' => array(
|
|
'id' => 'numeric',
|
|
),*/
|
|
];
|
|
|
|
$data['flag_counts']['last_updated'] = [
|
|
'title' => t('Time last flagged'),
|
|
'help' => t('The time a piece of content was most recently flagged by any user.'),
|
|
'field' => [
|
|
'id' => 'date',
|
|
// 'click sortable' => TRUE,
|
|
],
|
|
/*'sort' => array(
|
|
'id' => 'date',
|
|
),
|
|
'filter' => array(
|
|
'id' => 'date',
|
|
),
|
|
'argument' => array(
|
|
'id' => 'date',
|
|
),*/
|
|
];
|
|
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* Implements hook_views_data_alter().
|
|
*/
|
|
function flag_views_data_alter(array &$data) {
|
|
$flags = \Drupal::service('flag')->getAllFlags();
|
|
$entity_type_manager = \Drupal::entityTypeManager();
|
|
|
|
foreach ($flags as $flag) {
|
|
$entity_type_id = $flag->getFlaggableEntityTypeId();
|
|
|
|
$entity_type = $entity_type_manager->getDefinition($entity_type_id);
|
|
if ($entity_type->hasHandlerClass('views_data')) {
|
|
$base_table = $entity_type_manager->getHandler($entity_type_id, 'views_data')->getViewsTableForEntityType($entity_type);
|
|
$data[$base_table]['flag_relationship'] = [
|
|
'title' => t('@entity_label flag', ['@entity_label' => $entity_type->getLabel()]),
|
|
'help' => t('Limit results to only those entity flagged by a certain flag; Or display information about the flag set on a entity.'),
|
|
'relationship' => [
|
|
'group' => t('Flag'),
|
|
'label' => t('Flags'),
|
|
'base' => 'flagging',
|
|
'base field' => 'entity_id',
|
|
'relationship field' => $entity_type->getKey('id'),
|
|
'id' => 'flag_relationship',
|
|
'flaggable' => $entity_type_id,
|
|
],
|
|
];
|
|
}
|
|
|
|
}
|
|
}
|