X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fevent.php;h=6c0e2bdec6e68608a5d8267200cb75ea6289f8e6;hb=d49325d177cf03b97df250ca3cb081421c541049;hp=befda64eb1162e2d7bb384ccd79a51e5eb6f8a2c;hpb=49c19a3c00ea11b8c6b1839f4c7d9f4165c9353f;p=friendica.git diff --git a/include/event.php b/include/event.php index befda64eb1..6c0e2bdec6 100644 --- a/include/event.php +++ b/include/event.php @@ -293,7 +293,7 @@ function event_store($arr) { `location` = '%s', `type` = '%s', `adjust` = %d, - `nofinish` = %d, + `nofinish` = %d WHERE `id` = %d AND `uid` = %d", dbesc($arr['edited']), @@ -480,6 +480,13 @@ function get_event_strings() { "month" => t("month"), "week" => t("week"), "day" => t("day"), + "allday" => t("all-day"), + + "noevent" => t("No events to display"), + + "dtstart_label" => t("Starts:"), + "dtend_label" => t("Finishes:"), + "location_label" => t("Location:") ); return $i18n; @@ -502,7 +509,7 @@ function event_by_id($owner_uid = 0, $event_params, $sql_extra = '') { // 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` - LEFT JOIN `item` ON `item`.`event-id` = `event`.`id` AND `item`.`uid` = `event`.`uid` + STRAIGHT_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"]) @@ -535,7 +542,7 @@ function events_by_date($owner_uid = 0, $event_params, $sql_extra = '') { // 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` - LEFT JOIN `item` ON `item`.`event-id` = `event`.`id` AND `item`.`uid` = `event`.`uid` + STRAIGHT_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')) @@ -673,7 +680,7 @@ function event_format_export ($events, $format = 'ical', $timezone) { $dtformat = "%Y%m%dT%H%M%S".$UTC; $o .= 'DTSTART:'.strftime($dtformat, $tmp).PHP_EOL; } - if ($event['finish']) { + if (!$event['nofinish']) { $tmp = strtotime($event['finish']); $dtformat = "%Y%m%dT%H%M%S".$UTC; $o .= 'DTEND:'.strftime($dtformat, $tmp).PHP_EOL; @@ -732,13 +739,13 @@ function events_by_uid($uid = 0, $sql_extra = '') { // requested? then show all of your events, otherwise only those that // don't have limitations set in allow_cid and allow_gid if (local_user() == $uid) { - $r = q("SELECT `start`, `finish`, `adjust`, `summary`, `desc`, `location` + $r = q("SELECT `start`, `finish`, `adjust`, `summary`, `desc`, `location`, `nofinish` FROM `event` WHERE `uid`= %d AND `cid` = 0 ", intval($uid) ); } else { - $r = q("SELECT `start`, `finish`, `adjust`, `summary`, `desc`, `location`FROM `event` - WHERE `uid` = %d AND `cid` = 0 $sql_extra ", + $r = q("SELECT `start`, `finish`, `adjust`, `summary`, `desc`, `location`, `nofinish` + FROM `event` WHERE `uid`= %d AND `cid` = 0 $sql_extra ", intval($uid) ); } @@ -818,7 +825,25 @@ function widget_events() { // of the profile page it should be the personal /events page. So we can use $a->user $user = ($a->data['user']['nickname'] ? $a->data['user']['nickname'] : $a->user['nickname']); - if( !(local_user() )&& !(feature_enabled($owner_uid, "export_calendar")) ) + + // 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) + 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) + // So we have to test if if it's the own profile page of the logged in user + // 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")) + 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")) return; return replace_macros(get_markup_template("events_aside.tpl"), array(