aboutsummaryrefslogtreecommitdiff
path: root/mod/ecml/actions/save_permissions.php
blob: f32544d8674dad9bc5fdab60b6c042697294728c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
/**
 * Saves granular access
 *
 * @package ECML
 */

$whitelist = get_input('whitelist', array());
$keywords = $CONFIG->ecml_keywords;
$views = $CONFIG->ecml_parse_views;

// the front end uses a white list but the backend uses a
// blacklist for performance and extensibility.
// gotta convert.
$perms = array();

foreach ($views as $view => $view_info) {
	foreach ($keywords as $keyword => $keyword_info) {

		// don't need to add perms for restricted keywords
		// because those perms are checked separately
		if (isset($keyword_info['restricted'])) {
			continue;
		}
		if (!isset($whitelist[$view]) || !in_array($keyword, $whitelist[$view])) {
			$perms[$view][] = $keyword;
		}
	}
}

if (set_plugin_setting('ecml_permissions', serialize($perms), 'ecml')) {
	system_message(elgg_echo('ecml:admin:permissions_saved'));
} else {
	register_error(elgg_echo('ecml:admin:cannot_save_permissions'));
}

forward(REFERER);