X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FACL.php;h=a4acf58bad4fb0fb54590ad47e63e268379af375;hb=384fe562a8dff1bbc584c17e78c4f79bf3d5b7e9;hp=2a9c02e81216fc5468cb92117728f1990ebdd671;hpb=b5d2d32b443f7aa8ec6e0e91f36da3cc0a0f2a82;p=friendica.git diff --git a/src/Core/ACL.php b/src/Core/ACL.php index 2a9c02e812..a4acf58bad 100644 --- a/src/Core/ACL.php +++ b/src/Core/ACL.php @@ -1,6 +1,6 @@ into array of cids + preg_match_all('/<[A-Za-z0-9]+>/', $acl_string, $array); + + // check for each cid if the contact is valid for the given user + $cid_array = $array[0]; + foreach ($cid_array as $cid) { + $cid = str_replace(['<', '>'], ['', ''], $cid); + if (!DBA::exists('contact', ['id' => $cid, 'uid' => $uid])) { + return false; + } + } + + return true; + } + + /** + * Checks the validity of the given ACL string + * + * @param string $acl_string + * @param int $uid + * @return bool + * @throws Exception + */ + public static function isValidGroup($acl_string, $uid) + { + if (empty($acl_string)) { + return true; + } + + // split into array of cids + preg_match_all('/<[A-Za-z0-9]+>/', $acl_string, $array); + + // check for each cid if the contact is valid for the given user + $gid_array = $array[0]; + foreach ($gid_array as $gid) { + $gid = str_replace(['<', '>'], ['', ''], $gid); + if (!DBA::exists('group', ['id' => $gid, 'uid' => $uid, 'deleted' => false])) { + return false; + } + } + + return true; + } }