diff options
author | Maxence Lange <maxence@nextcloud.com> | 2017-08-10 09:49:45 +0300 |
---|---|---|
committer | Maxence Lange <maxence@nextcloud.com> | 2017-08-10 09:49:45 +0300 |
commit | f404fc908f1cbb3240ef2ec7a53f34c626c3bf3b (patch) | |
tree | 098b38a4b0699e5f316b3a92e96032849d07a76f /lib | |
parent | 197b758e4325f308590884c200efc4405564389d (diff) |
new Member()
Signed-off-by: Maxence Lange <maxence@nextcloud.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Activity/Provider.php | 6 | ||||
-rw-r--r-- | lib/Api/v1/Circles.php | 4 | ||||
-rw-r--r-- | lib/Db/CirclesRequest.php | 2 | ||||
-rw-r--r-- | lib/Db/CirclesRequestBuilder.php | 6 | ||||
-rw-r--r-- | lib/Db/CoreRequestBuilder.php | 15 | ||||
-rw-r--r-- | lib/Db/MembersRequest.php | 4 | ||||
-rw-r--r-- | lib/Db/MembersRequestBuilder.php | 8 | ||||
-rw-r--r-- | lib/Model/BaseMember.php | 30 | ||||
-rw-r--r-- | lib/Model/Circle.php | 4 | ||||
-rw-r--r-- | lib/Service/CirclesService.php | 4 | ||||
-rw-r--r-- | lib/Service/GroupsService.php | 2 | ||||
-rw-r--r-- | lib/Service/MembersService.php | 44 |
12 files changed, 77 insertions, 52 deletions
diff --git a/lib/Activity/Provider.php b/lib/Activity/Provider.php index 573ed7f8..99a951a5 100644 --- a/lib/Activity/Provider.php +++ b/lib/Activity/Provider.php @@ -128,7 +128,7 @@ class Provider implements IProvider { */ private function parseMemberAsMember(IEvent &$event, Circle $circle) { $params = $event->getSubjectParameters(); - $member = Member::fromJSON($this->l10n, $params['member']); + $member = Member::fromJSON($params['member']); switch ($event->getSubject()) { case 'member_join': @@ -306,7 +306,7 @@ class Provider implements IProvider { private function parseGroupAsModerator(IEvent &$event, Circle $circle) { $params = $event->getSubjectParameters(); - $group = Member::fromJSON($this->l10n, $params['group']); + $group = Member::fromJSON($params['group']); switch ($event->getSubject()) { @@ -353,7 +353,7 @@ class Provider implements IProvider { private function parseMemberAsModerator(IEvent &$event, Circle $circle) { $params = $event->getSubjectParameters(); - $member = Member::fromJSON($this->l10n, $params['member']); + $member = Member::fromJSON($params['member']); switch ($event->getSubject()) { case 'member_invited': return $this->parseCircleMemberAdvancedEvent( diff --git a/lib/Api/v1/Circles.php b/lib/Api/v1/Circles.php index 77f035dc..14267505 100644 --- a/lib/Api/v1/Circles.php +++ b/lib/Api/v1/Circles.php @@ -260,11 +260,11 @@ class Circles { * * @return Member */ - public static function getMember($circleUniqueId, $userId) { + public static function getLocalMember($circleUniqueId, $userId) { $c = self::getContainer(); return $c->query('MembersService') - ->getMember($circleUniqueId, $userId); + ->getMember($circleUniqueId, $userId, Member::TYPE_USER); } diff --git a/lib/Db/CirclesRequest.php b/lib/Db/CirclesRequest.php index fbdc099a..bdd7613b 100644 --- a/lib/Db/CirclesRequest.php +++ b/lib/Db/CirclesRequest.php @@ -205,7 +205,7 @@ class CirclesRequest extends CirclesRequestBuilder { ->setValue('type', $qb->createNamedParameter($circle->getType())); $qb->execute(); - $owner = new Member($this->l10n, $userId); + $owner = new Member($userId, Member::TYPE_USER); $owner->setCircleId($circle->getUniqueId()) ->setLevel(Member::LEVEL_OWNER) ->setStatus(Member::STATUS_MEMBER); diff --git a/lib/Db/CirclesRequestBuilder.php b/lib/Db/CirclesRequestBuilder.php index 587f0a1d..97ae7b0d 100644 --- a/lib/Db/CirclesRequestBuilder.php +++ b/lib/Db/CirclesRequestBuilder.php @@ -468,19 +468,21 @@ class CirclesRequestBuilder extends CoreRequestBuilder { $circle->setCreation($data['creation']); if (key_exists('viewer_level', $data)) { - $user = new Member($this->l10n); + $user = new Member(); $user->setStatus($data['viewer_status']); $user->setCircleId($circle->getUniqueId()); $user->setUserId($data['viewer_userid']); + $user->setType(Member::TYPE_USER); $user->setLevel($data['viewer_level']); $circle->setViewer($user); } if (key_exists('owner_level', $data)) { - $owner = new Member($this->l10n); + $owner = new Member(); $owner->setStatus($data['owner_status']); $owner->setCircleId($circle->getUniqueId()); $owner->setUserId($data['owner_userid']); + $owner->setType(Member::TYPE_USER); $owner->setLevel($data['owner_level']); $circle->setOwner($owner); } diff --git a/lib/Db/CoreRequestBuilder.php b/lib/Db/CoreRequestBuilder.php index eeef245b..8c461e69 100644 --- a/lib/Db/CoreRequestBuilder.php +++ b/lib/Db/CoreRequestBuilder.php @@ -111,6 +111,21 @@ class CoreRequestBuilder { } + + /** + * Limit the request to the Type entry. + * + * @param IQueryBuilder $qb + * @param int $type + * + * @internal param int $circleId + */ + protected function limitToType(IQueryBuilder &$qb, $type) { + $this->limitToDBField($qb, 'type', $type); + } + + + /** * Limit the request to the Circle by its Id. * diff --git a/lib/Db/MembersRequest.php b/lib/Db/MembersRequest.php index a440350c..c59de1ac 100644 --- a/lib/Db/MembersRequest.php +++ b/lib/Db/MembersRequest.php @@ -45,14 +45,16 @@ class MembersRequest extends MembersRequestBuilder { * * @param string $circleUniqueId * @param string $userId + * @param $type * * @return Member * @throws MemberDoesNotExistException */ - public function forceGetMember($circleUniqueId, $userId) { + public function forceGetMember($circleUniqueId, $userId, $type) { $qb = $this->getMembersSelectSql(); $this->limitToUserId($qb, $userId); + $this->limitToType($qb, $type); $this->limitToCircleId($qb, $circleUniqueId); $cursor = $qb->execute(); diff --git a/lib/Db/MembersRequestBuilder.php b/lib/Db/MembersRequestBuilder.php index 78b04c41..339e837b 100644 --- a/lib/Db/MembersRequestBuilder.php +++ b/lib/Db/MembersRequestBuilder.php @@ -220,10 +220,7 @@ class MembersRequestBuilder extends CoreRequestBuilder { * @return Member */ protected function parseMembersSelectSql(array $data) { - $member = new Member($this->l10n); - $member->setUserId($data['user_id']); - $member->setType($data['type']); - $member->setCircleId($data['circle_id']); + $member = new Member($data['user_id'], $data['type'], $data['circle_id']); $member->setNote($data['note']); $member->setLevel($data['level']); $member->setStatus($data['status']); @@ -238,7 +235,7 @@ class MembersRequestBuilder extends CoreRequestBuilder { * @return Member */ protected function parseGroupsSelectSql(array $data) { - $member = new Member($this->l10n); + $member = new Member(); $member->setCircleId($data['circle_id']); $member->setNote($data['note']); $member->setLevel($data['level']); @@ -246,6 +243,7 @@ class MembersRequestBuilder extends CoreRequestBuilder { if (key_exists('user_id', $data)) { $member->setUserId($data['user_id']); + $member->setType(Member::TYPE_USER); } $member->setJoined($data['joined']); diff --git a/lib/Model/BaseMember.php b/lib/Model/BaseMember.php index 30ba504b..870e9b88 100644 --- a/lib/Model/BaseMember.php +++ b/lib/Model/BaseMember.php @@ -45,7 +45,8 @@ class BaseMember implements \JsonSerializable { const STATUS_KICKED = 'Kicked'; const TYPE_USER = 1; - const TYPE_MAIL = 2; + const TYPE_GROUP = 2; + const TYPE_MAIL = 3; /** @var string */ private $circleUniqueId; @@ -80,19 +81,16 @@ class BaseMember implements \JsonSerializable { /** * BaseMember constructor. * - * @param $l10n - * @param string $userId * @param string $circleUniqueId + * @param string $userId + * @param int $type */ - public function __construct($l10n, $userId = '', $circleUniqueId = '') { - $this->l10n = $l10n; + public function __construct($userId = '', $type = 0, $circleUniqueId = '') { + $this->l10n = \OC::$server->getL10N('circles'); - if ($userId !== '') { - $this->setUserId($userId); - } - if ($circleUniqueId > -1) { - $this->setCircleId($circleUniqueId); - } + $this->setUserId($userId); + $this->setCircleId($circleUniqueId); + $this->setType($type); $this->setLevel(Member::LEVEL_NONE); $this->setStatus(Member::STATUS_NONMEMBER); } @@ -253,18 +251,18 @@ class BaseMember implements \JsonSerializable { } - public static function fromArray($l10n, $arr) { + public static function fromArray($arr) { if ($arr === null) { return null; } - $member = new Member($l10n); + $member = new Member(); $member->setCircleId($arr['circle_id']); $member->setLevel($arr['level']); if (key_exists('user_id', $arr)) { $member->setUserId($arr['user_id']); -// $member->setType($arr['type']); + $member->setType($arr['type']); } if (key_exists('group_id', $arr)) { @@ -287,8 +285,8 @@ class BaseMember implements \JsonSerializable { } - public static function fromJSON($l10n, $json) { - return self::fromArray($l10n, json_decode($json, true)); + public static function fromJSON($json) { + return self::fromArray(json_decode($json, true)); } public function jsonSerialize() { diff --git a/lib/Model/Circle.php b/lib/Model/Circle.php index d249d716..430c9636 100644 --- a/lib/Model/Circle.php +++ b/lib/Model/Circle.php @@ -153,10 +153,10 @@ class Circle extends BaseCircle implements \JsonSerializable { $circle->setCreation($arr['creation']); if (key_exists('user', $arr)) { - $circle->setViewer(Member::fromArray($l10n, $arr['user'])); + $circle->setViewer(Member::fromArray($arr['user'])); } if (key_exists('owner', $arr)) { - $circle->setOwner(Member::fromArray($l10n, $arr['owner'])); + $circle->setOwner(Member::fromArray($arr['owner'])); } return $circle; diff --git a/lib/Service/CirclesService.php b/lib/Service/CirclesService.php index 7e16069e..1224ab7b 100644 --- a/lib/Service/CirclesService.php +++ b/lib/Service/CirclesService.php @@ -285,9 +285,9 @@ class CirclesService { try { $member = - $this->membersRequest->forceGetMember($circle->getUniqueId(), $this->userId); + $this->membersRequest->forceGetMember($circle->getUniqueId(), $this->userId, Member::TYPE_USER); } catch (MemberDoesNotExistException $m) { - $member = new Member($this->l10n, $this->userId, $circle->getUniqueId()); + $member = new Member($this->userId, Member::TYPE_USER, $circle->getUniqueId()); $this->membersRequest->createMember($member); } diff --git a/lib/Service/GroupsService.php b/lib/Service/GroupsService.php index 1b85a5d2..dffd4e26 100644 --- a/lib/Service/GroupsService.php +++ b/lib/Service/GroupsService.php @@ -136,7 +136,7 @@ class GroupsService { try { $member = $this->membersRequest->forceGetGroup($circleId, $groupId); } catch (MemberDoesNotExistException $e) { - $member = new Member($this->l10n, '', $circleId); + $member = new Member('', Member::TYPE_GROUP, $circleId); $member->setGroupId($groupId); $this->membersRequest->insertGroup($member); } diff --git a/lib/Service/MembersService.php b/lib/Service/MembersService.php index 289bb10f..583db24e 100644 --- a/lib/Service/MembersService.php +++ b/lib/Service/MembersService.php @@ -117,7 +117,7 @@ class MembersService { } try { - $member = $this->getFreshNewMember($circleUniqueId, $name); + $member = $this->getFreshNewMember($circleUniqueId, $name, Member::TYPE_USER); } catch (\Exception $e) { throw $e; } @@ -197,12 +197,13 @@ class MembersService { $group = \OC::$server->getGroupManager() ->get($groupId); if ($group === null) { - throw new GroupDoesNotExistException('This group does not exist'); + throw new GroupDoesNotExistException($this->l10n->t('This group does not exist')); } foreach ($group->getUsers() as $user) { try { - $member = $this->getFreshNewMember($circleUniqueId, $user->getUID()); + $member = + $this->getFreshNewMember($circleUniqueId, $user->getUID(), Member::TYPE_USER); $member->inviteToCircle($circle->getType()); $this->membersRequest->updateMember($member); @@ -228,18 +229,19 @@ class MembersService { * * @param $circleId * @param $userId + * @param $type * * @return Member * @throws \Exception */ - public function getMember($circleId, $userId) { + public function getMember($circleId, $userId, $type) { try { $this->circlesRequest->getCircle($circleId, $this->userId) ->getHigherViewer() ->hasToBeMember(); - $member = $this->membersRequest->forceGetMember($circleId, $userId); + $member = $this->membersRequest->forceGetMember($circleId, $userId, $type); $member->setNote(''); return $member; @@ -254,24 +256,27 @@ class MembersService { * * @param string $circleUniqueId * @param string $name + * @param $type * - * @return null|Member + * @return Member * @throws MemberAlreadyExistsException * @throws \Exception */ - private function getFreshNewMember($circleUniqueId, $name) { + private function getFreshNewMember($circleUniqueId, $name, $type) { - try { - $userId = $this->getRealUserId($name); - } catch (\Exception $e) { - throw $e; + if ($type === Member::TYPE_USER) { + try { + $name = $this->getRealUserId($name); + } catch (\Exception $e) { + throw $e; + } } try { - $member = $this->membersRequest->forceGetMember($circleUniqueId, $userId); + $member = $this->membersRequest->forceGetMember($circleUniqueId, $name, $type); } catch (MemberDoesNotExistException $e) { - $member = new Member($this->l10n, $userId, $circleUniqueId); + $member = new Member($name, $type, $circleUniqueId); $this->membersRequest->createMember($member); } @@ -325,7 +330,7 @@ class MembersService { * @return array * @throws \Exception */ - public function levelMember($circleUniqueId, $name, $level) { + public function levelLocalMember($circleUniqueId, $name, $level) { $level = (int)$level; try { @@ -336,7 +341,9 @@ class MembersService { ); } - $member = $this->membersRequest->forceGetMember($circle->getUniqueId(), $name); + $member = $this->membersRequest->forceGetMember( + $circle->getUniqueId(), $name, Member::TYPE_USER + ); if ($member->getLevel() !== $level) { if ($level === Member::LEVEL_OWNER) { $this->switchOwner($circle, $member); @@ -393,7 +400,9 @@ class MembersService { $isMod = $circle->getHigherViewer(); $isMod->hasToBeOwner(); + $member->hasToBeMember(); $member->cantBeOwner(); + $member->setLevel(Member::LEVEL_OWNER); $this->membersRequest->updateMember($member); @@ -409,18 +418,19 @@ class MembersService { /** * @param string $circleUniqueId * @param string $name + * @param $type * * @return array * @throws \Exception */ - public function removeMember($circleUniqueId, $name) { + public function removeMember($circleUniqueId, $name, $type) { try { $circle = $this->circlesRequest->getCircle($circleUniqueId, $this->userId); $circle->getHigherViewer() ->hasToBeModerator(); - $member = $this->membersRequest->forceGetMember($circleUniqueId, $name); + $member = $this->membersRequest->forceGetMember($circleUniqueId, $name, $type); $member->hasToBeMemberOrAlmost(); $member->cantBeOwner(); |