]> git.mxchange.org Git - friendica.git/blobdiff - src/Object/Post.php
Merge pull request #6201 from JonnyTischbein/feature_admin_subsubpages
[friendica.git] / src / Object / Post.php
index 85d7a3b8c1b5f4cc6d475a6d5882acbb32bce5fd..e7a9e6b020e2e6d058e58dee26ace8dfd9b03fe0 100644 (file)
@@ -10,14 +10,18 @@ use Friendica\Content\Feature;
 use Friendica\Core\Addon;
 use Friendica\Core\Config;
 use Friendica\Core\L10n;
+use Friendica\Core\Logger;
 use Friendica\Core\PConfig;
 use Friendica\Core\Protocol;
+use Friendica\Core\Renderer;
 use Friendica\Database\DBA;
 use Friendica\Model\Contact;
 use Friendica\Model\Item;
 use Friendica\Model\Term;
+use Friendica\Util\Crypto;
 use Friendica\Util\DateTimeFormat;
 use Friendica\Util\Proxy as ProxyUtils;
+use Friendica\Util\Strings;
 use Friendica\Util\Temporal;
 
 require_once 'include/dba.php';
@@ -153,15 +157,17 @@ class Post extends BaseObject
 
                $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 = false;
+
+               if (local_user()) {
+                       if (Strings::compareLink($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")];
+                               }
                        }
                        $dropping = in_array($item['uid'], [0, local_user()]);
-               } else {
-                       $edpost = false;
                }
 
                // Editing on items of not subscribed users isn't currently possible
@@ -186,17 +192,22 @@ class Post extends BaseObject
                        }
                }
 
-               // 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');
+               if ($origin && ($item['id'] != $item['parent']) && ($item['network'] == Protocol::ACTIVITYPUB)) {
+                       // ActivityPub doesn't allow removal of remote comments
+                       $delete = L10n::t('Delete locally');
+               } else {
+                       // 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'] : ''),
+                       'pagedrop' => $item['pagedrop'],
                        'select'   => L10n::t('Select'),
                        'delete'   => $delete,
                ];
 
-               if (!local_user() || ($item['uid'] == 0)) {
+               if (!local_user()) {
                        $drop = false;
                }
 
@@ -259,31 +270,31 @@ 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(local_user()) {
+                               $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");
+                               if ($conv->getProfileOwner() == local_user() && ($item['uid'] != 0)) {
+                                       $isstarred = (($item['starred']) ? "starred" : "unstarred");
 
-                               $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'   => L10n::t('starred'),
-                               ];
+                                       $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'   => L10n::t('starred'),
+                                       ];
 
-                               if (Feature::isEnabled($conv->getProfileOwner(), 'commtag')) {
                                        $tagger = [
                                                'add'   => L10n::t("add tag"),
                                                'class' => "",
@@ -297,7 +308,7 @@ class Post extends BaseObject
                if ($conv->isWritable()) {
                        $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")] : '',
+                               'dislike' => [L10n::t("I don't like this \x28toggle\x29"), L10n::t("dislike")],
                        ];
                        if ($shareable) {
                                $buttons['share'] = [L10n::t('Share this'), L10n::t('share')];
@@ -312,7 +323,7 @@ class Post extends BaseObject
 
                localize_item($item);
 
-               $body = prepare_body($item, true);
+               $body = Item::prepareBody($item, true);
 
                list($categories, $folders) = get_cats_and_terms($item);
 
@@ -389,13 +400,13 @@ class Post extends BaseObject
                        'owner_url'       => $this->getOwnerUrl(),
                        'owner_photo'     => $a->removeBaseURL(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 : '',
+                       'plink'           => Item::getPlink($item),
+                       'edpost'          => $edpost,
                        'isstarred'       => $isstarred,
-                       'star'            => Feature::isEnabled($conv->getProfileOwner(), 'star_posts') ? $star : '',
-                       'ignore'          => Feature::isEnabled($conv->getProfileOwner(), 'ignore_posts') ? $ignore : '',
+                       'star'            => $star,
+                       'ignore'          => $ignore,
                        'tagger'          => $tagger,
-                       'filer'           => Feature::isEnabled($conv->getProfileOwner(), 'filing') ? $filer : '',
+                       'filer'           => $filer,
                        'drop'            => $drop,
                        'vote'            => $buttons,
                        'like'            => $responses['like']['output'],
@@ -412,6 +423,7 @@ class Post extends BaseObject
                        'received'        => $item['received'],
                        'commented'       => $item['commented'],
                        'created_date'    => $item['created'],
+                       'return'          => ($a->cmd) ? bin2hex($a->cmd) : '',
                ];
 
                $arr = ['item' => $item, 'output' => $tmp_item];
@@ -487,10 +499,10 @@ class Post extends BaseObject
        {
                $item_id = $item->getId();
                if (!$item_id) {
-                       logger('[ERROR] Post::addChild : Item has no ID!!', LOGGER_DEBUG);
+                       Logger::log('[ERROR] Post::addChild : Item has no ID!!', Logger::DEBUG);
                        return false;
                } elseif ($this->getChild($item->getId())) {
-                       logger('[WARN] Post::addChild : Item already exists (' . $item->getId() . ').', LOGGER_DEBUG);
+                       Logger::log('[WARN] Post::addChild : Item already exists (' . $item->getId() . ').', Logger::DEBUG);
                        return false;
                }
                /*
@@ -584,7 +596,7 @@ class Post extends BaseObject
                                return true;
                        }
                }
-               logger('[WARN] Item::removeChild : Item is not a child (' . $id . ').', LOGGER_DEBUG);
+               Logger::log('[WARN] Item::removeChild : Item is not a child (' . $id . ').', Logger::DEBUG);
                return false;
        }
 
@@ -650,7 +662,7 @@ class Post extends BaseObject
        public function getDataValue($name)
        {
                if (!isset($this->data[$name])) {
-                       // logger('[ERROR] Item::getDataValue : Item has no value name "'. $name .'".', LOGGER_DEBUG);
+                       // Logger::log('[ERROR] Item::getDataValue : Item has no value name "'. $name .'".', Logger::DEBUG);
                        return false;
                }
 
@@ -667,7 +679,7 @@ class Post extends BaseObject
        private function setTemplate($name)
        {
                if (!x($this->available_templates, $name)) {
-                       logger('[ERROR] Item::setTemplate : Template not available ("' . $name . '").', LOGGER_DEBUG);
+                       Logger::log('[ERROR] Item::setTemplate : Template not available ("' . $name . '").', Logger::DEBUG);
                        return false;
                }
 
@@ -784,8 +796,8 @@ class Post extends BaseObject
                                $uid = $parent_uid;
                        }
 
-                       $template = get_markup_template($this->getCommentBoxTemplate());
-                       $comment_box = replace_macros($template, [
+                       $template = Renderer::getMarkupTemplate($this->getCommentBoxTemplate());
+                       $comment_box = Renderer::replaceMacros($template, [
                                '$return_path' => $a->query_string,
                                '$threaded'    => $this->isThreaded(),
                                '$jsreload'    => '',
@@ -806,12 +818,13 @@ class Post extends BaseObject
                                '$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') : ''),
+                               '$edattach'    => L10n::t('Link or Media'),
+                               '$prompttext'  => L10n::t('Please enter a image/video/audio/webpage URL:'),
+                               '$preview'     => L10n::t('Preview'),
                                '$indent'      => $indent,
                                '$sourceapp'   => L10n::t($a->sourcename),
                                '$ww'          => $conv->getMode() === 'network' ? $ww : '',
-                               '$rand_num'    => random_digits(12)
+                               '$rand_num'    => Crypto::randomDigits(12)
                        ]);
                }
 
@@ -849,8 +862,8 @@ class Post extends BaseObject
                                        $this->owner_name = $a->page_contact['name'];
                                        $this->wall_to_wall = true;
                                } elseif ($this->getDataValue('owner-link')) {
-                                       $owner_linkmatch = (($this->getDataValue('owner-link')) && link_compare($this->getDataValue('owner-link'), $this->getDataValue('author-link')));
-                                       $alias_linkmatch = (($this->getDataValue('alias')) && link_compare($this->getDataValue('alias'), $this->getDataValue('author-link')));
+                                       $owner_linkmatch = (($this->getDataValue('owner-link')) && Strings::compareLink($this->getDataValue('owner-link'), $this->getDataValue('author-link')));
+                                       $alias_linkmatch = (($this->getDataValue('alias')) && Strings::compareLink($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) {