示例#1
0
 function amr_format_attendees($attendees)
 {
     /* receive array of hopefully attendess[] CN and MAILTO, and possibly other */
     // in plain ics only individuals and accepted attendees listed and by plain name only
     // maybe show some stats ?
     $text = '';
     $status = array();
     //'ACCEPTED','TENTATIVE','DELEGATED','NEEDS_ACTION','DECLINED','COMPLETED','IN-PROCESS'
     if (is_array($attendees)) {
         // How should they be sorted ?
         // CN alpha? or email alpha or by part stat? or role ?
         amr_sort_by_two_cols('ROLE', 'CN', $attendees);
         // sort by participaton status, may include all
         foreach ($attendees as $i => $attendee) {
             if ($attendee['PARTSTAT'] == 'ACCEPTED') {
                 $list[] = amr_format_attendee($attendee);
             }
         }
         if (!empty($list)) {
             $text .= '<ul><li>' . implode('</li><li> ', $list) . '</li></ul>';
         }
     }
     return $text;
 }
示例#2
0
function amr_check_for_multiday_events(&$events)
{
    //for each event passed, chcek whiether it is a multi day, and if so add dummy days
    global $amr_globaltz;
    if (!empty($events)) {
        foreach ($events as $m => $event) {
            if (empty($event['EventDate'])) {
                if (ICAL_EVENTS_DEBUG) {
                    echo 'Unexpected empty event date for event ';
                    print_r($event, true);
                }
            } else {
                date_timezone_set($event['EventDate'], $amr_globaltz);
                // may do this earlier (after recurrence though), no harm in twice
                $days = amr_event_is_multiday($event);
                if (isset($_GET['debugmulti'])) {
                    echo '<br />Doing ' . $event['id'] . ' <b>multiday = ' . $days . ' </b>';
                }
                if ($days > 1) {
                    $day = 1;
                    if (empty($events[$m]['Classes'])) {
                        $events[$m]['Classes'] = '';
                    }
                    $events[$m]['Classes'] .= ' firstday ';
                    // already have first day
                    $events[$m]['dummyYMD'] = $event['EventDate']->format('Ymd');
                    //numerical so do not need amr_date_format
                    $events[$m]['MultiDay'] = $day;
                    //$tempdate = amr_newDateTime();  // create new obect so we do not update the same object
                    while ($day < $days) {
                        // must not be <= because we are plus one anyway - and original is first anyway
                        if (isset($_GET['debugmulti'])) {
                            echo '<br /> Do day = ' . $day;
                        }
                        $tempdate = new Datetime();
                        //if cloning dont need tz
                        $tempdate = clone $event['EventDate'];
                        // copy the current event date
                        date_modify($tempdate, '+' . $day . ' days');
                        // adjust days to currenmt midddle date if necessary
                        // must do like above in case we go over a month
                        $day = $day + 1;
                        $dummy[$m][$day] = $events[$m];
                        // copy event data over , but use dumy so we do not reprocess the additions
                        $dummy[$m][$day]['dummyYMD'] = $tempdate->format('Ymd');
                        // now set the date for this dummy event //numerical so do not need amr_date_format
                        $dummy[$m][$day]['MultiDay'] = $day;
                        // flag it as a multi day
                        // set the classes so we can style multi days
                        if (isset($_GET['debugmulti'])) {
                            echo ' dummyymd= ' . $dummy[$m][$day]['dummyYMD'];
                        }
                        if ($day >= $days) {
                            $dummy[$m][$day]['Classes'] .= ' lastday ';
                            $dummy[$m][$day]['Classes'] = str_replace('firstday', '', $dummy[$m][$day]['Classes']);
                        } else {
                            $dummy[$m][$day]['Classes'] = str_replace('firstday', '', $dummy[$m][$day]['Classes']);
                            $dummy[$m][$day]['Classes'] .= ' middleday ';
                        }
                    }
                } else {
                    $events[$m]['dummyYMD'] = $event['EventDate']->format('Ymd');
                    //numerical so do not need amr_date_format
                    $events[$m]['MultiDay'] = '0';
                    // to force non multidays to bottom
                }
                $events[$m]['dummytime'] = $event['EventDate']->format('His');
                //for sorting according to time
            }
        }
        //once we have processed all the events, THEN we can add the dummies in, so we do not reprocess them!
        if (!empty($dummy)) {
            foreach ($dummy as $m => $dummydays) {
                foreach ($dummydays as $k => $event) {
                    $events[] = $event;
                }
            }
        }
        //$events = amr_sort_by_three_cols ('dummyYMD', 'MultiDay', 'dummytime', $events);
        $events = amr_sort_by_two_cols('dummyYMD', 'MultiDay', $events);
        if (isset($_GET['debugmulti'])) {
            foreach ($events as $i => $e) {
                echo '<br />' . $e['id'] . ' ' . $e['EventDate']->format('Ymd') . ' ' . $e['dummyYMD'];
            }
        }
    }
    return $events;
}