3 namespace Friendica\Security\PermissionSet\Factory;
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;
11 class PermissionSet extends BaseFactory implements ICanCreateFromTableRow
13 /** @var ACLFormatter */
16 public function __construct(LoggerInterface $logger, ACLFormatter $formatter)
18 parent::__construct($logger);
20 $this->formatter = $formatter;
23 public function createFromTableRow(array $row): Entity\PermissionSet
25 return new Entity\PermissionSet(
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'] ?? []),
35 public function createFromString(
37 string $allow_cid = '',
38 string $allow_gid = '',
39 string $deny_cid = '',
40 string $deny_gid = '')
42 return new Entity\PermissionSet(
44 $this->formatter->expand($allow_cid),
45 $this->formatter->expand($allow_gid),
46 $this->formatter->expand($deny_cid),
47 $this->formatter->expand($deny_gid)
51 public function createPrototypeForUser(int $uid, string $allowCid): Entity\PermissionSet
53 return new Entity\PermissionSet(
55 $this->formatter->expand($allowCid)