X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModel%2FItem.php;h=1eaa7cff2313d32a031319fb1834269880abe600;hb=9a1a406c038e21ca1de124a7271372a977ea0d7e;hp=28a45fbf0640707ea4f38ffe0aa784e392ba032c;hpb=9e617208753aacb91d8687bba3eeb8df1993e552;p=friendica.git diff --git a/src/Model/Item.php b/src/Model/Item.php index 28a45fbf06..1eaa7cff23 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -1,6 +1,6 @@ initializePost($item); - $owner = User::getOwnerDataById($item['uid']); - - if (empty($item['contact-id'])) { - $item['contact-id'] = $owner['id']; - } - - if (empty($item['author-link']) && empty($item['author-id'])) { - $item['author-link'] = $owner['url']; - $item['author-name'] = $owner['name']; - $item['author-avatar'] = $owner['thumb']; + if (Photo::setPermissionFromBody($item['body'], $item['uid'], $item['contact-id'], $item['allow_cid'], $item['allow_gid'], $item['deny_cid'], $item['deny_gid'])) { + $item['object-type'] = Activity\ObjectType::IMAGE; } - if (empty($item['owner-link']) && empty($item['owner-id'])) { - $item['owner-link'] = $item['author-link']; - $item['owner-name'] = $item['author-name']; - $item['owner-avatar'] = $item['author-avatar']; - } - - // Setting the object type if not defined before - if (empty($item['object-type'])) { - $item['object-type'] = Activity\ObjectType::NOTE; // Default value - $objectdata = BBCode::getAttachedData($item['body']); - - if ($objectdata['type'] == 'link') { - $item['object-type'] = Activity\ObjectType::BOOKMARK; - } elseif ($objectdata['type'] == 'video') { - $item['object-type'] = Activity\ObjectType::VIDEO; - } elseif ($objectdata['type'] == 'photo') { - $item['object-type'] = Activity\ObjectType::IMAGE; - } - } + $item = DI::contentItem()->moveAttachmentsFromBodyToAttach($item); + $item = DI::contentItem()->finalizePost($item); return $item; } @@ -1336,10 +1307,7 @@ class Item } if ($notify) { - if (!\Friendica\Content\Feature::isEnabled($posted_item['uid'], 'explicit_mentions') && ($posted_item['gravity'] == self::GRAVITY_COMMENT)) { - Tag::createImplicitMentions($posted_item['uri-id'], $posted_item['thr-parent-id']); - } - Hook::callAll('post_local_end', $posted_item); + DI::contentItem()->postProcessPost($posted_item); } else { Hook::callAll('post_remote_end', $posted_item); } @@ -3016,7 +2984,15 @@ class Item $item['hashtags'] = $tags['hashtags']; $item['mentions'] = $tags['mentions']; - $body = $item['body'] = Post\Media::removeFromEndOfBody($item['body'] ?? ''); + if (!$is_preview) { + $item['body'] = preg_replace("#\s*\[attachment .*?].*?\[/attachment]\s*#ism", "\n", $item['body']); + $item['body'] = Post\Media::removeFromEndOfBody($item['body'] ?? ''); + } + + $body = $item['body']; + if ($is_preview) { + $item['body'] = preg_replace("#\s*\[attachment .*?].*?\[/attachment]\s*#ism", "\n", $item['body']); + } $fields = ['uri-id', 'uri', 'body', 'title', 'author-name', 'author-link', 'author-avatar', 'guid', 'created', 'plink', 'network', 'has-media', 'quote-uri-id', 'post-type']; @@ -3026,6 +3002,7 @@ class Item $shared = DI::contentItem()->getSharedPost($item, $fields); if (!empty($shared['post'])) { $shared_item = $shared['post']; + $shared_item['body'] = Post\Media::removeFromEndOfBody($shared_item['body']); $quote_uri_id = $shared['post']['uri-id']; $shared_links[] = strtolower($shared['post']['uri']); $item['body'] = BBCode::removeSharedData($item['body']); @@ -3060,8 +3037,6 @@ class Item $attachments = Post\Media::splitAttachments($item['uri-id'], $shared_links, $item['has-media'] ?? false); $item['body'] = self::replaceVisualAttachments($attachments, $item['body'] ?? ''); - $item['body'] = preg_replace("/\s*\[attachment .*?\].*?\[\/attachment\]\s*/ism", "\n", $item['body']); - self::putInCache($item); $item['body'] = $body; $s = $item["rendered-html"]; @@ -3144,122 +3119,14 @@ class Item * @return string * @throws \Friendica\Network\HTTPException\ServiceUnavailableException */ - public static function makeImageGrid(array $images): string + private static function makeImageGrid(array $images): string { - $landscapeimages = []; - $portraitimages = []; - - foreach ($images as $image) { - ($image['attachment']['width'] > $image['attachment']['height']) ? ($landscapeimages[] = $image) : ($portraitimages[] = $image); - } - // Image for first column (fc) and second column (sc) $images_fc = []; $images_sc = []; - $lcount = count($landscapeimages); - $pcount = count($portraitimages); - if ($lcount == 0 || $pcount == 0) { - if ($lcount == 0) { - // only portrait - for ($i = 0; $i < $pcount; $i++) { - ($i % 2 == 0) ? ($images_fc[] = $portraitimages[$i]) : ($images_sc[] = $portraitimages[$i]); - } - } - if ($pcount == 0) { - // ony landscapes - for ($i = 0; $i < $lcount; $i++) { - ($i % 2 == 0) ? ($images_fc[] = $landscapeimages[$i]) : ($images_sc[] = $landscapeimages[$i]); - } - } - } else { - // Mix of landscape and portrait images. - if ($lcount == $pcount) { - // equal amount of landscapes and portraits - if ($lcount == 1) { - // one left / one right - $images_fc[] = $landscapeimages[0]; - $images_sc[] = $portraitimages[0]; - } else { - // Distribute equal to both columns - for ($l = 0; $l < $lcount; $l++) { - if ($l % 2 == 0) { - // landscape left and portrait right for even numbers - $images_fc[] = $landscapeimages[$l]; - $images_fc[] = $portraitimages[$l]; - } else { - // portraits left and landscape right for odd numbers - $images_sc[] = $portraitimages[$l]; - $images_sc[] = $landscapeimages[$l]; - } - } - } - } - if ($lcount > $pcount) { - // More landscapes than portraits - $p = 0; - $l = 0; - while ($l < $lcount) { - if (($lcount > $l + 1) && ($pcount > $l)) { - // we have one more landscape that can be used for the l-th portrait - $images_fc[] = $landscapeimages[$l++]; - } - $images_fc[] = $landscapeimages[$l++]; - if ($pcount > $p) { - $images_sc[] = $portraitimages[$p++]; - } - - } - } - if ($lcount < $pcount) { - // More portraits than landscapes - if ($lcount % 2 == 0 && $pcount % 2 == 0) { - /* - * even number of landscapes and portraits, but fewer landscapes than portraits. Iterate to the end - * of landscapes array - */ - $i = 0; - while ($i < $lcount) { - if ($i % 2 == 0) { - $images_fc[] = $landscapeimages[$i]; - $images_fc[] = $portraitimages[$i]; - } else { - $images_sc[] = $portraitimages[$i]; - $images_sc[] = $landscapeimages[$i]; - } - $i++; - } - // Rest portraits - while ($i < $pcount) { - if ($i % 2 == 0) { - $images_fc[] = $portraitimages[$i]; - } else { - $images_sc[] = $portraitimages[$i]; - } - $i++; - } - } - if ($lcount % 2 != 0 && $pcount % 2 == 0) { - // uneven landscapes count even portraits count. - for ($p = 0; $p < $pcount; $p++) { - // --> First all portraits until - if ($p % 2 == 0) { - $images_fc[] = $portraitimages[$p]; - } else { - $images_sc[] = $portraitimages[$p]; - } - } - // and now the (uneven) landscapes - for ($l = 0; $l < $lcount; $l++) { - // --> First all portraits until - if ($l % 2 == 0) { - $images_fc[] = $landscapeimages[$l]; - } else { - $images_sc[] = $landscapeimages[$l]; - } - } - } - } + for ($i = 0; $i < count($images); $i++) { + ($i % 2 == 0) ? ($images_fc[] = $images[$i]) : ($images_sc[] = $images[$i]); } return Renderer::replaceMacros(Renderer::getMarkupTemplate('content/image_grid.tpl'), [ @@ -3270,6 +3137,7 @@ class Item ]); } + /** * Check if the body contains a link * @@ -3551,13 +3419,15 @@ class Item } // @todo Use a template - $preview_mode = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'system', 'preview_mode', BBCode::PREVIEW_LARGE); + $preview_mode = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'system', 'preview_mode', BBCode::PREVIEW_LARGE); if ($preview_mode != BBCode::PREVIEW_NONE) { $rendered = BBCode::convertAttachment('', BBCode::INTERNAL, false, $data, $uriid, $preview_mode); + } else { + $rendered = ''; } } elseif (!self::containsLink($content, $data['url'], Post\Media::HTML)) { $rendered = Renderer::replaceMacros(Renderer::getMarkupTemplate('content/link.tpl'), [ - '$url' => $data['url'], + '$url' => $data['url'], '$title' => $data['title'], ]); } else {