Skip to content

Commit 19682ff

Browse files
committed
Add and enforce multiple access thresholds
1 parent cc3aa58 commit 19682ff

File tree

8 files changed

+107
-9
lines changed

8 files changed

+107
-9
lines changed

Snippets/Snippets.API.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,16 @@ function xmlhttprequest_plugin_snippets() {
2323
$bug_id = gpc_get_int("bug_id", 0);
2424

2525
# load snippets available to the user
26-
$user_id = auth_get_current_user_id();
27-
$snippets = Snippet::clean(Snippet::load_by_type_user(0, $user_id), "form", $bug_id);
26+
$user_id = -1;
27+
$use_global = false;
28+
if (access_has_global_level(plugin_config_get("use_global_threshold"))) {
29+
$use_global = true;
30+
}
31+
if (access_has_global_level(plugin_config_get("edit_own_threshold"))) {
32+
$user_id = auth_get_current_user_id();
33+
}
34+
$snippets = Snippet::load_by_type_user(0, $user_id, $use_global);
35+
$snippets = Snippet::clean($snippets, "form", $bug_id);
2836

2937
$data = array(
3038
"snippets" => plugin_lang_get("version"),

Snippets/Snippets.php

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ class SnippetsPlugin extends MantisPlugin {
88
public function register() {
99
$this->name = plugin_lang_get("name");
1010
$this->description = plugin_lang_get("description");
11+
$this->page = "config_page";
1112

1213
$this->version = plugin_lang_get("version");
1314
$this->requires = array(
@@ -23,6 +24,8 @@ public function register() {
2324
public function config() {
2425
return array(
2526
"edit_global_threshold" => ADMINISTRATOR,
27+
"use_global_threshold" => REPORTER,
28+
"edit_own_threshold" => REPORTER,
2629
);
2730
}
2831

@@ -47,17 +50,21 @@ public function init() {
4750
}
4851

4952
public function menu_account($event, $user_id) {
50-
$page = plugin_page("snippet_list");
51-
$label = plugin_lang_get("list_title");
53+
if (access_has_global_level(plugin_config_get("edit_own_threshold"))) {
54+
$page = plugin_page("snippet_list");
55+
$label = plugin_lang_get("list_title");
5256

53-
return "<a href=\"{$page}\">{$label}</a>";
57+
return "<a href=\"{$page}\">{$label}</a>";
58+
}
5459
}
5560

5661
public function menu_manage($event, $user_id) {
57-
$page = plugin_page("snippet_list") . "&global=true";
58-
$label = plugin_lang_get("list_global_title");
62+
if (access_has_global_level(plugin_config_get("edit_global_threshold"))) {
63+
$page = plugin_page("snippet_list") . "&global=true";
64+
$label = plugin_lang_get("list_global_title");
5965

60-
return "<a href=\"{$page}\">{$label}</a>";
66+
return "<a href=\"{$page}\">{$label}</a>";
67+
}
6168
}
6269

6370
public function resources($event) {

Snippets/lang/strings_english.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,18 @@ $s_plugin_Snippets_create_global_title = "Create Global Snippet";
2929
$s_plugin_Snippets_create_name = "Name";
3030
$s_plugin_Snippets_create_value = "Snippet";
3131

32+
$s_plugin_Snippets_config = "Configuration";
33+
$s_plugin_Snippets_config_title = "Snippet Configuration";
34+
$s_plugin_Snippets_edit_global_threshold = "Edit Global Snippets";
35+
$s_plugin_Snippets_use_global_threshold = "Use Global Snippets";
36+
$s_plugin_Snippets_edit_own_threshold = "Edit Own Snippets";
37+
3238
$s_plugin_Snippets_action_go = "Go";
3339
$s_plugin_Snippets_action_create = "create";
3440
$s_plugin_Snippets_action_edit = "Edit";
3541
$s_plugin_Snippets_action_delete = "Delete";
3642
$s_plugin_Snippets_action_delete_confirm = "Do you really want to delete the following snippets?";
43+
$s_plugin_Snippets_action_update = "Update";
3744

3845
$s_plugin_Snippets_pattern_help = "
3946
Snippets can contain placeholder patterns that will be replaced<br/>

Snippets/pages/config.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
# Copyright (c) 2010 John Reese
4+
# Licensed under the MIT license
5+
6+
form_security_validate("plugin_Snippets_config");
7+
access_ensure_global_level(config_get("manage_plugin_threshold"));
8+
9+
function maybe_set_option( $name, $value ) {
10+
if ( $value != plugin_config_get( $name ) ) {
11+
plugin_config_set( $name, $value );
12+
}
13+
}
14+
15+
maybe_set_option("edit_global_threshold", gpc_get_int("edit_global_threshold"));
16+
maybe_set_option("use_global_threshold", gpc_get_int("use_global_threshold"));
17+
maybe_set_option("edit_own_threshold", gpc_get_int("edit_own_threshold"));
18+
19+
form_security_purge("plugin_Snippets_config");
20+
print_successful_redirect(plugin_page("config_page", true));
21+

Snippets/pages/config_page.php

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?php
2+
3+
# Copyright (c) 2010 John Reese
4+
# Licensed under the MIT license
5+
6+
access_ensure_global_level(config_get("manage_plugin_threshold"));
7+
8+
html_page_top();
9+
print_manage_menu();
10+
?>
11+
12+
<br/>
13+
<form action="<?php echo plugin_page("config") ?>" method="post">
14+
<?php echo form_security_field("plugin_Snippets_config") ?>
15+
<table class="width60" align="center">
16+
17+
<tr>
18+
<td class="form-title" colspan="2"><?php echo plugin_lang_get("config_title") ?></td>
19+
</tr>
20+
21+
<tr <?php echo helper_alternate_class() ?>>
22+
<td class="category"><?php echo plugin_lang_get( 'edit_global_threshold' ) ?></td>
23+
<td><select name="edit_global_threshold"><?php print_enum_string_option_list( 'access_levels', plugin_config_get( 'edit_global_threshold' ) ) ?></select></td>
24+
</tr>
25+
26+
<tr <?php echo helper_alternate_class() ?>>
27+
<td class="category"><?php echo plugin_lang_get( 'use_global_threshold' ) ?></td>
28+
<td><select name="use_global_threshold"><?php print_enum_string_option_list( 'access_levels', plugin_config_get( 'use_global_threshold' ) ) ?></select></td>
29+
</tr>
30+
31+
<tr <?php echo helper_alternate_class() ?>>
32+
<td class="category"><?php echo plugin_lang_get( 'edit_own_threshold' ) ?></td>
33+
<td><select name="edit_own_threshold"><?php print_enum_string_option_list( 'access_levels', plugin_config_get( 'edit_own_threshold' ) ) ?></select></td>
34+
</tr>
35+
36+
<tr>
37+
<td class="center" colspan="2"><input type="submit" value="<?php echo plugin_lang_get("action_update") ?>"/></td>
38+
</tr>
39+
40+
</table>
41+
</form>
42+
43+
<?php
44+
html_page_bottom();
45+

Snippets/pages/snippet_create.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
access_ensure_global_level(plugin_config_get("edit_global_threshold"));
1111
$user_id = 0;
1212
} else {
13+
access_ensure_global_level(plugin_config_get("edit_own_threshold"));
1314
$user_id = auth_get_current_user_id();
1415
}
1516

Snippets/pages/snippet_list.php

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77

88
if ($global) {
99
access_ensure_global_level(plugin_config_get("edit_global_threshold"));
10+
$admin = access_has_global_level(config_get("manage_plugin_threshold"));
1011
$user_id = 0;
1112
} else {
13+
access_ensure_global_level(plugin_config_get("edit_own_threshold"));
1214
$user_id = auth_get_current_user_id();
1315
}
1416

@@ -27,7 +29,13 @@
2729

2830
<tr>
2931
<td class="form-title" colspan="2"><?php echo plugin_lang_get($global ? "list_global_title" : "list_title") ?></td>
30-
<td class="right"><?php if (!$global) print_account_menu() ?></td>
32+
<td class="right"><?php
33+
if (!$global) {
34+
print_account_menu();
35+
} elseif ($admin) {
36+
print_bracket_link(plugin_page("config_page"), plugin_lang_get("config"));
37+
}
38+
?></td>
3139
</tr>
3240

3341
<tr class="row-category">

Snippets/pages/snippet_list_action.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
access_ensure_global_level(plugin_config_get("edit_global_threshold"));
1212
$user_id = 0;
1313
} else {
14+
access_ensure_global_level(plugin_config_get("edit_own_threshold"));
1415
$user_id = auth_get_current_user_id();
1516
}
1617

0 commit comments

Comments
 (0)