You are here

public function DefaultMatchingEngine::getRules in CRM Core 8.2

Same name and namespace in other branches
  1. 8.3 modules/crm_core_match/src/Plugin/crm_core_match/engine/DefaultMatchingEngine.php \Drupal\crm_core_match\Plugin\crm_core_match\engine\DefaultMatchingEngine::getRules()
  2. 8 modules/crm_core_match/src/Plugin/crm_core_match/engine/DefaultMatchingEngine.php \Drupal\crm_core_match\Plugin\crm_core_match\engine\DefaultMatchingEngine::getRules()

Gets the rules that are matched.

By default those are the contact type fields.

@todo Extend with typed data definition to limit selections.

Example data:


(
  field_name => array(
    label,
    definition,
),

Return value

mixed

Overrides MatchEngineBase::getRules

File

modules/crm_core_match/src/Plugin/crm_core_match/engine/DefaultMatchingEngine.php, line 390

Class

DefaultMatchingEngine
DefaultMatchingEngine class.

Namespace

Drupal\crm_core_match\Plugin\crm_core_match\engine

Code

public function getRules() {
  $rules = [];

  // Collect all fields of all contact types.
  $contact_types = $this->entityTypeManager
    ->getStorage('crm_core_individual_type')
    ->loadMultiple();
  $field_definitions = [];
  foreach ($contact_types as $contact_type_id => $value) {
    $field_definitions += $this->entityFieldManager
      ->getFieldDefinitions('crm_core_individual', $contact_type_id);
  }
  foreach ($this
    ->getConfigurationItem('rules') as $field_name => $field_settings) {

    // Skip fields that got dropped and disabled on matcher.
    if (!isset($field_definitions[$field_name]) || !$this
      ->isEnabled($field_settings)) {
      continue;
    }

    /** @var \Drupal\Core\Field\FieldDefinitionInterface $field_definition */
    $field_definition = $field_definitions[$field_name];
    $rules[$field_name] = [
      'label' => $field_definition
        ->getLabel(),
      'definition' => $field_definition,
    ];
  }
  return $rules;
}