]> git.mxchange.org Git - friendica.git/blobdiff - mod/item.php
Improve expectation for not modified check in theme/vier/style
[friendica.git] / mod / item.php
index 17f6486f89c25172bc6b6c06d45945d416d60d9c..2e5560f5c457652c84d1b130ecb790ac09403261 100644 (file)
@@ -35,7 +35,6 @@ use Friendica\Content\Text\BBCode;
 use Friendica\Core\Hook;
 use Friendica\Core\Logger;
 use Friendica\Core\Protocol;
-use Friendica\Core\Renderer;
 use Friendica\Core\Session;
 use Friendica\Core\System;
 use Friendica\Core\Worker;
@@ -48,14 +47,14 @@ use Friendica\Model\FileTag;
 use Friendica\Model\Item;
 use Friendica\Model\Notify\Type;
 use Friendica\Model\Photo;
+use Friendica\Model\Post;
 use Friendica\Model\Tag;
 use Friendica\Network\HTTPException;
 use Friendica\Object\EMail\ItemCCEMail;
 use Friendica\Protocol\Activity;
 use Friendica\Protocol\Diaspora;
 use Friendica\Util\DateTimeFormat;
-use Friendica\Util\Security;
-use Friendica\Util\Strings;
+use Friendica\Security\Security;
 use Friendica\Worker\Delivery;
 
 function item_post(App $a) {
@@ -101,29 +100,32 @@ function item_post(App $a) {
        }
 
        // Is this a reply to something?
-       $toplevel_item_id = intval($_REQUEST['parent'] ?? 0);
+       $parent_item_id = intval($_REQUEST['parent'] ?? 0);
        $thr_parent_uri = trim($_REQUEST['parent_uri'] ?? '');
 
+       $parent_item = null;
        $toplevel_item = null;
-       $parent_user = null;
+       $toplevel_item_id = 0;
+       $toplevel_user_id = null;
 
        $objecttype = null;
        $profile_uid = ($_REQUEST['profile_uid'] ?? 0) ?: local_user();
        $posttype = ($_REQUEST['post_type'] ?? '') ?: Item::PT_ARTICLE;
 
-       if ($toplevel_item_id || $thr_parent_uri) {
-               if ($toplevel_item_id) {
-                       $toplevel_item = Item::selectFirst([], ['id' => $toplevel_item_id]);
+       if ($parent_item_id || $thr_parent_uri) {
+               if ($parent_item_id) {
+                       $parent_item = Item::selectFirst([], ['id' => $parent_item_id]);
                } elseif ($thr_parent_uri) {
-                       $toplevel_item = Item::selectFirst([], ['uri' => $thr_parent_uri, 'uid' => $profile_uid]);
+                       $parent_item = Item::selectFirst([], ['uri' => $thr_parent_uri, 'uid' => $profile_uid]);
                }
 
                // if this isn't the top-level parent of the conversation, find it
-               if (DBA::isResult($toplevel_item)) {
+               if (DBA::isResult($parent_item)) {
                        // The URI and the contact is taken from the direct parent which needn't to be the top parent
-                       $thr_parent_uri = $toplevel_item['uri'];
+                       $thr_parent_uri = $parent_item['uri'];
+                       $toplevel_item = $parent_item;
 
-                       if ($toplevel_item['gravity'] != GRAVITY_PARENT) {
+                       if ($parent_item['gravity'] != GRAVITY_PARENT) {
                                $toplevel_item = Item::selectFirst([], ['id' => $toplevel_item['parent']]);
                        }
                }
@@ -147,7 +149,7 @@ function item_post(App $a) {
                }
 
                $toplevel_item_id = $toplevel_item['id'];
-               $parent_user = $toplevel_item['uid'];
+               $toplevel_user_id = $toplevel_item['uid'];
 
                $objecttype = Activity\ObjectType::COMMENT;
        }
@@ -169,8 +171,8 @@ function item_post(App $a) {
        }
 
        // Ensure that the user id in a thread always stay the same
-       if (!is_null($parent_user) && in_array($parent_user, [local_user(), 0])) {
-               $profile_uid = $parent_user;
+       if (!is_null($toplevel_user_id) && in_array($toplevel_user_id, [local_user(), 0])) {
+               $profile_uid = $toplevel_user_id;
        }
 
        // Check for multiple posts with the same message id (when the post was created via API)
@@ -532,9 +534,8 @@ function item_post(App $a) {
                                if (strlen($attachments)) {
                                        $attachments .= ',';
                                }
-                               $attachments .= '[attach]href="' . DI::baseUrl() . '/attach/' . $attachment['id'] .
-                                               '" length="' . $attachment['filesize'] . '" type="' . $attachment['filetype'] .
-                                               '" title="' . ($attachment['filename'] ? $attachment['filename'] : '') . '"[/attach]';
+                               $attachments .= Post\Media::getAttachElement(DI::baseUrl() . '/attach/' . $attachment['id'],
+                                       $attachment['filesize'], $attachment['filetype'], $attachment['filename'] ?? '');
                        }
                        $body = str_replace($match[1],'',$body);
                }
@@ -607,8 +608,7 @@ function item_post(App $a) {
        $datarray['pubmail']       = $pubmail_enabled;
        $datarray['attach']        = $attachments;
 
-       // This is not a bug. The item store function changes 'parent-uri' to 'thr-parent' and fetches 'parent-uri' new. (We should change this)
-       $datarray['parent-uri']    = $thr_parent_uri;
+       $datarray['thr-parent']    = $thr_parent_uri;
 
        $datarray['postopts']      = $postopts;
        $datarray['origin']        = $origin;
@@ -629,7 +629,7 @@ function item_post(App $a) {
        // This field is for storing the raw conversation data
        $datarray['protocol'] = Conversation::PARCEL_DFRN;
 
-       $conversation = DBA::selectFirst('conversation', ['conversation-uri', 'conversation-href'], ['item-uri' => $datarray['parent-uri']]);
+       $conversation = DBA::selectFirst('conversation', ['conversation-uri', 'conversation-href'], ['item-uri' => $datarray['thr-parent']]);
        if (DBA::isResult($conversation)) {
                if ($conversation['conversation-uri'] != '') {
                        $datarray['conversation-uri'] = $conversation['conversation-uri'];
@@ -807,12 +807,6 @@ function item_post(App $a) {
                }
        }
 
-       // Insert an item entry for UID=0 for global entries.
-       // We now do it in the background to save some time.
-       // This is important in interactive environments like the frontend or the API.
-       // We don't fork a new process since this is done anyway with the following command
-       Worker::add(['priority' => PRIORITY_HIGH, 'dont_fork' => true], "CreateShadowEntry", $post_id);
-
        // When we are doing some forum posting via ! we have to start the notifier manually.
        // These kind of posts don't initiate the notifier call in the item class.
        if ($only_to_forum) {