-#!/usr/bin/perl -w # please develop with -w
+#!/usr/bin/perl
+use strict;
+use warnings;
use diagnostics;
# use Install;
use C4::Languages qw(getAllLanguages getTranslatedLanguages);
use C4::Installer;
-use strict; # please develop with the strict pragma
-
use CGI;
+use IPC::Cmd;
my $query = new CGI;
my $step = $query->param('step');
{ name => "GD::Barcode", usagebarcode => 1, usagespine => 1 };
}
}
+ unless ( eval { require GD } ) {
+ if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal
+ push @missing,
+ { name => "GD", usagepatronimages => 1 };
+ }
+ }
+ unless ( eval { require Graphics::Magick } ) {
+ if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal
+ push @missing,
+ { name => "Graphics::Magick", usagepatroncards => 1 };
+ }
+ }
unless ( eval { require Data::Random } ) {
if ( $#missing >= 0 ) { # only when $#missing >= 0 so this isn't fatal
push @missing, { name => "Data::Random", usagebarcode => 1 };
}
$template->param( "checkgrantaccess" => $grantaccess );
} # End mysql connect check...
-
+
elsif ( $info{dbms} eq "Pg" ) {
# Check if database has been created...
my $rv = $dbh->do( "SELECT * FROM pg_catalog.pg_database WHERE datname = \'$info{dbname}\';" );
#
# STEP 3 : database setup
#
-#
+#
my $op = $query->param('op');
if ( $op && $op eq 'finished' ) {
#
#
#
# (note that the term "selectframeworks is not correct. The user can select various files, not only frameworks)
-
+
#Framework Selection
#sql data for import are supposed to be located in installer/data/<language>/<level>
# Where <language> is en|fr or any international abbreviation (provided language hash is updated... This will be a problem with internationlisation.)
my $marcflavour = $query->param('marcflavour');
if ($marcflavour){
$installer->set_marcflavour_syspref($marcflavour);
- };
+ };
$marcflavour = C4::Context->preference('marcflavour') unless ($marcflavour);
#Insert into database the selected marcflavour
- undef $/;
+ undef $/;
my ($marc_defaulted_to_en, $fwklist) = $installer->marc_framework_sql_list($langchoice, $marcflavour);
$template->param('en_marc_frameworks' => $marc_defaulted_to_en);
$template->param( "frameworksloop" => $fwklist );
$template->param( "marcflavour" => ucfirst($marcflavour));
-
+
my ($sample_defaulted_to_en, $levellist) = $installer->sample_data_sql_list($langchoice, $marcflavour);
$template->param( "en_sample_data" => $sample_defaulted_to_en);
$template->param( "levelloop" => $levellist );
# 1ST install, 2nd sub-step : show the user the marcflavour available.
#
#
-
+
#Choose Marc Flavour
#sql data are supposed to be located in installer/data/<dbms>/<language>/marcflavour/marcflavourname
# Where <dbms> is database type according to DBD syntax
}
my @listdir = grep { !/^\./ && -d "$dir/$_" } readdir(MYDIR);
closedir MYDIR;
- my $marcflavour=C4::Context->preference("marcflavour");
+ my $marcflavour=C4::Context->preference("marcflavour");
my @flavourlist;
foreach my $marc (@listdir) {
- my %cell=(
+ my %cell=(
"label"=> ucfirst($marc),
"code"=>uc($marc),
- "checked"=> defined($marcflavour) ? uc($marc) eq $marcflavour : 0);
+ "checked"=> defined($marcflavour) ? uc($marc) eq $marcflavour : 0);
# $cell{"description"}= do { local $/ = undef; open INPUT "<$dir/$marc.txt"||"";<INPUT> };
push @flavourlist, \%cell;
}
# Not 1st install, the only sub-step : update database
#
#Do updatedatabase And report
- my $execstring =
- C4::Context->config("intranetdir") . "/installer/data/$info{dbms}/updatedatabase.pl";
- undef $/;
- my $string = qx($execstring 2>&1 1>/dev/null); # added '1>/dev/null' to return only stderr in $string. Needs testing here. -fbcit
- if ($string) {
- $string =~ s/\n|\r/<br \/>/g;
- $string =~
- s/(DBD::mysql.*? failed: .*? line [0-9]*.|=================.*?====================)/<font color=red>$1<\/font>/g;
- $template->param( "updatereport" => $string );
+ my $cmd = C4::Context->config("intranetdir") . "/installer/data/$info{dbms}/updatedatabase.pl";
+ my ($success, $error_code, $full_buf, $stdout_buf, $stderr_buf) = IPC::Cmd::run(command => $cmd, verbose => 0);
+
+ if (@$stdout_buf) {
+ $template->param(update_report => [ map { { line => $_ } } split(/\n/, join('', @$stdout_buf)) ] );
+ $template->param(has_update_succeeds => 1);
}
+ if (@$stderr_buf) {
+ $template->param(update_errors => [ map { { line => $_ } } split(/\n/, join('', @$stderr_buf)) ] );
+ $template->param(has_update_errors => 1);
+ warn "The following errors were returned while attempting to run the updatedatabase.pl script:\n";
+ foreach my $line (@$stderr_buf) {warn "$line\n";}
+ }
+
$template->param( $op => 1 );
}
else {