]> git.mxchange.org Git - friendica.git/blob - src/Security/PermissionSet/Entity/PermissionSet.php
Migrate PermissionSet to Depository paradigm
[friendica.git] / src / Security / PermissionSet / Entity / PermissionSet.php
1 <?php
2
3 namespace Friendica\Security\PermissionSet\Entity;
4
5 use Friendica\BaseEntity;
6
7 /**
8  * @property-read int|null $id
9  * @property-read int      $uid
10  * @property-read string[] $allow_cid
11  * @property-read string[] $allow_gid
12  * @property-read string[] $deny_cid
13  * @property-read string[] $deny_gid
14  */
15 class PermissionSet extends BaseEntity
16 {
17         /** @var int|null */
18         protected $id;
19         /** @var int */
20         protected $uid;
21         /** @var string[] */
22         protected $allow_cid;
23         /** @var string[] */
24         protected $allow_gid;
25         /** @var string[] */
26         protected $deny_cid;
27         /** @var string[] */
28         protected $deny_gid;
29
30         /**
31          * @param int|null $id
32          * @param int      $uid
33          * @param string[] $allow_cid
34          * @param string[] $allow_gid
35          * @param string[] $deny_cid
36          * @param string[] $deny_gid
37          *
38          * @see \Friendica\Security\PermissionSet\Factory\PermissionSet
39          */
40         public function __construct(int $uid, array $allow_cid = [], array $allow_gid = [], array $deny_cid = [], array $deny_gid = [], int $id = null)
41         {
42                 $this->id        = $id;
43                 $this->uid       = $uid;
44                 $this->allow_cid = $allow_cid;
45                 $this->allow_gid = $allow_gid;
46                 $this->deny_cid  = $deny_cid;
47                 $this->deny_gid  = $deny_gid;
48         }
49
50         /**
51          * Creates a new Entity with a new allowed_cid list (wipes the id because it isn't the same entity anymore)
52          *
53          * @param array $allow_cid
54          *
55          * @return $this
56          */
57         public function withAllowedContacts(array $allow_cid): PermissionSet
58         {
59                 $clone = clone $this;
60
61                 $clone->allow_cid = $allow_cid;
62                 $clone->id        = null;
63
64                 return $clone;
65         }
66 }