123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- <?php
- namespace AU\RiverPrivacy;
- const PLUGIN_ID = 'river_privacy';
- elgg_register_event_handler('init', 'system', __NAMESPACE__ . '\\init');
- function init() {
-
- elgg_register_plugin_hook_handler('creating', 'river', __NAMESPACE__ . '\\creating_river_hook');
-
- elgg_register_plugin_hook_handler('view_vars', 'page/components/list', __NAMESPACE__ . '\\filter_list_vars');
-
-
- elgg_register_plugin_hook_handler('get_sql', 'access', __NAMESPACE__ . '\\river_access_query');
- }
- function creating_river_hook($hook, $type, $returnvalue, $params) {
- if ($returnvalue['type'] != 'object') {
- $returnvalue['access_id'] = ACCESS_PRIVATE;
- }
- return $returnvalue;
- }
- function filter_list_vars($hook, $type, $return, $params) {
- $filter_river = elgg_get_plugin_setting('hide_old_items', PLUGIN_ID);
- if ($filter_river == 'no') {
-
- return $return;
- }
- if ($return['items'] && is_array($return['items'])) {
- foreach ($return['items'] as $key => $item) {
- if (!($item instanceof \ElggRiverItem)) {
- continue;
- }
- if ($item->type == 'object') {
- continue;
- }
- if ($item->subject_guid == elgg_get_logged_in_user_guid()) {
- continue;
- }
- if (elgg_is_admin_logged_in()) {
- continue;
- }
-
- if (elgg_get_ignore_access()) {
- continue;
- }
- unset($return['items'][$key]);
- }
- }
-
- return $return;
- }
- function river_access_query($hook, $type, $return, $params) {
-
-
-
- if ($params['table_alias'] != 'oe') {
- return $return;
- }
-
- if ($params['ignore_access']) {
- return $return;
- }
-
- if (elgg_is_admin_logged_in()) {
- return $return;
- }
- $guid = (int) elgg_get_logged_in_user_guid();
- $return['ands'][] = "((rv.type != 'object' AND rv.subject_guid = {$guid}) OR rv.access_id != 0)";
-
- return $return;
- }
|