Now, the API...
[koha.git] / C4 / Database.pm
1 package C4::Database; #asummes C4/Database
2
3 #requires DBI.pm to be installed
4
5 use strict;
6 require Exporter;
7 use DBI;
8 use vars qw($VERSION @ISA @EXPORT);
9   
10 $VERSION = 0.01;
11     
12 @ISA = qw(Exporter);
13 @EXPORT = qw(
14         &C4Connect &requireDBI
15 );
16
17
18 sub C4Connect  {
19   my $dbname="c4";
20    my ($database,$hostname,$user,$pass,%configfile);
21    open (KC, "/etc/koha.conf");
22    while (<KC>) {
23      chomp;
24      (next) if (/^\s*#/);
25      if (/(.*)\s*=\s*(.*)/) {
26        my $variable=$1;
27        my $value=$2;
28        # Clean up white space at beginning and end
29        $variable=~s/^\s*//g;
30        $variable=~s/\s*$//g;
31        $value=~s/^\s*//g;
32        $value=~s/\s*$//g;
33        $configfile{$variable}=$value;
34      }
35    }
36    $database=$configfile{'database'};
37    $hostname=$configfile{'hostname'};
38    $user=$configfile{'user'};
39    $pass=$configfile{'pass'};
40     
41    my $dbh=DBI->connect("DBI:mysql:$database:$hostname",$user,$pass);
42   return $dbh;
43 } # sub C4Connect
44
45 #------------------
46 # Helper subroutine to make sure database handle was passed properly
47 sub requireDBI {
48     my (
49         $dbh,
50         $subrname,      # name of calling subroutine
51     )=@_;
52
53     unless ( ref($dbh) =~ /DBI::db/ ) {
54         print "<pre>\nERROR: Subroutine $subrname called without proper DBI handle.\n" .
55                 "Please contact system administrator.\n</pre>\n";
56         die "ERROR: Subroutine $subrname called without proper DBI handle.\n";
57     }
58 } # sub requireDBI
59
60
61 END { }