|
|
@ -1,47 +1,121 @@ |
|
|
|
<?php |
|
|
|
|
|
|
|
|
|
|
|
function format_event_html($ev) { |
|
|
|
function format_event_html($ev,$pre = '') { |
|
|
|
|
|
|
|
require_once('include/bbcode.php'); |
|
|
|
|
|
|
|
if(! ((is_array($ev)) && count($ev))) |
|
|
|
return ''; |
|
|
|
|
|
|
|
$bd_format = t('l F d, Y \@ g A') ; // Friday January 18, 2011 @ 8 AM
|
|
|
|
|
|
|
|
$o = '<div class="vevent">'; |
|
|
|
|
|
|
|
$o .= '<p class="description">' . bbcode($ev['desc']) . '</p>'; |
|
|
|
$o .= '<p class="description event-description">' . bbcode($ev['desc']) . '</p>'; |
|
|
|
|
|
|
|
$o .= '<p>' . t('Starts:') . ' <abbr class="dtstart" title="' |
|
|
|
. datetime_convert('UTC','UTC',$ev['start'], $ev['adjust'] ? ATOM_TIME : 'Y-m-d\TH:i:s' ) |
|
|
|
$o .= '<p class="event-start">' . t('Starts:') . ' <abbr class="dtstart" title="' |
|
|
|
. datetime_convert('UTC','UTC',$ev['start'], (($ev['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' )) |
|
|
|
. '" >' |
|
|
|
. (($ev['adjust']) ? datetime_convert('UTC', date_default_timezone_get(), |
|
|
|
$ev['start'] /*, format */ ) |
|
|
|
: datetime_convert('UTC', 'UTC', |
|
|
|
$ev['start'] /*, format */ )) |
|
|
|
. (($ev['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(), |
|
|
|
$ev['start'] , $bd_format )) |
|
|
|
: day_translate(datetime_convert('UTC', 'UTC', |
|
|
|
$ev['start'] , $bd_format))) |
|
|
|
. '</abbr></p>'; |
|
|
|
|
|
|
|
if(! $ev['nofinish']) |
|
|
|
$o .= '<p>' . t('Finishes:') . ' <abbr class="dtend" title="' |
|
|
|
. datetime_convert('UTC','UTC',$ev['finish'], $ev['adjust'] ? ATOM_TIME : 'Y-m-d\TH:i:s' ) |
|
|
|
$o .= '<p class="event-end" >' . t('Finishes:') . ' <abbr class="dtend" title="' |
|
|
|
. datetime_convert('UTC','UTC',$ev['finish'], (($ev['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' )) |
|
|
|
. '" >' |
|
|
|
. (($ev['adjust']) ? datetime_convert('UTC', date_default_timezone_get(), |
|
|
|
$ev['finish'] /*, format */ ) |
|
|
|
: datetime_convert('UTC', 'UTC', |
|
|
|
$ev['finish'] /*, format */ )) |
|
|
|
. (($ev['adjust']) ? day_translate(datetime_convert('UTC', date_default_timezone_get(), |
|
|
|
$ev['finish'] , $bd_format )) |
|
|
|
: day_translate(datetime_convert('UTC', 'UTC', |
|
|
|
$ev['finish'] , $bd_format ))) |
|
|
|
. '</abbr></p>'; |
|
|
|
|
|
|
|
if(strlen($ev['location'])) |
|
|
|
$o .= '<p> ' . t('Location:') . '<span class="location">' |
|
|
|
$o .= '<p class="event-location"> ' . t('Location:') . '<span class="location">' |
|
|
|
. bbcode($ev['location']) |
|
|
|
. '</span></p>'; |
|
|
|
|
|
|
|
$o .= '</div>'; |
|
|
|
|
|
|
|
return $o; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function parse_event($h) { |
|
|
|
|
|
|
|
require_once('include/Scrape.php'); |
|
|
|
require_once('library/HTMLPurifier.auto.php'); |
|
|
|
require_once('include/html2bbcode'); |
|
|
|
|
|
|
|
$h = '<html><body>' . $h . '</body></html>'; |
|
|
|
|
|
|
|
$ret = array(); |
|
|
|
|
|
|
|
$dom = HTML5_Parser::parse($h); |
|
|
|
|
|
|
|
if(! $dom) |
|
|
|
return $ret; |
|
|
|
|
|
|
|
$items = $dom->getElementsByTagName('*'); |
|
|
|
|
|
|
|
foreach($items as $item) { |
|
|
|
if(attribute_contains($item->getAttribute('class'), 'vevent')) { |
|
|
|
$level2 = $item->getElementsByTagName('*'); |
|
|
|
foreach($level2 as $x) { |
|
|
|
if(attribute_contains($x->getAttribute('class'),'dtstart') && $x->getAttribute('title')) { |
|
|
|
$ret['start'] = $x->getAttribute('title'); |
|
|
|
if(! strpos($ret['start'],'Z')) |
|
|
|
$ret['adjust'] = true; |
|
|
|
} |
|
|
|
if(attribute_contains($x->getAttribute('class'),'dtend') && $x->getAttribute('title')) |
|
|
|
$ret['finish'] = $x->getAttribute('title'); |
|
|
|
|
|
|
|
if(attribute_contains($x->getAttribute('class'),'description')) |
|
|
|
$ret['desc'] = $x->textContent; |
|
|
|
if(attribute_contains($x->getAttribute('class'),'location')) |
|
|
|
$ret['location'] = $x->textContent; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// sanitise
|
|
|
|
|
|
|
|
if((x($ret,'desc')) && ((strpos($ret['desc'],'<') !== false) || (strpos($ret['desc'],'>') !== false))) { |
|
|
|
$config = HTMLPurifier_Config::createDefault(); |
|
|
|
$config->set('Cache.DefinitionImpl', null); |
|
|
|
$purifier = new HTMLPurifier($config); |
|
|
|
$ret['desc'] = html2bbcode($purifier->purify($ret['desc'])); |
|
|
|
} |
|
|
|
|
|
|
|
if((x($ret,'location')) && ((strpos($ret['location'],'<') !== false) || (strpos($ret['location'],'>') !== false))) { |
|
|
|
$config = HTMLPurifier_Config::createDefault(); |
|
|
|
$config->set('Cache.DefinitionImpl', null); |
|
|
|
$purifier = new HTMLPurifier($config); |
|
|
|
$ret['location'] = html2bbcode($purifier->purify($ret['location'])); |
|
|
|
} |
|
|
|
|
|
|
|
if(x($ret,'start')) |
|
|
|
$ret['start'] = datetime_convert('UTC','UTC',$ret['start']); |
|
|
|
if(x($ret,'finish')) |
|
|
|
$ret['finish'] = datetime_convert('UTC','UTC',$ret['finish']); |
|
|
|
|
|
|
|
return $ret; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function sort_by_date($a) { |
|
|
|
|
|
|
|