function format_event_html($ev, $simple = false) {
- if(! ((is_array($ev)) && count($ev)))
+ if (! ((is_array($ev)) && count($ev)))
return '';
$bd_format = t('l F d, Y \@ g:i A') ; // Friday January 18, 2011 @ 8 AM
$o .= "<h4>".t('Starts:')."</h4><p>".$event_start."</p>";
- if(! $ev['nofinish'])
+ if (! $ev['nofinish'])
$o .= "<h4>".t('Finishes:')."</h4><p>".$event_end."</p>";
- if(strlen($ev['location']))
+ if (strlen($ev['location']))
$o .= "<h4>".t('Location:')."</h4><p>".$ev['location']."</p>";
return $o;
. '" >'.$event_start
. '</abbr></p>' . "\r\n";
- if(! $ev['nofinish'])
+ if (! $ev['nofinish'])
$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' ))
. '" >'.$event_end
. '</abbr></p>' . "\r\n";
- if(strlen($ev['location'])){
+ if (strlen($ev['location'])){
$o .= '<p class="event-location"> ' . t('Location:') . ' <span class="location">'
. bbcode($ev['location'])
. '</span></p>' . "\r\n";
logger('parse_event: parse error: ' . $e);
}
- if(! $dom)
+ if (! $dom)
return $ret;
$items = $dom->getElementsByTagName('*');
- foreach($items as $item) {
- if(attribute_contains($item->getAttribute('class'), 'vevent')) {
+ 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')) {
+ foreach ($level2 as $x) {
+ if (attribute_contains($x->getAttribute('class'),'dtstart') && $x->getAttribute('title')) {
$ret['start'] = $x->getAttribute('title');
- if(! strpos($ret['start'],'Z'))
+ if (! strpos($ret['start'],'Z'))
$ret['adjust'] = true;
}
- if(attribute_contains($x->getAttribute('class'),'dtend') && $x->getAttribute('title'))
+ if (attribute_contains($x->getAttribute('class'),'dtend') && $x->getAttribute('title'))
$ret['finish'] = $x->getAttribute('title');
- if(attribute_contains($x->getAttribute('class'),'description'))
+ if (attribute_contains($x->getAttribute('class'),'description'))
$ret['desc'] = $x->textContent;
- if(attribute_contains($x->getAttribute('class'),'location'))
+ if (attribute_contains($x->getAttribute('class'),'location'))
$ret['location'] = $x->textContent;
}
}
// sanitise
- if((x($ret,'desc')) && ((strpos($ret['desc'],'<') !== false) || (strpos($ret['desc'],'>') !== false))) {
+ 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))) {
+ 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'))
+ if (x($ret,'start'))
$ret['start'] = datetime_convert('UTC','UTC',$ret['start']);
- if(x($ret,'finish'))
+ if (x($ret,'finish'))
$ret['finish'] = datetime_convert('UTC','UTC',$ret['finish']);
return $ret;
$o = '';
- if($ev['summary'])
+ if ($ev['summary'])
$o .= '[event-summary]' . $ev['summary'] . '[/event-summary]';
- if($ev['desc'])
+ if ($ev['desc'])
$o .= '[event-description]' . $ev['desc'] . '[/event-description]';
- if($ev['start'])
+ if ($ev['start'])
$o .= '[event-start]' . $ev['start'] . '[/event-start]';
- if(($ev['finish']) && (! $ev['nofinish']))
+ if (($ev['finish']) && (! $ev['nofinish']))
$o .= '[event-finish]' . $ev['finish'] . '[/event-finish]';
- if($ev['location'])
+ if ($ev['location'])
$o .= '[event-location]' . $ev['location'] . '[/event-location]';
- if($ev['adjust'])
+ if ($ev['adjust'])
$o .= '[event-adjust]' . $ev['adjust'] . '[/event-adjust]';
function bbtovcal($s) {
$o = '';
$ev = bbtoevent($s);
- if($ev['desc'])
+ if ($ev['desc'])
$o = format_event_html($ev);
return $o;
}
$ev = array();
$match = '';
- if(preg_match("/\[event\-summary\](.*?)\[\/event\-summary\]/is",$s,$match))
+ if (preg_match("/\[event\-summary\](.*?)\[\/event\-summary\]/is",$s,$match))
$ev['summary'] = $match[1];
$match = '';
- if(preg_match("/\[event\-description\](.*?)\[\/event\-description\]/is",$s,$match))
+ if (preg_match("/\[event\-description\](.*?)\[\/event\-description\]/is",$s,$match))
$ev['desc'] = $match[1];
$match = '';
- if(preg_match("/\[event\-start\](.*?)\[\/event\-start\]/is",$s,$match))
+ if (preg_match("/\[event\-start\](.*?)\[\/event\-start\]/is",$s,$match))
$ev['start'] = $match[1];
$match = '';
- if(preg_match("/\[event\-finish\](.*?)\[\/event\-finish\]/is",$s,$match))
+ if (preg_match("/\[event\-finish\](.*?)\[\/event\-finish\]/is",$s,$match))
$ev['finish'] = $match[1];
$match = '';
- if(preg_match("/\[event\-location\](.*?)\[\/event\-location\]/is",$s,$match))
+ if (preg_match("/\[event\-location\](.*?)\[\/event\-location\]/is",$s,$match))
$ev['location'] = $match[1];
$match = '';
- if(preg_match("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",$s,$match))
+ if (preg_match("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",$s,$match))
$ev['adjust'] = $match[1];
$ev['nofinish'] = (((x($ev, 'start') && $ev['start']) && (!x($ev, 'finish') || !$ev['finish'])) ? 1 : 0);
return $ev;
}
-function sort_by_date(App $a) {
+function sort_by_date($a) {
usort($a,'ev_compare');
return $a;
$date_a = (($a['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$a['start']) : $a['start']);
$date_b = (($b['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$b['start']) : $b['start']);
- if($date_a === $date_b)
+ if ($date_a === $date_b)
return strcasecmp($a['desc'],$b['desc']);
return strcmp($date_a,$date_b);
$arr['private'] = ((x($arr,'private')) ? intval($arr['private']) : 0);
$arr['guid'] = get_guid(32);
- if($arr['cid'])
+ if ($arr['cid'])
$c = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($arr['cid']),
intval($arr['uid'])
intval($arr['uid'])
);
- if(count($c))
+ if (count($c))
$contact = $c[0];
// Existing event being modified
- if($arr['id']) {
+ if ($arr['id']) {
// has the event actually changed?
intval($arr['id']),
intval($arr['uid'])
);
- if((! dbm::is_result($r)) || ($r[0]['edited'] === $arr['edited'])) {
+ if ((! dbm::is_result($r)) || ($r[0]['edited'] === $arr['edited'])) {
// Nothing has changed. Grab the item id to return.
// $plink = App::get_baseurl() . '/display/' . $r[0]['nickname'] . '/' . $item_id;
- if($item_id) {
+ if ($item_id) {
//q("UPDATE `item` SET `plink` = '%s', `event-id` = %d WHERE `uid` = %d AND `id` = %d",
// dbesc($plink),
// intval($event['id']),
return $i18n;
}
+/// @todo We should replace this with a separate update function if there is some time left
+/**
+ * @brief Removes duplicated birthday events
+ *
+ * @param array $dates Array of possibly duplicated events
+ * @return array Cleaned events
+ */
+function event_remove_duplicates($dates) {
+ $dates2 = array();
+
+ foreach ($dates AS $date) {
+ if ($date['type'] == 'birthday') {
+ $dates2[$date['uid']."-".$date['cid']."-".$date['start']] = $date;
+ } else {
+ $dates2[] = $date;
+ }
+ }
+ return $dates2;
+}
+
/**
* @brief Get an event by its event ID
*
*/
function event_by_id($owner_uid = 0, $event_params, $sql_extra = '') {
// ownly allow events if there is a valid owner_id
- if($owner_uid == 0)
+ if ($owner_uid == 0)
return;
// query for the event by event id
$r = q("SELECT `event`.*, `item`.`id` AS `itemid`,`item`.`plink`,
`item`.`author-name`, `item`.`author-avatar`, `item`.`author-link` FROM `event`
- STRAIGHT_JOIN `item` ON `item`.`event-id` = `event`.`id` AND `item`.`uid` = `event`.`uid`
+ LEFT JOIN `item` ON `item`.`event-id` = `event`.`id` AND `item`.`uid` = `event`.`uid`
WHERE `event`.`uid` = %d AND `event`.`id` = %d $sql_extra",
intval($owner_uid),
intval($event_params["event_id"])
);
- if (dbm::is_result($r))
- return $r;
-
+ if (dbm::is_result($r)) {
+ return event_remove_duplicates($r);
+ }
}
/**
*/
function events_by_date($owner_uid = 0, $event_params, $sql_extra = '') {
// ownly allow events if there is a valid owner_id
- if($owner_uid == 0)
+ if ($owner_uid == 0)
return;
// query for the event by date
$r = q("SELECT `event`.*, `item`.`id` AS `itemid`,`item`.`plink`,
`item`.`author-name`, `item`.`author-avatar`, `item`.`author-link` FROM `event`
- STRAIGHT_JOIN `item` ON `item`.`event-id` = `event`.`id` AND `item`.`uid` = `event`.`uid`
+ LEFT JOIN `item` ON `item`.`event-id` = `event`.`id` AND `item`.`uid` = `event`.`uid`
WHERE `event`.`uid` = %d AND event.ignore = %d
AND ((`adjust` = 0 AND (`finish` >= '%s' OR (nofinish AND start >= '%s')) AND `start` <= '%s')
OR (`adjust` = 1 AND (`finish` >= '%s' OR (nofinish AND start >= '%s')) AND `start` <= '%s'))
dbesc($event_params["adjust_finish"])
);
- if (dbm::is_result($r))
- return $r;
+ if (dbm::is_result($r)) {
+ return event_remove_duplicates($r);
+ }
}
/**
* @param array $arr Event query array
* @return array Event array for the template
*/
-function process_events ($arr) {
+function process_events($arr) {
$events=array();
$last_date = '';
$fmt = t('l, F j');
if (count($arr)) {
- foreach($arr as $rr) {
+ foreach ($arr as $rr) {
$j = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['start'], 'j') : datetime_convert('UTC','UTC',$rr['start'],'j'));
$d = (($rr['adjust']) ? datetime_convert('UTC',date_default_timezone_get(),$rr['start'], $fmt) : datetime_convert('UTC','UTC',$rr['start'],$fmt));
$last_date = $d;
$edit = ((! $rr['cid']) ? array(App::get_baseurl().'/events/event/'.$rr['id'],t('Edit event'),'','') : null);
$title = strip_tags(html_entity_decode(bbcode($rr['summary']),ENT_QUOTES,'UTF-8'));
- if(! $title) {
+ if (! $title) {
list($title, $_trash) = explode("<br",bbcode($rr['desc']),2);
$title = strip_tags(html_entity_decode($title,ENT_QUOTES,'UTF-8'));
}
* @return string Content according to selected export format
*/
function event_format_export ($events, $format = 'ical', $timezone) {
- if(! ((is_array($events)) && count($events)))
+ if (! ((is_array($events)) && count($events)))
return;
switch ($format) {
* @return array Query results
*/
function events_by_uid($uid = 0, $sql_extra = '') {
- if($uid == 0)
+ if ($uid == 0) {
return;
+ }
// The permission condition if no condition was transmitted
- if($sql_extra == '')
+ if ($sql_extra == '') {
$sql_extra = " AND `allow_cid` = '' AND `allow_gid` = '' ";
+ }
// does the user who requests happen to be the owner of the events
// requested? then show all of your events, otherwise only those that
);
}
- if (dbm::is_result($r))
+ if (dbm::is_result($r)) {
return $r;
+ }
}
/**
// we are allowed to show events
// get the timezone the user is in
$r = q("SELECT `timezone` FROM `user` WHERE `uid` = %d LIMIT 1", intval($uid));
- if (dbm::is_result($r))
+ if (dbm::is_result($r)) {
$timezone = $r[0]['timezone'];
+ }
// get all events which are owned by a uid (respects permissions);
$events = events_by_uid($uid);
// we have the events that are available for the requestor
// now format the output according to the requested format
- if(count($events))
+ if (count($events)) {
$res = event_format_export($events, $format, $timezone);
+ }
// If there are results the precess was successfull
- if(x($res))
+ if (x($res)) {
$process = true;
+ }
// get the file extension for the format
switch ($format) {
// The permission testing is a little bit tricky because we have to respect many cases
// It's not the private events page (we don't get the $owner_uid for /events)
- if(! local_user() && ! $owner_uid)
+ if (! local_user() && ! $owner_uid) {
return;
+ }
// Cal logged in user (test permission at foreign profile page)
// If the $owner uid is available we know it is part of one of the profile pages (like /cal)
// or a foreign one. For foreign profile pages we need to check if the feature
// for exporting the cal is enabled (otherwise the widget would appear for logged in users
// on foreigen profile pages even if the widget is disabled)
- if(intval($owner_uid) && local_user() !== $owner_uid && ! feature_enabled($owner_uid, "export_calendar"))
+ if (intval($owner_uid) && local_user() !== $owner_uid && ! feature_enabled($owner_uid, "export_calendar")) {
return;
+ }
// If it's a kind of profile page (intval($owner_uid)) return if the user not logged in and
// export feature isn't enabled
- if(intval($owner_uid) && ! local_user() && ! feature_enabled($owner_uid, "export_calendar"))
+ if (intval($owner_uid) && ! local_user() && ! feature_enabled($owner_uid, "export_calendar")) {
return;
+ }
return replace_macros(get_markup_template("events_aside.tpl"), array(
'$etitle' => t("Export"),