Actions

Ics.php

From HacDC Wiki

Revision as of 21:45, 18 February 2010 by ITechGeek (talk | contribs) (Created page with 'This code still needs to be cleaned up some. <?php include('Drupal.login.php'); $ics_contents = "BEGIN:VCALENDAR\n"; $ics_contents .= "VERSION:2.0\n"; $ics_contents .= "PRODI…')
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This code still needs to be cleaned up some.

<?php

include('Drupal.login.php');

$ics_contents = "BEGIN:VCALENDAR\n"; $ics_contents .= "VERSION:2.0\n"; $ics_contents .= "PRODID:PHP\n"; $ics_contents .= "METHOD:PUBLISH\n"; $ics_contents .= "X-WR-CALNAME:HacDC Schedule\n";

  1. 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";

$events = mysql_query("SELECT node.nid AS nid,

  node.title AS title,
  node.changed as node_changed,
  node.type AS node_type,
  node.vid AS node_vid,
  content_field_date.field_date_value as Start,  
  content_field_date.field_date_value2 as End
FROM (node
left join content_field_date on node.vid = content_field_date.vid)

WHERE type = 'event' ORDER BY Start ");

function clean_url($desc) { $desc = html_entity_decode($desc); $desc = strip_tags($desc); $desc = ereg_replace("[^A-Za-z0-9 -|=`~!@#$%^&*()_+,./?><:;'{}]", "", $desc ); return $desc; }

while ($schedule_details = mysql_fetch_assoc($events)) {

if (date('T', strtotime($schedule_details['Start'])) == "EDT") { $Offset = 4*60*60; } else { $Offset = 5*60*60; } $Start = strtotime($schedule_details['Start'])-$Offset; $End = strtotime($schedule_details['End'])-$Offset;

  1. if ($Start >= time()) {

$desc1 = mysql_query("SELECT * from node_revisions WHERE nid = '".$schedule_details['nid']."' and vid = '".$schedule_details['node_vid']."'");

$desc1 = mysql_fetch_assoc($desc1);

  1. echo html_entity_decode($desc1['title'])."
    ";
  2. echo html_entity_decode($desc1['teaser'])."
    ";
  3. echo html_entity_decode($desc1['body'])."

    ";

$Yr = date(Y,$Start); $Mo = date(m,$Start); $Day = date(d,$Start); $Hr = date(H,$Start); $Min = date(i,$Start); $Yr1 = date(Y,$End); $Mo1 = date(m,$End); $Day1 = date(d,$End); $Hr1 = date(H,$End); $Min1 = date(i,$End);

 $id            = $schedule_details['nid'];
 $start_date    = $Yr."-".$Mo."-".$Day;
 $start_time    = $Hr.":".$Min.":00";
 $end_date      = $Yr1."-".$Mo1."-".$Day1;
 $end_time      = $Hr1.":".$Min1.":00"; 
  1. $category = $schedule_details['Category'];
 $category      = "HacDC";
 $name          = $schedule_details['title'];
 $location      = "1525 Newton St NW, Washington DC 20010 (Near corner of 16th and Newton NW)";
 $description   = clean_url(strip_tags($desc1['body']));

 # 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("
", "\\r\\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("
", "\\r\\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("
", "\\r\\n", $description); $description = str_replace("&", "&", $description); $description = str_replace("→", "-->", $description); $description = str_replace("←", "<--", $description); $description = str_replace("", "", $description); $description = str_replace("", "", $description); # Change TZID if need be $ics_contents .= "BEGIN:VEVENT\r\n"; $ics_contents .= "DTSTART;TZID=America/New_York:" . $estart_date . "T". $estart_time . "\r\n"; $ics_contents .= "DTEND;TZID=America/New_York:" . $eend_date . "T". $eend_time . "\r\n"; $ics_contents .= "DTSTAMP:" . date('Ymd') . "T". date('His') . "Z\r\n"; $ics_contents .= "SUMMARY:" . $name . "\r\n"; $ics_contents .= "LOCATION:" . $location . "\r\n"; $ics_contents .= "DESCRIPTION:" . $description . "\r\n"; $ics_contents .= "UID:" . $id .rand(0,9999). "\r\n"; $ics_contents .= "SEQUENCE:0\r\n"; $ics_contents .= "END:VEVENT\r\n";

}

  1. }

$ics_contents .= "END:VCALENDAR\r\n";

echo $ics_contents;