arch-8.x-1.x-dev/modules/price/modules/search_api/arch_price_search_api.views.inc
modules/price/modules/search_api/arch_price_search_api.views.inc
<?php /** * @file * Views hook implementations for the ArchPrice SearchAPI module. */ use Drupal\search_api\Entity\Index; /** * Implements hook_views_data_alter(). */ function arch_price_search_api_views_data_alter(array &$data) { /** @var \Drupal\search_api\IndexInterface $index */ foreach (Index::loadMultiple() as $index) { try { // Fill in base data. $key = 'search_api_index_' . $index->id(); $table = &$data[$key]; $price_fields = []; if ($index->id() === 'products') { foreach ($table as $name => $field) { if (empty($field['field']['real field'])) { continue; } if (preg_match('%^entity:(.*?)/arch_price_(net|gross)(_currency)?_(.*?)%', $field['field']['real field'])) { $price_fields[] = $name; } } } if (!empty($price_fields)) { $table['arch_price_value_filter'] = [ 'filter' => [ 'id' => 'arch_price_search_api', 'allow empty' => TRUE, ], 'title' => 'Price filter', // @todo Add description. 'help' => t('(No description available)'), ]; } } catch (\Exception $e) { $args = [ '%index' => $index->label(), ]; if (!function_exists('watchdog_exception')) { $logger = \Drupal::logger('search_api'); // phpcs:ignore Drupal.Classes.FullyQualifiedNamespace.UseStatementMissing \Drupal\Core\Utility\Error::logException( $logger, $e, '%type while computing Views data for index %index: @message in %function (line %line of %file).', $args ); } else { watchdog_exception('search_api', $e, '%type while computing Views data for index %index: @message in %function (line %line of %file).', $args); } } } }