You are here

function crm_core_match_get_engines in CRM Core 7

Returns a list of all matching engines registered with CRM Core Match.

Return value

array A list of matching engines for CRM Core Match.

4 calls to crm_core_match_get_engines()
crm_core_match_admin_config_engines_form in modules/crm_core_match/crm_core_match.admin.inc
Matching Engines form.
crm_core_match_crm_core_contact_match in modules/crm_core_match/crm_core_match.module
Implements hook_crm_core_contact_match().
crm_core_match_info_page in modules/crm_core_match/crm_core_match.test.inc
crm_core_match_testing_page in modules/crm_core_match/crm_core_match.test.inc
Page callback to display match debug info.

File

modules/crm_core_match/crm_core_match.module, line 123
Manages matching engines for identifying duplicate contacts in CRM Core. Allows CRM Core to install, enable and disable matching engines.

Code

function crm_core_match_get_engines() {
  $cache =& drupal_static(__FUNCTION__);
  if (empty($cache)) {
    $engines = array();
    $stored_engines = db_select('crm_core_match_engines')
      ->fields('crm_core_match_engines')
      ->execute()
      ->fetchAllAssoc('machine_name');
    foreach (module_implements('crm_core_match_engine_register') as $module) {
      $function = $module . '_crm_core_match_engine_register';
      $engine = $function();
      if (isset($stored_engines[$engine
        ->getMachineName()])) {
        $engine
          ->setStatus($stored_engines[$engine
          ->getMachineName()]->status);
        $engine
          ->setWeight($stored_engines[$engine
          ->getMachineName()]->weight);
        $engine
          ->setID($stored_engines[$engine
          ->getMachineName()]->eid);
      }
      else {
        $engine
          ->setStatus(0);
        $engine
          ->setWeight(10);
        $engine
          ->setID(0);
      }
      $engines[] = $engine;
    }
    uasort($engines, '_crm_core_match_engine_weight_cmp');
    $cache = $engines;
  }
  return $cache;
}