aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Wallabag/GroupBundle/Entity/Group.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Wallabag/GroupBundle/Entity/Group.php')
-rw-r--r--src/Wallabag/GroupBundle/Entity/Group.php172
1 files changed, 157 insertions, 15 deletions
diff --git a/src/Wallabag/GroupBundle/Entity/Group.php b/src/Wallabag/GroupBundle/Entity/Group.php
index 1381d1ea..31c82837 100644
--- a/src/Wallabag/GroupBundle/Entity/Group.php
+++ b/src/Wallabag/GroupBundle/Entity/Group.php
@@ -8,11 +8,50 @@ use Doctrine\ORM\Mapping as ORM;
8use Wallabag\UserBundle\Entity\User; 8use Wallabag\UserBundle\Entity\User;
9 9
10/** 10/**
11 * @ORM\Entity 11 * @ORM\Entity(repositoryClass="Wallabag\GroupBundle\Repository\GroupRepository")
12 * @ORM\Table(name="`group`") 12 * @ORM\Table(name="`group`")
13 */ 13 */
14class Group extends BaseGroup 14class Group extends BaseGroup
15{ 15{
16
17 /**
18 * User Roles
19 */
20
21 /** User can only preview presentations */
22 const ROLE_READ_ONLY = 1;
23
24 /** User can create new presentations */
25 const ROLE_WRITE = 2;
26
27 /** User can manage all group presentations */
28 const ROLE_MANAGE_ENTRIES = 3;
29
30 /** User can manage users in the group */
31 const ROLE_MANAGE_USERS = 5;
32
33 /** User can rename and delete the group */
34 const ROLE_ADMIN = 10;
35
36 /**
37 * Group join access
38 */
39
40 /** Any user can join the group */
41 const ACCESS_OPEN = 1;
42
43 /** An user needs to request to join the group */
44 const ACCESS_REQUEST = 2;
45
46 /** An user need the password to access the group */
47 const ACCESS_PASSWORD = 3;
48
49 /** An user needs to be invited to join the group */
50 const ACCESS_INVITATION_ONLY = 4;
51
52 /** An user needs to be invited to join the group, and the group is not publicly listed */
53 const ACCESS_HIDDEN = 10;
54
16 /** 55 /**
17 * @ORM\Id 56 * @ORM\Id
18 * @ORM\Column(type="integer") 57 * @ORM\Column(type="integer")
@@ -21,38 +60,141 @@ class Group extends BaseGroup
21 protected $id; 60 protected $id;
22 61
23 /** 62 /**
24 * @ORM\ManyToMany(targetEntity="Wallabag\UserBundle\Entity\User", mappedBy="groups", cascade={"persist"}) 63 * @ORM\Column(type="integer", options={"default" : 1})
64 */
65 protected $acceptSystem;
66
67 /**
68 * @ORM\Column(type="integer", options={"default" : 2})
69 */
70 protected $defaultRole;
71
72 /**
73 * @ORM\Column(type="string", nullable=true)
74 */
75 protected $password;
76 protected $plainPassword;
77
78 /**
79 * @ORM\ManyToMany(targetEntity="Wallabag\CoreBundle\Entity\Entry", mappedBy="groupShares", cascade={"persist"})
80 */
81 protected $entries;
82
83 /**
84 * @ORM\OneToMany(targetEntity="UserGroup", mappedBy="group", cascade={"persist"})
25 */ 85 */
26 protected $users; 86 protected $users;
27 87
28 public function getUsers() 88 public function __construct($name = '', array $roles = [])
29 { 89 {
30 return $this->users ?: $this->users = new ArrayCollection(); 90 parent::__construct($name, $roles);
91 $this->defaultRole = self::ROLE_READ_ONLY;
92 $this->acceptSystem = self::ACCESS_REQUEST;
31 } 93 }
32 94
33 public function addUser(User $user) 95 /**
96 * @return ArrayCollection
97 */
98 public function getUsers()
34 { 99 {
35 if (!$this->getUsers()->contains($user)) { 100 $userObj = new ArrayCollection();
36 $this->getUsers()->add($user); 101 foreach ($this->users as $userGroup) {
102 /** @var UserGroup $userGroup */
103 $userObj->add($userGroup->getUser());
37 } 104 }
105 return $userObj;
106 }
38 107
39 return $this; 108 /**
109 * @return int
110 */
111 public function getDefaultRole()
112 {
113 return $this->defaultRole;
40 } 114 }
41 115
42 /** 116 /**
43 * {@inheritdoc} 117 * @return int
44 */ 118 */
45 public function removeUser(User $user) 119 public function getAcceptSystem()
46 { 120 {
47 if ($this->getUsers()->contains($user)) { 121 return $this->acceptSystem;
48 $this->getUsers()->removeElement($user); 122 }
49 } 123
124 /**
125 * @param int $acceptSystem
126 */
127 public function setAcceptSystem($acceptSystem)
128 {
129 $this->acceptSystem = $acceptSystem;
130 }
50 131
51 return $this; 132 /**
133 * @return string
134 */
135 public function getPassword()
136 {
137 return $this->password ?: '';
138 }
139
140 /**
141 * @param string $password
142 */
143 public function setPassword($password)
144 {
145 $this->password = $password;
146 }
147
148 /**
149 * @return string
150 */
151 public function getPlainPassword()
152 {
153 return $this->plainPassword ?: '';
154 }
155
156 /**
157 * @param string $plainPassword
158 */
159 public function setPlainPassword($plainPassword)
160 {
161 $this->plainPassword = $plainPassword;
162 }
163
164 /**
165 * @param int $defaultRole
166 */
167 public function setDefaultRole($defaultRole)
168 {
169 $this->defaultRole = $defaultRole;
52 } 170 }
53 171
54 public function __toString() 172 public function __toString()
55 { 173 {
56 return $this->getName(); 174 return $this->name;
175 }
176
177 public function getRequests()
178 {
179 $requests = new ArrayCollection();
180 foreach ($this->users as $user) /** @var UserGroup $user */
181 {
182 if (!$user->isAccepted()) {
183 $requests->add($user->getUser());
184 }
185 }
186 return $requests;
187 }
188
189 public function getInvited()
190 {
191 $invited = new ArrayCollection();
192 foreach ($this->users as $userGroup) /** @var UserGroup $userGroup */
193 {
194 if ($userGroup->getInvitation()) {
195 $invited->add($userGroup);
196 }
197 }
198 return $invited;
57 } 199 }
58} 200}