diff --git a/README.markdown b/README.markdown
index 23dec0ee..853a37ee 100644
--- a/README.markdown
+++ b/README.markdown
@@ -100,10 +100,10 @@ permissions like so:
```php
new UserClass("anonymous", "base", [
- "create_comment" => True,
- "edit_image_tag" => True,
- "edit_image_source" => True,
- "create_image_report" => True,
+ Permissions::CREATE_COMMENT => True,
+ Permissions::EDIT_IMAGE_TAG => True,
+ Permissions::EDIT_IMAGE_SOURCE => True,
+ Permissions::CREATE_IMAGE_REPORT => True,
]);
```
@@ -111,12 +111,12 @@ For a moderator class, being a regular user who can delete images and comments:
```php
new UserClass("moderator", "user", [
- "delete_image" => True,
- "delete_comment" => True,
+ Permissions::DELETE_IMAGE => True,
+ Permissions::DELETE_COMMENT => True,
]);
```
-For a list of permissions, see `core/userclass.php`
+For a list of permissions, see `core/permissions.php`
# Development Info
diff --git a/core/imageboard/image.php b/core/imageboard/image.php
index 90ab9e6a..3e2529b8 100644
--- a/core/imageboard/image.php
+++ b/core/imageboard/image.php
@@ -129,7 +129,7 @@ class Image
}
if (SPEED_HAX) {
- if (!$user->can("big_search") and count($tags) > 3) {
+ if (!$user->can(Permissions::BIG_SEARCH) and count($tags) > 3) {
throw new SCoreException("Anonymous users may only search for up to 3 tags at a time");
}
}
diff --git a/core/permissions.php b/core/permissions.php
new file mode 100644
index 00000000..f3ab7c6b
--- /dev/null
+++ b/core/permissions.php
@@ -0,0 +1,67 @@
+ false, # modify web-level settings, eg the config table
- "override_config" => false, # modify sys-level settings, eg shimmie.conf.php
- "big_search" => false, # search for more than 3 tags at once (speed mode only)
+ Permissions::CHANGE_SETTING => false, # modify web-level settings, eg the config table
+ Permissions::OVERRIDE_CONFIG => false, # modify sys-level settings, eg shimmie.conf.php
+ Permissions::BIG_SEARCH => false, # search for more than 3 tags at once (speed mode only)
- "manage_extension_list" => false,
- "manage_alias_list" => false,
- "mass_tag_edit" => false,
+ Permissions::MANAGE_EXTENSION_LIST => false,
+ Permissions::MANAGE_ALIAS_LIST => false,
+ Permissions::MASS_TAG_EDIT => false,
- "view_ip" => false, # view IP addresses associated with things
- "ban_ip" => false,
+ Permissions::VIEW_IP => false, # view IP addresses associated with things
+ Permissions::BAN_IP => false,
- "edit_user_name" => false,
- "edit_user_password" => false,
- "edit_user_info" => false, # email address, etc
- "edit_user_class" => false,
- "delete_user" => false,
+ Permissions::EDIT_USER_NAME => false,
+ Permissions::EDIT_USER_PASSWORD => false,
+ Permissions::EDIT_USER_INFO => false, # email address, etc
+ Permissions::EDIT_USER_CLASS => false,
+ Permissions::DELETE_USER => false,
- "create_comment" => false,
- "delete_comment" => false,
- "bypass_comment_checks" => false, # spam etc
+ Permissions::CREATE_COMMENT => false,
+ Permissions::DELETE_COMMENT => false,
+ Permissions::BYPASS_COMMENT_CHECKS => false, # spam etc
- "replace_image" => false,
- "create_image" => false,
- "edit_image_tag" => false,
- "edit_image_source" => false,
- "edit_image_owner" => false,
- "edit_image_lock" => false,
- "bulk_edit_image_tag" => false,
- "bulk_edit_image_source" => false,
- "delete_image" => false,
+ Permissions::REPLACE_IMAGE => false,
+ Permissions::CREATE_IMAGE => false,
+ Permissions::EDIT_IMAGE_TAG => false,
+ Permissions::EDIT_IMAGE_SOURCE => false,
+ Permissions::EDIT_IMAGE_OWNER => false,
+ Permissions::EDIT_IMAGE_LOCK => false,
+ Permissions::BULK_EDIT_IMAGE_TAG => false,
+ Permissions::BULK_EDIT_IMAGE_SOURCE => false,
+ Permissions::DELETE_IMAGE => false,
- "ban_image" => false,
+ Permissions::BAN_IMAGE => false,
- "view_eventlog" => false,
- "ignore_downtime" => false,
+ Permissions::VIEW_EVENTLOG => false,
+ Permissions::IGNORE_DOWNTIME => false,
- "create_image_report" => false,
- "view_image_report" => false, # deal with reported images
+ Permissions::CREATE_IMAGE_REPORT => false,
+ Permissions::VIEW_IMAGE_REPORT => false, # deal with reported images
- "edit_wiki_page" => false,
- "delete_wiki_page" => false,
+ Permissions::EDIT_WIKI_PAGE => false,
+ Permissions::DELETE_WIKI_PAGE => false,
- "manage_blocks" => false,
+ Permissions::MANAGE_BLOCKS => false,
- "manage_admintools" => false,
+ Permissions::MANAGE_ADMINTOOLS => false,
- "view_other_pms" => false,
- "edit_feature" => false,
- "bulk_edit_vote" => false,
- "edit_other_vote" => false,
- "view_sysinfo" => false,
+ Permissions::VIEW_OTHER_PMS => false,
+ Permissions::EDIT_FEATURE => false,
+ Permissions::BULK_EDIT_VOTE => false,
+ Permissions::EDIT_OTHER_VOTE => false,
+ Permissions::VIEW_SYSINTO => false,
- "hellbanned" => false,
- "view_hellbanned" => false,
+ Permissions::HELLBANNED => false,
+ Permissions::VIEW_HELLBANNED => false,
- "protected" => false, # only admins can modify protected users (stops a moderator changing an admin's password)
+ Permissions::PROTECTED => false, # only admins can modify protected users (stops a moderator changing an admin's password)
- "edit_image_rating" => false,
- "bulk_edit_image_rating" => false,
+ Permissions::EDIT_IMAGE_RATING => false,
+ Permissions::BULK_EDIT_IMAGE_RATING => false,
- "view_trash" => false,
- "perform_bulk_actions" => false,
+ Permissions::VIEW_TRASH => false,
]);
new UserClass("anonymous", "base", [
]);
new UserClass("user", "base", [
- "big_search" => true,
- "create_image" => true,
- "create_comment" => true,
- "edit_image_tag" => true,
- "edit_image_source" => true,
- "create_image_report" => true,
- "edit_image_rating" => true,
+ Permissions::BIG_SEARCH => true,
+ Permissions::CREATE_IMAGE => true,
+ Permissions::CREATE_COMMENT => true,
+ Permissions::EDIT_IMAGE_TAG => true,
+ Permissions::EDIT_IMAGE_SOURCE => true,
+ Permissions::CREATE_IMAGE_REPORT => true,
+ Permissions::EDIT_IMAGE_RATING => true,
]);
new UserClass("admin", "base", [
- "change_setting" => true,
- "override_config" => true,
- "big_search" => true,
- "edit_image_lock" => true,
- "view_ip" => true,
- "ban_ip" => true,
- "edit_user_name" => true,
- "edit_user_password" => true,
- "edit_user_info" => true,
- "edit_user_class" => true,
- "delete_user" => true,
- "create_image" => true,
- "delete_image" => true,
- "ban_image" => true,
- "create_comment" => true,
- "delete_comment" => true,
- "bypass_comment_checks" => true,
- "replace_image" => true,
- "manage_extension_list" => true,
- "manage_alias_list" => true,
- "edit_image_tag" => true,
- "edit_image_source" => true,
- "edit_image_owner" => true,
- "bulk_edit_image_tag" => true,
- "bulk_edit_image_source" => true,
- "mass_tag_edit" => true,
- "create_image_report" => true,
- "view_image_report" => true,
- "edit_wiki_page" => true,
- "delete_wiki_page" => true,
- "view_eventlog" => true,
- "manage_blocks" => true,
- "manage_admintools" => true,
- "ignore_downtime" => true,
- "view_other_pms" => true,
- "edit_feature" => true,
- "bulk_edit_vote" => true,
- "edit_other_vote" => true,
- "view_sysinfo" => true,
- "view_hellbanned" => true,
- "protected" => true,
- "edit_image_rating" => true,
- "bulk_edit_image_rating" => true,
- "view_trash" => true,
- "perform_bulk_actions" => true,
+ Permissions::CHANGE_SETTING => true,
+ Permissions::OVERRIDE_CONFIG => true,
+ Permissions::BIG_SEARCH => true,
+ Permissions::EDIT_IMAGE_LOCK => true,
+ Permissions::VIEW_IP => true,
+ Permissions::BAN_IP => true,
+ Permissions::EDIT_USER_NAME => true,
+ Permissions::EDIT_USER_PASSWORD => true,
+ Permissions::EDIT_USER_INFO => true,
+ Permissions::EDIT_USER_CLASS => true,
+ Permissions::DELETE_USER => true,
+ Permissions::CREATE_IMAGE => true,
+ Permissions::DELETE_IMAGE => true,
+ Permissions::BAN_IMAGE => true,
+ Permissions::CREATE_COMMENT => true,
+ Permissions::DELETE_COMMENT => true,
+ Permissions::BYPASS_COMMENT_CHECKS => true,
+ Permissions::REPLACE_IMAGE => true,
+ Permissions::MANAGE_EXTENSION_LIST => true,
+ Permissions::MANAGE_ALIAS_LIST => true,
+ Permissions::EDIT_IMAGE_TAG => true,
+ Permissions::EDIT_IMAGE_SOURCE => true,
+ Permissions::EDIT_IMAGE_OWNER => true,
+ Permissions::BULK_EDIT_IMAGE_TAG => true,
+ Permissions::BULK_EDIT_IMAGE_SOURCE => true,
+ Permissions::MASS_TAG_EDIT => true,
+ Permissions::CREATE_IMAGE_REPORT => true,
+ Permissions::VIEW_IMAGE_REPORT => true,
+ Permissions::EDIT_WIKI_PAGE => true,
+ Permissions::DELETE_WIKI_PAGE => true,
+ Permissions::VIEW_EVENTLOG => true,
+ Permissions::MANAGE_BLOCKS => true,
+ Permissions::MANAGE_ADMINTOOLS => true,
+ Permissions::IGNORE_DOWNTIME => true,
+ Permissions::VIEW_OTHER_PMS => true,
+ Permissions::EDIT_FEATURE => true,
+ Permissions::BULK_EDIT_VOTE => true,
+ Permissions::EDIT_OTHER_VOTE => true,
+ Permissions::VIEW_SYSINTO => true,
+ Permissions::VIEW_HELLBANNED => true,
+ Permissions::PROTECTED => true,
+ Permissions::EDIT_IMAGE_RATING => true,
+ Permissions::BULK_EDIT_IMAGE_RATING => true,
+ Permissions::VIEW_TRASH => true,
+
]);
new UserClass("hellbanned", "user", [
- "hellbanned" => true,
+ Permissions::HELLBANNED => true,
]);
@include_once "data/config/user-classes.conf.php";
diff --git a/core/util.php b/core/util.php
index 91e467ff..aa310c45 100644
--- a/core/util.php
+++ b/core/util.php
@@ -588,8 +588,8 @@ function show_ip(string $ip, string $ban_reason): string
global $user;
$u_reason = url_escape($ban_reason);
$u_end = url_escape("+1 week");
- $ban = $user->can("ban_ip") ? ", Ban" : "";
- $ip = $user->can("view_ip") ? $ip.$ban : "";
+ $ban = $user->can(Permissions::BAN_IP) ? ", Ban" : "";
+ $ip = $user->can(Permissions::VIEW_IP) ? $ip.$ban : "";
return $ip;
}
diff --git a/ext/admin/main.php b/ext/admin/main.php
index 4ebae35e..eef919d7 100644
--- a/ext/admin/main.php
+++ b/ext/admin/main.php
@@ -54,7 +54,7 @@ class AdminPage extends Extension
global $page, $user;
if ($event->page_matches("admin")) {
- if (!$user->can("manage_admintools")) {
+ if (!$user->can(Permissions::MANAGE_ADMINTOOLS)) {
$this->theme->display_permission_denied();
} else {
if ($event->count_args() == 0) {
@@ -111,7 +111,7 @@ class AdminPage extends Extension
public function onUserBlockBuilding(UserBlockBuildingEvent $event)
{
global $user;
- if ($user->can("manage_admintools")) {
+ if ($user->can(Permissions::MANAGE_ADMINTOOLS)) {
$event->add_link("Board Admin", make_link("admin"));
}
}
diff --git a/ext/alias_editor/main.php b/ext/alias_editor/main.php
index 07f9f289..5e8e4c11 100644
--- a/ext/alias_editor/main.php
+++ b/ext/alias_editor/main.php
@@ -36,7 +36,7 @@ class AliasEditor extends Extension
if ($event->page_matches("alias")) {
if ($event->get_arg(0) == "add") {
- if ($user->can("manage_alias_list")) {
+ if ($user->can(Permissions::MANAGE_ALIAS_LIST))) {
if (isset($_POST['oldtag']) && isset($_POST['newtag'])) {
try {
$aae = new AddAliasEvent($_POST['oldtag'], $_POST['newtag']);
@@ -49,7 +49,7 @@ class AliasEditor extends Extension
}
}
} elseif ($event->get_arg(0) == "remove") {
- if ($user->can("manage_alias_list")) {
+ if ($user->can(Permissions::MANAGE_ALIAS_LIST))) {
if (isset($_POST['oldtag'])) {
$database->execute("DELETE FROM aliases WHERE oldtag=:oldtag", ["oldtag" => $_POST['oldtag']]);
log_info("alias_editor", "Deleted alias for ".$_POST['oldtag'], "Deleted alias");
@@ -85,7 +85,7 @@ class AliasEditor extends Extension
$page->set_filename("aliases.csv");
$page->set_data($this->get_alias_csv($database));
} elseif ($event->get_arg(0) == "import") {
- if ($user->can("manage_alias_list")) {
+ if ($user->can(Permissions::MANAGE_ALIAS_LIST)) {
if (count($_FILES) > 0) {
$tmp = $_FILES['alias_file']['tmp_name'];
$contents = file_get_contents($tmp);
@@ -120,7 +120,7 @@ class AliasEditor extends Extension
public function onUserBlockBuilding(UserBlockBuildingEvent $event)
{
global $user;
- if ($user->can("manage_alias_list")) {
+ if ($user->can(Permissions::MANAGE_ALIAS_LIST)) {
$event->add_link("Alias Editor", make_link("alias/list"));
}
}
diff --git a/ext/alias_editor/theme.php b/ext/alias_editor/theme.php
index ec12348e..732139d4 100644
--- a/ext/alias_editor/theme.php
+++ b/ext/alias_editor/theme.php
@@ -11,7 +11,7 @@ class AliasEditorTheme extends Themelet
{
global $page, $user;
- $can_manage = $user->can("manage_alias_list");
+ $can_manage = $user->can(Permissions::MANAGE_ALIAS_LIST);
if ($can_manage) {
$h_action = "
Action | ";
$h_add = "
diff --git a/ext/ban_words/main.php b/ext/ban_words/main.php
index c668e514..5e0761b3 100644
--- a/ext/ban_words/main.php
+++ b/ext/ban_words/main.php
@@ -58,7 +58,7 @@ xanax
public function onCommentPosting(CommentPostingEvent $event)
{
global $user;
- if (!$user->can("bypass_comment_checks")) {
+ if (!$user->can(Permissions::BYPASS_COMMENT_CHECKS)) {
$this->test_text($event->comment, new CommentPostingException("Comment contains banned terms"));
}
}
diff --git a/ext/blocks/main.php b/ext/blocks/main.php
index cb9c375c..b444b03a 100644
--- a/ext/blocks/main.php
+++ b/ext/blocks/main.php
@@ -29,7 +29,7 @@ class Blocks extends Extension
public function onUserBlockBuilding(UserBlockBuildingEvent $event)
{
global $user;
- if ($user->can("manage_blocks")) {
+ if ($user->can(Permissions::MANAGE_BLOCKS)) {
$event->add_link("Blocks Editor", make_link("blocks/list"));
}
}
@@ -52,7 +52,7 @@ class Blocks extends Extension
}
}
- if ($event->page_matches("blocks") && $user->can("manage_blocks")) {
+ if ($event->page_matches("blocks") && $user->can(Permissions::MANAGE_BLOCKS)) {
if ($event->get_arg(0) == "add") {
if ($user->check_auth_token()) {
$database->execute("
diff --git a/ext/bulk_actions/main.php b/ext/bulk_actions/main.php
index d8dde6d9..67f652e2 100644
--- a/ext/bulk_actions/main.php
+++ b/ext/bulk_actions/main.php
@@ -85,11 +85,11 @@ class BulkActions extends Extension
{
global $user;
- if ($user->can("delete_image")) {
+ if ($user->can(Permissions::DELETE_IMAGE)) {
$event->add_action("bulk_delete", "(D)elete", "d", "Delete selected images?", $this->theme->render_ban_reason_input(), 10);
}
- if ($user->can("bulk_edit_image_tag")) {
+ if ($user->can(Permissions::BULK_EDIT_IMAGE_TAG)) {
$event->add_action(
"bulk_tag",
@@ -100,7 +100,7 @@ class BulkActions extends Extension
10);
}
- if ($user->can("bulk_edit_image_source")) {
+ if ($user->can(Permissions::BULK_EDIT_IMAGE_SOURCE)) {
$event->add_action("bulk_source", "Set (S)ource", "s","", $this->theme->render_source_input(), 10);
}
}
@@ -111,7 +111,7 @@ class BulkActions extends Extension
switch ($event->action) {
case "bulk_delete":
- if ($user->can("delete_image")) {
+ if ($user->can(Permissions::DELETE_IMAGE)) {
$i = $this->delete_items($event->items);
flash_message("Deleted $i items");
}
@@ -120,7 +120,7 @@ class BulkActions extends Extension
if (!isset($_POST['bulk_tags'])) {
return;
}
- if ($user->can("bulk_edit_image_tag")) {
+ if ($user->can(Permissions::BULK_EDIT_IMAGE_TAG)) {
$tags = $_POST['bulk_tags'];
$replace = false;
if (isset($_POST['bulk_tags_replace']) && $_POST['bulk_tags_replace'] == "true") {
@@ -135,7 +135,7 @@ class BulkActions extends Extension
if (!isset($_POST['bulk_source'])) {
return;
}
- if ($user->can("bulk_edit_image_source")) {
+ if ($user->can(Permissions::BULK_EDIT_IMAGE_SOURCE)) {
$source = $_POST['bulk_source'];
$i = $this->set_source($event->items, $source);
flash_message("Set source for $i items");
diff --git a/ext/comment/main.php b/ext/comment/main.php
index 1dfdc03b..2540ef4a 100644
--- a/ext/comment/main.php
+++ b/ext/comment/main.php
@@ -189,7 +189,7 @@ class CommentList extends Extension
private function onPageRequest_delete(PageRequestEvent $event)
{
global $user, $page;
- if ($user->can("delete_comment")) {
+ if ($user->can(Permissions::DELETE_COMMENT)) {
// FIXME: post, not args
if ($event->count_args() === 3) {
send_event(new CommentDeletionEvent($event->get_arg(1)));
@@ -209,7 +209,7 @@ class CommentList extends Extension
private function onPageRequest_bulk_delete()
{
global $user, $database, $page;
- if ($user->can("delete_comment") && !empty($_POST["ip"])) {
+ if ($user->can(Permissions::DELETE_COMMENT) && !empty($_POST["ip"])) {
$ip = $_POST['ip'];
$comment_ids = $database->get_col("
@@ -288,7 +288,7 @@ class CommentList extends Extension
$this->theme->display_image_comments(
$event->image,
$this->get_comments($event->image->id),
- $user->can("create_comment")
+ $user->can(Permissions::CREATE_COMMENT)
);
}
@@ -399,7 +399,7 @@ class CommentList extends Extension
}
}
- $this->theme->display_comment_list($images, $current_page, $total_pages, $user->can("create_comment"));
+ $this->theme->display_comment_list($images, $current_page, $total_pages, $user->can(Permissions::CREATE_COMMENT));
}
// }}}
@@ -574,7 +574,7 @@ class CommentList extends Extension
{
global $database, $page;
- if (!$user->can("bypass_comment_checks")) {
+ if (!$user->can(Permissions::BYPASS_COMMENT_CHECKS)) {
// will raise an exception if anything is wrong
$this->comment_checks($image_id, $user, $comment);
}
@@ -600,7 +600,7 @@ class CommentList extends Extension
global $config, $page;
// basic sanity checks
- if (!$user->can("create_comment")) {
+ if (!$user->can(Permissions::CREATE_COMMENT)) {
throw new CommentPostingException("Anonymous posting has been disabled");
} elseif (is_null(Image::by_id($image_id))) {
throw new CommentPostingException("The image does not exist");
diff --git a/ext/comment/theme.php b/ext/comment/theme.php
index a17131af..1bdc70cb 100644
--- a/ext/comment/theme.php
+++ b/ext/comment/theme.php
@@ -218,9 +218,9 @@ class CommentListTheme extends Themelet
if (!array_key_exists($comment->poster_ip, $this->anon_map)) {
$this->anon_map[$comment->poster_ip] = $this->anon_id;
}
- #if($user->can("view_ip")) {
+ #if($user->can(UserAbilities::VIEW_IP)) {
#$style = " style='color: ".$this->get_anon_colour($comment->poster_ip).";'";
- if ($user->can("view_ip") || $config->get_bool("comment_samefags_public", false)) {
+ if ($user->can(Permissions::VIEW_IP) || $config->get_bool("comment_samefags_public", false)) {
if ($this->anon_map[$comment->poster_ip] != $this->anon_id) {
$anoncode2 = '('.$this->anon_map[$comment->poster_ip].')';
}
@@ -248,9 +248,9 @@ class CommentListTheme extends Themelet
$h_avatar = "
";
}
$h_reply = " - Reply";
- $h_ip = $user->can("view_ip") ? "
".show_ip($comment->poster_ip, "Comment posted {$comment->posted}") : "";
+ $h_ip = $user->can(Permissions::VIEW_IP) ? "
".show_ip($comment->poster_ip, "Comment posted {$comment->posted}") : "";
$h_del = "";
- if ($user->can("delete_comment")) {
+ if ($user->can(Permissions::DELETE_COMMENT)) {
$comment_preview = substr(html_unescape($tfe->stripped), 0, 50);
$j_delete_confirm_message = json_encode("Delete comment by {$comment->owner_name}:\n$comment_preview");
$h_delete_script = html_escape("return confirm($j_delete_confirm_message);");
diff --git a/ext/danbooru_api/main.php b/ext/danbooru_api/main.php
index ce13295b..cb55766f 100644
--- a/ext/danbooru_api/main.php
+++ b/ext/danbooru_api/main.php
@@ -297,7 +297,7 @@ class DanbooruApi extends Extension
// Now we check if a file was uploaded or a url was provided to transload
// Much of this code is borrowed from /ext/upload
- if (!$user->can("create_image")) {
+ if (!$user->can(Permissions::CREATE_IMAGE)) {
$page->set_code(409);
$page->add_http_header("X-Danbooru-Errors: authentication error");
return;
diff --git a/ext/downtime/main.php b/ext/downtime/main.php
index 891d87c3..97f8682e 100644
--- a/ext/downtime/main.php
+++ b/ext/downtime/main.php
@@ -32,7 +32,7 @@ class Downtime extends Extension
global $config, $page, $user;
if ($config->get_bool("downtime")) {
- if (!$user->can("ignore_downtime") && !$this->is_safe_page($event)) {
+ if (!$user->can(Permissions::IGNORE_DOWNTIME) && !$this->is_safe_page($event)) {
$msg = $config->get_string("downtime_message");
$this->theme->display_message($msg);
if (!defined("UNITTEST")) { // hax D:
diff --git a/ext/et/main.php b/ext/et/main.php
index e3e9b9c7..e344710d 100644
--- a/ext/et/main.php
+++ b/ext/et/main.php
@@ -18,7 +18,7 @@ class ET extends Extension
{
global $user;
if ($event->page_matches("system_info")) {
- if ($user->can("view_sysinfo")) {
+ if ($user->can(Permissions::VIEW_SYSINTO)) {
$this->theme->display_info_page($this->get_info());
}
}
@@ -27,7 +27,7 @@ class ET extends Extension
public function onUserBlockBuilding(UserBlockBuildingEvent $event)
{
global $user;
- if ($user->can("view_sysinfo")) {
+ if ($user->can(Permissions::VIEW_SYSINTO)) {
$event->add_link("System Info", make_link("system_info"));
}
}
diff --git a/ext/ext_manager/main.php b/ext/ext_manager/main.php
index 03ee3bb1..e024f286 100644
--- a/ext/ext_manager/main.php
+++ b/ext/ext_manager/main.php
@@ -118,7 +118,7 @@ class ExtManager extends Extension
{
global $page, $user;
if ($event->page_matches("ext_manager")) {
- if ($user->can("manage_extension_list")) {
+ if ($user->can(Permissions::MANAGE_EXTENSION_LIST)) {
if ($event->get_arg(0) == "set" && $user->check_auth_token()) {
if (is_writable("data/config")) {
$this->set_things($_POST);
@@ -166,7 +166,7 @@ class ExtManager extends Extension
public function onUserBlockBuilding(UserBlockBuildingEvent $event)
{
global $user;
- if ($user->can("manage_extension_list")) {
+ if ($user->can(Permissions::MANAGE_EXTENSION_LIST)) {
$event->add_link("Extension Manager", make_link("ext_manager"));
} else {
$event->add_link("Help", make_link("ext_doc"));
diff --git a/ext/featured/main.php b/ext/featured/main.php
index 4b713424..ae5946dd 100644
--- a/ext/featured/main.php
+++ b/ext/featured/main.php
@@ -32,7 +32,7 @@ class Featured extends Extension
global $config, $page, $user;
if ($event->page_matches("featured_image")) {
if ($event->get_arg(0) == "set" && $user->check_auth_token()) {
- if ($user->can("edit_feature") && isset($_POST['image_id'])) {
+ if ($user->can(Permissions::EDIT_FEATURE) && isset($_POST['image_id'])) {
$id = int_escape($_POST['image_id']);
if ($id > 0) {
$config->set_int("featured_id", $id);
@@ -86,7 +86,7 @@ class Featured extends Extension
public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event)
{
global $user;
- if ($user->can("edit_feature")) {
+ if ($user->can(Permissions::EDIT_FEATURE)) {
$event->add_part($this->theme->get_buttons_html($event->image->id));
}
}
diff --git a/ext/hellban/main.php b/ext/hellban/main.php
index 42bfec27..541f7620 100644
--- a/ext/hellban/main.php
+++ b/ext/hellban/main.php
@@ -9,9 +9,9 @@ class HellBan extends Extension
{
global $page, $user;
- if ($user->can("hellbanned")) {
+ if ($user->can(Permissions::HELLBANNED)) {
$s = "";
- } elseif ($user->can("view_hellbanned")) {
+ } elseif ($user->can(Permissions::VIEW_HELLBANNED)) {
$s = "DIV.hb, TR.hb TD {border: 1px solid red !important;}";
} else {
$s = ".hb {display: none !important;}";
diff --git a/ext/image/main.php b/ext/image/main.php
index 099bdd65..9969c3e8 100644
--- a/ext/image/main.php
+++ b/ext/image/main.php
@@ -73,7 +73,7 @@ class ImageIO extends Extension
{
if ($event->page_matches("image/delete")) {
global $page, $user;
- if ($user->can("delete_image") && isset($_POST['image_id']) && $user->check_auth_token()) {
+ if ($user->can(Permissions::DELETE_IMAGE) && isset($_POST['image_id']) && $user->check_auth_token()) {
$image = Image::by_id($_POST['image_id']);
if ($image) {
send_event(new ImageDeletionEvent($image));
@@ -87,7 +87,7 @@ class ImageIO extends Extension
}
} elseif ($event->page_matches("image/replace")) {
global $page, $user;
- if ($user->can("replace_image") && isset($_POST['image_id']) && $user->check_auth_token()) {
+ if ($user->can(Permissions::REPLACE_IMAGE) && isset($_POST['image_id']) && $user->check_auth_token()) {
$image = Image::by_id($_POST['image_id']);
if ($image) {
$page->set_mode(PageMode::REDIRECT);
@@ -110,11 +110,11 @@ class ImageIO extends Extension
{
global $user;
- if ($user->can("delete_image")) {
+ if ($user->can(Permissions::DELETE_IMAGE)) {
$event->add_part($this->theme->get_deleter_html($event->image->id));
}
/* In the future, could perhaps allow users to replace images that they own as well... */
- if ($user->can("replace_image")) {
+ if ($user->can(Permissions::REPLACE_IMAGE)) {
$event->add_part($this->theme->get_replace_html($event->image->id));
}
}
diff --git a/ext/image_hash_ban/main.php b/ext/image_hash_ban/main.php
index c2e3ec3a..67298a89 100644
--- a/ext/image_hash_ban/main.php
+++ b/ext/image_hash_ban/main.php
@@ -64,7 +64,7 @@ class ImageBan extends Extension
global $database, $page, $user;
if ($event->page_matches("image_hash_ban")) {
- if ($user->can("ban_image")) {
+ if ($user->can(Permissions::BAN_IMAGE)) {
if ($event->get_arg(0) == "add") {
$image = isset($_POST['image_id']) ? Image::by_id(int_escape($_POST['image_id'])) : null;
$hash = isset($_POST["hash"]) ? $_POST["hash"] : $image->hash;
@@ -106,7 +106,7 @@ class ImageBan extends Extension
public function onUserBlockBuilding(UserBlockBuildingEvent $event)
{
global $user;
- if ($user->can("ban_image")) {
+ if ($user->can(Permissions::BAN_IMAGE)) {
$event->add_link("Image Bans", make_link("image_hash_ban/list/1"));
}
}
@@ -130,7 +130,7 @@ class ImageBan extends Extension
public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event)
{
global $user;
- if ($user->can("ban_image")) {
+ if ($user->can(Permissions::BAN_IMAGE)) {
$event->add_part($this->theme->get_buttons_html($event->image));
}
}
diff --git a/ext/ipban/main.php b/ext/ipban/main.php
index d6feb092..bfefb813 100644
--- a/ext/ipban/main.php
+++ b/ext/ipban/main.php
@@ -66,7 +66,7 @@ class IPBan extends Extension
{
if ($event->page_matches("ip_ban")) {
global $page, $user;
- if ($user->can("ban_ip")) {
+ if ($user->can(Permissions::BAN_IP)) {
if ($event->get_arg(0) == "add" && $user->check_auth_token()) {
if (isset($_POST['ip']) && isset($_POST['reason']) && isset($_POST['end'])) {
if (empty($_POST['end'])) {
@@ -108,7 +108,7 @@ class IPBan extends Extension
public function onUserBlockBuilding(UserBlockBuildingEvent $event)
{
global $user;
- if ($user->can("ban_ip")) {
+ if ($user->can(Permissions::BAN_IP)) {
$event->add_link("IP Bans", make_link("ip_ban/list"));
}
}
diff --git a/ext/log_db/main.php b/ext/log_db/main.php
index 2f1d761a..a5dd1d7f 100644
--- a/ext/log_db/main.php
+++ b/ext/log_db/main.php
@@ -48,7 +48,7 @@ class LogDatabase extends Extension
{
global $database, $user;
if ($event->page_matches("log/view")) {
- if ($user->can("view_eventlog")) {
+ if ($user->can(Permissions::VIEW_EVENTLOG)) {
$wheres = [];
$args = [];
$page_num = int_escape($event->get_arg(0));
@@ -123,7 +123,7 @@ class LogDatabase extends Extension
public function onUserBlockBuilding(UserBlockBuildingEvent $event)
{
global $user;
- if ($user->can("view_eventlog")) {
+ if ($user->can(Permissions::VIEW_EVENTLOG)) {
$event->add_link("Event Log", make_link("log/view"));
}
}
diff --git a/ext/media/main.php b/ext/media/main.php
index a4fba3ba..acce17ab 100644
--- a/ext/media/main.php
+++ b/ext/media/main.php
@@ -316,7 +316,7 @@ class Media extends Extension
public function onImageAdminBlockBuilding(ImageAdminBlockBuildingEvent $event)
{
global $user;
- if ($user->can("delete_image")) {
+ if ($user->can(Permissions::DELETE_IMAGE)) {
$event->add_part($this->theme->get_buttons_html($event->image->id));
}
}
diff --git a/ext/not_a_tag/main.php b/ext/not_a_tag/main.php
index 18486e9c..29f31e75 100644
--- a/ext/not_a_tag/main.php
+++ b/ext/not_a_tag/main.php
@@ -61,7 +61,7 @@ class NotATag extends Extension
public function onUserBlockBuilding(UserBlockBuildingEvent $event)
{
global $user;
- if ($user->can("ban_image")) {
+ if ($user->can(Permissions::BAN_IMAGE)) {
$event->add_link("UnTags", make_link("untag/list/1"));
}
}
@@ -71,7 +71,7 @@ class NotATag extends Extension
global $database, $page, $user;
if ($event->page_matches("untag")) {
- if ($user->can("ban_image")) {
+ if ($user->can(Permissions::BAN_IMAGE)) {
if ($event->get_arg(0) == "add") {
$tag = $_POST["tag"];
$redirect = isset($_POST['redirect']) ? $_POST['redirect'] : "DNP";
diff --git a/ext/numeric_score/main.php b/ext/numeric_score/main.php
index 5275dfa7..446c5553 100644
--- a/ext/numeric_score/main.php
+++ b/ext/numeric_score/main.php
@@ -45,7 +45,7 @@ class NumericScore extends Extension
public function onUserPageBuilding(UserPageBuildingEvent $event)
{
global $user;
- if ($user->can("edit_other_vote")) {
+ if ($user->can(Permissions::EDIT_OTHER_VOTE)) {
$this->theme->get_nuller($event->display_user);
}
@@ -98,7 +98,7 @@ class NumericScore extends Extension
$page->set_redirect(make_link("post/view/$image_id"));
}
} elseif ($event->page_matches("numeric_score/remove_votes_on") && $user->check_auth_token()) {
- if ($user->can("edit_other_vote")) {
+ if ($user->can(Permissions::EDIT_OTHER_VOTE)) {
$image_id = int_escape($_POST['image_id']);
$database->execute(
"DELETE FROM numeric_score_votes WHERE image_id=?",
@@ -112,7 +112,7 @@ class NumericScore extends Extension
$page->set_redirect(make_link("post/view/$image_id"));
}
} elseif ($event->page_matches("numeric_score/remove_votes_by") && $user->check_auth_token()) {
- if ($user->can("edit_other_vote")) {
+ if ($user->can(Permissions::EDIT_OTHER_VOTE)) {
$this->delete_votes_by(int_escape($_POST['user_id']));
$page->set_mode(PageMode::REDIRECT);
$page->set_redirect(make_link());
diff --git a/ext/numeric_score/theme.php b/ext/numeric_score/theme.php
index c2dc31c7..1852548c 100644
--- a/ext/numeric_score/theme.php
+++ b/ext/numeric_score/theme.php
@@ -32,7 +32,7 @@ class NumericScoreTheme extends Themelet
";
- if ($user->can("edit_other_vote")) {
+ if ($user->can(Permissions::EDIT_OTHER_VOTE)) {
$html .= "