. * */ namespace Friendica\Module\Api\Friendica\Group; use Friendica\Database\DBA; use Friendica\DI; use Friendica\Model\Contact; use Friendica\Model\Group; use Friendica\Module\BaseApi; use Friendica\Network\HTTPException\BadRequestException; /** * API endpoint: /api/friendica/group_update */ class Update extends BaseApi { protected function rawContent(array $request = []) { BaseApi::checkAllowedScope(BaseApi::SCOPE_WRITE); $uid = BaseApi::getCurrentUserID(); // params $gid = $request['gid'] ?? 0; $name = $request['name'] ?? ''; $json = json_decode($_POST['json'], true); $users = $json['user']; // error if no name specified if (!$name) { throw new BadRequestException('group name not specified'); } // error if no gid specified if (!$gid) { throw new BadRequestException('gid not specified'); } // remove members $members = Contact\Group::getById($gid); foreach ($members as $member) { $cid = $member['id']; foreach ($users as $user) { $found = $user['cid'] == $cid; } if (!isset($found) || !$found) { $gid = Group::getIdByName($uid, $name); Group::removeMember($gid, $cid); } } // add members $erroraddinguser = false; $errorusers = []; foreach ($users as $user) { $cid = $user['cid']; if (DBA::exists('contact', ['id' => $cid, 'uid' => $uid])) { Group::addMember($gid, $cid); } else { $erroraddinguser = true; $errorusers[] = $cid; } } // return success message incl. missing users in array $status = ($erroraddinguser ? 'missing user' : 'ok'); $success = ['success' => true, 'gid' => $gid, 'name' => $name, 'status' => $status, 'wrong users' => $errorusers]; DI::apiResponse()->exit('group_update', ['$result' => $success], $parameters['extension'] ?? null); } }