X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Fitem.php;h=77cfc4795a755b301e622e802e1766340903da97;hb=1d6f5c33a1a7c538d4e529d22701fd735855da15;hp=9a9b5e8db3bf737f563a5b894ca782a62aaf8f74;hpb=8654b39e986481155aaed297dc090f4ca7589e4c;p=friendica.git diff --git a/mod/item.php b/mod/item.php index 9a9b5e8db3..77cfc4795a 100644 --- a/mod/item.php +++ b/mod/item.php @@ -29,6 +29,7 @@ */ use Friendica\App; +use Friendica\Content\Conversation; use Friendica\Content\Text\BBCode; use Friendica\Core\Hook; use Friendica\Core\Logger; @@ -40,16 +41,14 @@ use Friendica\DI; use Friendica\Model\Contact; use Friendica\Model\Item; use Friendica\Model\ItemURI; -use Friendica\Model\Photo; use Friendica\Model\Post; use Friendica\Network\HTTPException; -use Friendica\Protocol\Activity; use Friendica\Util\DateTimeFormat; function item_post(App $a) { $uid = DI::userSession()->getLocalUserId(); - if (!DI::userSession()->isAuthenticated() || !$uid) { + if (!$uid) { throw new HTTPException\ForbiddenException(); } @@ -68,11 +67,11 @@ function item_post(App $a) { * after it's been previewed */ if (!$preview && !empty($_REQUEST['post_id_random'])) { - if (!empty($_SESSION['post-random']) && $_SESSION['post-random'] == $_REQUEST['post_id_random']) { + if (DI::session()->get('post-random') == $_REQUEST['post_id_random']) { Logger::warning('duplicate post'); item_post_return(DI::baseUrl(), $return_path); } else { - $_SESSION['post-random'] = $_REQUEST['post_id_random']; + DI::session()->set('post-random', $_REQUEST['post_id_random']); } } @@ -90,16 +89,15 @@ function item_drop(int $uid, string $dropitems) Item::deleteForUser(['id' => $item], $uid); } - $json = ['success' => 1]; - System::jsonExit($json); + System::jsonExit(['success' => 1]); } function item_edit(int $uid, array $request, bool $preview, string $return_path) { $post = Post::selectFirst(Item::ITEM_FIELDLIST, ['id' => $request['post_id'], 'uid' => $uid]); if (!DBA::isResult($post)) { - DI::sysmsg()->addNotice(DI::l10n()->t('Unable to locate original post.')); if ($return_path) { + DI::sysmsg()->addNotice(DI::l10n()->t('Unable to locate original post.')); DI::baseUrl()->redirect($return_path); } throw new HTTPException\NotFoundException(DI::l10n()->t('Unable to locate original post.')); @@ -108,6 +106,7 @@ function item_edit(int $uid, array $request, bool $preview, string $return_path) $post['edit'] = $post; $post['file'] = Post\Category::getTextByURIId($post['uri-id'], $post['uid']); + Post\Media::deleteByURIId($post['uri-id'], [Post\Media::AUDIO, Post\Media::VIDEO, Post\Media::IMAGE]); $post = item_process($post, $request, $preview, $return_path); $fields = [ @@ -141,9 +140,6 @@ function item_edit(int $uid, array $request, bool $preview, string $return_path) function item_insert(int $uid, array $request, bool $preview, string $return_path) { - $emailcc = trim($request['emailcc'] ?? ''); - $parent_id = intval($request['parent'] ?? 0); - $post = ['uid' => $uid]; $post = DI::contentItem()->initializePost($post); @@ -158,9 +154,9 @@ function item_insert(int $uid, array $request, bool $preview, string $return_pat $post['postopts'] = ''; $post['file'] = ''; - if ($parent_id) { - $parent_item = Post::selectFirst(Item::ITEM_FIELDLIST, ['id' => $parent_id]); - if (DBA::isResult($parent_item)) { + if (!empty($request['parent'])) { + $parent_item = Post::selectFirst(Item::ITEM_FIELDLIST, ['id' => $request['parent']]); + if ($parent_item) { // if this isn't the top-level parent of the conversation, find it if ($parent_item['gravity'] != Item::GRAVITY_PARENT) { $toplevel_item = Post::selectFirst(Item::ITEM_FIELDLIST, ['id' => $parent_item['parent']]); @@ -170,8 +166,8 @@ function item_insert(int $uid, array $request, bool $preview, string $return_pat } if (empty($toplevel_item)) { - DI::sysmsg()->addNotice(DI::l10n()->t('Unable to locate original post.')); if ($return_path) { + DI::sysmsg()->addNotice(DI::l10n()->t('Unable to locate original post.')); DI::baseUrl()->redirect($return_path); } throw new HTTPException\NotFoundException(DI::l10n()->t('Unable to locate original post.')); @@ -184,11 +180,13 @@ function item_insert(int $uid, array $request, bool $preview, string $return_pat Logger::info('Public item stored for user', ['uri-id' => $toplevel_item['uri-id'], 'uid' => $post['uid'], 'stored' => $stored]); } + $post['parent'] = $toplevel_item['id']; $post['gravity'] = Item::GRAVITY_COMMENT; $post['thr-parent'] = $parent_item['uri']; $post['wall'] = $toplevel_item['wall']; } else { $parent_item = []; + $post['parent'] = 0; $post['gravity'] = Item::GRAVITY_PARENT; $post['thr-parent'] = $post['uri']; } @@ -201,8 +199,8 @@ function item_insert(int $uid, array $request, bool $preview, string $return_pat $post_id = Item::insert($post); if (!$post_id) { - DI::sysmsg()->addNotice(DI::l10n()->t('Item wasn\'t stored.')); if ($return_path) { + DI::sysmsg()->addNotice(DI::l10n()->t('Item wasn\'t stored.')); DI::baseUrl()->redirect($return_path); } @@ -210,7 +208,7 @@ function item_insert(int $uid, array $request, bool $preview, string $return_pat } $post = Post::selectFirst(Item::ITEM_FIELDLIST, ['id' => $post_id]); - if (!DBA::isResult($post)) { + if (!$post) { Logger::error('Item couldn\'t be fetched.', ['post_id' => $post_id]); if ($return_path) { DI::baseUrl()->redirect($return_path); @@ -219,7 +217,7 @@ function item_insert(int $uid, array $request, bool $preview, string $return_pat throw new HTTPException\InternalServerErrorException(DI::l10n()->t('Item couldn\'t be fetched.')); } - $recipients = explode(',', $emailcc); + $recipients = explode(',', $request['emailcc'] ?? ''); DI::contentItem()->postProcessPost($post, $recipients); @@ -241,14 +239,6 @@ function item_process(array $post, array $request, bool $preview, string $return $post = DI::contentItem()->addCategories($post, $request['category'] ?? ''); - if (!$preview) { - if (Photo::setPermissionFromBody($post['body'], $post['uid'], $post['contact-id'], $post['allow_cid'], $post['allow_gid'], $post['deny_cid'], $post['deny_gid'])) { - $post['object-type'] = Activity\ObjectType::IMAGE; - } - - $post = DI::contentItem()->moveAttachmentsFromBodyToAttach($post); - } - // Add the attachment to the body. if (!empty($request['has_attachment'])) { $post['body'] .= DI::contentItem()->storeAttachmentFromRequest($request); @@ -261,8 +251,8 @@ function item_process(array $post, array $request, bool $preview, string $return System::jsonExit(['preview' => '']); } - DI::sysmsg()->addNotice(DI::l10n()->t('Empty post discarded.')); if ($return_path) { + DI::sysmsg()->addNotice(DI::l10n()->t('Empty post discarded.')); DI::baseUrl()->redirect($return_path); } @@ -284,7 +274,7 @@ function item_process(array $post, array $request, bool $preview, string $return $post['body'] = BBCode::removeSharedData(Item::setHashtags($post['body'])); $post['writable'] = true; - $o = DI::conversation()->create([$post], 'search', false, true); + $o = DI::conversation()->create([$post], Conversation::MODE_SEARCH, false, true); System::jsonExit(['preview' => $o]); } @@ -378,6 +368,22 @@ function item_content(App $a) Contact\User::setBlocked($item['author-id'], DI::userSession()->getLocalUserId(), true); + if (DI::mode()->isAjax()) { + // ajax return: [, 0 (no perm) | ] + System::jsonExit([intval($args->get(2)), DI::userSession()->getLocalUserId()]); + } else { + item_redirect_after_action($item, $args->get(3)); + } + break; + + case 'ignore': + $item = Post::selectFirstForUser(DI::userSession()->getLocalUserId(), ['guid', 'author-id', 'parent', 'gravity'], ['id' => $args->get(2)]); + if (empty($item['author-id'])) { + throw new HTTPException\NotFoundException('Item not found'); + } + + Contact\User::setIgnored($item['author-id'], DI::userSession()->getLocalUserId(), true); + if (DI::mode()->isAjax()) { // ajax return: [, 0 (no perm) | ] System::jsonExit([intval($args->get(2)), DI::userSession()->getLocalUserId()]);