summaryrefslogtreecommitdiff
path: root/lib/VNDB
diff options
context:
space:
mode:
authoryorhel <yorhel@1fe2e327-d9db-4752-bcf7-ef0cb4a1748b>2008-04-24 17:48:59 +0000
committeryorhel <yorhel@1fe2e327-d9db-4752-bcf7-ef0cb4a1748b>2008-04-24 17:48:59 +0000
commitd2efb163c11a11e02abd7251fdfde3cb54c710ef (patch)
tree848de5db61c434d38adc8871f4999ea344b196fe /lib/VNDB
parent491d871612f7e4d351d533d30fe942332132ea41 (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.pm20
-rw-r--r--lib/VNDB/Util/Tools.pm33
-rw-r--r--lib/VNDB/VN.pm9
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));
}