function _taxonomy_publisher_filter_filter_options in Taxonomy Tools 8
Same name and namespace in other branches
- 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);
}
}