]> git.mxchange.org Git - friendica.git/blobdiff - include/api.php
[ActivityPub] Add support for more attachments structures
[friendica.git] / include / api.php
index fdebdd48bc25eb37f223c2d9967890af1f0767f2..90d0a511b7d772149e43fff732482d10670bc72e 100644 (file)
@@ -43,6 +43,7 @@ use Friendica\Model\Notify;
 use Friendica\Model\Photo;
 use Friendica\Model\User;
 use Friendica\Model\UserItem;
+use Friendica\Model\Verb;
 use Friendica\Network\FKOAuth1;
 use Friendica\Network\HTTPException;
 use Friendica\Network\HTTPException\BadRequestException;
@@ -1310,7 +1311,7 @@ api_register_func('api/media/metadata/create', 'api_media_metadata_create', true
 /**
  * @param string $type    Return format (atom, rss, xml, json)
  * @param int    $item_id
- * @return string
+ * @return array|string
  * @throws Exception
  */
 function api_status_show($type, $item_id)
@@ -1558,7 +1559,7 @@ function api_search($type)
                $params['group_by'] = ['uri-id'];
        } else {
                $condition = ["`id` > ?
-                       " . ($exclude_replies ? " AND `id` = `parent` " : ' ') . "
+                       " . ($exclude_replies ? " AND `gravity` = " . GRAVITY_PARENT : ' ') . "
                        AND (`uid` = 0 OR (`uid` = ? AND NOT `global`))
                        AND `body` LIKE CONCAT('%',?,'%')",
                        $since_id, api_user(), $_REQUEST['q']];
@@ -1646,7 +1647,8 @@ function api_statuses_home_timeline($type)
                $condition[] = $max_id;
        }
        if ($exclude_replies) {
-               $condition[0] .= ' AND `item`.`parent` = `item`.`id`';
+               $condition[0] .= ' AND `item`.`gravity` = ?';
+               $condition[] = GRAVITY_PARENT;
        }
        if ($conversation_id > 0) {
                $condition[0] .= " AND `item`.`parent` = ?";
@@ -2254,7 +2256,8 @@ function api_statuses_user_timeline($type)
        }
 
        if ($exclude_replies) {
-               $condition[0] .= ' AND `item`.`parent` = `item`.`id`';
+               $condition[0] .= ' AND `item`.`gravity` = ?';
+               $condition[] = GRAVITY_PARENT;
        }
 
        if ($conversation_id > 0) {
@@ -2491,10 +2494,10 @@ function api_format_messages($item, $recipient, $sender)
                if ($_GET['getText'] == 'html') {
                        $ret['text'] = BBCode::convert($item['body'], false);
                } elseif ($_GET['getText'] == 'plain') {
-                       $ret['text'] = trim(HTML::toPlaintext(BBCode::convert(api_clean_plain_items($item['body']), false, 2, true), 0));
+                       $ret['text'] = trim(HTML::toPlaintext(BBCode::convert(api_clean_plain_items($item['body']), false, BBCode::API, true), 0));
                }
        } else {
-               $ret['text'] = $item['title'] . "\n" . HTML::toPlaintext(BBCode::convert(api_clean_plain_items($item['body']), false, 2, true), 0);
+               $ret['text'] = $item['title'] . "\n" . HTML::toPlaintext(BBCode::convert(api_clean_plain_items($item['body']), false, BBCode::API, true), 0);
        }
        if (!empty($_GET['getUserObjects']) && $_GET['getUserObjects'] == 'false') {
                unset($ret['sender']);
@@ -2520,7 +2523,7 @@ function api_convert_item($item)
        $attachments = api_get_attachments($body);
 
        // Workaround for ostatus messages where the title is identically to the body
-       $html = BBCode::convert(api_clean_plain_items($body), false, 2, true);
+       $html = BBCode::convert(api_clean_plain_items($body), false, BBCode::API, true);
        $statusbody = trim(HTML::toPlaintext($html, 0));
 
        // handle data: images
@@ -3027,7 +3030,7 @@ function api_format_item($item, $type = "json", $status_user = null, $author_use
        $retweeted_item = [];
        $quoted_item = [];
 
-       if ($item["id"] == $item["parent"]) {
+       if ($item['gravity'] == GRAVITY_PARENT) {
                $body = $item['body'];
                $retweeted_item = api_share_as_retweet($item);
                if ($body != $item['body']) {
@@ -3304,7 +3307,8 @@ function api_lists_statuses($type)
                $condition[] = $max_id;
        }
        if ($exclude_replies > 0) {
-               $condition[0] .= ' AND `item`.`parent` = `item`.`id`';
+               $condition[0] .= ' AND `item`.`gravity` = ?';
+               $condition[] = GRAVITY_PARENT;
        }
        if ($conversation_id > 0) {
                $condition[0] .= " AND `item`.`parent` = ?";
@@ -5102,8 +5106,7 @@ function api_get_announce($item)
        }
 
        $fields = ['author-id', 'author-name', 'author-link', 'author-avatar'];
-       $activity = Item::activityToIndex(Activity::ANNOUNCE);
-       $condition = ['parent-uri' => $item['uri'], 'gravity' => GRAVITY_ACTIVITY, 'uid' => [0, $item['uid']], 'activity' => $activity];
+       $condition = ['parent-uri' => $item['uri'], 'gravity' => GRAVITY_ACTIVITY, 'uid' => [0, $item['uid']], 'vid' => Verb::getID(Activity::ANNOUNCE)];
        $announce = Item::selectFirstForUser($item['uid'], $fields, $condition, ['order' => ['received' => true]]);
        if (!DBA::isResult($announce)) {
                return [];
@@ -5199,7 +5202,7 @@ function api_in_reply_to($item)
        $in_reply_to['user_id_str'] = null;
        $in_reply_to['screen_name'] = null;
 
-       if (($item['thr-parent'] != $item['uri']) && (intval($item['parent']) != intval($item['id']))) {
+       if (($item['thr-parent'] != $item['uri']) && ($item['gravity'] != GRAVITY_PARENT)) {
                $parent = Item::selectFirst(['id'], ['uid' => $item['uid'], 'uri' => $item['thr-parent']]);
                if (DBA::isResult($parent)) {
                        $in_reply_to['status_id'] = intval($parent['id']);