]> git.mxchange.org Git - friendica.git/blob - src/Model/PermissionSet.php
Little fixes (#5414)
[friendica.git] / src / Model / PermissionSet.php
1 <?php
2 /**
3  * @file src/Model/PermissionSet.php
4  */
5 namespace Friendica\Model;
6
7 use Friendica\BaseObject;
8 use Friendica\Database\DBM;
9 use dba;
10
11 require_once 'include/dba.php';
12
13 /**
14  * @brief functions for interacting with the permission set of an object (item, photo, event, ...)
15  */
16 class PermissionSet extends BaseObject
17 {
18         /**
19          * Fetch the id of a given permission set. Generate a new one when needed
20          *
21          * @param array $postarray The array from an item, picture or event post
22          * @return id
23          */
24         public static function fetchIDForPost($postarray)
25         {
26                 $condition = ['uid' => $postarray['uid'],
27                         'allow_cid' => self::sortPermissions(defaults($postarray, 'allow_cid', '')),
28                         'allow_gid' => self::sortPermissions(defaults($postarray, 'allow_gid', '')),
29                         'deny_cid' => self::sortPermissions(defaults($postarray, 'deny_cid', '')),
30                         'deny_gid' => self::sortPermissions(defaults($postarray, 'deny_gid', ''))];
31
32                 $set = dba::selectFirst('permissionset', ['id'], $condition);
33
34                 if (!DBM::is_result($set)) {
35                         dba::insert('permissionset', $condition, true);
36
37                         $set = dba::selectFirst('permissionset', ['id'], $condition);
38                 }
39                 return $set['id'];
40         }
41
42         private static function sortPermissions($permissionlist)
43         {
44                 $cleaned_list = trim($permissionlist, '<>');
45
46                 if (empty($cleaned_list)) {
47                         return $permissionlist;
48                 }
49
50                 $elements = explode('><', $cleaned_list);
51
52                 if (count($elements) <= 1) {
53                         return $permissionlist;
54                 }
55
56                 asort($elements);
57
58                 return '<' . implode('><', $elements) . '>';
59         }
60 }