]> git.mxchange.org Git - friendica.git/commitdiff
Added group update
authorMichael <heluecht@pirati.ca>
Sat, 27 Nov 2021 12:55:13 +0000 (12:55 +0000)
committerHypolite Petovan <hypolite@mrpetovan.com>
Sun, 28 Nov 2021 03:25:40 +0000 (22:25 -0500)
include/api.php
src/Module/Api/Friendica/Group/Update.php [new file with mode: 0644]
static/routes.config.php

index 06d3607ab18e23dde09db163d9a4d1fa91f30655..3373ffe48ddc250fd9dcd2de6b4327e61cd8fe90 100644 (file)
@@ -1795,74 +1795,6 @@ function api_lists_create($type)
 
 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.
  *
diff --git a/src/Module/Api/Friendica/Group/Update.php b/src/Module/Api/Friendica/Group/Update.php
new file mode 100644 (file)
index 0000000..c8d353e
--- /dev/null
@@ -0,0 +1,89 @@
+<?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);
+       }
+}
index af3e995b85477124e9ced7f36288b87d8b3b691b..c0d327b5c81213ff29a8cb330f9a18b9abdf6312 100644 (file)
@@ -82,7 +82,7 @@ $apiRoutes = [
                '/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]],