]> git.mxchange.org Git - friendica.git/blobdiff - mod/item.php
[Database version 1394] Add 2fa_trusted_browser table
[friendica.git] / mod / item.php
index d1e1d06ce05fa5b5d2503b742fd34b441ff4cfea..68fa6fbf6dfe284ea529e8907d13149ffb8830e7 100644 (file)
@@ -114,9 +114,9 @@ function item_post(App $a) {
 
        if ($parent_item_id || $thr_parent_uri) {
                if ($parent_item_id) {
-                       $parent_item = Item::selectFirst([], ['id' => $parent_item_id]);
+                       $parent_item = Post::selectFirst([], ['id' => $parent_item_id]);
                } elseif ($thr_parent_uri) {
-                       $parent_item = Item::selectFirst([], ['uri' => $thr_parent_uri, 'uid' => $profile_uid]);
+                       $parent_item = Post::selectFirst([], ['uri' => $thr_parent_uri, 'uid' => $profile_uid]);
                }
 
                // if this isn't the top-level parent of the conversation, find it
@@ -126,7 +126,7 @@ function item_post(App $a) {
                        $toplevel_item = $parent_item;
 
                        if ($parent_item['gravity'] != GRAVITY_PARENT) {
-                               $toplevel_item = Item::selectFirst([], ['id' => $toplevel_item['parent']]);
+                               $toplevel_item = Post::selectFirst([], ['id' => $toplevel_item['parent']]);
                        }
                }
 
@@ -144,7 +144,7 @@ function item_post(App $a) {
                        $stored = Item::storeForUserByUriId($toplevel_item['uri-id'], local_user());
                        Logger::info('Public item stored for user', ['uri-id' => $toplevel_item['uri-id'], 'uid' => $uid, 'stored' => $stored]);
                        if ($stored) {
-                               $toplevel_item = Item::selectFirst([], ['id' => $stored]);
+                               $toplevel_item = Post::selectFirst([], ['id' => $stored]);
                        }
                }
 
@@ -193,7 +193,7 @@ function item_post(App $a) {
 
        // is this an edited post?
        if ($post_id > 0) {
-               $orig_post = Item::selectFirst(Item::ITEM_FIELDLIST, ['id' => $post_id]);
+               $orig_post = Post::selectFirst(Item::ITEM_FIELDLIST, ['id' => $post_id]);
        }
 
        $user = User::getById($profile_uid, ['allow_cid', 'allow_gid', 'deny_cid', 'deny_gid']);
@@ -252,7 +252,7 @@ function item_post(App $a) {
                $verb              = $orig_post['verb'];
                $objecttype        = $orig_post['object-type'];
                $app               = $orig_post['app'];
-               $categories        = $orig_post['file'] ?? '';
+               $categories        = Post\Category::getTextByURIId($orig_post['uri-id'], $orig_post['uid']);
                $title             = trim($_REQUEST['title'] ?? '');
                $body              = trim($body);
                $private           = $orig_post['private'];
@@ -261,20 +261,19 @@ function item_post(App $a) {
                $guid              = $orig_post['guid'];
                $extid             = $orig_post['extid'];
        } else {
-               $str_contact_allow = '';
-               $str_group_allow   = '';
-               $str_contact_deny  = '';
-               $str_group_deny    = '';
-
-               if (($_REQUEST['visibility'] ?? '') !== 'public') {
-                       $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']  ?? '';
-                       $str_group_deny    = isset($_REQUEST['group_deny'])    ? $aclFormatter->toString($_REQUEST['group_deny'])    : $user['deny_gid']  ?? '';
-
-                       // Since we know from the visibility parameter it should be private, we have to prevent the empty ACL case
-                       // that would make the item public. So we always append the author's contact id to the allowed contacts.
+               $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']  ?? '';
+               $str_group_deny    = isset($_REQUEST['group_deny'])    ? $aclFormatter->toString($_REQUEST['group_deny'])    : $user['deny_gid']  ?? '';
+
+               $visibility = $_REQUEST['visibility'] ?? '';
+               if ($visibility === 'public') {
+                       // The ACL selector introduced in version 2019.12 sends ACL input data even when the Public visibility is selected
+                       $str_contact_allow = $str_group_allow = $str_contact_deny = $str_group_deny = '';
+               } else if ($visibility === 'custom') {
+                       // 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));
                }
@@ -345,10 +344,7 @@ function item_post(App $a) {
                $filedas = FileTag::fileToArray($categories);
        }
 
-       // save old and new categories, so we can determine what needs to be deleted from pconfig
-       $categories_old = $categories;
        $categories = FileTag::listToFile(trim($_REQUEST['category'] ?? ''), 'category');
-       $categories_new = $categories;
 
        if (!empty($filedas) && is_array($filedas)) {
                // append the fileas stuff to the new categories list
@@ -624,6 +620,7 @@ function item_post(App $a) {
 
        // This field is for storing the raw conversation data
        $datarray['protocol'] = Conversation::PARCEL_DIRECT;
+       $datarray['direction'] = Conversation::PUSH;
 
        $conversation = DBA::selectFirst('conversation', ['conversation-uri', 'conversation-href'], ['item-uri' => $datarray['thr-parent']]);
        if (DBA::isResult($conversation)) {
@@ -696,9 +693,6 @@ function item_post(App $a) {
 
                Item::update($fields, ['id' => $post_id]);
 
-               // update filetags in pconfig
-               FileTag::updatePconfig($uid, $categories_old, $categories_new, 'category');
-
                if ($return_path) {
                        DI::baseUrl()->redirect($return_path);
                }
@@ -728,7 +722,7 @@ function item_post(App $a) {
                throw new HTTPException\InternalServerErrorException(DI::l10n()->t('Item wasn\'t stored.'));
        }
 
-       $datarray = Item::selectFirst(Item::ITEM_FIELDLIST, ['id' => $post_id]);
+       $datarray = Post::selectFirst(Item::ITEM_FIELDLIST, ['id' => $post_id]);
 
        if (!DBA::isResult($datarray)) {
                Logger::error('Item couldn\'t be fetched.', ['post_id' => $post_id]);
@@ -745,9 +739,6 @@ function item_post(App $a) {
                Tag::createImplicitMentions($datarray['uri-id'], $datarray['thr-parent-id']);
        }
 
-       // update filetags in pconfig
-       FileTag::updatePconfig($uid, $categories_old, $categories_new, 'category');
-
        // These notifications are sent if someone else is commenting other your wall
        if ($contact_record != $author) {
                if ($toplevel_item_id) {
@@ -861,7 +852,7 @@ function drop_item(int $id, string $return = '')
 {
        // locate item to be deleted
        $fields = ['id', 'uid', 'guid', 'contact-id', 'deleted', 'gravity', 'parent'];
-       $item = Item::selectFirstForUser(local_user(), $fields, ['id' => $id]);
+       $item = Post::selectFirstForUser(local_user(), $fields, ['id' => $id]);
 
        if (!DBA::isResult($item)) {
                notice(DI::l10n()->t('Item not found.'));
@@ -881,7 +872,7 @@ function drop_item(int $id, string $return = '')
 
        if ((local_user() == $item['uid']) || $contact_id) {
                if (!empty($item['parent'])) {
-                       $parentitem = Item::selectFirstForUser(local_user(), ['guid'], ['id' => $item['parent']]);
+                       $parentitem = Post::selectFirstForUser(local_user(), ['guid'], ['id' => $item['parent']]);
                }
 
                // delete the item