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