Difference between revisions of "Ics.php"

From HacDC Wiki
Jump to: navigation, search
 
(3 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
{{Obsolete}}
 +
 
This code still needs to be cleaned up some.
 
This code still needs to be cleaned up some.
  
This page needs to be cleaned up since web browsers treat some of the symbols on here as special characters, to see the code correctly for now, click edit this page and read between the <nowiki> and </nowiki> codes.
+
*Note, this script requires: [[Drupal.login.php]]
 
 
 
 
  
<p>&lt;?php<br>
+
&lt;?php<br>
 
<br>
 
<br>
 
include('Drupal.login.php');<br>
 
include('Drupal.login.php');<br>
Line 15: Line 15:
 
$ics_contents .= &quot;X-WR-CALNAME:HacDC Schedule\n&quot;;<br>
 
$ics_contents .= &quot;X-WR-CALNAME:HacDC Schedule\n&quot;;<br>
 
<br>
 
<br>
# Change the timezone as well daylight settings if need be<br>
+
<nowiki>#</nowiki> Change the timezone as well daylight settings if need be<br>
 
$ics_contents .= &quot;X-WR-TIMEZONE:America/New_York\n&quot;;<br>
 
$ics_contents .= &quot;X-WR-TIMEZONE:America/New_York\n&quot;;<br>
 
$ics_contents .= &quot;BEGIN:VTIMEZONE\n&quot;;<br>
 
$ics_contents .= &quot;BEGIN:VTIMEZONE\n&quot;;<br>
Line 66: Line 66:
 
$End = strtotime($schedule_details['End'])-$Offset;<br>
 
$End = strtotime($schedule_details['End'])-$Offset;<br>
 
<br>
 
<br>
#if ($Start &gt;= time()) {<br>
 
 
<br>
 
<br>
 
$desc1 = mysql_query(&quot;SELECT * from node_revisions<br>
 
$desc1 = mysql_query(&quot;SELECT * from node_revisions<br>
Line 74: Line 73:
 
<br>
 
<br>
 
$desc1 = mysql_fetch_assoc($desc1);<br>
 
$desc1 = mysql_fetch_assoc($desc1);<br>
<br>
 
#echo html_entity_decode($desc1['title']).&quot;&lt;br&gt;&quot;;<br>
 
#echo html_entity_decode($desc1['teaser']).&quot;&lt;br&gt;&quot;;<br>
 
#echo html_entity_decode($desc1['body']).&quot;&lt;br&gt;&lt;br&gt;&quot;;<br>
 
 
<br>
 
<br>
 
$Yr = date(Y,$Start);<br>
 
$Yr = date(Y,$Start);<br>
Line 96: Line 91:
 
$end_time = $Hr1.&quot;:&quot;.$Min1.&quot;:00&quot;; <br>
 
$end_time = $Hr1.&quot;:&quot;.$Min1.&quot;:00&quot;; <br>
 
<br>
 
<br>
# $category = $schedule_details['Category'];<br>
 
 
$category = &quot;HacDC&quot;;<br>
 
$category = &quot;HacDC&quot;;<br>
 
$name = $schedule_details['title'];<br>
 
$name = $schedule_details['title'];<br>
$location = &quot;1525 Newton St NW, Washington DC 20010 (Near corner of 16th and  
+
$location = &quot;1525 Newton St NW, Washington DC 20010 (Near corner of 16th and Newton NW)&quot;;<br>
Newton NW)&quot;;<br>
 
 
$description = clean_url(strip_tags($desc1['body']));<br>
 
$description = clean_url(strip_tags($desc1['body']));<br>
 
<br>
 
<br>
# Remove '-' in $start_date and $end_date<br>
+
<nowiki>#</nowiki> Remove '-' in $start_date and $end_date<br>
 
$estart_date = str_replace(&quot;-&quot;, &quot;&quot;, $start_date);<br>
 
$estart_date = str_replace(&quot;-&quot;, &quot;&quot;, $start_date);<br>
 
$eend_date = str_replace(&quot;-&quot;, &quot;&quot;, $end_date);<br>
 
$eend_date = str_replace(&quot;-&quot;, &quot;&quot;, $end_date);<br>
 
<br>
 
<br>
# Remove ':' in $start_time and $end_time<br>
+
<nowiki>#</nowiki> Remove ':' in $start_time and $end_time<br>
 
$estart_time = str_replace(&quot;:&quot;, &quot;&quot;, $start_time);<br>
 
$estart_time = str_replace(&quot;:&quot;, &quot;&quot;, $start_time);<br>
 
$eend_time = str_replace(&quot;:&quot;, &quot;&quot;, $end_time);<br>
 
$eend_time = str_replace(&quot;:&quot;, &quot;&quot;, $end_time);<br>
 
<br>
 
<br>
# Replace some HTML tags<br>
+
<nowiki>#</nowiki> Replace some HTML tags<br>
 
$name = str_replace(&quot;&lt;br&gt;&quot;, &quot;\\r\\n&quot;, $name);<br>
 
$name = str_replace(&quot;&lt;br&gt;&quot;, &quot;\\r\\n&quot;, $name);<br>
 
$name = str_replace(&quot;&amp;amp;&quot;, &quot;&amp;&quot;, $name);<br>
 
$name = str_replace(&quot;&amp;amp;&quot;, &quot;&amp;&quot;, $name);<br>
Line 133: Line 126:
 
$description = str_replace(&quot;&lt;/em&gt;&quot;, &quot;&quot;, $description);<br>
 
$description = str_replace(&quot;&lt;/em&gt;&quot;, &quot;&quot;, $description);<br>
 
<br>
 
<br>
# Change TZID if need be<br>
+
<nowiki>#</nowiki> Change TZID if need be<br>
 
$ics_contents .= &quot;BEGIN:VEVENT\r\n&quot;;<br>
 
$ics_contents .= &quot;BEGIN:VEVENT\r\n&quot;;<br>
 
$ics_contents .= &quot;DTSTART;TZID=America/New_York:&quot; . $estart_date . &quot;T&quot;.  
 
$ics_contents .= &quot;DTSTART;TZID=America/New_York:&quot; . $estart_date . &quot;T&quot;.  
Line 147: Line 140:
 
$ics_contents .= &quot;END:VEVENT\r\n&quot;;<br>
 
$ics_contents .= &quot;END:VEVENT\r\n&quot;;<br>
 
}<br>
 
}<br>
#}<br>
 
 
$ics_contents .= &quot;END:VCALENDAR\r\n&quot;;<br>
 
$ics_contents .= &quot;END:VCALENDAR\r\n&quot;;<br>
 
<br>
 
<br>
 
echo $ics_contents;<br>
 
echo $ics_contents;<br>
&nbsp;</p>
 
 
 
 
 
 
 
 
<nowiki>
 
 
 
 
<?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";
 
 
# 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;
 
 
#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);
 
 
#echo html_entity_decode($desc1['title'])."<br>";
 
#echo html_entity_decode($desc1['teaser'])."<br>";
 
#echo html_entity_decode($desc1['body'])."<br><br>";
 
 
$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";
 
 
#  $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("<br>", "\\r\\n",  $name);
 
  $name          = str_replace("&amp;", "&",    $name);
 
  $name          = str_replace("&rarr;", "-->", $name);
 
  $name          = str_replace("&larr;", "<--", $name);
 
  $name          = str_replace(",", "\\,",      $name);
 
  $name          = str_replace(";", "\\;",      $name);
 
 
  $location      = str_replace("<br>", "\\r\\n",  $location);
 
  $location      = str_replace("&amp;", "&",    $location);
 
  $location      = str_replace("&rarr;", "-->", $location);
 
  $location      = str_replace("&larr;", "<--", $location);
 
  $location      = str_replace(",", "\\,",      $location);
 
  $location      = str_replace(";", "\\;",      $location);
 
 
  $description  = str_replace("<br>", "\\r\\n",  $description);
 
  $description  = str_replace("&amp;", "&",    $description);
 
  $description  = str_replace("&rarr;", "-->", $description);
 
  $description  = str_replace("&larr;", "<--", $description);
 
  $description  = str_replace("<em>", "",      $description);
 
  $description  = str_replace("</em>", "",    $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";
 
}
 
#}
 
$ics_contents .= "END:VCALENDAR\r\n";
 
 
echo $ics_contents;
 
</nowiki>
 

Latest revision as of 13:14, 3 April 2012

Information on this page is Obsolete; it is preserved for historical interest


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

# 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;


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

$desc1 = mysql_fetch_assoc($desc1);

$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";

$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("<br>", "\\r\\n", $name);
$name = str_replace("&amp;", "&", $name);
$name = str_replace("&rarr;", "-->", $name);
$name = str_replace("&larr;", "<--", $name);
$name = str_replace(",", "\\,", $name);
$name = str_replace(";", "\\;", $name);

$location = str_replace("<br>", "\\r\\n", $location);
$location = str_replace("&amp;", "&", $location);
$location = str_replace("&rarr;", "-->", $location);
$location = str_replace("&larr;", "<--", $location);
$location = str_replace(",", "\\,", $location);
$location = str_replace(";", "\\;", $location);

$description = str_replace("<br>", "\\r\\n", $description);
$description = str_replace("&amp;", "&", $description);
$description = str_replace("&rarr;", "-->", $description);
$description = str_replace("&larr;", "<--", $description);
$description = str_replace("<em>", "", $description);
$description = str_replace("</em>", "", $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";
}
$ics_contents .= "END:VCALENDAR\r\n";

echo $ics_contents;