| 
      
            Lines 35-41
          C4::Installer
      
      
        Link Here
      
     | 
  
        
          | 35 | 
           my $all_languages = getAllLanguages();  | 
          35 | 
           my $all_languages = getAllLanguages();  | 
        
        
          | 36 | 
           my $error = $installer->load_db_schema();  | 
          36 | 
           my $error = $installer->load_db_schema();  | 
        
        
          | 37 | 
           my $list = $installer->sql_file_list('en', 'marc21', { optional => 1, mandatory => 1 }); | 
          37 | 
           my $list = $installer->sql_file_list('en', 'marc21', { optional => 1, mandatory => 1 }); | 
        
          
            
              | 38 | 
               my ($fwk_language, $error_list) = $installer->load_sql_in_order($all_languages, @$list);  | 
              38 | 
               my ($fwk_language, $error_list) = $installer->load_sql_in_order(@$list);  | 
            
        
          | 39 | 
           $installer->set_version_syspref();  | 
          39 | 
           $installer->set_version_syspref();  | 
        
        
          | 40 | 
           $installer->set_marcflavour_syspref('MARC21'); | 
          40 | 
           $installer->set_marcflavour_syspref('MARC21'); | 
        
        
          | 41 | 
           | 
          41 | 
           | 
        
  
    | 
      
            Lines 173-178
          sub marc_framework_sql_list {
      
      
        Link Here
      
     | 
  
        
          | 173 | 
           | 
          173 | 
           | 
        
        
          | 174 | 
                  $cell{"frameworks"} = \@fwks; | 
          174 | 
                  $cell{"frameworks"} = \@fwks; | 
        
        
          | 175 | 
                  $cell{"label"}      = ucfirst($requirelevel); | 
          175 | 
                  $cell{"label"}      = ucfirst($requirelevel); | 
        
            
               | 
               | 
              176 | 
                      $cell{label}        =~ s/\.i18n$//; # remove extension from label | 
            
        
          | 176 | 
                  $cell{"code"}       = lc($requirelevel); | 
          177 | 
                  $cell{"code"}       = lc($requirelevel); | 
        
        
          | 177 | 
                  push @fwklist, \%cell;  | 
          178 | 
                  push @fwklist, \%cell;  | 
        
        
          | 178 | 
              }  | 
          179 | 
              }  | 
        
  
    | 
      
            Lines 250-255
          sub sample_data_sql_list {
      
      
        Link Here
      
     | 
  
        
          | 250 | 
           | 
          251 | 
           | 
        
        
          | 251 | 
                  $cell{"frameworks"} = \@fwks; | 
          252 | 
                  $cell{"frameworks"} = \@fwks; | 
        
        
          | 252 | 
                  $cell{"label"}      = ucfirst($requirelevel); | 
          253 | 
                  $cell{"label"}      = ucfirst($requirelevel); | 
        
            
               | 
               | 
              254 | 
                      $cell{label}        =~ s/\.i18n$//; # remove extension from label | 
            
        
          | 253 | 
                  $cell{"code"}       = lc($requirelevel); | 
          255 | 
                  $cell{"code"}       = lc($requirelevel); | 
        
        
          | 254 | 
                  push @levellist, \%cell;  | 
          256 | 
                  push @levellist, \%cell;  | 
        
        
          | 255 | 
              }  | 
          257 | 
              }  | 
        
  
    | 
      
            Lines 313-319
          sub load_db_schema {
      
      
        Link Here
      
     | 
  
        
          | 313 | 
           | 
          315 | 
           | 
        
        
          | 314 | 
          =head2 load_sql_in_order  | 
          316 | 
          =head2 load_sql_in_order  | 
        
        
          | 315 | 
           | 
          317 | 
           | 
        
          
            
              | 316 | 
                my ($fwk_language, $list) = $installer->load_sql_in_order($all_languages, @sql_list);  | 
              318 | 
                my ($list) = $installer->load_sql_in_order(@sql_list);  | 
            
        
          | 317 | 
           | 
          319 | 
           | 
        
        
          | 318 | 
          Given a list of SQL scripts supplied in C<@sql_list>, loads each of them  | 
          320 | 
          Given a list of SQL scripts supplied in C<@sql_list>, loads each of them  | 
        
        
          | 319 | 
          into the database and sets the FrameworksLoaded system preference to names  | 
          321 | 
          into the database and sets the FrameworksLoaded system preference to names  | 
        
  
    | 
      
            Lines 332-345
          The return value C<$list> is an arrayref containing a hashref for each
      
      
        Link Here
      
     | 
  
        
          | 332 | 
          a list of hashrefs containing a list of each script load and any error  | 
          334 | 
          a list of hashrefs containing a list of each script load and any error  | 
        
        
          | 333 | 
          messages associated with the loading of each script.  | 
          335 | 
          messages associated with the loading of each script.  | 
        
        
          | 334 | 
           | 
          336 | 
           | 
        
            
              | 335 | 
              B<FIXME:> The C<$fwk_language> code probably doesn't belong and needs to be  | 
               | 
               | 
            
            
              | 336 | 
              moved to a different method.  | 
            
            
              | 337 | 
               | 
            
        
          | 338 | 
          =cut  | 
          337 | 
          =cut  | 
        
        
          | 339 | 
           | 
          338 | 
           | 
        
        
          | 340 | 
          sub load_sql_in_order { | 
          339 | 
          sub load_sql_in_order { | 
        
        
          | 341 | 
              my $self = shift;  | 
          340 | 
              my $self = shift;  | 
        
            
              | 342 | 
                  my $all_languages = shift;  | 
               | 
               | 
            
        
          | 343 | 
              my @sql_list = @_;  | 
          341 | 
              my @sql_list = @_;  | 
        
        
          | 344 | 
           | 
          342 | 
           | 
        
        
          | 345 | 
              my $lang;  | 
          343 | 
              my $lang;  | 
        
  
    | 
      
            Lines 377-391
          sub load_sql_in_order {
      
      
        Link Here
      
     | 
  
        
          | 377 | 
              chop $systempreference;  | 
          375 | 
              chop $systempreference;  | 
        
        
          | 378 | 
              my @list;  | 
          376 | 
              my @list;  | 
        
        
          | 379 | 
              map { push @list, { "level" => $_, "fwklist" => $hashlevel{$_} } } keys %hashlevel; | 
          377 | 
              map { push @list, { "level" => $_, "fwklist" => $hashlevel{$_} } } keys %hashlevel; | 
        
            
              | 380 | 
                  my $fwk_language;  | 
               | 
               | 
            
            
              | 381 | 
                  for my $each_language (@$all_languages) { | 
            
            
              | 382 | 
               | 
            
            
              | 383 | 
                      #       warn "CODE".$each_language->{'language_code'}; | 
            
            
              | 384 | 
                      #       warn "LANG:".$lang;  | 
            
            
              | 385 | 
                      if ( $lang eq $each_language->{'language_code'} ) { | 
            
            
              | 386 | 
                          $fwk_language = $each_language->{language_locale_name}; | 
            
            
              | 387 | 
                      }  | 
            
            
              | 388 | 
                  }  | 
            
        
          | 389 | 
              my $updateflag =  | 
          378 | 
              my $updateflag =  | 
        
        
          | 390 | 
                $self->{'dbh'}->do( | 
          379 | 
                $self->{'dbh'}->do( | 
        
        
          | 391 | 
                  "UPDATE systempreferences set value=\"$systempreference\" where variable='FrameworksLoaded'"  | 
          380 | 
                  "UPDATE systempreferences set value=\"$systempreference\" where variable='FrameworksLoaded'"  | 
        
  
    | 
      
            Lines 397-403
          sub load_sql_in_order {
      
      
        Link Here
      
     | 
  
        
          | 397 | 
                  my $rq = $self->{'dbh'}->prepare($string); | 
          386 | 
                  my $rq = $self->{'dbh'}->prepare($string); | 
        
        
          | 398 | 
                  $rq->execute;  | 
          387 | 
                  $rq->execute;  | 
        
        
          | 399 | 
              }  | 
          388 | 
              }  | 
        
          
            
              | 400 | 
                  return ($fwk_language, \@list);  | 
              389 | 
                  return \@list;  | 
            
        
          | 401 | 
          }  | 
          390 | 
          }  | 
        
        
          | 402 | 
           | 
          391 | 
           | 
        
        
          | 403 | 
          =head2 set_marcflavour_syspref  | 
          392 | 
          =head2 set_marcflavour_syspref  | 
        
  
    | 
      
            Lines 495-501
          sub load_sql {
      
      
        Link Here
      
     | 
  
        
          | 495 | 
                      . ( $self->{user}     ? " -u $self->{user} "     : "" ) | 
          484 | 
                      . ( $self->{user}     ? " -u $self->{user} "     : "" ) | 
        
        
          | 496 | 
                      . ( $self->{password} ? " -p'$self->{password}'"   : "" ) | 
          485 | 
                      . ( $self->{password} ? " -p'$self->{password}'"   : "" ) | 
        
        
          | 497 | 
                      . " $self->{dbname} "; | 
          486 | 
                      . " $self->{dbname} "; | 
        
          
            
              | 498 | 
                      $error = qx($strcmd --default-character-set=utf8 <$filename 2>&1 1>/dev/null);  | 
              487 | 
                      $error = _run_mysql_file($strcmd, $filename);  | 
            
        
          | 499 | 
              } elsif ( $self->{dbms} eq 'Pg' ) { | 
          488 | 
              } elsif ( $self->{dbms} eq 'Pg' ) { | 
        
        
          | 500 | 
                  $cmd = qx(which psql 2>/dev/null || whereis psql 2>/dev/null);  | 
          489 | 
                  $cmd = qx(which psql 2>/dev/null || whereis psql 2>/dev/null);  | 
        
        
          | 501 | 
                  chomp $cmd;  | 
          490 | 
                  chomp $cmd;  | 
        
  
    | 
      
            Lines 520-525
          sub load_sql {
      
      
        Link Here
      
     | 
  
        
          | 520 | 
              return $error;  | 
          509 | 
              return $error;  | 
        
        
          | 521 | 
          }  | 
          510 | 
          }  | 
        
        
          | 522 | 
           | 
          511 | 
           | 
        
            
               | 
               | 
              512 | 
              sub _run_mysql_file { | 
            
            
              | 513 | 
                  my ($cmd, $filename) = @_;  | 
            
            
              | 514 | 
                  my $i18n_drop='DROP FUNCTION IF EXISTS i18n;';  | 
            
            
              | 515 | 
                  my $i18n_fake='CREATE FUNCTION i18n (d text) '.  | 
            
            
              | 516 | 
                      'RETURNS text DETERMINISTIC RETURN d;';  | 
            
            
              | 517 | 
                  my $utf8= '--default-character-set=utf8';  | 
            
            
              | 518 | 
                  my $error='';  | 
            
            
              | 519 | 
                  if( $filename =~ /installer\/data\/mysql\/en\//i ||  | 
            
            
              | 520 | 
                          $filename !~ /\.i18n\/[^\/]+\.sql$/i ) { #en or old style | 
            
            
              | 521 | 
                      $error= qx($cmd $utf8 -e '$i18n_drop $i18n_fake' 2>&1 1>/dev/null);  | 
            
            
              | 522 | 
                          #make sure i18n does not translate  | 
            
            
              | 523 | 
                      $error.= qx($cmd $utf8 <$filename 2>&1 1>/dev/null);  | 
            
            
              | 524 | 
                          #run sql with inserts  | 
            
            
              | 525 | 
                  }  | 
            
            
              | 526 | 
                  else { #new i18n style: redefine i18n function and run english insert | 
            
            
              | 527 | 
                      foreach my $f ($filename, _tr_sql_fname($filename) ) { | 
            
            
              | 528 | 
                          $error.= qx($cmd $utf8 <$f 2>&1 1>/dev/null);  | 
            
            
              | 529 | 
                      }  | 
            
            
              | 530 | 
                  }  | 
            
            
              | 531 | 
                  return $error;  | 
            
            
              | 532 | 
              }  | 
            
            
              | 533 | 
               | 
            
            
              | 534 | 
              sub _tr_sql_fname { | 
            
            
              | 535 | 
                  #Convert native name to English equivalent  | 
            
            
              | 536 | 
                  #Translating subfolder names is still needed  | 
            
            
              | 537 | 
                  my $file= shift;  | 
            
            
              | 538 | 
                  $file=~ s/\.i18n(\/[^\/]+)$/$1/; #strip i18n from last subfolder  | 
            
            
              | 539 | 
                  $file=~ s/(?<=installer\/data\/mysql\/)[^\/]+/en/;  | 
            
            
              | 540 | 
                      #paranoid lookbehind or just being cautious :) change language to en  | 
            
            
              | 541 | 
                  my $trans= { '1-obligatoire' => 'mandatory', '2-optionel' => 'optional', | 
            
            
              | 542 | 
                      'obligatoire' => 'mandatory', 'optionel' => 'optional',  | 
            
            
              | 543 | 
                      '1-obligatorisk' => 'mandatory', '2-valgfritt' => 'optional',  | 
            
            
              | 544 | 
                      'obligatorisk' => 'mandatory', 'valgfritt' => 'optional',  | 
            
            
              | 545 | 
                      'necessari' => 'mandatory', 'opzionali' => 'optional',  | 
            
            
              | 546 | 
                  };  | 
            
            
              | 547 | 
                  foreach my $sub (keys %$trans) { | 
            
            
              | 548 | 
                      my $t=$trans->{lc $sub}; | 
            
            
              | 549 | 
                      $file=~ s/(installer\/data\/mysql\/.*)\/$sub\//$1\/$t\//gi;  | 
            
            
              | 550 | 
                          #again ensure that we are only in last part of path  | 
            
            
              | 551 | 
                  }  | 
            
            
              | 552 | 
                  return $file;  | 
            
            
              | 553 | 
              }  | 
            
            
              | 554 | 
               | 
            
        
          | 523 | 
          =head2 get_file_path_from_name  | 
          555 | 
          =head2 get_file_path_from_name  | 
        
        
          | 524 | 
           | 
          556 | 
           | 
        
        
          | 525 | 
            my $filename = $installer->get_file_path_from_name('script_name'); | 
          557 | 
            my $filename = $installer->get_file_path_from_name('script_name'); |