diff options
author | yorhel <yorhel@1fe2e327-d9db-4752-bcf7-ef0cb4a1748b> | 2008-04-24 17:48:59 +0000 |
---|---|---|
committer | yorhel <yorhel@1fe2e327-d9db-4752-bcf7-ef0cb4a1748b> | 2008-04-24 17:48:59 +0000 |
commit | d2efb163c11a11e02abd7251fdfde3cb54c710ef (patch) | |
tree | 848de5db61c434d38adc8871f4999ea344b196fe /lib/VNDB | |
parent | 491d871612f7e4d351d533d30fe942332132ea41 (diff) |
See the diff for lib/ChangeLog...
git-svn-id: svn://vndb.org/vndb@4 1fe2e327-d9db-4752-bcf7-ef0cb4a1748b
Diffstat (limited to 'lib/VNDB')
-rw-r--r-- | lib/VNDB/Util/DB.pm | 20 | ||||
-rw-r--r-- | lib/VNDB/Util/Tools.pm | 33 | ||||
-rw-r--r-- | lib/VNDB/VN.pm | 9 |
3 files changed, 30 insertions, 32 deletions
diff --git a/lib/VNDB/Util/DB.pm b/lib/VNDB/Util/DB.pm index 59088387..c93e0997 100644 --- a/lib/VNDB/Util/DB.pm +++ b/lib/VNDB/Util/DB.pm @@ -16,7 +16,7 @@ $VERSION = $VNDB::VERSION; DBGetUser DBAddUser DBUpdateUser DBGetVotes DBVoteStats DBAddVote DBDelVote DBGetVNList DBVNListStats DBAddVNList DBEditVNList DBDelVNList - DBGetVN DBAddVN DBEditVN DBDelVN DBHideVN + DBGetVN DBAddVN DBEditVN DBDelVN DBHideVN DBUndefRG DBGetRelease DBAddRelease DBEditRelease DBDelRelease DBHideRelease DBGetProducer DBGetProducerVN DBAddProducer DBEditProducer DBDelProducer DBHideProducer DBExec DBRow DBAll DBLastId @@ -35,7 +35,7 @@ sub new { my $me = shift; my $type = ref($me) || $me; - $me = bless { @_ }, $type; + $me = bless { o => \@_ }, $type; $me->DBInit(); @@ -47,13 +47,7 @@ sub DBInit { my $self = shift; my $info = $self->{_DB} || $self; - my $settings; - $settings .= "host=$info->{host};" if $info->{host}; - $settings .= "port=$info->{port};" if $info->{port}; - $settings .= "dbname=$info->{database}"; - - $info->{sql} = DBI->connect("dbi:Pg:$settings", - $info->{user}, $info->{passwd}, { + $info->{sql} = DBI->connect(@{$self->{o}}, { PrintError => 0, RaiseError => 1, AutoCommit => 0, pg_enable_utf8 => 1, } @@ -802,6 +796,14 @@ sub DBHideVN { # id, hidden } +sub DBUndefRG { # ids + my($s, @id) = @_; + $s->DBExec(q| + UPDATE vn + SET rgraph = 0 + WHERE id IN(!l)|, + \@id); +} #-----------------------------------------------------------------------------# diff --git a/lib/VNDB/Util/Tools.pm b/lib/VNDB/Util/Tools.pm index 4c873b55..fe031acb 100644 --- a/lib/VNDB/Util/Tools.pm +++ b/lib/VNDB/Util/Tools.pm @@ -4,10 +4,12 @@ package VNDB::Util::Tools; use strict; use warnings; use Encode; +use Storable 'freeze', 'thaw'; +use IPC::ShareLite ':lock'; use Exporter 'import'; our $VERSION = $VNDB::VERSION; -our @EXPORT = qw| FormCheck AddHid SendMail AddDefaultStuff |; +our @EXPORT = qw| FormCheck AddHid SendMail AddDefaultStuff RunCmd |; # Improved version of ParamsCheck @@ -62,12 +64,14 @@ sub FormCheck { return \%hash; } + sub AddHid { my $fh = $_[0]->FormCheck({ name => 'fh', required => 0, maxlength => 30 })->{fh}; $_[1]->{_hid} = { map { $_ => 1 } 'com', 'mod', split /,/, $fh } if $fh; } + sub _inarray { # errr... this is from when I didn't know about grep foreach (@{$_[1]}) { (return 1) if $_[0] eq $_; @@ -104,6 +108,7 @@ sub SendMail { } } + sub AddDefaultStuff { my $self = shift; @@ -124,22 +129,16 @@ sub AddDefaultStuff { } } -1; -__END__ -# from HTTP::Date, small function, so why load an entire module? -{ - my @DoW = qw(Sun Mon Tue Wed Thu Fri Sat); - my @MoY = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); - - sub time2str { - my $time = shift; - $time = time unless defined $time; - my($sec, $min, $hour, $mday, $mon, $year, $wday) = gmtime($time); - sprintf('%s, %02d %s %04d %02d:%02d:%02d GMT', - $DoW[$wday], - $mday, $MoY[$mon], $year+1900, - $hour, $min, $sec); - } +sub RunCmd { # cmd + my $s = IPC::ShareLite->new(-key => $VNDB::SHMKEY, -create => 1, -destroy => 0); + $s->lock(LOCK_EX); + my $l = $s->fetch(); + my @queue = ($l?@{thaw($l)}:(), $_[1]); + $s->store(freeze(\@queue)); + $s->unlock(); } + +1; + diff --git a/lib/VNDB/VN.pm b/lib/VNDB/VN.pm index f2340037..ec1de95d 100644 --- a/lib/VNDB/VN.pm +++ b/lib/VNDB/VN.pm @@ -34,7 +34,7 @@ sub VNPage { $v->{next} = $self->DBGetHist(type => 'v', id => $id, next => $v->{cid}, showhid => 1)->[0]{id} if $r->{rev}; if($page eq 'rg' && $v->{rgraph}) { - open(my $F, '<', sprintf '%s/%02d/%d.cmap', $self->{mappath}, $v->{rgraph}%50, $v->{rgraph}) || die $!; + open(my $F, '<:utf8', sprintf '%s/%02d/%d.cmap', $self->{mappath}, $v->{rgraph}%50, $v->{rgraph}) || die $!; $v->{rmap} = join('', (<$F>)); close($F); } @@ -366,11 +366,8 @@ sub VNUpdReverse { # old, new, id, cid sub VNRecreateRel { # @ids my($s, @id) = @_; - $s->DBCommit; # creates deadlock otherwise - my $c = sprintf "%s %s", $s->{grapher}, join(' ', @id); - my $o = `$c`; - chomp $o; - warn "$$s{grapher}: $o\n" if $o; + $s->DBUndefRG(@id); + $s->RunCmd('relgraph '.join(' ',@id)); } |