]> git.immae.eu Git - github/wallabag/wallabag.git/blame - src/Wallabag/GroupBundle/Entity/Group.php
WIP
[github/wallabag/wallabag.git] / src / Wallabag / GroupBundle / Entity / Group.php
CommitLineData
f1900b68
NL
1<?php
2
b073a0b4 3namespace Wallabag\GroupBundle\Entity;
f1900b68 4
6a50b4cc 5use Doctrine\Common\Collections\ArrayCollection;
f1900b68
NL
6use FOS\UserBundle\Model\Group as BaseGroup;
7use Doctrine\ORM\Mapping as ORM;
56c81a2f 8use Wallabag\UserBundle\Entity\User;
f1900b68
NL
9
10/**
2041810a 11 * @ORM\Entity(repositoryClass="Wallabag\GroupBundle\Repository\GroupRepository")
f1900b68
NL
12 * @ORM\Table(name="`group`")
13 */
14class Group extends BaseGroup
15{
2041810a
TC
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
f1900b68
NL
55 /**
56 * @ORM\Id
57 * @ORM\Column(type="integer")
58 * @ORM\GeneratedValue(strategy="AUTO")
59 */
60 protected $id;
56c81a2f
NL
61
62 /**
2041810a
TC
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"})
56c81a2f
NL
85 */
86 protected $users;
87
2041810a 88 public function __construct($name = '', array $roles = [])
56c81a2f 89 {
2041810a
TC
90 parent::__construct($name, $roles);
91 $this->defaultRole = self::ROLE_READ_ONLY;
92 $this->acceptSystem = self::ACCESS_REQUEST;
56c81a2f
NL
93 }
94
2041810a
TC
95 /**
96 * @return ArrayCollection
97 */
98 public function getUsers()
56c81a2f 99 {
2041810a
TC
100 $userObj = new ArrayCollection();
101 foreach ($this->users as $userGroup) {
102 /** @var UserGroup $userGroup */
103 $userObj->add($userGroup->getUser());
56c81a2f 104 }
2041810a
TC
105 return $userObj;
106 }
56c81a2f 107
2041810a
TC
108 /**
109 * @return int
110 */
111 public function getDefaultRole()
112 {
113 return $this->defaultRole;
56c81a2f
NL
114 }
115
116 /**
2041810a 117 * @return int
56c81a2f 118 */
2041810a 119 public function getAcceptSystem()
56c81a2f 120 {
2041810a
TC
121 return $this->acceptSystem;
122 }
123
124 /**
125 * @param int $acceptSystem
126 */
127 public function setAcceptSystem($acceptSystem)
128 {
129 $this->acceptSystem = $acceptSystem;
130 }
56c81a2f 131
2041810a
TC
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;
56c81a2f
NL
170 }
171
172 public function __toString()
173 {
2041810a
TC
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;
56c81a2f 199 }
f1900b68 200}