for the newer event Common
authorSteve Sutton <steve@gaslightmedia.com>
Wed, 19 Aug 2015 13:37:51 +0000 (09:37 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Wed, 19 Aug 2015 13:37:51 +0000 (09:37 -0400)
new-events.php [new file with mode: 0644]

diff --git a/new-events.php b/new-events.php
new file mode 100644 (file)
index 0000000..cfb3c7f
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+require_once '../setup.phtml';
+if (!defined('COMMON_APP_BASE')) {
+    define('COMMON_APP_BASE', '/var/www/server/CommonApps/');
+}
+function icalDateFormat($date, $time)
+{
+    $starting    = ($time)
+        ? sprintf('%s %s:%s %s', $date, $time['h'], $time['i'], $time['A'])
+        : sprintf('%s', $date);
+    return date('Ymd\THis', strtotime($starting));
+}
+$icalHeader = <<<EOD
+BEGIN:VCALENDAR
+VERSION:2.0
+PRODID:~//Gaslight Media Inc//Gaslight Events Calendar v2.0/EN
+EOD;
+
+$icalFooter = <<<EOD
+\nEND:VCALENDAR
+EOD;
+
+$eventTemplateStart = <<<EOD
+\nBEGIN:VEVENT
+UID:%d@%s
+CREATED:%s
+DTSTAMP:%s
+DTSTART:%s
+DTEND:%s
+DESCRIPTION:%s
+SUMMARY:%s
+STATUS:CONFIRMED
+EOD;
+$eventTemplateEnd = <<<EOD
+\nEND:VEVENT
+EOD;
+
+$dbh = Toolkit_Database::getInstance();
+
+// fetch all events from events database
+define('COMMON_EVENTS_SCHEMA', 'events');
+require_once COMMON_APP_BASE . 'EventCalendar/V1/models/EventMapper.php';
+$eventMapper = new EventMapper(Toolkit_Database::getInstance());
+
+$events = $eventMapper->fetchFilteredEvents();
+header('Content-type: text/calendar; charset=utf-8');
+header('Content-Disposition: inline; filename=event-calendar.ics');
+echo $icalHeader;
+$dateTimeFormat  = '%s %s:%s %s';
+$dateFormat      = '%s';
+$timeStampFormat = 'Ymd\THis';
+$weekdays        =
+    array(1 => 'SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA');
+foreach ($events as $event) {
+    // clean description
+    $description = str_replace("\n", '\n', strip_tags($event->getDescription()));
+    $description = str_replace("\r", '', $description);
+    $eventDataStart = sprintf($eventTemplateStart,
+        $event->getId(),
+        'keweenaw.info',
+        icalDateFormat($event->getCreated(), false),
+        icalDateFormat($event->getStarting(), $event->getStartHourArray()),
+        icalDateFormat($event->getStarting(), $event->getStartHourArray()),
+        ($event->getRecurr())
+            ? icalDateFormat($event->getStarting(), $event->getEndHourArray())
+            : icalDateFormat($event->getEnding(), $event->getEndHourArray()),
+        $description,
+        $event->getHeader()
+    );
+    echo $eventDataStart;
+    // if event have lat lon data
+    if ($event->hasLatLon()) {
+        echo "\nGEO:" . $event->getLat() . ';' . $event->getLon();
+    }
+    if ($event->getPlace()) {
+        echo "\nLOCATION:" . $event->getPlace();
+        if ($event->getAddress()) {
+            echo "\," . $event->getAddress();
+        }
+        if ($event->getCity()) {
+            echo "\," . $event->getCity();
+        }
+        if ($event->getState()) {
+            echo "\," . $event->getState();
+        }
+        if ($event->getZip()) {
+            echo "\," . $event->getZip();
+        }
+    }
+    // if event has contact data
+    if ($event->hasContactInfo()) {
+        echo "\nCONTACT:" . $event->getContactName() . '\,' .$event->getContactEmail() .'\,'.$event->getContactPhone();
+    }
+    // if event is recur
+    if ($event->getRecurr()) {
+        // if by day of the month
+        if ($event->getDayom()) {
+            $freq = 'FREQ=MONTHLY';
+        }
+        // if by day of the week
+        $daysOw = $event->getDaysow;
+        if ($daysOw) {
+            $weekom = $event->getWeekom();
+            $freq = 'FREQ=WEEKLY';
+            switch ($weekom) {
+            case 9:
+                $freq .= ';INTERVAL=2';
+                $ord = '';
+                break;
+            case 1:
+                $ord = '1';
+                break;
+            case 2:
+                $ord = '2';
+                break;
+            case 3:
+                $ord = '3';
+                break;
+            case 4:
+                $ord = '4';
+                break;
+            default:
+                $ord = '';
+                break;
+            }
+            $eventDays = array();
+            $ri = 1;
+            for ($iterator = 1; $iterator <= 7; ++$iterator) {
+                if ($daysOw & $ri) {
+                    $eventDays[] = $ord.$weekdays[$iterator];
+                }
+                $ri  = $ri << 1;
+            }
+            if (!empty($eventDays)) {
+                $daysInWeek = implode(',', $eventDays);
+            }
+            $categoryName = $event->getCategoryName();
+            if ($categoryName) {
+                echo "\nCATEGORIES:" . $categoryName;
+            }
+            echo "\nRRULE:" .$freq . ';BYDAY=' . $daysInWeek . ';UNTIL=' . icalDateFormat($event->getEnding(), $event->getEndHourArray());
+        }
+    } else if ($event->getStarting() != $event->getEnding()) {
+        //echo "\nRRULE:FREQ=DAILY;UNTIL=" . icalDateFormat($event->getEnding(), $event->getEndHourArray());
+    }
+    echo $eventTemplateEnd;
+}
+echo $icalFooter;
+//echo '<pre>'.print_r($events, true).'</pre>';