$VERSION = 1.00;
@ISA = qw(Exporter);
@EXPORT = qw(&db_setocean &db_writer &db_connect $dbh
- &db_filename &db_doall &db_onconflict);
+ &db_filename &db_doall &db_onconflict &db_setdatadir);
%EXPORT_TAGS = ( );
@EXPORT_OK = qw();
our $dbfn;
our $dbh;
+our $datadir= '.';
+sub db_setdatadir ($) {
+ $datadir= $_[0];
+}
sub db_setocean ($) {
my ($oceanname) = @_;
- $dbfn= "OCEAN-$oceanname.db";
+ $dbfn= "$datadir/OCEAN-$oceanname.db";
}
sub db_filename () {
return $dbfn;
}
sub db_connect () {
+ return if $dbh;
$dbh= DBI->connect("dbi:SQLite:$dbfn",'','',
{ AutoCommit=>0,
RaiseError=>1, ShowErrorStatement=>1,
--- /dev/null
+# This is part of ypp-sc-tools, a set of third-party tools for assisting
+# players of Yohoho Puzzle Pirates.
+#
+# Copyright (C) 2009 Ian Jackson <ijackson@chiark.greenend.org.uk>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# Yohoho and Puzzle Pirates are probably trademarks of Three Rings and
+# are used without permission. This program is not endorsed or
+# sponsored by Three Rings.
+
+# This package is used by the Mason scripts in yarrg/web/.
+# We look for a symlink DATA to the actual data to use, so that
+# the data uploader and website displayer can use different code.
+
+package CommodsWeb;
+
+use strict;
+use warnings;
+
+use DBI;
+use POSIX;
+
+use Commods;
+use CommodsDatabase;
+
+BEGIN {
+ use Exporter ();
+ our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
+ $VERSION = 1.00;
+ @ISA = qw(Exporter);
+ @EXPORT = qw();
+ %EXPORT_TAGS = ( );
+
+ @EXPORT_OK = qw();
+}
+
+for my $dir (@INC) {
+ if ($dir =~ m/\.perl-lib$/) {
+ db_setdatadir("$dir/DATA");
+ last;
+ }
+}
+
+1;
</form>
<%init>
-
-use DBI;
-
-our $dbh;
-our $dbfn;
-$dbfn= "/home/ijackson/things/ypp-sc-tools.pctb-dict-test/yarrg/OCEAN-Midnight.db";
-
- $dbh=DBI->connect("dbi:SQLite:$dbfn",'','',
- { AutoCommit=>0,
- RaiseError=>1, ShowErrorStatement=>1,
- unicode=>1 })
- or die "$dbfn $DBI::errstr ?"
- unless $dbh;
-
+use CommodsWeb;
+db_setocean('Midnight');
+db_connect();
</%init>
<input type=submit name=submit value="Go">
</form>
-
-use DBI;
-
-our $dbh;
-our $dbfn;
-$dbfn= "/home/ijackson/things/ypp-sc-tools.pctb-dict-test/yarrg/OCEAN-Midnight.db";
- $dbh=DBI->connect("dbi:SQLite:$dbfn",'','',
- { AutoCommit=>0,
- RaiseError=>1, ShowErrorStatement=>1,
- unicode=>1 })
- or die "$dbfn $DBI::errstr ?";
- # default timeout is 30s which is plenty
-
my $sth=$dbh->prepare(
"SELECT a.commodname,b.price,c.price,d.stallname,e.islandname
FROM commods as a
</BODY>
</HTML>
+
+<%init>
+use CommodsWeb;
+db_setocean('Midnight');
+db_connect();
+</%init>