. * */ namespace Friendica\Module\Api\Friendica\Group; use Friendica\Database\DBA; use Friendica\DI; use Friendica\Model\Contact; use Friendica\Module\BaseApi; use Friendica\Network\HTTPException; /** * API endpoint: /api/friendica/group_show */ class Show extends BaseApi { protected function post(array $request = []) { BaseApi::checkAllowedScope(BaseApi::SCOPE_READ); $uid = BaseApi::getCurrentUserID(); $type = $this->parameters['extension'] ?? ''; // params $gid = $_REQUEST['gid'] ?? 0; // get data of the specified group id or all groups if not specified if ($gid != 0) { $groups = DBA::selectToArray('group', [], ['deleted' => false, 'uid' => $uid, 'id' => $gid]); // error message if specified gid is not in database if (!DBA::isResult($groups)) { throw new HTTPException\BadRequestException('gid not available'); } } else { $groups = DBA::selectToArray('group', [], ['deleted' => false, 'uid' => $uid]); } // loop through all groups and retrieve all members for adding data in the user array $grps = []; foreach ($groups as $rr) { $members = Contact\Group::getById($rr['id']); $users = []; if ($type == 'xml') { $user_element = 'users'; $k = 0; foreach ($members as $member) { $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, true)->toArray(); $users[] = $user; } } $grps[] = ['name' => $rr['name'], 'gid' => $rr['id'], $user_element => $users]; } $this->response->exit('group_update', ['group' => $grps], $this->parameters['extension'] ?? null); } }