summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2015-06-15 19:00:59 +0200
committerYorhel <git@yorhel.nl>2015-06-15 19:01:31 +0200
commit9b5895c7a6d2dc1cbb7587215bebbbf293a2ab49 (patch)
tree995cddeef6b873dfed3ebe9d92f371abfe8b07de /lib
parenta39054f37df8e69d512c26a76cbc9b20d4561200 (diff)
d7: Replace "top 5 contributors" with "special users" listing
Having a proper and up-to-date list of moderators is an often requested feature.
Diffstat (limited to 'lib')
-rw-r--r--lib/VNDB/DB/Users.pm5
-rw-r--r--lib/VNDB/Handler/Misc.pm14
2 files changed, 13 insertions, 6 deletions
diff --git a/lib/VNDB/DB/Users.pm b/lib/VNDB/DB/Users.pm
index 90a371a8..ec8d707b 100644
--- a/lib/VNDB/DB/Users.pm
+++ b/lib/VNDB/DB/Users.pm
@@ -13,7 +13,7 @@ our @EXPORT = qw|
|;
-# %options->{ username passwd mail session uid ip registered search results page what sort reverse }
+# %options->{ username passwd mail session uid ip registered search results page what sort reverse notperm }
# what: notifycount stats extended prefs hide_list
# sort: username registered votes changes tags
sub dbUserGet {
@@ -50,6 +50,8 @@ sub dbUserGet {
'username ILIKE ?' => "%$o{search}%") : (),
$o{session} ? (
q|s.token = decode(?, 'hex')| => unpack 'H*', $o{session} ) : (),
+ $o{notperm} ? (
+ 'perm & ~(?::smallint) > 0' => $o{notperm} ) : (),
);
my @select = (
@@ -77,6 +79,7 @@ sub dbUserGet {
);
my $order = sprintf {
+ id => 'u.id %s',
username => 'u.username %s',
registered => 'u.registered %s',
votes => 'up.value NULLS FIRST, u.c_votes %s',
diff --git a/lib/VNDB/Handler/Misc.pm b/lib/VNDB/Handler/Misc.pm
index 7505028a..fc82c4f0 100644
--- a/lib/VNDB/Handler/Misc.pm
+++ b/lib/VNDB/Handler/Misc.pm
@@ -315,11 +315,15 @@ sub docpage {
close $F;
$ii;
}e;
- s{^:TOP5CONTRIB:$}{
- my $l = $self->dbUserGet(results => 6, sort => 'changes', reverse => 1);
- '<dl>'.join('', map $_->{id} == 1 ? () :
- sprintf('<dt><a href="/u%d">%s</a></dt><dd>%d</dd>', $_->{id}, $_->{username}, $_->{c_changes}),
- @$l).'</dl>';
+ s{^:MODERATORS:$}{
+ my $l = $self->dbUserGet(results => 100, sort => 'id', notperm => $self->{default_perm}, what => 'extended');
+ my $admin = 0;
+ $admin += $_ for values %{$self->{permissions}};
+ '<dl>'.join('', map {
+ my $u = $_;
+ my $p = $u->{perm} >= $admin ? 'admin' : join ', ', sort map +($u->{perm} &~ $self->{default_perm}) & $self->{permissions}{$_} ? $_ : (), keys %{$self->{permissions}};
+ $p ? sprintf('<dt><a href="/u%d">%s</a></dt><dd>%s</dd>', $_->{id}, $_->{username}, $p) : ()
+ } @$l).'</dl>';
}e;
s{^:SKINCONTRIB:$}{
my %users;