You are here

function _taxonomy_publisher_filter_filter_options in Taxonomy Tools 8

Same name and namespace in other branches
  1. 7 taxonomy_publisher_filter/taxonomy_publisher_filter.api.inc \_taxonomy_publisher_filter_filter_options()

Filter views exposed form field witch use taxonomy vocabulary.

Parameters

array $field_options: form array with term options

string $field_name: name of the field to filter

array $vids: taxonomy Vocabulary list used by the Publisher module

array $settings: settings to create an uniq cache name

1 call to _taxonomy_publisher_filter_filter_options()
taxonomy_publisher_filter_form_views_exposed_form_alter in taxonomy_publisher_filter/taxonomy_publisher_filter.module
Implements hook_form_FORM_ID_alter().

File

taxonomy_publisher_filter/taxonomy_publisher_filter.api.inc, line 142
API functions.

Code

function _taxonomy_publisher_filter_filter_options(&$field_options, $field_name, $vocabularies, $settings) {
  $i = 0;
  foreach ($field_options as $tid => $value) {
    if (is_int($tid)) {
      $term_id = $tid;

      /* If is hierarchy dropdown */
      if (is_object($value)) {
        $array = $value->option;
        $term_id = key($array);
      }
      $term = taxonomy_term_load($term_id);
      if ($i == 0) {
        if (!in_array($term->vocabulary_machine_name, $vocabularies)) {
          return;
        }
        else {
          $tvl = taxonomy_vocabulary_load($term->vid);
          if (user_access("taxonomy_publisher_filter_views_{$tvl->machine_name}")) {
            if (TAXONOMY_PUBLISHER_FILTER_CACHE === TRUE) {
              $cache_name = "tpf_views";
              if (count($settings)) {
                foreach ($settings as $value) {
                  $cache_name .= "_" . $value;
                }
              }
              if ($cached = _taxonomy_publisher_filter_get_cache($cache_name)) {
                $field_options = $cached;
                return;
              }
            }
          }
          else {
            return;
          }
        }
      }
      if (_taxonomy_publisher_filter_check_term_is_unpublished($term)) {
        unset($field_options[$tid]);
      }
      $i++;
    }
  }
  if (empty($cached) && TAXONOMY_PUBLISHER_FILTER_CACHE === TRUE) {
    _taxonomy_publisher_filter_set_cache($cache_name, $field_options);
  }
}