]> git.mxchange.org Git - friendica.git/blob - src/Security/PermissionSet/Factory/PermissionSet.php
9887ffeb11a8f5ab8aaa47f4443bc84966517778
[friendica.git] / src / Security / PermissionSet / Factory / PermissionSet.php
1 <?php
2
3 namespace Friendica\Security\PermissionSet\Factory;
4
5 use Friendica\BaseFactory;
6 use Friendica\Capabilities\ICanCreateFromTableRow;
7 use Friendica\Security\PermissionSet\Entity;
8 use Friendica\Util\ACLFormatter;
9 use Psr\Log\LoggerInterface;
10
11 class PermissionSet extends BaseFactory implements ICanCreateFromTableRow
12 {
13         /** @var ACLFormatter */
14         protected $formatter;
15
16         public function __construct(LoggerInterface $logger, ACLFormatter $formatter)
17         {
18                 parent::__construct($logger);
19
20                 $this->formatter = $formatter;
21         }
22
23         public function createFromTableRow(array $row): Entity\PermissionSet
24         {
25                 return new Entity\PermissionSet(
26                         $row['uid'],
27                         $this->formatter->expand($row['allow_cid'] ?? []),
28                         $this->formatter->expand($row['allow_gid'] ?? []),
29                         $this->formatter->expand($row['deny_cid'] ?? []),
30                         $this->formatter->expand($row['deny_gid'] ?? []),
31                         $row['id'] ?? null
32                 );
33         }
34
35         public function createFromString(
36                 int $uid,
37                 string $allow_cid = '',
38                 string $allow_gid = '',
39                 string $deny_cid = '',
40                 string $deny_gid = '')
41         {
42                 return new Entity\PermissionSet(
43                         $uid,
44                         $this->formatter->expand($allow_cid),
45                         $this->formatter->expand($allow_gid),
46                         $this->formatter->expand($deny_cid),
47                         $this->formatter->expand($deny_gid)
48                 );
49         }
50
51         public function createPrototypeForUser(int $uid, string $allowCid): Entity\PermissionSet
52         {
53                 return new Entity\PermissionSet(
54                         $uid,
55                         $this->formatter->expand($allowCid)
56                 );
57         }
58 }