123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614 |
- <?php
- function elgg_set_ignore_access($ignore = true) {
- return _elgg_services()->session->setIgnoreAccess($ignore);
- }
- function elgg_get_ignore_access() {
- return _elgg_services()->session->getIgnoreAccess();
- }
- function get_access_list($user_guid = 0, $site_guid = 0, $flush = false) {
- return _elgg_services()->accessCollections->getAccessList($user_guid, $site_guid, $flush);
- }
- function get_access_array($user_guid = 0, $site_guid = 0, $flush = false) {
- return _elgg_services()->accessCollections->getAccessArray($user_guid, $site_guid, $flush);
- }
- function get_default_access(ElggUser $user = null, array $input_params = array()) {
- global $CONFIG;
-
- $default_access = $CONFIG->default_access;
-
- if ($CONFIG->allow_user_default_access) {
- $user = $user ? $user : _elgg_services()->session->getLoggedInUser();
- if ($user) {
- $user_access = $user->getPrivateSetting('elgg_default_access');
- if ($user_access !== null) {
- $default_access = $user_access;
- }
- }
- }
- $params = array(
- 'user' => $user,
- 'default_access' => $default_access,
- 'input_params' => $input_params,
- );
- return _elgg_services()->hooks->trigger('default', 'access', $params, $default_access);
- }
- $ENTITY_SHOW_HIDDEN_OVERRIDE = false;
- function access_show_hidden_entities($show_hidden) {
- global $ENTITY_SHOW_HIDDEN_OVERRIDE;
- $current_value = $ENTITY_SHOW_HIDDEN_OVERRIDE;
- $ENTITY_SHOW_HIDDEN_OVERRIDE = $show_hidden;
- return $current_value;
- }
- function access_get_show_hidden_status() {
- global $ENTITY_SHOW_HIDDEN_OVERRIDE;
- return $ENTITY_SHOW_HIDDEN_OVERRIDE;
- }
- function _elgg_get_access_where_sql(array $options = array()) {
- return _elgg_services()->accessCollections->getWhereSql($options);
- }
- function has_access_to_entity($entity, $user = null) {
- return _elgg_services()->accessCollections->hasAccessToEntity($entity, $user);
- }
- function get_write_access_array($user_guid = 0, $site_guid = 0, $flush = false, array $input_params = array()) {
- return _elgg_services()->accessCollections->getWriteAccessArray($user_guid, $site_guid, $flush, $input_params);
- }
- function can_edit_access_collection($collection_id, $user_guid = null) {
- return _elgg_services()->accessCollections->canEdit($collection_id, $user_guid);
- }
- function create_access_collection($name, $owner_guid = 0, $site_guid = 0) {
- return _elgg_services()->accessCollections->create($name, $owner_guid, $site_guid);
- }
- function update_access_collection($collection_id, $members) {
- return _elgg_services()->accessCollections->update($collection_id, $members);
- }
- function delete_access_collection($collection_id) {
- return _elgg_services()->accessCollections->delete($collection_id);
- }
- function get_access_collection($collection_id) {
- return _elgg_services()->accessCollections->get($collection_id);
- }
- function add_user_to_access_collection($user_guid, $collection_id) {
- return _elgg_services()->accessCollections->addUser($user_guid, $collection_id);
- }
- function remove_user_from_access_collection($user_guid, $collection_id) {
- return _elgg_services()->accessCollections->removeUser($user_guid, $collection_id);
- }
- function get_user_access_collections($owner_guid, $site_guid = 0) {
- return _elgg_services()->accessCollections->getEntityCollections($owner_guid, $site_guid);
- }
- function get_members_of_access_collection($collection_id, $guids_only = false) {
- return _elgg_services()->accessCollections->getMembers($collection_id, $guids_only);
- }
- function elgg_get_entities_from_access_id(array $options = array()) {
-
- if (!isset($options['access_id'])) {
- return false;
- }
-
- $where = "e.access_id = '{$options['access_id']}'";
- if (isset($options['wheres'])) {
- if (is_array($options['wheres'])) {
- $options['wheres'][] = $where;
- } else {
- $options['wheres'] = array($options['wheres'], $where);
- }
- } else {
- $options['wheres'] = array($where);
- }
-
- return _elgg_services()->entityTable->getEntities($options);
- }
- function elgg_list_entities_from_access_id(array $options = array()) {
- return elgg_list_entities($options, 'elgg_get_entities_from_access_id');
- }
- function get_readable_access_level($entity_access_id) {
- return _elgg_services()->accessCollections->getReadableAccessLevel($entity_access_id);
- }
- function elgg_check_access_overrides($user_guid = 0) {
- if (!$user_guid || $user_guid <= 0) {
- $is_admin = false;
- } else {
- $is_admin = elgg_is_admin_user($user_guid);
- }
- return ($is_admin || _elgg_services()->session->getIgnoreAccess());
- }
- $init_finished = false;
- function access_init() {
- global $init_finished;
- $init_finished = true;
- }
- function elgg_override_permissions($hook, $type, $value, $params) {
- $user = elgg_extract('user', $params);
- if ($user) {
- $user_guid = $user->guid;
- } else {
- $user_guid = _elgg_services()->session->getLoggedInUserGuid();
- }
-
-
-
-
-
- if ($user_guid && elgg_is_admin_user($user_guid)) {
- return true;
- }
-
- if (elgg_check_access_overrides($user_guid)) {
- return true;
- }
-
- return null;
- }
- function access_test($hook, $type, $value, $params) {
- global $CONFIG;
- $value[] = $CONFIG->path . 'engine/tests/ElggCoreAccessCollectionsTest.php';
- $value[] = $CONFIG->path . 'engine/tests/ElggCoreAccessSQLTest.php';
- return $value;
- }
- return function(\Elgg\EventsService $events, \Elgg\HooksRegistrationService $hooks) {
-
-
- $events->registerHandler('ready', 'system', 'access_init');
-
- $hooks->registerHandler('permissions_check', 'all', 'elgg_override_permissions');
- $hooks->registerHandler('container_permissions_check', 'all', 'elgg_override_permissions');
- $hooks->registerHandler('unit_test', 'system', 'access_test');
- };
|