X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FObject%2FPost.php;h=bceee38444ca4f88bcec7caf08198b7b236df91b;hb=78114c13d5ce27b36682a960859056d4ebf9d9be;hp=61200b58e938a81454df5fd6e48ac1da616cae8e;hpb=0ef83b23839045662da7677f82162a5b129a29f5;p=friendica.git diff --git a/src/Object/Post.php b/src/Object/Post.php index 61200b58e9..bceee38444 100644 --- a/src/Object/Post.php +++ b/src/Object/Post.php @@ -1,16 +1,20 @@ 'wall_thread.tpl', 'wall2wall' => 'wallwall_thread.tpl' - ); + ]; private $comment_box_template = 'comment_item.tpl'; private $toplevel = false; private $writable = false; - private $children = array(); + private $children = []; private $parent = null; private $thread = null; private $redirect_url = null; @@ -66,14 +70,14 @@ class Post extends BaseObject } $this->writable = $this->getDataValue('writable') || $this->getDataValue('self'); - $this->redirect_url = 'redir/' . $this->getDataValue('cid'); + $this->redirect_url = Contact::magicLinkById($this->getDataValue('cid')); if (!$this->isToplevel()) { $this->threaded = true; } // Prepare the children - if (count($data['children'])) { + if (!empty($data['children'])) { foreach ($data['children'] as $item) { // Only add will be displayed if ($item['network'] === NETWORK_MAIL && local_user() != $item['uid']) { @@ -82,8 +86,8 @@ class Post extends BaseObject continue; } - // You can always comment on Diaspora items - if (($item['network'] == NETWORK_DIASPORA) && (local_user() == $item['uid'])) { + // You can always comment on Diaspora and OStatus items + if (in_array($item['network'], [NETWORK_OSTATUS, NETWORK_DIASPORA]) && (local_user() == $item['uid'])) { $item['writable'] = true; } @@ -107,7 +111,7 @@ class Post extends BaseObject { require_once "mod/proxy.php"; - $result = array(); + $result = []; $a = self::getApp(); @@ -119,11 +123,11 @@ class Post extends BaseObject // between creation time and edit time of a second. Thats why we add the notice // only if the difference is more than 1 second. if (strtotime($item['edited']) - strtotime($item['created']) > 1) { - $edited = array( - 'label' => t('This entry was edited'), - 'date' => datetime_convert('UTC', date_default_timezone_get(), $item['edited'], 'r'), - 'relative' => relative_date($item['edited']) - ); + $edited = [ + 'label' => L10n::t('This entry was edited'), + 'date' => DateTimeFormat::local($item['edited'], 'r'), + 'relative' => Temporal::getRelativeDate($item['edited']) + ]; } $commentww = ''; $sparkle = ''; @@ -141,15 +145,15 @@ class Post extends BaseObject $lock = ((($item['private'] == 1) || (($item['uid'] == local_user()) && (strlen($item['allow_cid']) || strlen($item['allow_gid']) || strlen($item['deny_cid']) || strlen($item['deny_gid'])))) - ? t('Private Message') + ? 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 = array("events/event/" . $item['event-id'], t("Edit")); + $edpost = ["events/event/" . $item['event-id'], L10n::t("Edit")]; } else { - $edpost = array("editpost/" . $item['id'], t("Edit")); + $edpost = ["editpost/" . $item['id'], L10n::t("Edit")]; } $dropping = in_array($item['uid'], [0, local_user()]); } else { @@ -167,14 +171,39 @@ class Post extends BaseObject $dropping = true; } - $drop = array( + $origin = $item['origin']; + + 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)) { + $origin = $parent['origin']; + } + } + + // Showing the one or the other text, depending upon if we can only hide it or really delete it. + $delete = $origin ? L10n::t('Delete globally') : L10n::t('Remove locally'); + + $drop = [ 'dropping' => $dropping, 'pagedrop' => ((Feature::isEnabled($conv->getProfileOwner(), 'multi_delete')) ? $item['pagedrop'] : ''), - 'select' => t('Select'), - 'delete' => t('Delete'), - ); + 'select' => L10n::t('Select'), + 'delete' => $delete, + ]; - $filer = (($conv->getProfileOwner() == local_user()) ? t("save to folder") : false); + if (!local_user() || ($item['uid'] == 0)) { + $drop = false; + } + + $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']); @@ -182,42 +211,17 @@ class Post extends BaseObject $profile_name = $item['author-link']; } - $sp = false; - $profile_link = best_link_url($item, $sp); - if ($profile_link === 'mailbox') { - $profile_link = ''; - } - - if ($sp) { + $profile_link = Contact::magicLinkById($item['author-id']); + if (strpos($profile_link, 'redir/') === 0) { $sparkle = ' sparkle'; - } else { - $profile_link = zrl($profile_link); } - if (!isset($item['author-thumb']) || ($item['author-thumb'] == "")) { - $author_contact = Contact::getDetailsByURL($item['author-link'], $conv->getProfileOwner()); - if ($author_contact["thumb"]) { - $item['author-thumb'] = $author_contact["thumb"]; - } else { - $item['author-thumb'] = $item['author-avatar']; - } - } - - if (!isset($item['owner-thumb']) || ($item['owner-thumb'] == "")) { - $owner_contact = Contact::getDetailsByURL($item['owner-link'], $conv->getProfileOwner()); - if ($owner_contact["thumb"]) { - $item['owner-thumb'] = $owner_contact["thumb"]; - } else { - $item['owner-thumb'] = $item['owner-avatar']; - } - } - - $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => ''); - call_hooks('render_location', $locate); + $locate = ['location' => $item['location'], 'coord' => $item['coord'], 'html' => '']; + Addon::callHooks('render_location', $locate); $location = ((strlen($locate['html'])) ? $locate['html'] : render_location_dummy($locate)); // process action responses - e.g. like/dislike/attend/agree/whatever - $response_verbs = array('like', 'dislike'); + $response_verbs = ['like', 'dislike']; $isevent = false; $attend = []; @@ -227,7 +231,7 @@ class Post extends BaseObject $response_verbs[] = 'attendmaybe'; if ($conv->isWritable()) { $isevent = true; - $attend = array(t('I will attend'), t('I will not attend'), t('I might attend')); + $attend = [L10n::t('I will attend'), L10n::t('I will not attend'), L10n::t('I might attend')]; } } @@ -251,34 +255,35 @@ class Post extends BaseObject $tagger = ''; if ($this->isToplevel()) { - if ($conv->getProfileOwner() == local_user()) { + if ($conv->getProfileOwner() == local_user() && ($item['uid'] != 0)) { $isstarred = (($item['starred']) ? "starred" : "unstarred"); - $star = array( - 'do' => t("add star"), - 'undo' => t("remove star"), - 'toggle' => t("toggle star status"), + $star = [ + 'do' => L10n::t("add star"), + 'undo' => L10n::t("remove star"), + 'toggle' => L10n::t("toggle star status"), 'classdo' => $item['starred'] ? "hidden" : "", 'classundo' => $item['starred'] ? "" : "hidden", - 'starred' => t('starred'), - ); - $r = dba::select('thread', array('ignored'), array('uid' => $item['uid'], 'iid' => $item['id']), array('limit' => 1)); - if (DBM::is_result($r)) { - $ignore = array( - 'do' => t("ignore thread"), - 'undo' => t("unignore thread"), - 'toggle' => t("toggle ignore status"), - 'classdo' => $r['ignored'] ? "hidden" : "", - 'classundo' => $r['ignored'] ? "" : "hidden", - 'ignored' => t('ignored'), - ); + '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 = array( - 'add' => t("add tag"), + $tagger = [ + 'add' => L10n::t("add tag"), 'class' => "", - ); + ]; } } } else { @@ -286,24 +291,18 @@ class Post extends BaseObject } if ($conv->isWritable()) { - $buttons = array( - 'like' => array(t("I like this \x28toggle\x29"), t("like")), - 'dislike' => Feature::isEnabled($conv->getProfileOwner(), 'dislike') ? array(t("I don't like this \x28toggle\x29"), t("dislike")) : '', - ); + $buttons = [ + 'like' => [L10n::t("I like this \x28toggle\x29"), L10n::t("like")], + 'dislike' => Feature::isEnabled($conv->getProfileOwner(), 'dislike') ? [L10n::t("I don't like this \x28toggle\x29"), L10n::t("dislike")] : '', + ]; if ($shareable) { - $buttons['share'] = array(t('Share this'), t('share')); - } - - // If a contact isn't writable, we cannot send a like or dislike to it - if (!$item['writable']) { - unset($buttons["like"]); - unset($buttons["dislike"]); + $buttons['share'] = [L10n::t('Share this'), L10n::t('share')]; } } $comment = $this->getCommentBox($indent); - if (strcmp(datetime_convert('UTC', 'UTC', $item['created']), datetime_convert('UTC', 'UTC', 'now - 12 hours')) > 0) { + if (strcmp(DateTimeFormat::utc($item['created']), DateTimeFormat::utc('now - 12 hours')) > 0) { $shiny = 'shiny'; } @@ -316,34 +315,40 @@ class Post extends BaseObject $body_e = $body; $text_e = strip_tags($body); $name_e = $profile_name; - $title_e = $item['title']; + + if (!empty($item['content-warning']) && PConfig::get(local_user(), 'system', 'disable_cw', false)) { + $title_e = ucfirst($item['content-warning']); + } else { + $title_e = $item['title']; + } + $location_e = $location; $owner_name_e = $this->getOwnerName(); // Disable features that aren't available in several networks - /// @todo Add NETWORK_DIASPORA when it will pass this information - if (!in_array($item["item_network"], array(NETWORK_DFRN)) && isset($buttons["dislike"])) { + if (!in_array($item["network"], [NETWORK_DFRN, NETWORK_DIASPORA]) && isset($buttons["dislike"])) { unset($buttons["dislike"]); $isevent = false; $tagger = ''; } - if (($item["item_network"] == NETWORK_FEED) && isset($buttons["like"])) { + if (($item["network"] == NETWORK_FEED) && isset($buttons["like"])) { unset($buttons["like"]); } - if (($item["item_network"] == NETWORK_MAIL) && isset($buttons["like"])) { + if (($item["network"] == NETWORK_MAIL) && isset($buttons["like"])) { unset($buttons["like"]); } - $tmp_item = array( + $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'], - 'txt_cats' => t('Categories:'), - 'txt_folders' => t('Filed under:'), + 'txt_cats' => L10n::t('Categories:'), + 'txt_folders' => L10n::t('Filed under:'), 'has_cats' => ((count($categories)) ? 'true' : ''), 'has_folders' => ((count($folders)) ? 'true' : ''), 'categories' => $categories, @@ -354,29 +359,29 @@ class Post extends BaseObject 'guid' => urlencode($item['guid']), 'isevent' => $isevent, 'attend' => $attend, - 'linktitle' => t('View %s\'s profile @ %s', $profile_name, defaults($item, 'author-link', $item['url'])), - 'olinktitle' => t('View %s\'s profile @ %s', htmlentities($this->getOwnerName()), defaults($item, 'owner-link', $item['url'])), - 'to' => t('to'), - 'via' => t('via'), - 'wall' => t('Wall-to-Wall'), - 'vwall' => t('via Wall-To-Wall:'), + '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'])), + 'to' => L10n::t('to'), + 'via' => L10n::t('via'), + 'wall' => L10n::t('Wall-to-Wall'), + 'vwall' => L10n::t('via Wall-To-Wall:'), 'profile_url' => $profile_link, 'item_photo_menu' => item_photo_menu($item), 'name' => $name_e, - 'thumb' => $a->remove_baseurl(proxy_url($item['author-thumb'], false, PROXY_SIZE_THUMB)), + 'thumb' => $a->remove_baseurl(proxy_url($item['author-avatar'], false, PROXY_SIZE_THUMB)), 'osparkle' => $osparkle, 'sparkle' => $sparkle, 'title' => $title_e, - 'localtime' => datetime_convert('UTC', date_default_timezone_get(), $item['created'], 'r'), - 'ago' => $item['app'] ? t('%s from %s', relative_date($item['created']), $item['app']) : relative_date($item['created']), + 'localtime' => DateTimeFormat::local($item['created'], 'r'), + 'ago' => $item['app'] ? L10n::t('%s from %s', Temporal::getRelativeDate($item['created']), $item['app']) : Temporal::getRelativeDate($item['created']), 'app' => $item['app'], - 'created' => relative_date($item['created']), + 'created' => Temporal::getRelativeDate($item['created']), 'lock' => $lock, 'location' => $location_e, 'indent' => $indent, 'shiny' => $shiny, 'owner_url' => $this->getOwnerUrl(), - 'owner_photo' => $a->remove_baseurl(proxy_url($item['owner-thumb'], false, PROXY_SIZE_THUMB)), + 'owner_photo' => $a->remove_baseurl(proxy_url($item['owner-avatar'], false, PROXY_SIZE_THUMB)), 'owner_name' => htmlentities($owner_name_e), 'plink' => get_plink($item), 'edpost' => Feature::isEnabled($conv->getProfileOwner(), 'edit_posts') ? $edpost : '', @@ -390,25 +395,25 @@ class Post extends BaseObject 'like' => $responses['like']['output'], 'dislike' => $responses['dislike']['output'], 'responses' => $responses, - 'switchcomment' => t('Comment'), + 'switchcomment' => L10n::t('Comment'), 'comment' => $comment, 'previewing' => $conv->isPreview() ? ' preview ' : '', - 'wait' => t('Please wait'), + 'wait' => L10n::t('Please wait'), 'thread_level' => $thread_level, 'edited' => $edited, - 'network' => $item["item_network"], - 'network_name' => network_to_name($item['item_network'], $profile_link), + 'network' => $item["network"], + 'network_name' => ContactSelector::networkToName($item['network'], $profile_link), 'received' => $item['received'], 'commented' => $item['commented'], 'created_date' => $item['created'], - ); + ]; - $arr = array('item' => $item, 'output' => $tmp_item); - call_hooks('display_item', $arr); + $arr = ['item' => $item, 'output' => $tmp_item]; + Addon::callHooks('display_item', $arr); $result = $arr['output']; - $result['children'] = array(); + $result['children'] = []; $children = $this->getChildren(); $nb_children = count($children); if ($nb_children > 0) { @@ -418,10 +423,10 @@ class Post extends BaseObject // Collapse if (($nb_children > 2) || ($thread_level > 1)) { $result['children'][0]['comment_firstcollapsed'] = true; - $result['children'][0]['num_comments'] = tt('%d comment', '%d comments', $total_children); + $result['children'][0]['num_comments'] = L10n::tt('%d comment', '%d comments', $total_children); $result['children'][0]['hidden_comments_num'] = $total_children; - $result['children'][0]['hidden_comments_text'] = tt('comment', 'comments', $total_children); - $result['children'][0]['hide_text'] = t('show more'); + $result['children'][0]['hidden_comments_text'] = L10n::tt('comment', 'comments', $total_children); + $result['children'][0]['hide_text'] = L10n::t('show more'); if ($thread_level > 1) { $result['children'][$nb_children - 1]['comment_lastcollapsed'] = true; } else { @@ -432,7 +437,7 @@ class Post extends BaseObject if ($this->isToplevel()) { $result['total_comments_num'] = "$total_children"; - $result['total_comments_text'] = tt('comment', 'comments', $total_children); + $result['total_comments_text'] = L10n::tt('comment', 'comments', $total_children); } $result['private'] = $item['private']; @@ -757,10 +762,10 @@ class Post extends BaseObject $qc = $qcomment = null; /* - * Hmmm, code depending on the presence of a particular plugin? + * Hmmm, code depending on the presence of a particular addon? * This should be better if done by a hook */ - if (in_array('qcomment', $a->plugins)) { + if (in_array('qcomment', $a->addons)) { $qc = ((local_user()) ? PConfig::get(local_user(), 'qcomment', 'words') : null); $qcomment = (($qc) ? explode("\n", $qc) : null); } @@ -774,7 +779,7 @@ class Post extends BaseObject } $template = get_markup_template($this->getCommentBoxTemplate()); - $comment_box = replace_macros($template, array( + $comment_box = replace_macros($template, [ '$return_path' => $a->query_string, '$threaded' => $this->isThreaded(), '$jsreload' => '', @@ -784,24 +789,24 @@ class Post extends BaseObject '$qcomment' => $qcomment, '$profile_uid' => $uid, '$mylink' => $a->remove_baseurl($a->contact['url']), - '$mytitle' => t('This is you'), + '$mytitle' => L10n::t('This is you'), '$myphoto' => $a->remove_baseurl($a->contact['thumb']), - '$comment' => t('Comment'), - '$submit' => t('Submit'), - '$edbold' => t('Bold'), - '$editalic' => t('Italic'), - '$eduline' => t('Underline'), - '$edquote' => t('Quote'), - '$edcode' => t('Code'), - '$edimg' => t('Image'), - '$edurl' => t('Link'), - '$edvideo' => t('Video'), - '$preview' => ((Feature::isEnabled($conv->getProfileOwner(), 'preview')) ? t('Preview') : ''), + '$comment' => L10n::t('Comment'), + '$submit' => L10n::t('Submit'), + '$edbold' => L10n::t('Bold'), + '$editalic' => L10n::t('Italic'), + '$eduline' => L10n::t('Underline'), + '$edquote' => L10n::t('Quote'), + '$edcode' => L10n::t('Code'), + '$edimg' => L10n::t('Image'), + '$edurl' => L10n::t('Link'), + '$edvideo' => L10n::t('Video'), + '$preview' => ((Feature::isEnabled($conv->getProfileOwner(), 'preview')) ? L10n::t('Preview') : ''), '$indent' => $indent, - '$sourceapp' => t($a->sourcename), + '$sourceapp' => L10n::t($a->sourcename), '$ww' => $conv->getMode() === 'network' ? $ww : '', '$rand_num' => random_digits(12) - )); + ]); } return $comment_box; @@ -833,7 +838,7 @@ class Post extends BaseObject // This will have been stored in $a->page_contact by our calling page. // Put this person as the wall owner of the wall-to-wall notice. - $this->owner_url = zrl($a->page_contact['url']); + $this->owner_url = Contact::magicLink($a->page_contact['url']); $this->owner_photo = $a->page_contact['thumb']; $this->owner_name = $a->page_contact['name']; $this->wall_to_wall = true; @@ -855,14 +860,7 @@ class Post extends BaseObject $this->owner_photo = $this->getDataValue('owner-avatar'); $this->owner_name = $this->getDataValue('owner-name'); $this->wall_to_wall = true; - // If it is our contact, use a friendly redirect link - if ($this->getDataValue('network') === NETWORK_DFRN - && link_compare($this->getDataValue('owner-link'), $this->getDataValue('url')) - ) { - $this->owner_url = $this->getRedirectUrl(); - } else { - $this->owner_url = zrl($this->getDataValue('owner-link')); - } + $this->owner_url = Contact::magicLinkById($this->getDataValue('owner-id')); } } }