diff options
author | Yorhel <git@yorhel.nl> | 2008-12-09 13:08:08 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2008-12-09 13:08:08 +0100 |
commit | 66bc1533761ae28c0c8cbcea91b80c0319d86b39 (patch) | |
tree | 9b321ebbdc34c5b57501dfd0278b9b0fcadc8efd /lib/VNDB/DB | |
parent | 62ab2e931cf21236e83d4483d8cb4eb773f26a89 (diff) |
Code cleanup: removed leading spaces and combined DB/{Votes,VNList,WishList}.pm into ULists.pm
Diffstat (limited to 'lib/VNDB/DB')
-rw-r--r-- | lib/VNDB/DB/Discussions.pm | 4 | ||||
-rw-r--r-- | lib/VNDB/DB/Misc.pm | 4 | ||||
-rw-r--r-- | lib/VNDB/DB/Producers.pm | 2 | ||||
-rw-r--r-- | lib/VNDB/DB/ULists.pm | 264 | ||||
-rw-r--r-- | lib/VNDB/DB/Users.pm | 4 | ||||
-rw-r--r-- | lib/VNDB/DB/VN.pm | 12 | ||||
-rw-r--r-- | lib/VNDB/DB/VNList.pm | 126 | ||||
-rw-r--r-- | lib/VNDB/DB/Votes.pm | 85 | ||||
-rw-r--r-- | lib/VNDB/DB/WishList.pm | 76 |
9 files changed, 277 insertions, 300 deletions
diff --git a/lib/VNDB/DB/Discussions.pm b/lib/VNDB/DB/Discussions.pm index a16bf3be..1e626c57 100644 --- a/lib/VNDB/DB/Discussions.pm +++ b/lib/VNDB/DB/Discussions.pm @@ -117,7 +117,7 @@ sub dbThreadEdit { # %options->{ title hidden locked tags } -sub dbThreadAdd { +sub dbThreadAdd { my($self, %o) = @_; my $id = $self->dbRow(q| @@ -175,7 +175,7 @@ sub dbPostGet { # tid, num, %options->{ num msg hidden lastmod } -sub dbPostEdit { +sub dbPostEdit { my($self, $tid, $num, %o) = @_; my %set = ( diff --git a/lib/VNDB/DB/Misc.pm b/lib/VNDB/DB/Misc.pm index 9ebac75f..828d5281 100644 --- a/lib/VNDB/DB/Misc.pm +++ b/lib/VNDB/DB/Misc.pm @@ -12,7 +12,7 @@ our @EXPORT = qw| # Returns: hashref, key = section, value = number of (visible) entries # Sections: vn, producers, releases, users, threads, posts -sub dbStats { +sub dbStats { my $s = shift; return { map { $_->{section} eq 'threads_posts' ? 'posts' : $_->{section}, $_->{count} @@ -144,7 +144,7 @@ sub dbRevisionGet { # arguments: v/r/p, id, %options ->( hidden, locked ) sub dbItemMod { my($self, $type, $id, %o) = @_; - $self->dbExec('UPDATE !s !H WHERE id = ?', + $self->dbExec('UPDATE !s !H WHERE id = ?', {qw|v vn r releases p producers|}->{$type}, { map { ($_.' = ?', int $o{$_}) } keys %o }, $id ); diff --git a/lib/VNDB/DB/Producers.pm b/lib/VNDB/DB/Producers.pm index adfa8b1c..edee4a8a 100644 --- a/lib/VNDB/DB/Producers.pm +++ b/lib/VNDB/DB/Producers.pm @@ -74,7 +74,7 @@ sub dbProducerGet { [ keys %r ] )}); } - + return wantarray ? ($r, $np) : $r; } diff --git a/lib/VNDB/DB/ULists.pm b/lib/VNDB/DB/ULists.pm new file mode 100644 index 00000000..0f84acb3 --- /dev/null +++ b/lib/VNDB/DB/ULists.pm @@ -0,0 +1,264 @@ + +package VNDB::DB::ULists; + +use strict; +use warnings; +use Exporter 'import'; + + +our @EXPORT = qw| + dbVNListGet dbVNListList dbVNListAdd dbVNListDel + dbVoteGet dbVoteStats dbVoteAdd dbVoteDel + dbWishListGet dbWishListAdd dbWishListDel +|; + + +# Simpler and more efficient version of dbVNListList below +# %options->{ uid rid } +sub dbVNListGet { + my($self, %o) = @_; + + my %where = ( + 'uid = ?' => $o{uid}, + $o{rid} ? ( + 'rid = ?' => $o{rid} ) : (), + ); + + return $self->dbAll(q| + SELECT uid, rid, rstat, vstat + FROM rlists + !W|, + \%where + ); +} + + +# %options->{ uid order char voted page results } +# NOTE: this function is mostly copied from 1.x, may need some rewriting... +sub dbVNListList { + my($self, %o) = @_; + + $o{results} ||= 50; + $o{page} ||= 1; + $o{order} ||= 'vr.title ASC'; + $o{voted} ||= 0; # -1: only non-voted, 0: all, 1: only voted + + # construct the global WHERE clause + my $where = $o{voted} != -1 ? 'vo.vote IS NOT NULL' : ''; + $where .= ($where?' OR ':'').q|v.id IN( + SELECT irv.vid + FROM rlists irl + JOIN releases ir ON ir.id = irl.rid + JOIN releases_vn irv ON irv.rid = ir.latest + WHERE uid = ? + )| if $o{voted} != 1; + $where = '('.$where.') AND LOWER(SUBSTR(vr.title, 1, 1)) = \''.$o{char}.'\'' if $o{char}; + $where = '('.$where.') AND (ASCII(vr.title) < 97 OR ASCII(vr.title) > 122) AND (ASCII(vr.title) < 65 OR ASCII(vr.title) > 90)' if defined $o{char} && !$o{char}; + $where = '('.$where.') AND vo.vote IS NULL' if $o{voted} == -1; + + # execute query + my($r, $np) = $self->dbPage(\%o, qq| + SELECT vr.vid, vr.title, vr.original, v.c_released, v.c_languages, v.c_platforms, COALESCE(vo.vote, 0) AS vote + FROM vn v + JOIN vn_rev vr ON vr.id = v.latest + !s JOIN votes vo ON vo.vid = v.id AND vo.uid = ? + WHERE $where + ORDER BY !s|, + $o{voted} == 1 ? '' : 'LEFT', $o{uid}, # JOIN if we only want votes, LEFT JOIN if we also want rlist items + $o{voted} != 1 ? $o{uid} : (), $o{order}, + ); + + # fetch releases and link to VNs + if(@$r) { + my %vns = map { + $_->{rels}=[]; + $_->{vid}, $_->{rels} + } @$r; + + push @{$vns{$_->{vid}}}, $_ for (@{$self->dbAll(q| + SELECT rv.vid, rr.rid, rr.title, rr.original, rr.released, rr.type, rr.language, rr.minage, rl.rstat, rl.vstat + FROM rlists rl + JOIN releases r ON rl.rid = r.id + JOIN releases_rev rr ON rr.id = r.latest + JOIN releases_vn rv ON rv.rid = r.latest + WHERE rl.uid = ? + AND rv.vid IN(!l) + ORDER BY rr.released ASC|, + $o{uid}, [ keys %vns ] + )}); + } + + return wantarray ? ($r, $np) : $r; +} + + +# %options->{ uid rid rstat vstat } +sub dbVNListAdd { + my($self, %o) = @_; + + my %s = ( + defined $o{rstat} ? ( 'rstat = ?', $o{rstat} ) : (), + defined $o{vstat} ? ( 'vstat = ?', $o{vstat} ) : (), + ); + $o{rstat}||=0; + $o{vstat}||=0; + + $self->dbExec( + 'UPDATE rlists !H WHERE uid = ? AND rid IN(!l)', + \%s, $o{uid}, ref($o{rid}) eq 'ARRAY' ? $o{rid} : [ $o{rid} ] + ) + || + $self->dbExec( + 'INSERT INTO rlists (uid, rid, rstat, vstat) VALUES(!l)', + [@o{qw| uid rid rstat vstat |}] + ); +} + + +# Arguments: uid, rid +sub dbVNListDel { + my($self, $uid, $rid) = @_; + $self->dbExec( + 'DELETE FROM rlists WHERE uid = ? AND rid IN(!l)', + $uid, ref($rid) eq 'ARRAY' ? $rid : [ $rid ] + ); +} + + +# %options->{ uid vid hide order results page } +sub dbVoteGet { + my($self, %o) = @_; + $o{order} ||= 'n.date DESC'; + $o{results} ||= 50; + $o{page} ||= 1; + + my %where = ( + $o{uid} ? ( 'n.uid = ?' => $o{uid} ) : (), + $o{vid} ? ( 'n.vid = ?' => $o{vid} ) : (), + $o{hide} ? ( 'u.show_list = FALSE' => 1 ) : (), + ); + + my($r, $np) = $self->dbPage(\%o, q| + SELECT n.vid, vr.title, vr.original, n.vote, n.date, n.uid, u.username + FROM votes n + JOIN vn v ON v.id = n.vid + JOIN vn_rev vr ON vr.id = v.latest + JOIN users u ON u.id = n.uid + !W + ORDER BY !s|, + \%where, $o{order} + ); + + return wantarray ? ($r, $np) : $r; +} + + +# Arguments: (uid|vid), id +# Returns an arrayref with 10 elements containing the number of votes for index+1 +sub dbVoteStats { + my($self, $col, $id) = @_; + my $r = [ qw| 0 0 0 0 0 0 0 0 0 0 | ]; + $r->[$_->{vote}-1] = $_->{votes} for (@{$self->dbAll(q| + SELECT vote, COUNT(vote) as votes + FROM votes + !W + GROUP BY vote|, + $col ? { '!s = ?' => [ $col, $id ] } : {}, + )}); + return $r; +} + + +# Adds a new vote or updates an existing one +# Arguments: vid, uid, vote +sub dbVoteAdd { + my($self, $vid, $uid, $vote) = @_; + $self->dbExec(q| + UPDATE votes + SET vote = ? + WHERE vid = ? + AND uid = ?|, + $vote, $vid, $uid + ) || $self->dbExec(q| + INSERT INTO votes + (vid, uid, vote, date) + VALUES (!l)|, + [ $vid, $uid, $vote, time ] + ); +} + + +# Arguments: uid, vid +sub dbVoteDel { + my($self, $uid, $vid) = @_; + $self->dbExec('DELETE FROM votes !W', + { 'vid = ?' => $vid, 'uid = ?' => $uid } + ); +} + + +# %options->{ uid vid wstat what order page results } +# what: vn +sub dbWishListGet { + my($self, %o) = @_; + + $o{order} ||= 'wl.wstat ASC'; + $o{page} ||= 1; + $o{results} ||= 50; + $o{what} ||= ''; + + my %where = ( + 'wl.uid = ?' => $o{uid}, + $o{vid} ? ( 'wl.vid = ?' => $o{vid} ) : (), + defined $o{wstat} ? ( 'wl.wstat = ?' => $o{wstat} ) : (), + ); + + my $select = 'wl.vid, wl.wstat, wl.added'; + my @join; + if($o{what} =~ /vn/) { + $select .= ', vr.title, vr.original'; + push @join, 'JOIN vn v ON v.id = wl.vid', + 'JOIN vn_rev vr ON vr.id = v.latest'; + } + + my($r, $np) = $self->dbPage(\%o, q| + SELECT !s + FROM wlists wl + !s + !W + ORDER BY !s|, + $select, join(' ', @join), \%where, $o{order}, + ); + + return wantarray ? ($r, $np) : $r; +} + + +# Updates or adds a whishlist item +# Arguments: vid, uid, wstat +sub dbWishListAdd { + my($self, $vid, $uid, $wstat) = @_; + $self->dbExec( + 'UPDATE wlists SET wstat = ? WHERE uid = ? AND vid IN(!l)', + $wstat, $uid, ref($vid) eq 'ARRAY' ? $vid : [ $vid ] + ) + || + $self->dbExec( + 'INSERT INTO wlists (uid, vid, wstat) VALUES(!l)', + [ $uid, $vid, $wstat ] + ); +} + + +# Arguments: uid, vids +sub dbWishListDel { + my($self, $uid, $vid) = @_; + $self->dbExec( + 'DELETE FROM wlists WHERE uid = ? AND vid IN(!l)', + $uid, ref($vid) eq 'ARRAY' ? $vid : [ $vid ] + ); +} + + +1; + diff --git a/lib/VNDB/DB/Users.pm b/lib/VNDB/DB/Users.pm index b17ad62f..c196e4f4 100644 --- a/lib/VNDB/DB/Users.pm +++ b/lib/VNDB/DB/Users.pm @@ -9,7 +9,7 @@ our @EXPORT = qw|dbUserGet dbUserEdit dbUserAdd dbUserDel|; # %options->{ username passwd mail order uid results page } -sub dbUserGet { +sub dbUserGet { my $s = shift; my %o = ( order => 'username ASC', @@ -48,7 +48,7 @@ sub dbUserGet { # uid, %options->{ columns in users table } -sub dbUserEdit { +sub dbUserEdit { my($s, $uid, %o) = @_; my %h; diff --git a/lib/VNDB/DB/VN.pm b/lib/VNDB/DB/VN.pm index d70db9ee..f12bf513 100644 --- a/lib/VNDB/DB/VN.pm +++ b/lib/VNDB/DB/VN.pm @@ -28,7 +28,7 @@ sub dbVNGet { defined $o{char} && !$o{char} ? ( '(ASCII(vr.title) < 97 OR ASCII(vr.title) > 122) AND (ASCII(vr.title) < 65 OR ASCII(vr.title) > 90)' => 1 ) : (), $o{cati} && @{$o{cati}} ? ( q| - v.id IN(SELECT iv.id + v.id IN(SELECT iv.id FROM vn_categories ivc JOIN vn iv ON iv.latest = ivc.vid WHERE cat IN(!l) @@ -37,8 +37,8 @@ sub dbVNGet { $o{cate} && @{$o{cate}} ? ( q| v.id NOT IN(SELECT iv.id FROM vn_categories ivc - JOIN vn iv ON iv.latest = ivc.vid - WHERE cat IN(!l) + JOIN vn iv ON iv.latest = ivc.vid + WHERE cat IN(!l) GROUP BY iv.id)| => [ $o{cate} ] ) : (), $o{lang} && @{$o{lang}} ? ( '('.join(' OR ', map "v.c_languages ILIKE '%%$_%%'", @{$o{lang}}).')' => 1 ) : (), @@ -78,11 +78,11 @@ sub dbVNGet { $o{rev} ? 'JOIN vn v ON v.id = vr.vid' : 'JOIN vn v ON vr.id = v.latest', - $o{rev} || $o{what} =~ /changes/ ? + $o{rev} || $o{what} =~ /changes/ ? 'JOIN changes c ON c.id = vr.id' : (), $o{what} =~ /changes/ ? 'JOIN users u ON u.id = c.requester' : (), - $o{what} =~ /relgraph/ ? + $o{what} =~ /relgraph/ ? 'JOIN relgraph rg ON rg.id = v.rgraph' : (), ); @@ -261,7 +261,7 @@ sub dbScreenshotAdd { # arrayref of screenshot IDs as argument sub dbScreenshotGet { return shift->dbAll(q|SELECT * FROM screenshots WHERE id IN(!l)|, shift); -} +} 1; diff --git a/lib/VNDB/DB/VNList.pm b/lib/VNDB/DB/VNList.pm deleted file mode 100644 index 9e430f43..00000000 --- a/lib/VNDB/DB/VNList.pm +++ /dev/null @@ -1,126 +0,0 @@ - -package VNDB::DB::VNList; - -use strict; -use warnings; -use Exporter 'import'; - - -our @EXPORT = qw|dbVNListGet dbVNListList dbVNListAdd dbVNListDel|; - - -# Simpler and more efficient version of dbVNListList below -# %options->{ uid rid } -sub dbVNListGet { - my($self, %o) = @_; - - my %where = ( - 'uid = ?' => $o{uid}, - $o{rid} ? ( - 'rid = ?' => $o{rid} ) : (), - ); - - return $self->dbAll(q| - SELECT uid, rid, rstat, vstat - FROM rlists - !W|, - \%where - ); -} - - -# %options->{ uid order char voted page results } -# NOTE: this function is mostly copied from 1.x, may need some rewriting... -sub dbVNListList { - my($self, %o) = @_; - - $o{results} ||= 50; - $o{page} ||= 1; - $o{order} ||= 'vr.title ASC'; - $o{voted} ||= 0; # -1: only non-voted, 0: all, 1: only voted - - # construct the global WHERE clause - my $where = $o{voted} != -1 ? 'vo.vote IS NOT NULL' : ''; - $where .= ($where?' OR ':'').q|v.id IN( - SELECT irv.vid - FROM rlists irl - JOIN releases ir ON ir.id = irl.rid - JOIN releases_vn irv ON irv.rid = ir.latest - WHERE uid = ? - )| if $o{voted} != 1; - $where = '('.$where.') AND LOWER(SUBSTR(vr.title, 1, 1)) = \''.$o{char}.'\'' if $o{char}; - $where = '('.$where.') AND (ASCII(vr.title) < 97 OR ASCII(vr.title) > 122) AND (ASCII(vr.title) < 65 OR ASCII(vr.title) > 90)' if defined $o{char} && !$o{char}; - $where = '('.$where.') AND vo.vote IS NULL' if $o{voted} == -1; - - # execute query - my($r, $np) = $self->dbPage(\%o, qq| - SELECT vr.vid, vr.title, vr.original, v.c_released, v.c_languages, v.c_platforms, COALESCE(vo.vote, 0) AS vote - FROM vn v - JOIN vn_rev vr ON vr.id = v.latest - !s JOIN votes vo ON vo.vid = v.id AND vo.uid = ? - WHERE $where - ORDER BY !s|, - $o{voted} == 1 ? '' : 'LEFT', $o{uid}, # JOIN if we only want votes, LEFT JOIN if we also want rlist items - $o{voted} != 1 ? $o{uid} : (), $o{order}, - ); - - # fetch releases and link to VNs - if(@$r) { - my %vns = map { - $_->{rels}=[]; - $_->{vid}, $_->{rels} - } @$r; - - push @{$vns{$_->{vid}}}, $_ for (@{$self->dbAll(q| - SELECT rv.vid, rr.rid, rr.title, rr.original, rr.released, rr.type, rr.language, rr.minage, rl.rstat, rl.vstat - FROM rlists rl - JOIN releases r ON rl.rid = r.id - JOIN releases_rev rr ON rr.id = r.latest - JOIN releases_vn rv ON rv.rid = r.latest - WHERE rl.uid = ? - AND rv.vid IN(!l) - ORDER BY rr.released ASC|, - $o{uid}, [ keys %vns ] - )}); - } - - return wantarray ? ($r, $np) : $r; -} - - -# %options->{ uid rid rstat vstat } -sub dbVNListAdd { - my($self, %o) = @_; - - my %s = ( - defined $o{rstat} ? ( 'rstat = ?', $o{rstat} ) : (), - defined $o{vstat} ? ( 'vstat = ?', $o{vstat} ) : (), - ); - $o{rstat}||=0; - $o{vstat}||=0; - - $self->dbExec( - 'UPDATE rlists !H WHERE uid = ? AND rid IN(!l)', - \%s, $o{uid}, ref($o{rid}) eq 'ARRAY' ? $o{rid} : [ $o{rid} ] - ) - || - $self->dbExec( - 'INSERT INTO rlists (uid, rid, rstat, vstat) VALUES(!l)', - [@o{qw| uid rid rstat vstat |}] - ); -} - - -# Arguments: uid, rid -sub dbVNListDel { - my($self, $uid, $rid) = @_; - $self->dbExec( - 'DELETE FROM rlists WHERE uid = ? AND rid IN(!l)', - $uid, ref($rid) eq 'ARRAY' ? $rid : [ $rid ] - ); -} - - - -1; - diff --git a/lib/VNDB/DB/Votes.pm b/lib/VNDB/DB/Votes.pm deleted file mode 100644 index 42779885..00000000 --- a/lib/VNDB/DB/Votes.pm +++ /dev/null @@ -1,85 +0,0 @@ - -package VNDB::DB::Votes; - -use strict; -use warnings; -use Exporter 'import'; - - -our @EXPORT = qw|dbVoteGet dbVoteStats dbVoteAdd dbVoteDel|; - - -# %options->{ uid vid hide order results page } -sub dbVoteGet { - my($self, %o) = @_; - $o{order} ||= 'n.date DESC'; - $o{results} ||= 50; - $o{page} ||= 1; - - my %where = ( - $o{uid} ? ( 'n.uid = ?' => $o{uid} ) : (), - $o{vid} ? ( 'n.vid = ?' => $o{vid} ) : (), - $o{hide} ? ( 'u.show_list = FALSE' => 1 ) : (), - ); - - my($r, $np) = $self->dbPage(\%o, q| - SELECT n.vid, vr.title, vr.original, n.vote, n.date, n.uid, u.username - FROM votes n - JOIN vn v ON v.id = n.vid - JOIN vn_rev vr ON vr.id = v.latest - JOIN users u ON u.id = n.uid - !W - ORDER BY !s|, - \%where, $o{order} - ); - - return wantarray ? ($r, $np) : $r; -} - - -# Arguments: (uid|vid), id -# Returns an arrayref with 10 elements containing the number of votes for index+1 -sub dbVoteStats { - my($self, $col, $id) = @_; - my $r = [ qw| 0 0 0 0 0 0 0 0 0 0 | ]; - $r->[$_->{vote}-1] = $_->{votes} for (@{$self->dbAll(q| - SELECT vote, COUNT(vote) as votes - FROM votes - !W - GROUP BY vote|, - $col ? { '!s = ?' => [ $col, $id ] } : {}, - )}); - return $r; -} - - -# Adds a new vote or updates an existing one -# Arguments: vid, uid, vote -sub dbVoteAdd { - my($self, $vid, $uid, $vote) = @_; - $self->dbExec(q| - UPDATE votes - SET vote = ? - WHERE vid = ? - AND uid = ?|, - $vote, $vid, $uid - ) || $self->dbExec(q| - INSERT INTO votes - (vid, uid, vote, date) - VALUES (!l)|, - [ $vid, $uid, $vote, time ] - ); -} - - -# Arguments: uid, vid -sub dbVoteDel { - my($self, $uid, $vid) = @_; - $self->dbExec('DELETE FROM votes !W', - { 'vid = ?' => $vid, 'uid = ?' => $uid } - ); -} - - -1; - diff --git a/lib/VNDB/DB/WishList.pm b/lib/VNDB/DB/WishList.pm deleted file mode 100644 index a75ce41f..00000000 --- a/lib/VNDB/DB/WishList.pm +++ /dev/null @@ -1,76 +0,0 @@ - -package VNDB::DB::WishList; - -use strict; -use warnings; -use Exporter 'import'; - - -our @EXPORT = qw|dbWishListGet dbWishListAdd dbWishListDel|; - - -# %options->{ uid vid wstat what order page results } -# what: vn -sub dbWishListGet { - my($self, %o) = @_; - - $o{order} ||= 'wl.wstat ASC'; - $o{page} ||= 1; - $o{results} ||= 50; - $o{what} ||= ''; - - my %where = ( - 'wl.uid = ?' => $o{uid}, - $o{vid} ? ( 'wl.vid = ?' => $o{vid} ) : (), - defined $o{wstat} ? ( 'wl.wstat = ?' => $o{wstat} ) : (), - ); - - my $select = 'wl.vid, wl.wstat, wl.added'; - my @join; - if($o{what} =~ /vn/) { - $select .= ', vr.title, vr.original'; - push @join, 'JOIN vn v ON v.id = wl.vid', - 'JOIN vn_rev vr ON vr.id = v.latest'; - } - - my($r, $np) = $self->dbPage(\%o, q| - SELECT !s - FROM wlists wl - !s - !W - ORDER BY !s|, - $select, join(' ', @join), \%where, $o{order}, - ); - - return wantarray ? ($r, $np) : $r; -} - - -# Updates or adds a whishlist item -# Arguments: vid, uid, wstat -sub dbWishListAdd { - my($self, $vid, $uid, $wstat) = @_; - $self->dbExec( - 'UPDATE wlists SET wstat = ? WHERE uid = ? AND vid IN(!l)', - $wstat, $uid, ref($vid) eq 'ARRAY' ? $vid : [ $vid ] - ) - || - $self->dbExec( - 'INSERT INTO wlists (uid, vid, wstat) VALUES(!l)', - [ $uid, $vid, $wstat ] - ); -} - - -# Arguments: uid, vids -sub dbWishListDel { - my($self, $uid, $vid) = @_; - $self->dbExec( - 'DELETE FROM wlists WHERE uid = ? AND vid IN(!l)', - $uid, ref($vid) eq 'ARRAY' ? $vid : [ $vid ] - ); -} - - -1; - |