コード例 #1
0
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;
}
コード例 #2
0
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;
}