From df8ac668b800ecf64ab2c240678eb87b225cb513 Mon Sep 17 00:00:00 2001 From: Friendika Date: Wed, 8 Jun 2011 21:06:02 -0700 Subject: more calendar work, undo strict_privacy flag to use different approach --- include/event.php | 106 +++++++++++++++++++++++++++++++++++++++++++-------- include/notifier.php | 7 +--- 2 files changed, 91 insertions(+), 22 deletions(-) (limited to 'include') diff --git a/include/event.php b/include/event.php index 33970efff..9d9717a78 100644 --- a/include/event.php +++ b/include/event.php @@ -1,47 +1,121 @@ '; - $o .= '

' . bbcode($ev['desc']) . '

'; + $o .= '

' . bbcode($ev['desc']) . '

'; - $o .= '

' . t('Starts:') . ' ' . t('Starts:') . ' ' - . (($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))) . '

'; if(! $ev['nofinish']) - $o .= '

' . t('Finishes:') . ' ' . t('Finishes:') . ' ' - . (($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 ))) . '

'; if(strlen($ev['location'])) - $o .= '

' . t('Location:') . '' + $o .= '

' . t('Location:') . '' . bbcode($ev['location']) . '

'; $o .= ''; - return $o; } +function parse_event($h) { + + require_once('include/Scrape.php'); + require_once('library/HTMLPurifier.auto.php'); + require_once('include/html2bbcode'); + + $h = '' . $h . ''; + + $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) { diff --git a/include/notifier.php b/include/notifier.php index 98e38fb11..cb4dfe025 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -27,8 +27,6 @@ function notifier_run($argv, $argc){ $a->set_baseurl(get_config('system','url')); - $prv = get_config('system','strict_privacy'); - logger('notifier: invoked: ' . print_r($argv,true)); $cmd = $argv[1]; @@ -332,9 +330,6 @@ function notifier_run($argv, $argc){ break; case 'stat': - if($prv) - break; - if($followup && $contact['notify']) { logger('notifier: slapdelivery: ' . $contact['name']); $deliver_status = slapper($owner,$contact['notify'],$slap); @@ -465,7 +460,7 @@ function notifier_run($argv, $argc){ if($slap && count($url_recipients) && $followup && $notify_hub && (! $expire)) { foreach($url_recipients as $url) { - if($url && (! $prv)) { + if($url) { logger('notifier: urldelivery: ' . $url); $deliver_status = slapper($owner,$url,$slap); // TODO: redeliver/queue these items on failure, though there is no contact record -- cgit v1.2.3