public function FacetapiDependencyFacet::execute in Facet API Bonus 7
Executes the dependency check.
File
- plugins/
facetapi/ dependency_facet.inc, line 25 - Performs a dependency check against other specified facets/facet values
Class
- FacetapiDependencyFacet
- Adds a dependency on another facet being active.
Code
public function execute() {
// Show this facet, if it is active itself and forced deactivation isn't on.
if (!$this->settings['force_deactivation'] && $this->activeItems[$this->facet['name']]) {
return;
}
else {
// Show this facet if no facet dependencies are configured.
$facets = array_filter($this->settings['facets']);
if (empty($facets)) {
return;
}
else {
// Check if any configured facet dependency is met.
foreach ($facets as $facet_name) {
if ($this->activeItems[$facet_name]) {
// Show/hide if dependency is met without specific dependency items.
if (empty($this->settings['facet_items_' . $facet_name])) {
return !$this->settings['reverse_dependency'];
}
else {
$items_string = trim($this->settings['facet_items_' . $facet_name]);
$facet_items = drupal_explode_tags($items_string);
// Show/hide if dependency is met without specific dependency items.
if (empty($items_string) || empty($facet_items)) {
return !$this->settings['reverse_dependency'];
}
else {
foreach ($facet_items as $facet_item) {
foreach ($this->activeItems[$facet_name] as $active_facet_item_key => $active_facet_item_data) {
if (!empty($facet_item)) {
if (!$this->settings['regex']) {
if ($facet_item == $active_facet_item_key) {
return !$this->settings['reverse_dependency'];
}
}
else {
$facet_item = '/' . trim(str_replace('/', '\\/', $facet_item)) . '/';
if (preg_match($facet_item, $active_facet_item_key)) {
return !$this->settings['reverse_dependency'];
}
}
}
}
}
}
}
}
}
// Otherwise show/hide this facet.
return $this->settings['reverse_dependency'];
}
}
}