You are here

apachesolr_og.module in Apache Solr Organic Groups Integration 6.3

Same filename and directory in other branches
  1. 6.2 apachesolr_og.module
  2. 7 apachesolr_og.module

Integrates Organic Group info with Apache Solr search application.

File

apachesolr_og.module
View source
<?php

/**
 * @file
 *   Integrates Organic Group info with Apache Solr search application.
 */

/**
 * Implements hook_apachesolr_index_document_build_ENTITY_TYPE().
 *
 * @param ApacheSolrDocument $document
 * @param type $node
 * @param type $env_id
 */
function apachesolr_og_apachesolr_index_document_build_node(ApacheSolrDocument $document, $node, $env_id) {

  // Index group posts
  if (!empty($node->og_groups)) {
    foreach ($node->og_groups as $gid) {
      $document
        ->setMultiValue(apachesolr_og_gid_key(), $gid);
    }
  }
  elseif (isset($node->og_description) && variable_get('apachesolr_og_groupnode', 0)) {

    // Index the group node itself as in the group.
    $document
      ->setMultiValue(apachesolr_og_gid_key(), $node->nid);
  }
}

/**
 * Implements hook_facetapi_facet_info().
 * @param type $searcher_info
 * @return array $facets
 */
function apachesolr_og_facetapi_facet_info($searcher_info) {
  $key = apachesolr_og_gid_key();
  $facets = array();
  $facets[$key] = array(
    'field' => $key,
    'label' => t('Organic Group'),
    'description' => t('Filter by Organic Group'),
  );
  return $facets;
}

/**
 * Apachesolr index name for Organic group id
 *
 */
function apachesolr_og_gid_key() {
  $group_id = array(
    'name' => 'og_gid',
    'multiple' => TRUE,
    'index_type' => 'integer',
  );

  // Returns im_og_gid.
  return apachesolr_index_key($group_id);
}