farm-2.x-dev/modules/core/entity/modules/views/farm_entity_views.module
modules/core/entity/modules/views/farm_entity_views.module
<?php /** * @file * Contains farm_entity_views.module. */ use Drupal\farm_entity_views\FarmEntityViewsData; use Drupal\farm_entity_views\FarmLogViewsData; use Drupal\farm_entity_views\FarmQuantityViewsData; /** * Implements hook_module_implements_alter(). */ function farm_entity_views_module_implements_alter(&$implementations, $hook) { // Make sure this module's hook_modules_installed runs after the entity // module's implementation, so that we rebuild views data after bundle fields // are installed. $module = 'farm_entity_views'; if ($hook == 'modules_installed') { $implementation = [$module => $implementations[$module]]; unset($implementations[$module]); $implementations = array_merge($implementations, $implementation); } } /** * Implements hook_modules_installed(). */ function farm_entity_views_modules_installed($modules, $is_syncing) { // Reset the views data after installing modules. // See https://www.drupal.org/project/entity/issues/3206703#comment-14073184 if (\Drupal::hasService('views.views_data')) { \Drupal::service('views.views_data')->clear(); } } /** * Implements hook_entity_type_build(). */ function farm_entity_views_entity_type_build(array &$entity_types) { /** @var \Drupal\Core\Entity\EntityTypeInterface[] $entity_types */ // Set the views data handler class to FarmEntityViewsData. foreach (['asset', 'log', 'plan', 'quantity'] as $entity_type) { if (!empty($entity_types[$entity_type])) { // Use the correct class for each entity type. // Logs and quantities provide their own that we must extend from. $views_data_class = FarmEntityViewsData::class; switch ($entity_type) { case 'log': $views_data_class = FarmLogViewsData::class; break; case 'quantity': $views_data_class = FarmQuantityViewsData::class; break; } $entity_types[$entity_type]->setHandlerClass('views_data', $views_data_class); } } }