3 * @file src/Model/PermissionSet.php
5 namespace Friendica\Model;
7 use Friendica\BaseObject;
8 use Friendica\Database\DBA;
9 use Friendica\Database\DBM;
11 require_once 'include/dba.php';
14 * @brief functions for interacting with the permission set of an object (item, photo, event, ...)
16 class PermissionSet extends BaseObject
19 * Fetch the id of a given permission set. Generate a new one when needed
21 * @param array $postarray The array from an item, picture or event post
24 public static function fetchIDForPost($postarray)
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', ''))];
32 $set = DBA::selectFirst('permissionset', ['id'], $condition);
34 if (!DBM::is_result($set)) {
35 DBA::insert('permissionset', $condition, true);
37 $set = DBA::selectFirst('permissionset', ['id'], $condition);
42 private static function sortPermissions($permissionlist)
44 $cleaned_list = trim($permissionlist, '<>');
46 if (empty($cleaned_list)) {
47 return $permissionlist;
50 $elements = explode('><', $cleaned_list);
52 if (count($elements) <= 1) {
53 return $permissionlist;
58 return '<' . implode('><', $elements) . '>';