]> git.mxchange.org Git - friendica.git/blobdiff - mod/events.php
Merge remote-tracking branch 'upstream/develop' into item-view
[friendica.git] / mod / events.php
index d4a902c725bb5aefc6232660ffbf1d7e1f9c0bc6..04a88e98bb5056eb2d845ffe65e53b9b822086e6 100644 (file)
@@ -25,11 +25,13 @@ use Friendica\Content\Nav;
 use Friendica\Content\Widget\CalendarExport;
 use Friendica\Core\ACL;
 use Friendica\Core\Logger;
+use Friendica\Core\Protocol;
 use Friendica\Core\Renderer;
 use Friendica\Core\Theme;
 use Friendica\Core\Worker;
 use Friendica\Database\DBA;
 use Friendica\DI;
+use Friendica\Model\Conversation;
 use Friendica\Model\Event;
 use Friendica\Model\Item;
 use Friendica\Model\User;
@@ -65,9 +67,7 @@ function events_init(App $a)
 
 function events_post(App $a)
 {
-
        Logger::debug('post', ['request' => $_REQUEST]);
-
        if (!local_user()) {
                return;
        }
@@ -82,6 +82,8 @@ function events_post(App $a)
        $adjust   = intval($_POST['adjust'] ?? 0);
        $nofinish = intval($_POST['nofinish'] ?? 0);
 
+       $share = intval($_POST['share'] ?? 0);
+
        // The default setting for the `private` field in event_store() is false, so mirror that
        $private_event = false;
 
@@ -129,7 +131,7 @@ function events_post(App $a)
        ];
 
        $action = ($event_id == '') ? 'new' : 'event/' . $event_id;
-       $onerror_path = 'events/' . $action . '?' . http_build_query($params, null, null, PHP_QUERY_RFC3986);
+       $onerror_path = 'events/' . $action . '?' . http_build_query($params, '', '&', PHP_QUERY_RFC3986);
 
        if (strcmp($finish, $start) < 0 && !$nofinish) {
                notice(DI::l10n()->t('Event can not end before it has started.'));
@@ -149,18 +151,9 @@ function events_post(App $a)
                DI::baseUrl()->redirect($onerror_path);
        }
 
-       $share = intval($_POST['share'] ?? 0);
-
-       $c = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `self` LIMIT 1",
-               intval(local_user())
-       );
-
-       if (DBA::isResult($c)) {
-               $self = $c[0]['id'];
-       } else {
-               $self = 0;
-       }
+       $self = \Friendica\Model\Contact::getPublicIdByUserId($uid);
 
+       $aclFormatter = DI::aclFormatter();
 
        if ($share) {
                $user = User::getById($uid, ['allow_cid', 'allow_gid', 'deny_cid', 'deny_gid']);
@@ -168,7 +161,6 @@ function events_post(App $a)
                        return;
                }
 
-               $aclFormatter = DI::aclFormatter();
                $str_contact_allow = isset($_REQUEST['contact_allow']) ? $aclFormatter->toString($_REQUEST['contact_allow']) : $user['allow_cid'] ?? '';
                $str_group_allow   = isset($_REQUEST['group_allow'])   ? $aclFormatter->toString($_REQUEST['group_allow'])   : $user['allow_gid'] ?? '';
                $str_contact_deny  = isset($_REQUEST['contact_deny'])  ? $aclFormatter->toString($_REQUEST['contact_deny'])  : $user['deny_cid']  ?? '';
@@ -182,10 +174,10 @@ function events_post(App $a)
                        // Since we know from the visibility parameter the item should be private, we have to prevent the empty ACL
                        // case that would make it public. So we always append the author's contact id to the allowed contacts.
                        // See https://github.com/friendica/friendica/issues/9672
-                       $str_contact_allow .= $aclFormatter->toString(Contact::getPublicIdByUserId($uid));
+                       $str_contact_allow .= $aclFormatter->toString($self);
                }
        } else {
-               $str_contact_allow = '<' . $self . '>';
+               $str_contact_allow = $aclFormatter->toString($self);
                $str_group_allow = $str_contact_deny = $str_group_deny = '';
        }
 
@@ -213,6 +205,9 @@ function events_post(App $a)
        $datarray['deny_gid']  = $str_group_deny;
        $datarray['private']   = $private_event;
        $datarray['id']        = $event_id;
+       $datarray['network']   = Protocol::DFRN;
+       $datarray['protocol']  = Conversation::PARCEL_DIRECT;
+       $datarray['direction'] = Conversation::PUSH;
 
        if (intval($_REQUEST['preview'])) {
                $html = Event::getHTML($datarray);