BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
$uid = BaseApi::getCurrentUserID();
- $user_info = DI::twitterUser()->createFromUserId($uid)->toArray();
-
- $condition = [
- 'author-id'=> $user_info['pid'],
- 'uid' => $uid,
- 'gravity' => [GRAVITY_PARENT, GRAVITY_COMMENT],
- 'private' => [Item::PUBLIC, Item::UNLISTED]
- ];
-
- $item = Post::selectFirst(['uri-id', 'id'], $condition);
- if (!empty($item)) {
- $include_entities = strtolower(($_REQUEST['include_entities'] ?? 'false') == 'true');
- $user_info['status'] = DI::twitterStatus()->createFromUriId($item['uri-id'], $item['uid'], $include_entities)->toArray();
- }
+ $user_info = DI::twitterUser()->createFromUserId($uid, false)->toArray();
// "uid" is only needed for some internal stuff, so remove it from here
unset($user_info['uid']);
if (DBA::isResult($contacts)) {
$k = 0;
foreach ($contacts as $contact) {
- $user_info = DI::twitterUser()->createFromContactId($contact['id'], $uid)->toArray();
+ $user_info = DI::twitterUser()->createFromContactId($contact['id'], $uid, false)->toArray();
if ($type == 'xml') {
$userlist[$k++ . ':user'] = $user_info;
if (!empty($_REQUEST['user_id'])) {
foreach (explode(',', $_REQUEST['user_id']) as $cid) {
if (!empty($cid) && is_numeric($cid)) {
- $users[] = DI::twitterUser()->createFromContactId((int)$cid, $uid)->toArray();
+ $users[] = DI::twitterUser()->createFromContactId((int)$cid, $uid, false)->toArray();
}
}
}
$uid = BaseApi::getCurrentUserID();
// params
- $user_info = DI::twitterUser()->createFromUserId($uid)->toArray();
+ $user_info = DI::twitterUser()->createFromUserId($uid, true)->toArray();
$groups = DBA::select('group', [], ['deleted' => 0, 'uid' => $uid]);
$ret = [];
foreach ($r as $cid) {
- $user = DI::twitterUser()->createFromContactId($cid['id'], $uid)->toArray();
+ $user = DI::twitterUser()->createFromContactId($cid['id'], $uid, false)->toArray();
// "uid" is only needed for some internal stuff, so remove it from here
unset($user['uid']);
return;
}
- $sender = DI::twitterUser()->createFromUserId($uid)->toArray();
+ $sender = DI::twitterUser()->createFromUserId($uid, true)->toArray();
$cid = BaseApi::getContactIDForSearchterm($_POST['screen_name'] ?? '', $_POST['user_id'] ?? 0, $uid);
if (empty($cid)) {
if ($id > -1) {
$mail = DBA::selectFirst('mail', [], ['id' => $id]);
- $ret = api_format_messages($mail, DI::twitterUser()->createFromContactId($cid, $uid)->toArray(), $sender);
+ $ret = api_format_messages($mail, DI::twitterUser()->createFromContactId($cid, $uid, true)->toArray(), $sender);
} else {
$ret = ["error" => $id];
}
unset($_REQUEST['screen_name']);
unset($_GET['screen_name']);
- $user_info = DI::twitterUser()->createFromUserId($uid)->toArray();
+ $user_info = DI::twitterUser()->createFromUserId($uid, true)->toArray();
$profile_url = $user_info["url"];
foreach ($r as $item) {
if ($box == "inbox" || $item['from-url'] != $profile_url) {
$recipient = $user_info;
- $sender = DI::twitterUser()->createFromContactId($item['contact-id'], $uid)->toArray();
+ $sender = DI::twitterUser()->createFromContactId($item['contact-id'], $uid, true)->toArray();
} elseif ($box == "sentbox" || $item['from-url'] == $profile_url) {
- $recipient = DI::twitterUser()->createFromContactId($item['contact-id'], $uid)->toArray();
+ $recipient = DI::twitterUser()->createFromContactId($item['contact-id'], $uid, true)->toArray();
$sender = $user_info;
}
BaseApi::checkAllowedScope(BaseApi::SCOPE_WRITE);
$uid = BaseApi::getCurrentUserID();
- $api_user = DI::twitterUser()->createFromUserId($uid)->toArray();
+ $api_user = DI::twitterUser()->createFromUserId($uid, true)->toArray();
if (!empty($_POST['name'])) {
DBA::update('profile', ['name' => $_POST['name']], ['uid' => $uid]);
$user_element = "users";
$k = 0;
foreach ($members as $member) {
- $user = DI::twitterUser()->createFromContactId($member['contact-id'], $uid)->toArray();
+ $user = DI::twitterUser()->createFromContactId($member['contact-id'], $uid, true)->toArray();
$users[$k++.":user"] = $user;
}
} else {
$user_element = "user";
foreach ($members as $member) {
- $user = DI::twitterUser()->createFromContactId($member['contact-id'], $uid)->toArray();
+ $user = DI::twitterUser()->createFromContactId($member['contact-id'], $uid, true)->toArray();
$users[] = $user;
}
}
'name' => $group['name'],
'id' => intval($gid),
'id_str' => (string) $gid,
- 'user' => DI::twitterUser()->createFromUserId($uid)->toArray()
+ 'user' => DI::twitterUser()->createFromUserId($uid, true)->toArray()
];
return DI::apiResponse()->formatData("lists", $type, ['lists' => $list]);
'name' => $success['name'],
'id' => intval($success['gid']),
'id_str' => (string) $success['gid'],
- 'user' => DI::twitterUser()->createFromUserId($uid)->toArray()
+ 'user' => DI::twitterUser()->createFromUserId($uid, true)->toArray()
];
return DI::apiResponse()->formatData("lists", $type, ['lists' => $grp]);
'name' => $name,
'id' => intval($gid),
'id_str' => (string) $gid,
- 'user' => DI::twitterUser()->createFromUserId($uid)->toArray()
+ 'user' => DI::twitterUser()->createFromUserId($uid, true)->toArray()
];
return DI::apiResponse()->formatData("lists", $type, ['lists' => $list]);
$uid = BaseApi::getCurrentUserID();
// params
- $user_info = DI::twitterUser()->createFromUserId($uid)->toArray();
+ $user_info = DI::twitterUser()->createFromUserId($uid, true)->toArray();
$searchstring = $_REQUEST['searchstring'] ?? '';
// error if no searchstring specified
foreach ($r as $item) {
if ($box == "inbox" || $item['from-url'] != $profile_url) {
$recipient = $user_info;
- $sender = DI::twitterUser()->createFromContactId($item['contact-id'], $uid)->toArray();
+ $sender = DI::twitterUser()->createFromContactId($item['contact-id'], $uid, true)->toArray();
} elseif ($box == "sentbox" || $item['from-url'] == $profile_url) {
- $recipient = DI::twitterUser()->createFromContactId($item['contact-id'], $uid)->toArray();
+ $recipient = DI::twitterUser()->createFromContactId($item['contact-id'], $uid, true)->toArray();
$sender = $user_info;
}
use Friendica\Model\APContact;
use Friendica\Model\Contact;
use Friendica\Network\HTTPException;
+use Friendica\Factory\Api\Twitter\Status;
+use Friendica\Model\Item;
+use Friendica\Model\Post;
+use Psr\Log\LoggerInterface;
class User extends BaseFactory
{
+ /** @var Status entity */
+ private $status;
+
+ public function __construct(LoggerInterface $logger, Status $status)
+ {
+ parent::__construct($logger);
+ $this->status = $status;
+
+ }
+
/**
* @param int $contactId
* @param int $uid Public contact (=0) or owner user id
* @throws HTTPException\InternalServerErrorException
* @throws \ImagickException
*/
- public function createFromContactId(int $contactId, $uid = 0, $skip_status = false, $include_user_entities = true)
+ public function createFromContactId(int $contactId, $uid = 0, $skip_status = true, $include_user_entities = true)
{
$cdata = Contact::getPublicAndUserContactID($contactId, $uid);
if (!empty($cdata)) {
$apcontact = APContact::getByURL($publicContact['url'], false);
- $status = null; // @todo fetch last status
+ $status = null;
+
+ if (!$skip_status) {
+ $post = Post::selectFirstPost(['uri-id'],
+ ['author-id' => $publicContact['id'], 'gravity' => [GRAVITY_COMMENT, GRAVITY_PARENT], 'private' => [Item::PUBLIC, Item::UNLISTED]],
+ ['order' => ['uri-id' => true]]);
+ if (!empty($post['uri-id'])) {
+ $status = $this->status->createFromUriId($post['uri-id'], $uid)->toArray();
+ }
+ }
return new \Friendica\Object\Api\Twitter\User($publicContact, $apcontact, $userContact, $status, $include_user_entities);
}
- public function createFromUserId(int $uid, $skip_status = false, $include_user_entities = true)
+ public function createFromUserId(int $uid, $skip_status = true, $include_user_entities = true)
{
return $this->createFromContactId(Contact::getPublicIdByUserId($uid), $uid, $skip_status, $include_user_entities);
}