<?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', $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{2})%', $time, $timeParts)) {
+ //die('not found');
+ return false;
+ }
+ $hour = (strtolower($timeParts[3]) === strtolower('PM'))
+ ? ( ((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, $timeParts[2]);
+ return array(
+ 'h' => $dateTime->format('g'),
+ 'i' => $dateTime->format('i'),
+ 'A' => $dateTime->format('A')
+ );
+}
$icalHeader = <<<EOD
BEGIN:VCALENDAR
VERSION:2.0
\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();
+try {
+ $sql = "
+ SELECT descr
+ FROM topic
+ WHERE id = :id";
+ $getTopic = $dbh->prepare($sql);
+ $sql = "
+ SELECT *
+ FROM event
+ 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');
-echo $icalHeader;
+$output = '';
+$output .= $icalHeader;
$dateTimeFormat = '%s %s:%s %s';
$dateFormat = '%s';
$timeStampFormat = 'Ymd\THis';
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("\n", '\n', strip_tags($event['descr']));
$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()),
+ $event['id'],
+ 'emmetcounty.org',
+ 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,
- $event->getHeader()
+ $event['header']
);
- 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();
- }
- }
+ $output .= $eventDataStart;
// if event has contact data
- if ($event->hasContactInfo()) {
- echo "\nCONTACT:" . $event->getContactName() . '\,' .$event->getContactEmail() .'\,'.$event->getContactPhone();
+ if ( $event['contact'] || $event['email'] || $event['phone']) {
+ $output .= "\nCONTACT:" . $event['contact'] . '\,' .$event['email'] .'\,'.$event['phone'];
}
// if event is recur
- if ($event->getRecurr()) {
+ if ($event['reacur']) {
// if by day of the month
- if ($event->getDayom()) {
+ if ($event['dayom']) {
$freq = 'FREQ=MONTHLY';
}
// if by day of the week
- $daysOw = $event->getDaysow;
+ $daysOw = $event['daysow'];
if ($daysOw) {
- $weekom = $event->getWeekom();
+ $weekom = $event['weekom'];
$freq = 'FREQ=WEEKLY';
switch ($weekom) {
case 9:
if (!empty($eventDays)) {
$daysInWeek = implode(',', $eventDays);
}
- $categoryName = $event->getCategoryName();
- if ($categoryName) {
- echo "\nCATEGORIES:" . $categoryName;
+ if ($event['topicid']) {
+ $getTopic->bindParam(':id', $event['topicid'], PDO::PARAM_INT);
+ $getTopic->execute();
+ $categoryName = $getTopic->fetchColumn();
+ $output .= "\nCATEGORIES:" . $categoryName;
}
- echo "\nRRULE:" .$freq . ';BYDAY=' . $daysInWeek . ';UNTIL=' . icalDateFormat($event->getEnding(), $event->getEndHourArray());
+ $output .= "\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;
+ $output .= $eventTemplateEnd;
}
-echo $icalFooter;
+$output .= $icalFooter;
+echo $output;
//echo '<pre>'.print_r($events, true).'</pre>';