Index: /trunk/PS-IPP-Config/lib/PS/IPP/Config.pm
===================================================================
--- /trunk/PS-IPP-Config/lib/PS/IPP/Config.pm	(revision 20925)
+++ /trunk/PS-IPP-Config/lib/PS/IPP/Config.pm	(revision 20926)
@@ -1,5 +1,5 @@
 # Copyright (c) 2006  Paul Price, Joshua Hoblitt
 #
-# $Id: Config.pm,v 1.93 2008-11-01 03:17:48 bills Exp $
+# $Id: Config.pm,v 1.94 2008-12-08 00:31:03 eugene Exp $
 
 package PS::IPP::Config;
@@ -10,4 +10,5 @@
 our $VERSION = '1.01';
 
+use DBI;
 use Carp qw( carp );
 use File::Basename qw( basename dirname );
@@ -31,4 +32,8 @@
                     $PS_EXIT_DATA_ERROR
                     $PS_EXIT_TIMEOUT_ERROR
+                    $PS_TABLE_ID_CHIP
+                    $PS_TABLE_ID_WARP
+                    $PS_TABLE_ID_STACK
+                    $PS_TABLE_ID_DIFF
                     metadataLookupStr
                     metadataLookupMD
@@ -46,4 +51,9 @@
 our $PS_EXIT_DATA_ERROR = 5;
 our $PS_EXIT_TIMEOUT_ERROR = 6;
+
+our $PS_TABLE_ID_CHIP = 1;
+our $PS_TABLE_ID_WARP = 2;
+our $PS_TABLE_ID_STACK = 3;
+our $PS_TABLE_ID_DIFF = 4;
 
 our $parser = PS::IPP::Metadata::Config->new; # Metadata parser
@@ -223,5 +233,4 @@
     }
 
-    # XXX why isn't just $self being returned here? -JH
     return $self;
 }
@@ -328,4 +337,36 @@
 
     return $pathname;
+}
+
+# convert the database name and the table ID to a image source id
+sub source_id 
+{
+    my $self = shift;
+    my $dbname = shift;
+    my $table = shift;
+
+    my $dbserver = metadataLookupStr($self->{_siteConfig}, "DBSERVER");
+    my $dbuser = metadataLookupStr($self->{_siteConfig}, "DBUSER");
+    my $dbpassword = metadataLookupStr($self->{_siteConfig}, "DBPASSWORD");
+    my $admindb = "ippadmin";
+
+    die "database configuration set up" unless defined($dbserver);
+    die "database configuration set up" unless defined($dbuser);
+    die "database configuration set up" unless defined($dbpassword);
+
+    my $dsn = "DBI:mysql:host=$dbserver;database=$admindb";
+    my $dbh = DBI->connect($dsn, $dbuser, $dbpassword) or die "Cannot connect to database.\n";
+
+    my $query = "SELECT proj_id FROM projects WHERE projname = \'$dbname\'";
+    my $stmt = $dbh->prepare($query);
+    $stmt->execute();
+    my $ref = $stmt->fetchrow_hashref();
+    die "ippdb $dbname not found" unless ($ref);
+
+    my $proj_id = $ref->{proj_id};
+    $stmt->finish();
+
+    my $source_id = ($proj_id << 3) & $table;
+    return $source_id;
 }
 
