]> git.mxchange.org Git - friendica.git/blob - src/Security/PermissionSet/Factory/PermissionSet.php
Add feedback and tests
[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         /**
24          * @inheritDoc
25          */
26         public function createFromTableRow(array $row): Entity\PermissionSet
27         {
28                 return new Entity\PermissionSet(
29                         $row['uid'],
30                         $this->formatter->expand($row['allow_cid'] ?? ''),
31                         $this->formatter->expand($row['allow_gid'] ?? ''),
32                         $this->formatter->expand($row['deny_cid'] ?? ''),
33                         $this->formatter->expand($row['deny_gid'] ?? ''),
34                         $row['id'] ?? null
35                 );
36         }
37
38         /**
39          * Creates a new PermissionSet based on it's fields
40          *
41          * @param int    $uid
42          * @param string $allow_cid
43          * @param string $allow_gid
44          * @param string $deny_cid
45          * @param string $deny_gid
46          *
47          * @return Entity\PermissionSet
48          */
49         public function createFromString(
50                 int $uid,
51                 string $allow_cid = '',
52                 string $allow_gid = '',
53                 string $deny_cid = '',
54                 string $deny_gid = ''): Entity\PermissionSet
55         {
56                 return $this->createFromTableRow([
57                         'uid'       => $uid,
58                         'allow_cid' => $allow_cid,
59                         'allow_gid' => $allow_gid,
60                         'deny_cid'  => $deny_cid,
61                         'deny_gid'  => $deny_gid,
62                 ]);
63         }
64 }