. * */ namespace Friendica\Module\Api\Twitter\DirectMessages; use Friendica\Database\DBA; use Friendica\DI; use Friendica\Model\Contact; use Friendica\Model\Mail; use Friendica\Module\BaseApi; use Friendica\Network\HTTPException\NotFoundException; /** * Sends a new direct message. * * @see https://developer.twitter.com/en/docs/direct-messages/sending-and-receiving/api-reference/new-message */ class NewDM extends BaseApi { protected function rawContent(array $request = []) { BaseApi::checkAllowedScope(BaseApi::SCOPE_WRITE); $uid = BaseApi::getCurrentUserID(); if (empty($request['text']) || empty($request['screen_name']) && empty($request['user_id'])) { return; } $cid = BaseApi::getContactIDForSearchterm($request['screen_name'] ?? '', $request['profileurl'] ?? '', $request['user_id'] ?? 0, 0); if (empty($cid)) { throw new NotFoundException('Recipient not found'); } $replyto = ''; if (!empty($request['replyto'])) { $mail = DBA::selectFirst('mail', ['parent-uri', 'title'], ['uid' => $uid, 'id' => $request['replyto']]); $replyto = $mail['parent-uri']; $sub = $mail['title']; } else { if (!empty($request['title'])) { $sub = $request['title']; } else { $sub = ((strlen($request['text']) > 10) ? substr($request['text'], 0, 10) . '...' : $request['text']); } } $cdata = Contact::getPublicAndUserContactID($cid, $uid); $id = Mail::send($cdata['user'], $request['text'], $sub, $replyto); if ($id > -1) { $ret = DI::twitterDirectMessage()->createFromMailId($id, $uid, $request['getText'] ?? ''); } else { $ret = ['error' => $id]; } $this->response->exit('direct-messages', ['direct_message' => $ret], $this->parameters['extension'] ?? null, Contact::getPublicIdByUserId($uid)); } }