updates master
authorSteve Sutton <steve@gaslightmedia.com>
Wed, 25 Nov 2015 19:25:36 +0000 (14:25 -0500)
committerSteve Sutton <steve@gaslightmedia.com>
Wed, 25 Nov 2015 19:25:36 +0000 (14:25 -0500)
index.php
new-events.php [new file with mode: 0644]

index cfb3c7f..4a54da6 100644 (file)
--- a/index.php
+++ b/index.php
@@ -1,8 +1,5 @@
 <?php
 require_once '../setup.phtml';
 <?php
 require_once '../setup.phtml';
-if (!defined('COMMON_APP_BASE')) {
-    define('COMMON_APP_BASE', '/var/www/server/CommonApps/');
-}
 function icalDateFormat($date, $time)
 {
     $starting    = ($time)
 function icalDateFormat($date, $time)
 {
     $starting    = ($time)
@@ -10,10 +7,56 @@ function icalDateFormat($date, $time)
         : sprintf('%s', $date);
     return date('Ymd\THis', strtotime($starting));
 }
         : sprintf('%s', $date);
     return date('Ymd\THis', strtotime($starting));
 }
+function getHourArrayFromTime($time)
+{
+    if (!$time) {
+        return false;
+    }
+    //echo '<pre>' . var_dump($time) . '</pre>';
+    if (!preg_match('%(\d{1,2}):?(\d{2})? ?(\w{1,2})?%', $time, $timeParts)) {
+        //die('not found');
+        return false;
+    }
+    $hour = (!$timeParts[3] || in_array(strtolower(trim($timeParts[3])), array('pm', 'p')))
+        ? ( ((int)$timeParts[1] === 12) ? 12 : (int)$timeParts[1] += 12 )
+        : ( ((int)$timeParts[1] === 12) ? 0 : (int)$timeParts[1] );
+    //echo '<pre>' . print_r($timeParts, true) . '</pre>';
+    //echo '<pre>' . print_r($hour, true) . '</pre>';
+    //echo '<pre>' . print_r($hour, true) . '</pre>';
+    //exit;
+    // parse the hour from event
+    $dateTime = new DateTime();
+    $dateTime->setTime($hour, (int)$timeParts[2] );
+    return array(
+        'h' => $dateTime->format('g'),
+        'i' => $dateTime->format('i'),
+        'A' => $dateTime->format('A')
+    );
+}
+function phoneFrmt($number)
+{
+    $num = preg_replace('%[^0-9]%', '', trim($number));
+    if (strlen($num) == 10) {
+        preg_match('%(\d{3})(\d{3})(\d{4})%', $num, $part);
+        return '('. $part[1] . ') ' . $part[2] . '-' . $part[3];
+    } else if (strlen($num) == 7) {
+        preg_match('%(\d{3})(\d{4})%', $num, $part);
+        return $part[1] . '-' . $part[2];
+    } else {
+        return $num;
+
+    }
+}
+
+if (!$dbh) {
+    $dbh = Toolkit_Database::getInstance();
+}
 $icalHeader = <<<EOD
 BEGIN:VCALENDAR
 $icalHeader = <<<EOD
 BEGIN:VCALENDAR
+PRODID:-//Gaslight Media Inc//Gaslight Events Calendar v2.0/EN
 VERSION:2.0
 VERSION:2.0
-PRODID:~//Gaslight Media Inc//Gaslight Events Calendar v2.0/EN
+CALSCALE:GREGORIAN
+METHOD:PUBLISH
 EOD;
 
 $icalFooter = <<<EOD
 EOD;
 
 $icalFooter = <<<EOD
@@ -27,7 +70,7 @@ CREATED:%s
 DTSTAMP:%s
 DTSTART:%s
 DTEND:%s
 DTSTAMP:%s
 DTSTART:%s
 DTEND:%s
-DESCRIPTION:%s
+%s
 SUMMARY:%s
 STATUS:CONFIRMED
 EOD;
 SUMMARY:%s
 STATUS:CONFIRMED
 EOD;
@@ -35,72 +78,110 @@ $eventTemplateEnd = <<<EOD
 \nEND:VEVENT
 EOD;
 
 \nEND:VEVENT
 EOD;
 
-$dbh = Toolkit_Database::getInstance();
-
 // fetch all events from events database
 // 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();
+try {
+    $sql = "
+    SELECT descr
+      FROM topic
+     WHERE id = :id";
+    $getTopic = $dbh->prepare($sql);
+    $sql = "
+      SELECT *
+        FROM event
+       WHERE edate >= '01/01/2014'::DATE
+         AND visable = true
+         AND publichome = true
+    ORDER BY bdate,edate";
+    $stmt = $dbh->query($sql);
+    $events = $stmt->fetchAll(PDO::FETCH_ASSOC);
+} catch(PDOException $e) {
+    echo '<pre>' . print_r($e, true) . '</pre>';
+    die('done');
+}
+//echo '<pre>' . print_r($events, true) . '</pre>';
+//exit;
 header('Content-type: text/calendar; charset=utf-8');
 header('Content-Disposition: inline; filename=event-calendar.ics');
 header('Content-type: text/calendar; charset=utf-8');
 header('Content-Disposition: inline; filename=event-calendar.ics');
-echo $icalHeader;
+$output = '';
+$output .= $icalHeader;
 $dateTimeFormat  = '%s %s:%s %s';
 $dateFormat      = '%s';
 $timeStampFormat = 'Ymd\THis';
 $weekdays        =
     array(1 => 'SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA');
 $dateTimeFormat  = '%s %s:%s %s';
 $dateFormat      = '%s';
 $timeStampFormat = 'Ymd\THis';
 $weekdays        =
     array(1 => 'SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA');
-foreach ($events as $event) {
+foreach ($events as &$event) {
+    $eventOutput = '';
     // clean description
     // clean description
-    $description = str_replace("\n", '\n', strip_tags($event->getDescription()));
+    $description = 'DESCRIPTION:' . str_replace("\n", "\\n", strip_tags($event['descr']));
     $description = str_replace("\r", '', $description);
     $description = str_replace("\r", '', $description);
+    //$description = wordwrap($description, 75, "\\n");
     $eventDataStart = sprintf($eventTemplateStart,
     $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()),
+        $event['id'],
+        'staffords.com',
+        icalDateFormat($event['bdate'], false),
+        icalDateFormat($event['bdate'], getHourArrayFromTime($event['btime'])),
+        icalDateFormat($event['bdate'], getHourArrayFromTime($event['btime'])),
+        ($event['reacur'])
+            ? icalDateFormat($event['bdate'], getHourArrayFromTime($event['etime']))
+            : icalDateFormat($event['edate'], getHourArrayFromTime($event['etime'])),
         $description,
         $description,
-        $event->getHeader()
+        $event['header']
     );
     );
-    echo $eventDataStart;
-    // if event have lat lon data
-    if ($event->hasLatLon()) {
-        echo "\nGEO:" . $event->getLat() . ';' . $event->getLon();
+    $eventOutput = $eventDataStart;
+    // If event has Location data
+    if ($event['lat'] || $event['lon']) {
+        $eventOutput .= "\nGEO:" . $event['lat'] . ';' . $event['lon'];
     }
     }
-    if ($event->getPlace()) {
-        echo "\nLOCATION:" . $event->getPlace();
-        if ($event->getAddress()) {
-            echo "\," . $event->getAddress();
+    $hasLocation = ($event['loc']
+        || $event['address']
+        || $event['city']
+        || $event['state']
+        || $event['zip']
+    );
+    if ($hasLocation) {
+        $eventOutput .= "\nLOCATION:" . $event['loc'].' - ';
+        if ($event['address']) {
+            $eventOutput .= "{$event['address']}";
         }
         }
-        if ($event->getCity()) {
-            echo "\," . $event->getCity();
+        if ($event['city']) {
+            $eventOutput .= "\,{$event['city']}";
         }
         }
-        if ($event->getState()) {
-            echo "\," . $event->getState();
+        if ($event['state']) {
+            $eventOutput .= "\,{$event['state']}";
         }
         }
-        if ($event->getZip()) {
-            echo "\," . $event->getZip();
+        if ($event['zip']) {
+            $eventOutput .= "\,{$event['zip']}";
         }
     }
     // if event has contact data
         }
     }
     // if event has contact data
-    if ($event->hasContactInfo()) {
-        echo "\nCONTACT:" . $event->getContactName() . '\,' .$event->getContactEmail() .'\,'.$event->getContactPhone();
+    if ( $event['contact'] || $event['email'] || $event['phone']) {
+        $eventOutput .= "\nCONTACT:" . $event['email'] . '\;;' . phoneFrmt($event['phone']) . '\;'.$event['contact'];
+    }
+    if ($event['topicid']) {
+        $getTopic->bindParam(':id', $event['topicid'], PDO::PARAM_INT);
+        $getTopic->execute();
+        $categoryName = $getTopic->fetchColumn();
+        $eventOutput .= "\nCATEGORIES:" . $categoryName;
+    }
+    if ($event['cost']) {
+        $eventOutput .= "\nX-COST:" . $event['cost'];
+    }
+    if ($event['url']) {
+        if (!preg_match('%http://|https://%', $event['url'])) {
+            $event['url'] = 'http://' . $event['url'];
+        }
+        $eventOutput .= "\nX-TICKETS-URL:" . $event['url'];
     }
     // if event is recur
     }
     // if event is recur
-    if ($event->getRecurr()) {
+    if ($event['reacur']) {
         // if by day of the month
         // if by day of the month
-        if ($event->getDayom()) {
+        if ($event['dayom']) {
             $freq = 'FREQ=MONTHLY';
         }
         // if by day of the week
             $freq = 'FREQ=MONTHLY';
         }
         // if by day of the week
-        $daysOw = $event->getDaysow;
+        $daysOw = $event['daysow'];
         if ($daysOw) {
         if ($daysOw) {
-            $weekom = $event->getWeekom();
+            $weekom = $event['weekom'];
             $freq = 'FREQ=WEEKLY';
             switch ($weekom) {
             case 9:
             $freq = 'FREQ=WEEKLY';
             switch ($weekom) {
             case 9:
@@ -134,16 +215,13 @@ foreach ($events as $event) {
             if (!empty($eventDays)) {
                 $daysInWeek = implode(',', $eventDays);
             }
             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());
+            $eventOutput .= "\nRRULE:" .$freq . ';BYDAY=' . $daysInWeek . ';UNTIL=' . icalDateFormat($event['edate'], getHourArrayFromTime($event['etime']));
         }
         }
-    } else if ($event->getStarting() != $event->getEnding()) {
-        //echo "\nRRULE:FREQ=DAILY;UNTIL=" . icalDateFormat($event->getEnding(), $event->getEndHourArray());
     }
     }
-    echo $eventTemplateEnd;
+    $eventOutput .= $eventTemplateEnd;
+    $output .= $eventOutput;
+    $event['eventOutput'] = $eventOutput;
 }
 }
-echo $icalFooter;
+$output .= $icalFooter;
+echo $output;
 //echo '<pre>'.print_r($events, true).'</pre>';
 //echo '<pre>'.print_r($events, true).'</pre>';
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>';