3 * @file src/Model/PermissionSet.php
5 namespace Friendica\Model;
7 use Friendica\BaseObject;
8 use Friendica\Database\DBA;
10 require_once 'include/dba.php';
13 * @brief functions for interacting with the permission set of an object (item, photo, event, ...)
15 class PermissionSet extends BaseObject
18 * Fetch the id of a given permission set. Generate a new one when needed
20 * @param array $postarray The array from an item, picture or event post
23 public static function fetchIDForPost($postarray)
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', ''))];
31 $set = DBA::selectFirst('permissionset', ['id'], $condition);
33 if (!DBA::is_result($set)) {
34 DBA::insert('permissionset', $condition, true);
36 $set = DBA::selectFirst('permissionset', ['id'], $condition);
41 private static function sortPermissions($permissionlist)
43 $cleaned_list = trim($permissionlist, '<>');
45 if (empty($cleaned_list)) {
46 return $permissionlist;
49 $elements = explode('><', $cleaned_list);
51 if (count($elements) <= 1) {
52 return $permissionlist;
57 return '<' . implode('><', $elements) . '>';