X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FObject%2FPost.php;h=35805e1fddb5112c55cd3c1b7a314f957c3c5a2a;hb=8dc1d19381d2974e2c99efff6a654aa8c24239ae;hp=bceee38444ca4f88bcec7caf08198b7b236df91b;hpb=e84c48b979ab265cd29ff3624e975e288c6755fc;p=friendica.git diff --git a/src/Object/Post.php b/src/Object/Post.php index bceee38444..35805e1fdd 100644 --- a/src/Object/Post.php +++ b/src/Object/Post.php @@ -11,11 +11,14 @@ use Friendica\Core\Addon; use Friendica\Core\Config; use Friendica\Core\L10n; use Friendica\Core\PConfig; -use Friendica\Database\DBM; +use Friendica\Core\Protocol; +use Friendica\Database\DBA; use Friendica\Model\Contact; +use Friendica\Model\Item; +use Friendica\Model\Term; use Friendica\Util\DateTimeFormat; +use Friendica\Util\Proxy as ProxyUtils; use Friendica\Util\Temporal; -use dba; require_once 'include/dba.php'; require_once 'include/text.php'; @@ -70,8 +73,10 @@ class Post extends BaseObject } $this->writable = $this->getDataValue('writable') || $this->getDataValue('self'); - $this->redirect_url = Contact::magicLinkById($this->getDataValue('cid')); - + $author = ['uid' => 0, 'id' => $this->getDataValue('author-id'), + 'network' => $this->getDataValue('author-network'), + 'url' => $this->getDataValue('author-link')]; + $this->redirect_url = Contact::magicLinkbyContact($author); if (!$this->isToplevel()) { $this->threaded = true; } @@ -80,14 +85,14 @@ class Post extends BaseObject if (!empty($data['children'])) { foreach ($data['children'] as $item) { // Only add will be displayed - if ($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) { + if ($item['network'] === Protocol::MAIL && local_user() != $item['uid']) { continue; } elseif (!visible_activity($item)) { continue; } // You can always comment on Diaspora and OStatus items - if (in_array($item['network'], [NETWORK_OSTATUS, NETWORK_DIASPORA]) && (local_user() == $item['uid'])) { + if (in_array($item['network'], [Protocol::OSTATUS, Protocol::DIASPORA]) && (local_user() == $item['uid'])) { $item['writable'] = true; } @@ -109,8 +114,6 @@ class Post extends BaseObject */ public function getTemplateData($conv_responses, $thread_level = 1) { - require_once "mod/proxy.php"; - $result = []; $a = self::getApp(); @@ -147,13 +150,14 @@ class Post extends BaseObject || strlen($item['deny_cid']) || strlen($item['deny_gid'])))) ? L10n::t('Private Message') : false); + $shareable = in_array($conv->getProfileOwner(), [0, local_user()]) && $item['private'] != 1; if (local_user() && link_compare($a->contact['url'], $item['author-link'])) { if ($item["event-id"] != 0) { $edpost = ["events/event/" . $item['event-id'], L10n::t("Edit")]; } else { - $edpost = ["editpost/" . $item['id'], L10n::t("Edit")]; + $edpost = ["editpost/" . $item['id'] . "/" . base64_encode($a->cmd), L10n::t("Edit")]; } $dropping = in_array($item['uid'], [0, local_user()]); } else { @@ -176,8 +180,8 @@ class Post extends BaseObject if (!$origin) { /// @todo This shouldn't be done as query here, but better during the data creation. // it is now done here, since during the RC phase we shouldn't make to intense changes. - $parent = dba::selectFirst('item', ['origin'], ['id' => $item['parent']]); - if (DBM::is_result($parent)) { + $parent = Item::selectFirst(['origin'], ['id' => $item['parent']]); + if (DBA::isResult($parent)) { $origin = $parent['origin']; } } @@ -198,20 +202,14 @@ class Post extends BaseObject $filer = (($conv->getProfileOwner() == local_user() && ($item['uid'] != 0)) ? L10n::t("save to folder") : false); - if ($item['network'] == NETWORK_FEED) { - $item['author-avatar'] = $item['contact-avatar']; - $item['author-name'] = $item['contact-name']; - $item['owner-avatar'] = $item['contact-avatar']; - $item['owner-name'] = $item['contact-name']; - } - - $diff_author = !link_compare($item['url'], $item['author-link']); - $profile_name = htmlentities(((strlen($item['author-name'])) && $diff_author) ? $item['author-name'] : $item['name']); - if ($item['author-link'] && (!$item['author-name'])) { + $profile_name = htmlentities($item['author-name']); + if (!empty($item['author-link']) && empty($item['author-name'])) { $profile_name = $item['author-link']; } - $profile_link = Contact::magicLinkById($item['author-id']); + $author = ['uid' => 0, 'id' => $item['author-id'], + 'network' => $item['author-network'], 'url' => $item['author-link']]; + $profile_link = Contact::magicLinkbyContact($author); if (strpos($profile_link, 'redir/') === 0) { $sparkle = ' sparkle'; } @@ -255,6 +253,18 @@ class Post extends BaseObject $tagger = ''; if ($this->isToplevel()) { + $thread = Item::selectFirstThreadForUser(local_user(), ['ignored'], ['iid' => $item['id']]); + if (DBA::isResult($thread)) { + $ignore = [ + 'do' => L10n::t("ignore thread"), + 'undo' => L10n::t("unignore thread"), + 'toggle' => L10n::t("toggle ignore status"), + 'classdo' => $thread['ignored'] ? "hidden" : "", + 'classundo' => $thread['ignored'] ? "" : "hidden", + 'ignored' => L10n::t('ignored'), + ]; + } + if ($conv->getProfileOwner() == local_user() && ($item['uid'] != 0)) { $isstarred = (($item['starred']) ? "starred" : "unstarred"); @@ -267,18 +277,6 @@ class Post extends BaseObject 'starred' => L10n::t('starred'), ]; - $thread = dba::selectFirst('thread', ['ignored'], ['uid' => $item['uid'], 'iid' => $item['id']]); - if (DBM::is_result($thread)) { - $ignore = [ - 'do' => L10n::t("ignore thread"), - 'undo' => L10n::t("unignore thread"), - 'toggle' => L10n::t("toggle ignore status"), - 'classdo' => $thread['ignored'] ? "hidden" : "", - 'classundo' => $thread['ignored'] ? "" : "hidden", - 'ignored' => L10n::t('ignored'), - ]; - } - if (Feature::isEnabled($conv->getProfileOwner(), 'commtag')) { $tagger = [ 'add' => L10n::t("add tag"), @@ -326,27 +324,29 @@ class Post extends BaseObject $owner_name_e = $this->getOwnerName(); // Disable features that aren't available in several networks - if (!in_array($item["network"], [NETWORK_DFRN, NETWORK_DIASPORA]) && isset($buttons["dislike"])) { + if (!in_array($item["network"], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA]) && isset($buttons["dislike"])) { unset($buttons["dislike"]); $isevent = false; $tagger = ''; } - if (($item["network"] == NETWORK_FEED) && isset($buttons["like"])) { + if (($item["network"] == Protocol::FEED) && isset($buttons["like"])) { unset($buttons["like"]); } - if (($item["network"] == NETWORK_MAIL) && isset($buttons["like"])) { + if (($item["network"] == Protocol::MAIL) && isset($buttons["like"])) { unset($buttons["like"]); } + $tags = Term::populateTagsFromItem($item); + $tmp_item = [ 'template' => $this->getTemplate(), 'type' => implode("", array_slice(explode("/", $item['verb']), -1)), 'suppress_tags' => Config::get('system', 'suppress_tags'), - 'tags' => $item['tags'], - 'hashtags' => $item['hashtags'], - 'mentions' => $item['mentions'], + 'tags' => $tags['tags'], + 'hashtags' => $tags['hashtags'], + 'mentions' => $tags['mentions'], 'txt_cats' => L10n::t('Categories:'), 'txt_folders' => L10n::t('Filed under:'), 'has_cats' => ((count($categories)) ? 'true' : ''), @@ -359,8 +359,8 @@ class Post extends BaseObject 'guid' => urlencode($item['guid']), 'isevent' => $isevent, 'attend' => $attend, - 'linktitle' => L10n::t('View %s\'s profile @ %s', $profile_name, defaults($item, 'author-link', $item['url'])), - 'olinktitle' => L10n::t('View %s\'s profile @ %s', htmlentities($this->getOwnerName()), defaults($item, 'owner-link', $item['url'])), + 'linktitle' => L10n::t('View %s\'s profile @ %s', $profile_name, $item['author-link']), + 'olinktitle' => L10n::t('View %s\'s profile @ %s', htmlentities($this->getOwnerName()), $item['owner-link']), 'to' => L10n::t('to'), 'via' => L10n::t('via'), 'wall' => L10n::t('Wall-to-Wall'), @@ -368,7 +368,7 @@ class Post extends BaseObject 'profile_url' => $profile_link, 'item_photo_menu' => item_photo_menu($item), 'name' => $name_e, - 'thumb' => $a->remove_baseurl(proxy_url($item['author-avatar'], false, PROXY_SIZE_THUMB)), + 'thumb' => $a->remove_baseurl(ProxyUtils::proxifyUrl($item['author-avatar'], false, ProxyUtils::SIZE_THUMB)), 'osparkle' => $osparkle, 'sparkle' => $sparkle, 'title' => $title_e, @@ -381,7 +381,7 @@ class Post extends BaseObject 'indent' => $indent, 'shiny' => $shiny, 'owner_url' => $this->getOwnerUrl(), - 'owner_photo' => $a->remove_baseurl(proxy_url($item['owner-avatar'], false, PROXY_SIZE_THUMB)), + 'owner_photo' => $a->remove_baseurl(ProxyUtils::proxifyUrl($item['owner-avatar'], false, ProxyUtils::SIZE_THUMB)), 'owner_name' => htmlentities($owner_name_e), 'plink' => get_plink($item), 'edpost' => Feature::isEnabled($conv->getProfileOwner(), 'edit_posts') ? $edpost : '', @@ -402,7 +402,7 @@ class Post extends BaseObject 'thread_level' => $thread_level, 'edited' => $edited, 'network' => $item["network"], - 'network_name' => ContactSelector::networkToName($item['network'], $profile_link), + 'network_name' => ContactSelector::networkToName($item['network'], $item['author-link']), 'received' => $item['received'], 'commented' => $item['commented'], 'created_date' => $item['created'], @@ -490,7 +490,7 @@ class Post extends BaseObject /* * Only add what will be displayed */ - if ($item->getDataValue('network') === NETWORK_MAIL && local_user() != $item->getDataValue('uid')) { + if ($item->getDataValue('network') === Protocol::MAIL && local_user() != $item->getDataValue('uid')) { return false; } elseif (activity_match($item->getDataValue('verb'), ACTIVITY_LIKE) || activity_match($item->getDataValue('verb'), ACTIVITY_DISLIKE)) { return false; @@ -783,7 +783,7 @@ class Post extends BaseObject '$return_path' => $a->query_string, '$threaded' => $this->isThreaded(), '$jsreload' => '', - '$type' => $conv->getMode() === 'profile' ? 'wall-comment' : 'net-comment', + '$wall' => ($conv->getMode() === 'profile'), '$id' => $this->getId(), '$parent' => $this->getId(), '$qcomment' => $qcomment, @@ -847,7 +847,7 @@ class Post extends BaseObject $alias_linkmatch = (($this->getDataValue('alias')) && link_compare($this->getDataValue('alias'), $this->getDataValue('author-link'))); $owner_namematch = (($this->getDataValue('owner-name')) && $this->getDataValue('owner-name') == $this->getDataValue('author-name')); - if ((!$owner_linkmatch) && (!$alias_linkmatch) && (!$owner_namematch)) { + if (!$owner_linkmatch && !$alias_linkmatch && !$owner_namematch) { // The author url doesn't match the owner (typically the contact) // and also doesn't match the contact alias. // The name match is a hack to catch several weird cases where URLs are @@ -860,7 +860,11 @@ class Post extends BaseObject $this->owner_photo = $this->getDataValue('owner-avatar'); $this->owner_name = $this->getDataValue('owner-name'); $this->wall_to_wall = true; - $this->owner_url = Contact::magicLinkById($this->getDataValue('owner-id')); + + $owner = ['uid' => 0, 'id' => $this->getDataValue('owner-id'), + 'network' => $this->getDataValue('owner-network'), + 'url' => $this->getDataValue('owner-link')]; + $this->owner_url = Contact::magicLinkbyContact($owner); } } }