]> git.mxchange.org Git - friendica.git/blobdiff - src/Module/Like.php
Merge pull request #9873 from annando/post-user
[friendica.git] / src / Module / Like.php
index ca382475082c6871bcb4305e3e62a00020d07cdf..8d699be5e5b1589e92cf0624b5daa7c61f2b8745 100644 (file)
 namespace Friendica\Module;
 
 use Friendica\BaseModule;
+use Friendica\Content\Text\BBCode;
+use Friendica\Core\Protocol;
 use Friendica\Core\System;
 use Friendica\DI;
 use Friendica\Model\Item;
 use Friendica\Core\Session;
+use Friendica\Database\DBA;
+use Friendica\Model\Post;
 use Friendica\Network\HTTPException;
 use Friendica\Util\Strings;
 
@@ -51,7 +55,14 @@ class Like extends BaseModule
                // @TODO: Replace with parameter from router
                $itemId = (($app->argc > 1) ? Strings::escapeTags(trim($app->argv[1])) : 0);
 
-               if (!Item::performActivity($itemId, $verb)) {
+               if (in_array($verb, ['announce', 'unannounce'])) {
+                       $item = Post::selectFirst(['network'], ['id' => $itemId]);
+                       if ($item['network'] == Protocol::DIASPORA) {
+                               self::performDiasporaReshare($itemId);
+                       }
+               }
+
+               if (!Item::performActivity($itemId, $verb, local_user())) {
                        throw new HTTPException\BadRequestException();
                }
 
@@ -72,4 +83,32 @@ class Like extends BaseModule
 
                System::jsonExit(['status' => 'OK']);
        }
+
+       private static function performDiasporaReshare(int $itemId)
+       {
+               $fields = ['uri-id', 'body', 'title', 'author-name', 'author-link', 'author-avatar', 'guid', 'created', 'plink'];
+               $item = Post::selectFirst($fields, ['id' => $itemId, 'private' => [Item::PUBLIC, Item::UNLISTED]]);
+               if (!DBA::isResult($item) || ($item['body'] == '')) {
+                       return;
+               }
+
+               if (strpos($item['body'], '[/share]') !== false) {
+                       $pos = strpos($item['body'], '[share');
+                       $post = substr($item['body'], $pos);
+               } else {
+                       $post = BBCode::getShareOpeningTag($item['author-name'], $item['author-link'], $item['author-avatar'], $item['plink'], $item['created'], $item['guid']);
+
+                       if (!empty($item['title'])) {
+                               $post .= '[h3]' . $item['title'] . "[/h3]\n";
+                       }
+
+                       $post .= $item['body'];
+                       $post .= '[/share]';
+               }
+               $_REQUEST['body'] = $post;
+               $_REQUEST['profile_uid'] = local_user();
+
+               require_once 'mod/item.php';
+               item_post(DI::app());
+       }
 }