]> git.mxchange.org Git - friendica.git/blobdiff - include/event.php
Ostatus: The follow/unfollow XML should now be even more compliant.
[friendica.git] / include / event.php
index befda64eb1162e2d7bb384ccd79a51e5eb6f8a2c..6c0e2bdec6e68608a5d8267200cb75ea6289f8e6 100644 (file)
@@ -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(