The descision makers of tomorrow

When planning for events the event organizers have a few things they want to accomplish:

1. Everyone has a good time
2. They don’t lose too much money
3. The event makes sufficient “impact” on teaching and learning.
#3 on this list has been swimming around in my head over the last few days.. The problem we face is that event places are limited so it tends to be the same decision makers attending. I don’t think this presents equal opportunities so I have been thinking about how this may evolve..
Physical limitations at the event as far as number of people that can fit into a room at any given time. This was proven at Hand Held Learning 2009 which was a great conference but was over subscribed and overpriced.
Can technology provide a fix? All of google tech talks and TED are now published online, not live but that is fine. A few ICT conferences this year have been streamed live successfully.
Is the TED model the right model? It seems that way, TED charge for attendance to a conference and only fit a limited audience in.
So what technology is required to make this happen? Stuff that already exists!!
Twitter hash tags has become the norm now for many conference attendees and provide a great reference point.
Any video conferencing that can support a wide audience, it would be great if you could “Sponsor” your video feed and maybe even a twitter page sponsored by the event.
That way you could get “Micro Sponsors” for say a minute of ad time next to a video stream for say £50
We cannot ignore how important it is to allow our education and ICT conferences to be open and transparent and we MUST NOT exclude anyone from attending, be it physically or digitally.. (with exceptions obviously).

Add to my calendar script

I needed a simple one click method to create a calendar event that people could put straight into google calendars and outlook, this function supports outlook, google calendars is done w/ a simple google api function/call that should be treated separately.
I need to create these calendar events dynamically when a page is requested, I was looking for a free downloadable javascript or something that would have this bundled in but I couldn’t find anything for free that did what I wanted so here it is..
You have to pass it startdate, enddate & name in the right format, it’s not that complex to figure out..
In this example I’m getting the values from mysql and creating the code from that, a loto f this code is borrowed from http://sgowtham.net/blog/2008/05/26/php-mysql-ical-ics/ – he is mostly to thank.
You will need to modify the 1203 part too to create a unique file name but that should be easy with a little bit of php knowledge. Writing to the file system then reading it back was the only way I knew to do this, feel free to enlighten me of another way.
Here goes:

<?php
$id=$_GET[‘id’];
// MODIFY THIS LINE — I get $id as a param

include ‘mysql_connect.php’;
// MODIFY THIS LINE — include any files you need for mysql to query
?>

<?php
$ics_contents = “BEGIN:VCALENDAR\n”;
$ics_contents .= “VERSION:2.0\n”;
$ics_contents .= “PRODID:PHP\n”;
$ics_contents .= “METHOD:PUBLISH\n”;
$name = “Awesome”;
$ics_contents .= “X-WR-CALNAME:$name Holiday Dates\n”;

# Change the timezone as well daylight settings if need be
$ics_contents .= “X-WR-TIMEZONE:America/New_York\n”;
$ics_contents .= “BEGIN:VTIMEZONE\n”;
$ics_contents .= “TZID:America/New_York\n”;
$ics_contents .= “BEGIN:DAYLIGHT\n”;
$ics_contents .= “TZOFFSETFROM:-0500\n”;
$ics_contents .= “TZOFFSETTO:-0400\n”;
$ics_contents .= “DTSTART:20070311T020000\n”;
$ics_contents .= “RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\n”;
$ics_contents .= “TZNAME:EDT\n”;
$ics_contents .= “END:DAYLIGHT\n”;
$ics_contents .= “BEGIN:STANDARD\n”;
$ics_contents .= “TZOFFSETFROM:-0400\n”;
$ics_contents .= “TZOFFSETTO:-0500\n”;
$ics_contents .= “DTSTART:20071104T020000\n”;
$ics_contents .= “RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\n”;
$ics_contents .= “TZNAME:EST\n”;
$ics_contents .= “END:STANDARD\n”;
$ics_contents .= “END:VTIMEZONE\n”;

$sql=”select * from sh_dates where id = ‘$id'”;
// MODIFY THIS LINE — obvious.

$result=mysql_query($sql);
while ($row=mysql_fetch_array($result))
{
$id=$row[“id”];
// MODIFY THIS LINE —

$term=$row[“term”];
// MODIFY THIS LINE —

$start_date=$row[“startdate”];
// MODIFY THIS LINE —

$end_date=$row[“enddate”];
// MODIFY THIS LINE —

$name = “Event at Awesome”;
// MODIFY THIS LINE —

// $id = $schedule_details[‘ID’];
// $start_date = $schedule_details[‘StartDate’];
// $start_time = $schedule_details[‘StartTime’];
// $end_date = $schedule_details[‘EndDate’];
// $end_time = $schedule_details[‘EndTime’];
// $category = $schedule_details[‘Category’];

// $location = $schedule_details[‘Location’];
// $description = $schedule_details[‘Description’];

# Remove ‘-‘ in $start_date and $end_date
$estart_date = str_replace(“-“, “”, $start_date);
$eend_date = str_replace(“-“, “”, $end_date);

# Remove ‘:’ in $start_time and $end_time
$estart_time = str_replace(“:”, “”, $start_time);
$eend_time = str_replace(“:”, “”, $end_time);

# Replace some HTML tags
$name = str_replace(“<br>”, “\\n”, $name);
$name = str_replace(“&”, “&”, $name);
$name = str_replace(“→”, “–>”, $name);
$name = str_replace(“←”, “<–“, $name);
$name = str_replace(“,”, “\\,”, $name);
$name = str_replace(“;”, “\\;”, $name);

$location = str_replace(“<br>”, “\\n”, $location);
$location = str_replace(“&”, “&”, $location);
$location = str_replace(“→”, “–>”, $location);
$location = str_replace(“←”, “<–“, $location);
$location = str_replace(“,”, “\\,”, $location);
$location = str_replace(“;”, “\\;”, $location);

$description = str_replace(“<br>”, “\\n”, $description);
$description = str_replace(“&”, “&”, $description);
$description = str_replace(“→”, “–>”, $description);
$description = str_replace(“←”, “<–“, $description);
$description = str_replace(“<em>”, “”, $description);
$description = str_replace(“</em>”, “”, $description);

# Change TZID if need be
$ics_contents .= “BEGIN:VEVENT\n”;
$ics_contents .= “DTSTART;TZID=America/New_York” . $estart_date . “T”. $estart_time . “\n”;
$ics_contents .= “DTEND:” . $eend_date . “T”. $eend_time . “\n”;
$ics_contents .= “DTSTAMP:” . date(‘Ymd’) . “T”. date(‘His’) . “Z\n”;
$ics_contents .= “LOCATION:” . $location . “\n”;
$ics_contents .= “DESCRIPTION:” . $description . “\n”;
$ics_contents .= “SUMMARY:” . $name . “\n”;
$ics_contents .= “UID:” . $id . “\n”;
$ics_contents .= “SEQUENCE:0\n”;
$ics_contents .= “END:VEVENT\n”;
}

$ics_contents .= “END:VCALENDAR\n”;

# File to write the contents
$ics_file = ‘/var/www/ics/1203.ics’;
// MODIFY THIS LINE —

if (is_writable($ics_file)) {
if (!$handle = fopen($ics_file, ‘w’)) {
echo “Cannot open file ($ics_file)\n\n”;
exit;
}

# Write $ics_contents to opened file
if (fwrite($handle, $ics_contents) === FALSE) {
echo “Cannot write to file ($ics_file)\n\n”;
exit;
}

# echo “Success, wrote to <b>1203.ics</b><br>\n\n”;
// MODIFY THIS LINE —

fclose($handle);

} else {
echo “The file <b>$ics_file</b> is not writable\n\n”;
}
?>

<?php
//header( ‘Location: http://mywebsite.com/ics/1203.ics’ ) ;
// MODIFY THIS LINE —

echo $ics_contents;
?>

By clicking this php page a user will be presented with a downloable/clickable .ics file which can be imoprted into an outlook calendar.