use Friendica\Content\Text\BBCode;
use Friendica\Content\Text\HTML;
use Friendica\Content\Text\Markdown;
-use Friendica\Core\Logger;
-use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Contact;
* Updates the user’s current status.
*
* @see https://developer.twitter.com/en/docs/tweets/post-and-engage/api-reference/post-statuses-update
-*/
+ */
class Update extends BaseApi
{
public function post(array $request = [], array $post = [])
'in_reply_to_status_id' => 0,
'lat' => 0,
'long' => 0,
- 'media_ids' => [],
+ 'media_ids' => '',
'source' => '',
'include_entities' => false,
], $request);
$config->set('Cache.DefinitionImpl', null);
$purifier = new HTMLPurifier($config);
- $body = $purifier->purify($body);
+ $body = $purifier->purify($body);
$body = HTML::toBBCode($request['htmlstatus']);
} else {
return BBCode::expandTags($body);
});
- $item = [];
+ $item = [];
$item['uid'] = $uid;
$item['verb'] = Activity::POST;
$item['contact-id'] = $owner['id'];
- $item['author-id'] = $item['owner-id'] = Contact::getPublicIdByUserId($uid);
+ $item['author-id'] = Contact::getPublicIdByUserId($uid);
+ $item['owner-id'] = $item['author-id'];
$item['title'] = $request['title'];
$item['body'] = $body;
$item['app'] = $request['source'];
if (!empty($request['lat']) && !empty($request['long'])) {
$item['coord'] = sprintf("%s %s", $request['lat'], $request['long']);
}
-
+
$item['allow_cid'] = $owner['allow_cid'];
$item['allow_gid'] = $owner['allow_gid'];
$item['deny_cid'] = $owner['deny_cid'];
if ($request['in_reply_to_status_id']) {
$parent = Post::selectFirst(['uri'], ['id' => $request['in_reply_to_status_id'], 'uid' => [0, $uid]]);
+
$item['thr-parent'] = $parent['uri'];
$item['gravity'] = GRAVITY_COMMENT;
$item['object-type'] = Activity\ObjectType::COMMENT;
$item['object-type'] = Activity\ObjectType::NOTE;
}
- $ids = $request['media_ids'];
-
- if (!empty($_FILES['media'])) {
+ if (!empty($_REQUEST['media_ids'])) {
+ $ids = explode(',', $_REQUEST['media_ids']);
+ } elseif (!empty($_FILES['media'])) {
// upload the image if we have one
$picture = Photo::upload($uid, $_FILES['media']);
if (!empty($picture)) {
Photo::setPermissionForRessource($media[0]['resource-id'], $uid, $item['allow_cid'], $item['allow_gid'], $item['deny_cid'], $item['deny_gid']);
$ressources[] = $media[0]['resource-id'];
- $phototypes = Images::supportedTypes();
- $ext = $phototypes[$media[0]['type']];
-
- $attachment = ['type' => Post\Media::IMAGE, 'mimetype' => $media[0]['type'],
- 'url' => DI::baseUrl() . '/photo/' . $media[0]['resource-id'] . '-' . $media[0]['scale'] . '.' . $ext,
- 'size' => $media[0]['datasize'],
- 'name' => $media[0]['filename'] ?: $media[0]['resource-id'],
+ $phototypes = Images::supportedTypes();
+ $ext = $phototypes[$media[0]['type']];
+
+ $attachment = [
+ 'type' => Post\Media::IMAGE,
+ 'mimetype' => $media[0]['type'],
+ 'url' => DI::baseUrl() . '/photo/' . $media[0]['resource-id'] . '-' . $media[0]['scale'] . '.' . $ext,
+ 'size' => $media[0]['datasize'],
+ 'name' => $media[0]['filename'] ?: $media[0]['resource-id'],
'description' => $media[0]['desc'] ?? '',
- 'width' => $media[0]['width'],
- 'height' => $media[0]['height']];
+ 'width' => $media[0]['width'],
+ 'height' => $media[0]['height']
+ ];
if (count($media) > 1) {
- $attachment['preview'] = DI::baseUrl() . '/photo/' . $media[1]['resource-id'] . '-' . $media[1]['scale'] . '.' . $ext;
- $attachment['preview-width'] = $media[1]['width'];
+ $attachment['preview'] = DI::baseUrl() . '/photo/' . $media[1]['resource-id'] . '-' . $media[1]['scale'] . '.' . $ext;
+ $attachment['preview-width'] = $media[1]['width'];
$attachment['preview-height'] = $media[1]['height'];
}
$item['attachments'][] = $attachment;
// output the post that we just posted.
$status_info = DI::twitterStatus()->createFromUriId($item['uri-id'], $uid, $request['include_entities'])->toArray();
DI::apiResponse()->exit('status', ['status' => $status_info], $this->parameters['extension'] ?? null, Contact::getPublicIdByUserId($uid));
+ return;
}
}
DI::mstdnError()->InternalError();