]> git.mxchange.org Git - friendica.git/commitdiff
Account for the PUBLIC value for id parameter in Depository\PermissionSet::selectOneById
authorHypolite Petovan <hypolite@mrpetovan.com>
Sat, 16 Oct 2021 19:23:40 +0000 (15:23 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Sat, 16 Oct 2021 19:42:21 +0000 (15:42 -0400)
src/Model/ProfileField.php
src/Module/PermissionTooltip.php
src/Security/PermissionSet/Depository/PermissionSet.php

index 66833890e8f5d4db3d324c5ba2f3a44ff9937160..c5905f934cb3e1a73736ffa52f01454c53d7bc69 100644 (file)
@@ -65,7 +65,7 @@ class ProfileField extends BaseModel
                switch ($name) {
                        case 'permissionSet':
                                if (empty($this->permissionSet)) {
-                                       $permissionSet = $this->permissionSetDepository->selectOneById($this->psid);
+                                       $permissionSet = $this->permissionSetDepository->selectOneById($this->psid, $this->uid);
                                        if ($permissionSet->uid !== $this->uid) {
                                                throw new NotFoundException(sprintf('PermissionSet %d (user-id: %d) for ProfileField %d (user-id: %d) is invalid.', $permissionSet->id, $permissionSet->uid, $this->id, $this->uid));
                                        }
index 3f23032d6d838b4618f1806357d99e9f16515ba9..df82574e927ea6544254ecd6e46f07e2a9e0d433 100644 (file)
@@ -39,7 +39,7 @@ class PermissionTooltip extends \Friendica\BaseModule
                }
 
                if (isset($model['psid'])) {
-                       $permissionSet = DI::permissionSet()->selectOneById($model['psid']);
+                       $permissionSet = DI::permissionSet()->selectOneById($model['psid'], $model['uid']);
                        $model['allow_cid'] = $permissionSet->allow_cid;
                        $model['allow_gid'] = $permissionSet->allow_gid;
                        $model['deny_cid']  = $permissionSet->deny_cid;
index fed3accee1ab623f20e62ea8c1c132ca697d9559..b4a918b6d13bd544db1f4f05b8f889df43afc418 100644 (file)
@@ -89,13 +89,21 @@ class PermissionSet extends BaseDepository
        }
 
        /**
-        * @param int $id
-        *
+        * @param int      $id A permissionset table row id or self::PUBLIC
+        * @param int|null $uid Should be provided when id can be self::PUBLIC
         * @return Entity\PermissionSet
         * @throws NotFoundException
         */
-       public function selectOneById(int $id): Entity\PermissionSet
+       public function selectOneById(int $id, int $uid = null): Entity\PermissionSet
        {
+               if ($id === self::PUBLIC) {
+                       if (empty($uid)) {
+                               throw new \InvalidArgumentException('Missing uid for Public permission set instantiation');
+                       }
+
+                       return $this->factory->createFromString($uid);
+               }
+
                return $this->selectOne(['id' => $id]);
        }