From 11da7f4095006a8df1f0a26edf67789524bc1b9f Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Thu, 28 Nov 2019 12:33:00 -0500 Subject: [PATCH] Add new ACL::getContactListByUserId and ACL::getGroupListByUserId methods --- src/Core/ACL.php | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/src/Core/ACL.php b/src/Core/ACL.php index df2f86e2b..ccc2b34d5 100644 --- a/src/Core/ACL.php +++ b/src/Core/ACL.php @@ -13,6 +13,7 @@ use Friendica\Model\Contact; use Friendica\Model\GContact; use Friendica\Core\Session; use Friendica\Util\Network; +use Friendica\Model\Group; /** * Handle ACL management and display @@ -251,6 +252,63 @@ class ACL extends BaseObject ]; } + /** + * Returns the ACL list of contacts for a given user id + * + * @param int $user_id + * @return array + * @throws \Exception + */ + public static function getContactListByUserId(int $user_id) + { + $acl_contacts = Contact::selectToArray( + ['id', 'name', 'addr', 'micro'], + ['uid' => $user_id, 'pending' => false, 'rel' => [Contact::FOLLOWER, Contact::FRIEND]] + ); + array_walk($acl_contacts, function (&$value) { + $value['type'] = 'contact'; + }); + + return $acl_contacts; + } + + /** + * Returns the ACL list of groups (including meta-groups) for a given user id + * + * @param int $user_id + * @return array + */ + public static function getGroupListByUserId(int $user_id) + { + $acl_groups = [ + [ + 'id' => Group::FOLLOWERS, + 'name' => L10n::t('Followers'), + 'addr' => '', + 'micro' => 'images/twopeople.png', + 'type' => 'group', + ], + [ + 'id' => Group::MUTUALS, + 'name' => L10n::t('Mutuals'), + 'addr' => '', + 'micro' => 'images/twopeople.png', + 'type' => 'group', + ] + ]; + foreach (Group::getByUserId($user_id) as $group) { + $acl_groups[] = [ + 'id' => $group['id'], + 'name' => $group['name'], + 'addr' => '', + 'micro' => 'images/twopeople.png', + 'type' => 'group', + ]; + } + + return $acl_groups; + } + /** * Return the full jot ACL selector HTML *