150 lines
4.7 KiB
Markdown
150 lines
4.7 KiB
Markdown
|
This code still needs to be cleaned up some.
|
||
|
|
||
|
- Note, this script requires:
|
||
|
[Drupal.login.php](Drupal.login.php "wikilink")
|
||
|
|
||
|
<?php<br>
|
||
|
|
||
|
|
||
|
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("
|
||
|
", "\\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("<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;
|