function apachesolr_update_7009 in Apache Solr Search 8
Same name and namespace in other branches
- 7 apachesolr.install \apachesolr_update_7009()
Update Facet API block deltas to account for removal of numeric ID from field names.
File
- ./apachesolr.install, line 585 
- Install and related hooks for apachesolr_search.
Code
function apachesolr_update_7009() {
  if (variable_get('apachesolr_update_from_6303', FALSE)) {
    return NULL;
  }
  // Only run when facetapi is available and/or installed
  if (module_exists('facetapi')) {
    module_load_include('inc', 'facetapi', 'facetapi.block');
    // Get all searchers
    $searchers = facetapi_get_searcher_info();
    $realms = facetapi_get_realm_info();
    foreach ($searchers as $searcher_id => $searcher) {
      foreach ($realms as $realm_id => $realm) {
        foreach (field_info_fields() as $field_name => $field) {
          // Generate the old delta
          $facet_name_old = $field['id'] . '_' . $field['field_name'];
          $delta_old = facetapi_build_delta($searcher['name'], $realm['name'], $facet_name_old);
          $delta_old = substr(drupal_hash_base64($delta_old), 0, 32);
          // Generate the new delta
          $facet_name = $field['field_name'];
          $delta = facetapi_build_delta($searcher['name'], $realm['name'], $facet_name);
          $delta = substr(drupal_hash_base64($delta), 0, 32);
          db_update('block')
            ->fields(array(
            'delta' => $delta,
          ))
            ->condition('module', 'facetapi')
            ->condition('delta', $delta_old)
            ->execute();
        }
      }
    }
  }
}