api_register_func('api/lists/create', 'api_lists_create', true);
-/**
- * Update the specified group with the posted array of contacts.
- *
- * @param string $type Return type (atom, rss, xml, json)
- *
- * @return array|string
- * @throws BadRequestException
- * @throws ForbiddenException
- * @throws ImagickException
- * @throws InternalServerErrorException
- * @throws UnauthorizedException
- */
-function api_friendica_group_update($type)
-{
- 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 ? true : false);
- }
- 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];
- return DI::apiResponse()->formatData("group_update", $type, ['result' => $success]);
-}
-
-api_register_func('api/friendica/group_update', 'api_friendica_group_update', true);
-
/**
* Update information about a group.
*
--- /dev/null
+<?php
+/**
+ * @copyright Copyright (C) 2010-2021, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+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);
+ }
+}
'/group_show[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Index::class, [R::GET ]],
'/group_create[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Index::class, [ R::POST]],
'/group_delete[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Group\Delete::class, [ R::POST]],
- '/group_update[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Index::class, [ R::POST]],
+ '/group_update[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Group\Update::class, [ R::POST]],
'/profile/show[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Profile\Show::class, [R::GET ]],
'/photoalbum/delete[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Photoalbum\Delete::class, [ R::POST]],
'/photoalbum/update[.{extension:json|xml|rss|atom}]' => [Module\Api\Friendica\Photoalbum\Update::class, [ R::POST]],