# use Install;
use InstallAuth;
use C4::Context;
-use C4::Interface::CGI::Output;
+use C4::Output;
use C4::Languages;
use strict; # please develop with the strict pragma
unless (eval {require Digest::MD5}) { push @missing,{name=>"Digest::MD5"} };
unless (eval {require MARC::Record}) { push @missing,{name=>"MARC::Record"} };
unless (eval {require Mail::Sendmail}) { push @missing,{name=>"Mail::Sendmail",usagemail=>1} };
+ unless (eval {require List::MoreUtils}) { push @missing,{name=>"List::MoreUtils"} };
+ unless (eval {require XML::RSS}) { push @missing,{name=>"XML::RSS"} };
# The following modules are not mandatory, depends on how the library want to use Koha
unless (eval {require PDF::API2}) {
if ($#missing>=0) { # only when $#missing >= 0 so this isn't fatal
} elsif ($step && $step==3){
my $op=$query->param('op');
if ($op && $op eq 'finish'){
+ if (C4::Context->preference('Version')) {
+ warn "UPDATE Version";
+ my $finish=$dbh->prepare("UPDATE systempreferences SET value=? WHERE variable='Version'");
+ $finish->execute(C4::Context->config("kohaversion"));
+ } else {
+ warn "INSERT Version";
+ my $finish=$dbh->prepare("INSERT into systempreferences (variable,value,explanation) values ('Version',?,'The Koha database version. Don t change this value manually, it s holded by the webinstaller')");
+ $finish->execute(C4::Context->config("kohaversion"));
+ }
# Installation is finished.
# We just deny anybody acess to install
# And we redirect people to mainpage.
my $lang;
my %hashlevel;
# sort by filename -> prepend with numbers to specify order of insertion.
-
- my @fnames = sort { my @aa = split /\/|\\/, ($a); my @bb = split /\/|\\/, ($b); $aa[-1] <=> $bb[-1] } $query->param('framework') ;
+ my @fnames = sort { my @aa = split /\/|\\/, ($a); my @bb = split /\/|\\/, ($b); $aa[-1] lt $bb[-1] } $query->param('framework') ;
+ $dbh->do('SET FOREIGN_KEY_CHECKS=0');
+ my $request=$dbh->prepare("SELECT value FROM systempreferences WHERE variable='FrameworksLoaded'");
+ $request->execute;
+ my ($systempreference)=$request->fetchrow;
foreach my $file (@fnames){
# warn $file;
undef $/;
- my $strcmd="mysql ".($info{hostname}?"-h $info{hostname} ":"").($info{port}?"-P $info{port} ":"").($info{user}?"-u $info{user} ":"").($info{password}?"-p$info{password}":"")." $info{dbname} ";
- my $str = qx($strcmd < $file 2>&1);
+ my $strcmd="mysql ".($info{hostname}?" -h $info{hostname} ":"").($info{port}?" -P $info{port} ":"").($info{user}?" -u $info{user} ":"").($info{password}?" -p$info{password}":"")." $info{dbname} ";
+ my $error = qx($strcmd < $file 2>&1);
my @file = split qr(\/|\\),$file;
$lang=$file[scalar(@file)-3] unless ($lang);
my $level=$file[scalar(@file)-2];
+ unless ($error){
+ $systempreference.="$file[scalar(@file)-1]|" unless(index($systempreference,$file[scalar(@file)-1])>=0);
+ }
#Bulding here a hierarchy to display files by level.
- push @{$hashlevel{$level}},{"fwkname"=>$file[scalar(@file)-1],"error"=>$str};
+ push @{$hashlevel{$level}},{"fwkname"=>$file[scalar(@file)-1],"error"=>$error};
}
+ #systempreference contains an ending |
+ chop $systempreference;
my @list;
map {push @list,{"level"=>$_,"fwklist"=>$hashlevel{$_}}} keys %hashlevel;
my $fwk_language;
$fwk_language = $each_language->{language_locale_name};
}
}
+ my $updateflag=$dbh->do("UPDATE systempreferences set value=\"$systempreference\" where variable='FrameworksLoaded'");
+ unless ($updateflag==1){
+ my $string="INSERT INTO systempreferences (value, variable, explanation, type) VALUES (\"$systempreference\",'FrameworksLoaded','Frameworks loaded through webinstaller','choice')";
+ my $rq=$dbh->prepare($string);
+ $rq->execute;
+ }
$template->param("fwklanguage"=>$fwk_language,
"list"=>\@list);
$template->param("$op"=>1);
+ $dbh->do('SET FOREIGN_KEY_CHECKS=1');
} elsif ( $op && $op eq 'selectframeworks'){
#Framework Selection
#sql data for import are supposed to be located in misc/sql-datas/<language>/<level>
@listdir= grep { !/^\.|CVS/ && -d "$dir/$_"} readdir(MYDIR);
closedir MYDIR;
my @levellist;
- foreach my $requirelevel (@listdir){
+ my $request=$dbh->prepare("SELECT value FROM systempreferences WHERE variable='FrameworksLoaded'");
+ $request->execute;
+ my ($frameworksloaded)=$request->fetchrow;
+ my %frameworksloaded;
+ foreach (split(/\|/,$frameworksloaded)){
+ $frameworksloaded{$_}=1;
+ }
+ foreach my $requirelevel (@listdir){
$dir =C4::Context->config('intranetdir')."/misc/sql-datas/$langchoice/$requirelevel";
opendir (MYDIR,$dir);
my @listname = grep { !/^\.|CVS/ && -f "$dir/$_" && $_=~m/\.sql$/} readdir(MYDIR);
$lines=~s/\n|\r/<br \/>/g;
use utf8;
utf8::encode($lines) unless (utf8::is_utf8($lines));
- push @frameworklist,{'fwkname'=>$name, 'fwkfile'=>"$dir/$_",'fwkdescription'=>$lines};
+ push @frameworklist,
+ {'fwkname'=>$name,
+ 'fwkfile'=>"$dir/$_",
+ 'fwkdescription'=>$lines,
+ 'checked'=>(($frameworksloaded{$_}||($requirelevel=~/(mandatory|requi|oblig|necess)/i))?1:0)
+ };
} @listname;
- my @fwks = sort { $a->{'fwkname'} <=> $b->{'fwkname'} } @frameworklist;
- $cell{"mandatory"}=($requirelevel=~/(mandatory|requi|oblig|necess)/i);
+ my @fwks = sort { $a->{'fwkname'} lt $b->{'fwkname'} } @frameworklist;
+# $cell{"mandatory"}=($requirelevel=~/(mandatory|requi|oblig|necess)/i);
$cell{"frameworks"}=\@fwks;
$cell{"label"}=ucfirst($requirelevel);
$cell{"code"}=lc($requirelevel);
$template->param($op=>1)
}elsif ($op && $op eq 'importdatastructure'){
#Import data structure and show errors if any
- my $filename="kohastructure.sql";
- undef $/;
- my $str = qx(mysql -h $info{hostname} -P $info{port} -u $info{user} -p$info{password} $info{dbname} <$filename 2>&1);
- $str=~s/\n|\r/<br \/>/g;
- $template->param("error"=>$str ,
+ #Uses DBI to read the file [MJR 2007-07-01]
+ my $dbh= DBI->connect("DBI:$info{dbms}:$info{dbname}:$info{hostname}".($info{port}?":$info{port}":""),$info{'user'}, $info{'password'});
+ open(INPUT,"<kohastructure.sql");
+ my $file=do{ local $/=undef; <INPUT>};
+ my @commands=split(/;/,$file);
+ pop @commands;
+ map { $dbh->do($_)} @commands;
+ close(INPUT);
+ $template->param("error"=>$dbh->errstr ,
"$op"=> 1, );
+ $dbh->disconnect;
} else {
#Check if there are enough tables.
# Version 2_2 was 74 tables, so we check if there is more than 75
$template->param(languages=>\@languages);
if ($dbh){
my $rq=$dbh->prepare("SELECT * from systempreferences WHERE variable='Version'");
- $rq->execute;
- my ($version)=$rq->fetchrow;
- if ($version){
- $query->redirect("install.pl?step=3");
- }
+ if ($rq->execute){
+ my ($version)=$rq->fetchrow;
+ if ($version){
+ $query->redirect("install.pl?step=3");
+ }
+ }
}
}
output_html_with_http_headers $query, $cookie, $template->output;