function commerce_reports_views_data_alter in Commerce Reporting 8
Same name and namespace in other branches
- 7.4 includes/views/commerce_reports.views.inc \commerce_reports_views_data_alter()
- 7 includes/views/commerce_reports.views.inc \commerce_reports_views_data_alter()
- 7.2 includes/views/commerce_reports.views.inc \commerce_reports_views_data_alter()
- 7.3 includes/views/commerce_reports.views.inc \commerce_reports_views_data_alter()
Implements hook_views_data_alter().
File
- ./
commerce_reports.views.inc, line 17 - Views integration for Commerce reports.
Code
function commerce_reports_views_data_alter(array &$data) {
/* Move this to entity module:
function entity_views_data_alter(array &$data) {
foreach (entity_get_bundle_plugin_entity_types() as $entity_type) {
$entity_type_id = $entity_type->id();
$base_table = $entity_type->getBaseTable() ?: $entity_type->id();
...
*/
$entity_type_id = 'commerce_order_report';
$base_table = 'commerce_order_report';
// Get the list of bundles the field appears in.
$entity_type_bundle_info = \Drupal::service('entity_type.bundle.info');
$bundles = array_keys($entity_type_bundle_info
->getBundleInfo($entity_type_id));
// Get the list of field definitions for all bundles.
$entity_field_manager = \Drupal::service('entity_field.manager');
$all_field_definitions = [];
foreach ($bundles as $bundle) {
$field_definitions = $entity_field_manager
->getFieldDefinitions($entity_type_id, $bundle);
$all_field_definitions += $field_definitions;
}
$all_field_definitions = array_filter($all_field_definitions, function (FieldDefinitionInterface $field_definition) {
return $field_definition instanceof BundleFieldDefinition;
});
/** @var \Drupal\entity\BundleFieldDefinition $field_storage */
foreach ($all_field_definitions as $field_storage) {
$field_data = commerce_reports_field_default_views_data($field_storage, $base_table);
// Possibly replace the following with hooks.
commerce_reports_bundle_plugin_fields_views_data($field_data, $field_storage);
if (is_array($field_data)) {
$data = NestedArray::mergeDeep($data, $field_data);
}
}
}