diff options
Diffstat (limited to 'engine/lib/access.php')
-rw-r--r-- | engine/lib/access.php | 48 |
1 files changed, 29 insertions, 19 deletions
diff --git a/engine/lib/access.php b/engine/lib/access.php index 68a01dfad..30febb799 100644 --- a/engine/lib/access.php +++ b/engine/lib/access.php @@ -592,31 +592,41 @@ function add_user_to_access_collection($user_guid, $collection_id) { return false; } - if ((array_key_exists($collection_id, $collections) || $collection->owner_guid == 0) - && $user = get_user($user_guid)) { - global $CONFIG; + $user = get_user($user_guid); + if (!$user) { + return false; + } - $params = array( - 'collection_id' => $collection_id, - 'user_guid' => $user_guid - ); + // to add someone to a collection, the user must be a member of the collection or + // no one must own it + if ((array_key_exists($collection_id, $collections) || $collection->owner_guid == 0)) { + $result = true; + } else { + $result = false; + } + + $params = array( + 'collection_id' => $collection_id, + 'collection' => $collection, + 'user_guid' => $user_guid + ); - if (!elgg_trigger_plugin_hook('access:collections:add_user', 'collection', $params, true)) { - return false; - } + $result = elgg_trigger_plugin_hook('access:collections:add_user', 'collection', $params, $result); + if ($result == false) { + return false; + } - try { - $query = "insert into {$CONFIG->dbprefix}access_collection_membership" + try { + global $CONFIG; + $query = "insert into {$CONFIG->dbprefix}access_collection_membership" . " set access_collection_id = {$collection_id}, user_guid = {$user_guid}"; - insert_data($query); - } catch (DatabaseException $e) { - // nothing. - } - return true; - + insert_data($query); + } catch (DatabaseException $e) { + // nothing. + return false; } - return false; + return true; } /** |