Skip to content
Snippets Groups Projects
Commit 426034d1 authored by Graham Cole's avatar Graham Cole
Browse files

The beginnings of an events component. Still needs some attention

parent 44854d9d
No related branches found
No related tags found
No related merge requests found
<?php
/*
* Main events page, including admin functions
*/
$permission = "bananas";
$eventtable = "events";
$eventcategories = array("Talks","Gaming","Social","Misc");
$smarty->assign("event_categories", $eventcategories);
$events_index = array_search("Events", $pathlist);
if (isset($pathlist[$events_index + 1])) {
list($eventcat, $eventid) = split("_", $pathlist[$events_index + 1]);
if (!in_array($eventcat, $eventcategories)) {
trigger_error("Invalid category specified", E_USER_ERROR);
unset($eventcat, $eventid);
} elseif (!ctype_digit($eventid)) {
trigger_error("Invalid event specified", E_USER_ERROR);
print_r($eventid);
unset($eventcat, $eventid);
}
}
if (isset($session->groups[$permission])) {
$smarty->assign("editable", true);
$action = @$_REQUEST['action'];
// process form actions with side-effects first
switch ($action) {
case "save":
$record['name'] = $_REQUEST['name'];
$record['description'] = $_REQUEST['description'];
$record['location'] = $_REQUEST['location'];
// reconstruct date/time
$datetime = $_REQUEST['Date_Year'];
$datetime .= str_pad((int) $_REQUEST['Date_Month'],2,'0',STR_PAD_LEFT);
$datetime .= str_pad((int) $_REQUEST['Date_Day'],2,'0',STR_PAD_LEFT);
$datetime .= " ".$_REQUEST['Time_Hour'];
$datetime .= ":".$_REQUEST['Time_Minute'];
$record['whn'] = $datetime;
$record['category'] = $_REQUEST['category'];
$id = @$_REQUEST['id'];
// this may be an existing event which needs to be updated
if (ctype_digit($id)) {
$DB->AutoExecute($eventtable, $record, 'UPDATE', "id=".$id);
} else {
$DB->AutoExecute($eventtable, $record, 'INSERT');
}
unset($action);
break;
}
}
if (isset($session->groups[$permission]) && isset($action)) {
switch($action) {
case "create":
$event = array("id" => "*");
$body = $smarty->fetch("event_edit.tpl");
break;
case "edit":
if (isset($eventcat) && isset($eventid)) {
$event = $DB->GetRow("SELECT * FROM $eventtable WHERE id=?", array($eventid));
$smarty->assign("event", $event);
$body = $smarty->fetch("event_edit.tpl");
}
break;
}
} else {
// not logged in, or no special action required
if (isset($eventcat) && isset($eventid)) {
$event = $DB->GetRow("SELECT * FROM $eventtable WHERE id=?", array($eventid));
$smarty->assign("event", $event);
$body = $smarty->fetch("event.tpl");
} else {
$events = $DB->GetAll("SELECT *,date_part('epoch', whn) as whn_timestamp
FROM $eventtable WHERE date_trunc('day', whn) >= date_trunc('day',NOW()) ORDER BY whn ASC");
$oldevents = $DB->GetAll("SELECT *,date_part('epoch', whn) as whn_timestamp
FROM $eventtable WHERE date_trunc('day', whn) < date_trunc('day', NOW()) ORDER BY whn DESC LIMIT 3");
$smarty->assign("events", $events);
$smarty->assign("oldevents", $oldevents);
$body = $smarty->fetch("events.tpl");
}
}
$smarty->assign("body", $body);
$smarty->assign("title", "Events");
$smarty->assign("secondary", file_get_contents("../static/fragments/Events-secondary.txt"));
?>
<?php
require_once("../lib/iCalcreator.class.php");
// disable site template
$no_template = TRUE;
// initialise calendar
$cal = new vcalendar();
$cal->setConfig('unique_id', 'sucs.org');
$cal->setProperty('method', 'PUBLISH');
$cal->setProperty('x-wr-calname', "SUCS Events Calendar");
$cal->setProperty('X-WR-CALDESC',
"Upcoming events for members of the Swansea University Computer Society");
$cal->setProperty('X-WR-TIMEZONE', 'Europe/London');
//populate with upcoming events
$events = $DB->GetAll("SELECT * FROM events WHERE
date_trunc('day', whn) >= date_trunc('day', NOW()) ORDER BY whn ASC");
foreach($events as $event) {
$vevent = new vevent();
$vevent->setProperty('dtstart', $event['whn']);
$vevent->setProperty('LOCATION', $event['location']);
$vevent->setProperty('summary', $event['name']);
$vevent->setProperty('description', $event['description']);
$vevent->setProperty('categories', $event['category']);
$cal -> setComponent($vevent);
}
//spit out a shiny new iCal file
$cal->returnCalendar();
?>
This diff is collapsed.
<h1>{$event.name}</h1>
{$event.description}
{$event.location}
{$event.whn}
<form class="admin" method="post" action="{$baseurl}{$path}">
<input type="hidden" name="action" value="save" />
<input type="hidden" name="id" value="{$event.id}" />
<div class="row">
<label for="name">Event Name</label>
<span class="textinput"><input type="text" name="name" {if $event.name}value="{$event.name}"{/if} /></span>
</div>
<div class="row">
<label>Date</label>
<span class="textinput">{html_select_date}</span>
</div>
<div class="row">
<label>Time</label>
<span class="textinput">{html_select_time display_seconds=false minute_interval=5}</span>
</div>
<div class="row">
<label for="category">Event Type</label>
<span class="textinput">
{foreach from=$event_categories item=category}
<input type="radio" name="category" value="{$category}" /> {$category}<br />
{/foreach}
</span>
</div>
<div class="row">
<label for="location">Location</label>
<span class="textinput"><input type="text" name="location" {if $event.location}value="{$event.location}"{/if} /></span>
</div>
<div class="row">
<label for="description">Description</label>
<span class="textinput"><textarea name="description">{if $event.description}{$event.description}{/if}</textarea></span>
</div>
<div class="row">
<input type="submit" value="Save" />
</div>
</form>
{if $editable}
<a href="?action=create">Add Event</a>
{/if}
<div class="box">
<div class="boxhead"><h2>Upcoming Events</h2></div>
<div class="boxcontent">
{foreach from=$events item=event}
<h3>{$event.name}
{if $editable}<a href="{$event.category}_{$event.id}?action=edit">(Edit)</a>{/if}
</h3>
{$event.whn_timestamp|date_format:"%A, %e %B"} @ {$event.location}
<p>
{$event.description}
</p>
{/foreach}
</div>
<div class="hollowfoot"><div><div></div></div></div>
</div>
<hr />
<h2>Recent Events</h2>
<p><small>You missed them. Too bad!</small></p>
{foreach from=$oldevents item=event}
<h4>{$event.name} - <small>{$event.whn_timestamp|date_format:"%A, %e %B"}</small></h4>
{/foreach}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment