. * */ namespace Friendica\Factory\Api\Friendica; use Friendica\App\BaseURL; use Friendica\BaseFactory; use Friendica\Database\DBA; use Friendica\Model\Post; use Friendica\Network\HTTPException; use Friendica\Protocol\Activity; use Psr\Log\LoggerInterface; use Friendica\Factory\Api\Twitter\User as TwitterUser; class Activities extends BaseFactory { /** @var BaseURL */ private $baseUrl; /** @var twitterUser entity */ private $twitterUser; public function __construct(LoggerInterface $logger, BaseURL $baseURL, TwitterUser $twitteruser) { parent::__construct($logger); $this->twitterUser = $twitteruser; $this->baseUrl = $baseURL; } /** * @param int $uriId Uri-ID of the item * @return Array * @throws HTTPException\InternalServerErrorException */ public function createFromUriId(int $uriId, int $uid, $type = 'json'): array { $activities = [ 'like' => [], 'dislike' => [], 'attendyes' => [], 'attendno' => [], 'attendmaybe' => [], 'announce' => [], ]; $condition = ['uid' => $uid, 'thr-parent-id' => $uriId, 'gravity' => GRAVITY_ACTIVITY]; $ret = Post::selectForUser($uid, ['author-id', 'verb'], $condition); while ($parent_item = Post::fetch($ret)) { // get user data and add it to the array of the activity $user = $this->twitterUser->createFromContactId($parent_item['author-id'], $uid, true)->toArray(); switch ($parent_item['verb']) { case Activity::LIKE: $activities['like'][] = $user; break; case Activity::DISLIKE: $activities['dislike'][] = $user; break; case Activity::ATTEND: $activities['attendyes'][] = $user; break; case Activity::ATTENDNO: $activities['attendno'][] = $user; break; case Activity::ATTENDMAYBE: $activities['attendmaybe'][] = $user; break; case Activity::ANNOUNCE: $activities['announce'][] = $user; break; default: break; } } DBA::close($ret); if ($type == 'xml') { $xml_activities = []; foreach ($activities as $k => $v) { // change xml element from "like" to "friendica:like" $xml_activities["friendica:".$k] = $v; // add user data into xml output $k_user = 0; foreach ($v as $user) { $xml_activities['friendica:' . $k][$k_user++ . ':user'] = $user; } } $activities = $xml_activities; } return $activities; } }