function event_filter_nodes in Event 5
Same name and namespace in other branches
- 5.2 event.module \event_filter_nodes()
1 call to event_filter_nodes()
- event_calendar_rss in ./
event.module - Creates an rss feed of events.
File
- ./
event.module, line 1198
Code
function event_filter_nodes($nodes, $types, $terms) {
$event_types = event_get_types();
$results = array();
if (isset($types)) {
// content type filters set
if (isset($terms)) {
// taxonomy and content type filters set
foreach ($nodes as $node) {
if (in_array($node->type, $types) && event_taxonomy_filter($node, $terms)) {
// this node is the content type and taxonomy term requested
if (count($types) == 1 && in_array($node->type, $event_types['solo'])) {
// only display solo types if there is only one event type requested
$results[] = $node;
}
elseif (in_array($node->type, $event_types['all'])) {
$results[] = $node;
}
}
}
}
else {
// only content type filters
foreach ($nodes as $node) {
if (in_array($node->type, $types)) {
if (count($types) == 1 && in_array($node->type, $event_types['solo'])) {
// only display solo types if there is only one event type requested
$results[] = $node;
}
elseif (in_array($node->type, $event_types['all'])) {
$results[] = $node;
}
}
}
}
}
elseif (isset($terms)) {
// no types, only taxonomy filters
foreach ($nodes as $node) {
if (event_taxonomy_filter($node, $terms) && in_array($node->type, $event_types['all'])) {
$results[] = $node;
}
}
}
else {
// no filters set, only show events with content types states of 'all'
foreach ($nodes as $node) {
if (in_array($node->type, $event_types['all'])) {
return $nodes;
}
}
}
return $results;
}