function amr_constrain_components($events, $start, $end, $limit) { global $amr_limits; $newevents = $events; /* should we be moving to destination date */ if (count($newevents) < 1 or !is_array($newevents)) { return false; } $newevents = apply_filters('amr_events_before_sort', $newevents); // used for example to exclude private events $newevents = amr_sort_by_key($newevents, 'EventDate'); $newevents = apply_filters('amr_events_after_sort', $newevents); if (ICAL_EVENTS_DEBUG) { //var_dump($newevents); echo '<br>Sorted ' . count($newevents) . ' events'; echo '<br>first ' . $newevents[0]['EventDate']->format('c'); echo '<br>last ' . $newevents[count($newevents) - 1]['EventDate']->format('c'); echo '<br>start ' . $start->format('c'); echo '<br>end ' . $end->format('c'); echo '<br>Now constrain them...<br> '; } $constrained = array(); $count = 0; foreach ($newevents as $k => $event) { // if (isset($event['EventDate']) and is_object($event['EventDate'])) { if (amr_falls_between($event['EventDate'], $start, $end) or isset($event['EndDate']) and (amr_falls_between($event['EndDate'], $start, $end) or amr_falls_between($start, $event['EventDate'], $event['EndDate']))) { $constrained[] = $event; if (isset($_GET['debugall'])) { echo '<br>Choosing no: ' . $k . ' ' . $event['EventDate']->format('c') . ' ending ' . (isset($event['EndDate']) ? $event['EndDate']->format('c') : ' no end'); } ++$count; } if (isset($_GET['debugall'])) { echo '<br>Not choosing?' . $k . ' ' . $event['EventDate']->format('c') . ' ending ' . (isset($event['EndDate']) ? $event['EndDate']->format('c') : ' no end'); } } else { $constrained[] = $event; if (isset($_GET['debugall'])) { echo '<br>Whats happening?'; var_dump($event); } } if ($count >= $limit) { break; } } if (isset($amr_limits['eventsoffset']) and !empty($amr_limits['eventsoffset'])) { if (function_exists('amr_do_events_offset')) { $constrained = amr_do_events_offset($constrained); } } $constrained = apply_filters('amr_events_after_sort_and_constrain', $constrained); return $constrained; }
function amr_handle_taxonomy_hierarchy($taxonomy_groupby, $groupsubset) { // need to sort by parents , so they will appear in correct order hierarchically (add a class ?) $newset = amr_sort_by_key($groupsubset, 'parent'); //if (isset($_GET['debugg'])) {echo '<br />sorted by parent ';foreach ($newset as $t => $arr){ echo '<br />'.$t.'<br />'; var_dump($arr);} ;} // then for each parent, if it has not appeared, we need to 'add it' before the child - will have no events $args = array('orderby' => 'term_group', 'hide_empty' => 1, 'fields' => 'all', 'hierarchical' => true); // get the terms for that taxonomy ? how to sort ???? $terms = get_terms($taxonomy_groupby, $args); foreach ($newset as $termname => $garray) { // for our newly sorted array if (!empty($garray['parent'])) { //if (isset($_GET['debugg'])) {echo '<br />Term = '.$termname.' Parent = '.$garray['parent'];} $parentterm = get_term($garray['parent'], $taxonomy_groupby); if (isset($_GET['debugg'])) { echo '<br />ParentTerm = '; var_dump($parentterm->name); } if (!isset($newset[$parentterm->name])) { // then it hasn't appeared //if (isset($_GET['debugg'])) {echo '<br />Title to add:'.$parentterm->name;} $grptitle_to_add = amr_prepare_term_title($parentterm->name, $taxonomy_groupby); if (isset($_GET['debugg'])) { echo '<br />Existing title ='; var_dump($newset[$termname]['title']); echo '<br />Title to add:' . $grptitle_to_add; } array_unshift($newset[$termname]['title'], $grptitle_to_add); if (isset($_GET['debugg'])) { echo '<br /> New set of titles: <br />'; var_dump($newset[$termname]['title']); } } else { if (isset($_GET['debugg'])) { echo '<br />already have in this parent ' . $parentterm->name; } } } } return $newset; }