Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/circles.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxence Lange <maxence@nextcloud.com>2017-08-10 09:49:45 +0300
committerMaxence Lange <maxence@nextcloud.com>2017-08-10 09:49:45 +0300
commitf404fc908f1cbb3240ef2ec7a53f34c626c3bf3b (patch)
tree098b38a4b0699e5f316b3a92e96032849d07a76f
parent197b758e4325f308590884c200efc4405564389d (diff)
new Member()
Signed-off-by: Maxence Lange <maxence@nextcloud.com>
-rw-r--r--lib/Activity/Provider.php6
-rw-r--r--lib/Api/v1/Circles.php4
-rw-r--r--lib/Db/CirclesRequest.php2
-rw-r--r--lib/Db/CirclesRequestBuilder.php6
-rw-r--r--lib/Db/CoreRequestBuilder.php15
-rw-r--r--lib/Db/MembersRequest.php4
-rw-r--r--lib/Db/MembersRequestBuilder.php8
-rw-r--r--lib/Model/BaseMember.php30
-rw-r--r--lib/Model/Circle.php4
-rw-r--r--lib/Service/CirclesService.php4
-rw-r--r--lib/Service/GroupsService.php2
-rw-r--r--lib/Service/MembersService.php44
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();