// loop through all groups and retrieve all members for adding data in the user array
$grps = [];
foreach ($r as $rr) {
- $members = Contact::getByGroupId($rr['id']);
+ $members = Contact\Group::getById($rr['id']);
$users = [];
if ($type == "xml") {
}
// remove members
- $members = Contact::getByGroupId($gid);
+ $members = Contact\Group::getById($gid);
foreach ($members as $member) {
$cid = $member['id'];
foreach ($users as $user) {
}
}
- /**
- * Returns a list of contacts belonging in a group
- *
- * @param int $gid
- * @return array
- * @throws \Exception
- */
- public static function getByGroupId($gid)
- {
- $return = [];
-
- if (intval($gid)) {
- $stmt = DBA::p('SELECT `group_member`.`contact-id`, `contact`.*
- FROM `contact`
- INNER JOIN `group_member`
- ON `contact`.`id` = `group_member`.`contact-id`
- WHERE `gid` = ?
- AND `contact`.`uid` = ?
- AND NOT `contact`.`self`
- AND NOT `contact`.`deleted`
- AND NOT `contact`.`blocked`
- AND NOT `contact`.`pending`
- ORDER BY `contact`.`name` ASC',
- $gid,
- local_user()
- );
-
- if (DBA::isResult($stmt)) {
- $return = DBA::toArray($stmt);
- }
- }
-
- return $return;
- }
-
/**
* Creates the self-contact for the provided user id
*
return $menucondensed;
}
- /**
- * Returns ungrouped contact count or list for user
- *
- * Returns either the total number of ungrouped contacts for the given user
- * id or a paginated list of ungrouped contacts.
- *
- * @param int $uid uid
- * @return array
- * @throws \Exception
- */
- public static function getUngroupedList($uid)
- {
- return q("SELECT *
- FROM `contact`
- WHERE `uid` = %d
- AND NOT `self`
- AND NOT `deleted`
- AND NOT `blocked`
- AND NOT `pending`
- AND `id` NOT IN (
- SELECT DISTINCT(`contact-id`)
- FROM `group_member`
- INNER JOIN `group` ON `group`.`id` = `group_member`.`gid`
- WHERE `group`.`uid` = %d
- )", intval($uid), intval($uid));
- }
-
/**
* Have a look at all contact tables for a given profile url.
* This function works as a replacement for probing the contact.
return $redirect;
}
- /**
- * Remove a contact from all groups
- *
- * @param integer $contact_id
- *
- * @return boolean Success
- */
- public static function removeFromGroups($contact_id)
- {
- return DBA::delete('group_member', ['contact-id' => $contact_id]);
- }
-
/**
* Is the contact a forum?
*
--- /dev/null
+<?php
+/**
+ * @copyright Copyright (C) 2020, Friendica
+ *
+ * @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\Model\Contact;
+
+use Friendica\Database\DBA;
+
+/**
+ * This class provides information about contact groups based on the "group_member" table.
+ */
+class Group
+{
+ /**
+ * Returns a list of contacts belonging in a group
+ *
+ * @param int $gid
+ * @return array
+ * @throws \Exception
+ */
+ public static function getById(int $gid)
+ {
+ $return = [];
+
+ if (intval($gid)) {
+ $stmt = DBA::p('SELECT `group_member`.`contact-id`, `contact`.*
+ FROM `contact`
+ INNER JOIN `group_member`
+ ON `contact`.`id` = `group_member`.`contact-id`
+ WHERE `gid` = ?
+ AND `contact`.`uid` = ?
+ AND NOT `contact`.`self`
+ AND NOT `contact`.`deleted`
+ AND NOT `contact`.`blocked`
+ AND NOT `contact`.`pending`
+ ORDER BY `contact`.`name` ASC',
+ $gid,
+ local_user()
+ );
+
+ if (DBA::isResult($stmt)) {
+ $return = DBA::toArray($stmt);
+ }
+ }
+
+ return $return;
+ }
+
+ /**
+ * Returns ungrouped contact count or list for user
+ *
+ * Returns either the total number of ungrouped contacts for the given user
+ * id or a paginated list of ungrouped contacts.
+ *
+ * @param int $uid uid
+ * @return array
+ * @throws \Exception
+ */
+ public static function getUngrouped(int $uid)
+ {
+ return q("SELECT *
+ FROM `contact`
+ WHERE `uid` = %d
+ AND NOT `self`
+ AND NOT `deleted`
+ AND NOT `blocked`
+ AND NOT `pending`
+ AND `id` NOT IN (
+ SELECT DISTINCT(`contact-id`)
+ FROM `group_member`
+ INNER JOIN `group` ON `group`.`id` = `group_member`.`gid`
+ WHERE `group`.`uid` = %d
+ )", intval($uid), intval($uid));
+ }
+
+ /**
+ * Remove a contact from all groups
+ *
+ * @param integer $contact_id
+ *
+ * @return boolean Success
+ */
+ public static function removeContact(int $contact_id)
+ {
+ return DBA::delete('group_member', ['contact-id' => $contact_id]);
+ }
+}
DI::baseUrl()->redirect('contact');
}
- $members = Model\Contact::getByGroupId($group['id']);
+ $members = Model\Contact\Group::getById($group['id']);
$preselected = [];
if (count($members)) {
Model\Group::addMember($group['id'], $change);
}
- $members = Model\Contact::getByGroupId($group['id']);
+ $members = Model\Contact\Group::getById($group['id']);
$preselected = [];
if (count($members)) {
foreach ($members as $member) {
}
if ($nogroup) {
- $contacts = Model\Contact::getUngroupedList(local_user());
+ $contacts = Model\Contact\Group::getUngrouped(local_user());
} else {
$contacts_stmt = DBA::select('contact', [],
['uid' => local_user(), 'pending' => false, 'blocked' => false, 'self' => false],