summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2010-12-23 12:51:35 +0100
committerYorhel <git@yorhel.nl>2010-12-23 12:54:44 +0100
commit6ff1efe0d07e24e9fb2db199c308c6cbed51e578 (patch)
tree510ad533838b4236ac9d3a17b9ac4c07d1790f04 /lib
parent951568c87b1a1ad6fcb73928608f76b3470fd817 (diff)
Converted the show_list pref. to users_prefs and inverted the value
In the users_prefs table, the default value should evaluate to 'false' in Perl, so show_list had to be inverted to hide_list.
Diffstat (limited to 'lib')
-rw-r--r--lib/VNDB/DB/ULists.pm2
-rw-r--r--lib/VNDB/DB/Users.pm12
-rw-r--r--lib/VNDB/Handler/Discussions.pm2
-rw-r--r--lib/VNDB/Handler/Misc.pm2
-rw-r--r--lib/VNDB/Handler/ULists.pm11
-rw-r--r--lib/VNDB/Handler/Users.pm31
-rw-r--r--lib/VNDB/Util/CommonHTML.pm2
7 files changed, 33 insertions, 29 deletions
diff --git a/lib/VNDB/DB/ULists.pm b/lib/VNDB/DB/ULists.pm
index a1f02786..e6b6419a 100644
--- a/lib/VNDB/DB/ULists.pm
+++ b/lib/VNDB/DB/ULists.pm
@@ -188,7 +188,7 @@ sub dbVoteGet {
my %where = (
$o{uid} ? ( 'n.uid = ?' => $o{uid} ) : (),
$o{vid} ? ( 'n.vid = ?' => $o{vid} ) : (),
- $o{hide} ? ( 'u.show_list = TRUE' => 1 ) : (),
+ $o{hide} ? ( 'NOT EXISTS(SELECT 1 FROM users_prefs WHERE uid = n.uid AND key = \'hide_list\')' => 1 ) : (),
$o{hide_ign} ? ( '(NOT u.ign_votes OR u.id = ?)' => $self->authInfo->{id}||0 ) : (),
$o{vn_char} ? ( 'LOWER(SUBSTR(vr.title, 1, 1)) = ?' => $o{vn_char} ) : (),
defined $o{vn_char} && !$o{vn_char} ? (
diff --git a/lib/VNDB/DB/Users.pm b/lib/VNDB/DB/Users.pm
index 86249f44..48e8d7ff 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 }
-# what: notifycount stats extended prefs
+# what: notifycount stats extended prefs hide_list
# sort: username registered votes changes tags
sub dbUserGet {
my $s = shift;
@@ -21,6 +21,7 @@ sub dbUserGet {
page => 1,
results => 10,
what => '',
+ sort => '',
@_
);
@@ -51,12 +52,13 @@ sub dbUserGet {
);
my @select = (
- qw|id username c_votes c_changes show_list c_tags|,
+ qw|id username c_votes c_changes c_tags|,
q|extract('epoch' from registered) as registered|,
$o{what} =~ /extended/ ? (
qw|mail rank salt ign_votes notify_dbedit notify_announce|,
q|encode(passwd, 'hex') AS passwd|
) : (),
+ $o{what} =~ /hide_list/ ? 'up.value AS hide_list' : (),
$o{what} =~ /notifycount/ ?
'(SELECT COUNT(*) FROM notifications WHERE uid = u.id AND read IS NULL) AS notifycount' : (),
$o{what} =~ /stats/ ? (
@@ -72,12 +74,14 @@ sub dbUserGet {
my @join = (
$o{session} ? 'JOIN sessions s ON s.uid = u.id' : (),
+ $o{what} =~ /hide_list/ || $o{sort} eq 'votes' ?
+ "LEFT JOIN users_prefs up ON up.uid = u.id AND up.key = 'hide_list'" : (),
);
my $order = sprintf {
username => 'u.username %s',
registered => 'u.registered %s',
- votes => 'NOT u.show_list, u.c_votes %s',
+ votes => 'up.value NULLS FIRST, u.c_votes %s',
changes => 'u.c_changes %s',
tags => 'u.c_tags %s',
}->{ $o{sort}||'username' }, $o{reverse} ? 'DESC' : 'ASC';
@@ -114,7 +118,7 @@ sub dbUserEdit {
my %h;
defined $o{$_} && ($h{$_.' = ?'} = $o{$_})
- for (qw| username mail rank show_list salt ign_votes notify_dbedit notify_announce |);
+ for (qw| username mail rank salt ign_votes notify_dbedit notify_announce |);
$h{'passwd = decode(?, \'hex\')'} = $o{passwd}
if defined $o{passwd};
diff --git a/lib/VNDB/Handler/Discussions.pm b/lib/VNDB/Handler/Discussions.pm
index 7c0160de..0b5daa6c 100644
--- a/lib/VNDB/Handler/Discussions.pm
+++ b/lib/VNDB/Handler/Discussions.pm
@@ -278,7 +278,7 @@ sub board {
return 404 if $f->{_err};
my $obj = !$iid ? undef :
- $type eq 'u' ? $self->dbUserGet(uid => $iid)->[0] :
+ $type eq 'u' ? $self->dbUserGet(uid => $iid, what => 'hide_list')->[0] :
$type eq 'p' ? $self->dbProducerGet(id => $iid)->[0] :
$self->dbVNGet(id => $iid)->[0];
return 404 if $iid && !$obj;
diff --git a/lib/VNDB/Handler/Misc.pm b/lib/VNDB/Handler/Misc.pm
index 88e08f68..4e4e5479 100644
--- a/lib/VNDB/Handler/Misc.pm
+++ b/lib/VNDB/Handler/Misc.pm
@@ -197,7 +197,7 @@ sub history {
return 404 if $f->{_err};
# get item object and title
- my $obj = $type eq 'u' ? $self->dbUserGet(uid => $id)->[0] :
+ my $obj = $type eq 'u' ? $self->dbUserGet(uid => $id, what => 'hide_list')->[0] :
$type eq 'p' ? $self->dbProducerGet(id => $id)->[0] :
$type eq 'r' ? $self->dbReleaseGet(id => $id)->[0] :
$type eq 'v' ? $self->dbVNGet(id => $id)->[0] : undef;
diff --git a/lib/VNDB/Handler/ULists.pm b/lib/VNDB/Handler/ULists.pm
index d9051347..cb164277 100644
--- a/lib/VNDB/Handler/ULists.pm
+++ b/lib/VNDB/Handler/ULists.pm
@@ -115,10 +115,11 @@ sub rlist_e {
sub votelist {
my($self, $type, $id) = @_;
- my $obj = $type eq 'v' ? $self->dbVNGet(id => $id)->[0] : $self->dbUserGet(uid => $id)->[0];
+ my $obj = $type eq 'v' ? $self->dbVNGet(id => $id)->[0] : $self->dbUserGet(uid => $id, what => 'hide_list')->[0];
return 404 if !$obj->{id};
my $own = $type eq 'u' && $self->authInfo->{id} && $self->authInfo->{id} == $id;
+ return 404 if $type eq 'u' && !$own && ($obj->{hide_list} || $self->authCan('usermod'));
my $f = $self->formValidate(
{ name => 'p', required => 0, default => 1, template => 'int' },
@@ -220,8 +221,8 @@ sub wishlist {
my($self, $uid) = @_;
my $own = $self->authInfo->{id} && $self->authInfo->{id} == $uid;
- my $u = $self->dbUserGet(uid => $uid)->[0];
- return 404 if !$u || !$own && !($u->{show_list} || $self->authCan('usermod'));
+ my $u = $self->dbUserGet(uid => $uid, what => 'hide_list')->[0];
+ return 404 if !$u || !$own && ($u->{hide_list} || $self->authCan('usermod'));
my $f = $self->formValidate(
{ name => 'p', required => 0, default => 1, template => 'int' },
@@ -322,8 +323,8 @@ sub vnlist {
my($self, $uid) = @_;
my $own = $self->authInfo->{id} && $self->authInfo->{id} == $uid;
- my $u = $self->dbUserGet(uid => $uid)->[0];
- return 404 if !$u || !$own && !($u->{show_list} || $self->authCan('usermod'));
+ my $u = $self->dbUserGet(uid => $uid, what => 'hide_list')->[0];
+ return 404 if !$u || !$own && ($u->{hide_list} || $self->authCan('usermod'));
my $f = $self->formValidate(
{ name => 'p', required => 0, default => 1, template => 'int' },
diff --git a/lib/VNDB/Handler/Users.pm b/lib/VNDB/Handler/Users.pm
index d3879109..d19b2f74 100644
--- a/lib/VNDB/Handler/Users.pm
+++ b/lib/VNDB/Handler/Users.pm
@@ -27,7 +27,7 @@ YAWF::register(
sub userpage {
my($self, $uid) = @_;
- my $u = $self->dbUserGet(uid => $uid, what => 'stats')->[0];
+ my $u = $self->dbUserGet(uid => $uid, what => 'stats hide_list')->[0];
return 404 if !$u->{id};
my $votes = $u->{c_votes} && $self->dbVoteStats(uid => $uid);
@@ -69,7 +69,7 @@ sub userpage {
Tr ++$i % 2 ? (class => 'odd') : ();
td mt '_userpage_votes';
td;
- if(!$u->{show_list}) {
+ if($u->{hide_list}) {
txt mt '_userpage_hidden';
} elsif($votes) {
my($total, $count) = (0, 0);
@@ -99,7 +99,7 @@ sub userpage {
Tr ++$i % 2 ? (class => 'odd') : ();
td mt '_userpage_list';
- td !$u->{show_list} ? mt('_userpage_hidden') :
+ td $u->{hide_list} ? mt('_userpage_hidden') :
mt('_userpage_list_item', $u->{releasecount}, $u->{vncount});
end;
@@ -116,7 +116,7 @@ sub userpage {
end;
end;
- if($u->{show_list} && $votes) {
+ if(!$u->{hide_list} && $votes) {
div class => 'mainbox';
h1 mt '_userpage_votestats';
$self->htmlVoteStats(u => $u, $votes);
@@ -307,7 +307,7 @@ sub edit {
{ name => 'mail', template => 'mail' },
{ name => 'usrpass', required => 0, minlength => 4, maxlength => 64, template => 'asciiprint' },
{ name => 'usrpass2', required => 0, minlength => 4, maxlength => 64, template => 'asciiprint' },
- { name => 'flags_list', required => 0, default => 0 },
+ { name => 'hide_list', required => 0, default => 0, enum => [0,1] },
{ name => 'show_nsfw', required => 0, default => 0, enum => [0,1] },
{ name => 'skin', required => 0, default => '', enum => [ '', keys %{$self->{skins}} ] },
{ name => 'customcss', required => 0, maxlength => 2000, default => '' },
@@ -315,13 +315,12 @@ sub edit {
push @{$frm->{_err}}, 'passmatch'
if ($frm->{usrpass} || $frm->{usrpass2}) && (!$frm->{usrpass} || !$frm->{usrpass2} || $frm->{usrpass} ne $frm->{usrpass2});
if(!$frm->{_err}) {
- $self->dbUserPrefSet($uid, $_ => $frm->{$_}) for (qw|skin customcss show_nsfw |);
+ $self->dbUserPrefSet($uid, $_ => $frm->{$_}) for (qw|skin customcss show_nsfw hide_list |);
my %o;
$o{username} = $frm->{usrname} if $frm->{usrname};
$o{rank} = $frm->{rank} if $frm->{rank};
$o{mail} = $frm->{mail};
($o{passwd}, $o{salt}) = $self->authPreparePass($frm->{usrpass}) if $frm->{usrpass};
- $o{show_list} = $frm->{flags_list} ? 1 : 0;
$o{ign_votes} = $frm->{ign_votes} ? 1 : 0 if $self->authCan('usermod');
$self->dbUserEdit($uid, %o);
$self->dbSessionDel($uid) if $frm->{usrpass};
@@ -333,8 +332,7 @@ sub edit {
# fill out default values
$frm->{usrname} ||= $u->{username};
$frm->{$_} ||= $u->{$_} for(qw|rank mail|);
- $frm->{$_} //= $u->{prefs}{$_} for(qw|skin customcss show_nsfw|);
- $frm->{flags_list} = $u->{show_list} if !defined $frm->{flags_list};
+ $frm->{$_} //= $u->{prefs}{$_} for(qw|skin customcss show_nsfw hide_list|);
$frm->{ign_votes} = $u->{ign_votes} if !defined $frm->{ign_votes};
# create the page
@@ -366,7 +364,7 @@ sub edit {
[ passwd => short => 'usrpass2', name => mt '_usere_confirm' ],
[ part => title => mt '_usere_options' ],
- [ check => short => 'flags_list', name => mt '_usere_flist', "/u$uid/list", "/u$uid/wish" ],
+ [ check => short => 'hide_list', name => mt '_usere_flist', "/u$uid/list", "/u$uid/votes", "/u$uid/wish" ],
[ check => short => 'show_nsfw', name => mt '_usere_fnsfw' ],
[ select => short => 'skin', name => mt('_usere_skin'), width => 300, options => [
map [ $_ eq $self->{skin_default} ? '' : $_, $self->{skins}{$_}[0].($self->debug?" [$_]":'') ], sort { $self->{skins}{$a}[0] cmp $self->{skins}{$b}[0] } keys %{$self->{skins}} ] ],
@@ -380,7 +378,7 @@ sub posts {
my($self, $uid) = @_;
# fetch user info (cached if uid == loggedin uid)
- my $u = $self->authInfo->{id} && $self->authInfo->{id} == $uid ? $self->authInfo : $self->dbUserGet(uid => $uid)->[0];
+ my $u = $self->authInfo->{id} && $self->authInfo->{id} == $uid ? $self->authInfo : $self->dbUserGet(uid => $uid, what => 'hide_list')->[0];
return 404 if !$u->{id};
my $f = $self->formValidate(
@@ -437,7 +435,7 @@ sub delete {
# confirm
if(!$act) {
my $code = $self->authGetCode("/u$uid/del/o");
- my $u = $self->dbUserGet(uid => $uid)->[0];
+ my $u = $self->dbUserGet(uid => $uid, what => 'hide_list')->[0];
return 404 if !$u->{id};
$self->htmlHeader(title => 'Delete user', noindex => 1);
$self->htmlMainTabs('u', $u, 'del');
@@ -498,6 +496,7 @@ sub list {
my($list, $np) = $self->dbUserGet(
sort => $f->{s}, reverse => $f->{o} eq 'd',
+ what => 'hide_list',
$char ne 'all' ? (
firstchar => $char ) : (),
results => 50,
@@ -525,8 +524,8 @@ sub list {
a href => '/u'.$l->{id}, $l->{username};
end;
td class => 'tc2', $self->{l10n}->date($l->{registered});
- td class => 'tc3'.(!$l->{show_list} && $self->authCan('usermod') ? ' linethrough' : '');
- lit !$l->{show_list} && !$self->authCan('usermod') ? '-' : !$l->{c_votes} ? 0 :
+ td class => 'tc3'.($l->{hide_list} && $self->authCan('usermod') ? ' linethrough' : '');
+ lit $l->{hide_list} && !$self->authCan('usermod') ? '-' : !$l->{c_votes} ? 0 :
qq|<a href="/u$l->{id}/votes">$l->{c_votes}</a>|;
end;
td class => 'tc4';
@@ -544,9 +543,9 @@ sub list {
sub notifies {
my($self, $uid) = @_;
- return $self->htmlDenied if !$self->authInfo->{id} || $uid != $self->authInfo->{id};
- my $u = $self->dbUserGet(uid => $uid)->[0];
+ my $u = $self->authInfo;
+ return $self->htmlDenied if !$u->{id} || $uid != $u->{id};
my $f = $self->formValidate(
{ name => 'p', required => 0, default => 1, template => 'int' },
diff --git a/lib/VNDB/Util/CommonHTML.pm b/lib/VNDB/Util/CommonHTML.pm
index a384c5a3..a412949a 100644
--- a/lib/VNDB/Util/CommonHTML.pm
+++ b/lib/VNDB/Util/CommonHTML.pm
@@ -45,7 +45,7 @@ sub htmlMainTabs {
end;
}
- if($type eq 'u' && ($obj->{show_list} || $self->authCan('usermod'))) {
+ if($type eq 'u' && (!($obj->{hide_list} || $obj->{prefs}{hide_list}) || ($self->authInfo->{id} && $self->authInfo->{id} == $obj->{id}) || $self->authCan('usermod'))) {
li $sel eq 'wish' ? (class => 'tabselected') : ();
a href => "/$id/wish", mt '_mtabs_wishlist';
end;