French, Italian, Portuguese, Tetun and Turkish updates
[koha.git] / admin / auth_subfields_structure.pl
index ed92de6..00326cc 100755 (executable)
@@ -24,7 +24,7 @@ use CGI;
 use C4::Context;
 
 
-sub StringSearch  {
+sub string_search  {
        my ($searchstring,$authtypecode)=@_;
        my $dbh = C4::Context->dbh;
        $searchstring=~ s/\'/\\\'/g;
@@ -44,6 +44,14 @@ sub StringSearch  {
        return ($cnt,\@results);
 }
 
+sub auth_subfield_structure_exists {
+       my ($authtypecode, $tagfield, $tagsubfield) = @_;
+       my $dbh  = C4::Context->dbh;
+       my $sql  = "select tagfield from auth_subfield_structure where authtypecode = ? and tagfield = ? and tagsubfield = ?";
+       my $rows = $dbh->selectall_arrayref($sql, {}, $authtypecode, $tagfield, $tagsubfield);
+       return @$rows > 0;
+}
+
 my $input = new CGI;
 my $tagfield=$input->param('tagfield');
 my $tagsubfield=$input->param('tagsubfield');
@@ -171,34 +179,37 @@ if ($op eq 'add_form') {
                                        );
                $row_data{ohidden} = CGI::scrolling_list(-name=>'ohidden',
                                        -id=>"ohidden$i",
-                                       -values=>['0','1','2'],
-                                       -labels => {'0'=>'Show','1'=>'Show Collapsed',
-                                                                       '2' =>'Hide',
-                                                                       },
-                                       -default=>substr($data->{'hidden'},0,1),
-                                       -size=>1,
-                                       -multiple=>0,
-                                       );
-               $row_data{ihidden} = CGI::scrolling_list(-name=>'ihidden',
-                                       -id=>"ihidden$i",
-                                       -values=>['0','1','2'],
-                                       -labels => {'0'=>'Show','1'=>'Show Collapsed',
-                                                                       '2' =>'Hide',
-                                                                       },
-                                       -default=>substr($data->{'hidden'},1,1),
-                                       -size=>1,
-                                       -multiple=>0,
-                                       );
-               $row_data{ehidden} = CGI::scrolling_list(-name=>'ehidden',
-                                       -id=>"ehidden$i",
-                                       -values=>['0','1','2'],
-                                       -labels => {'0'=>'Show','1'=>'Show Collapsed',
-                                                                       '2' =>'Hide',
-                                                                       },
-                                       -default=>substr($data->{'hidden'}."  ",2,1),
+                                       #-values=>['0','1','2'],
+                                       #-labels => {'0'=>'Show','1'=>'Show Collapsed',
+                                       #                               '2' =>'Hide',
+                                       #                               },
+                                       -values=>['0','-5'],
+                                       -labels => {'0'=>'Show All','-5'=>'Hide All',},
+                                       -default=>$data->{'hidden'},
+                                       #-default=>"-5",
                                        -size=>1,
                                        -multiple=>0,
                                        );
+               #$row_data{ihidden} = CGI::scrolling_list(-name=>'ihidden',
+               #                       -id=>"ihidden$i",
+               #                       -values=>['0','1','2'],
+               #                       -labels => {'0'=>'Show','1'=>'Show Collapsed',
+               #                                                       '2' =>'Hide',
+               #                                                       },
+               #                       -default=>substr($data->{'hidden'},1,1),
+               #                       -size=>1,
+               #                       -multiple=>0,
+               #                       );
+               #$row_data{ehidden} = CGI::scrolling_list(-name=>'ehidden',
+               #                       -id=>"ehidden$i",
+               #                       -values=>['0','1','2'],
+               #                       -labels => {'0'=>'Show','1'=>'Show Collapsed',
+               #                                                       '2' =>'Hide',
+               #                                                       },
+               #                       -default=>substr($data->{'hidden'}."  ",2,1),
+               #                       -size=>1,
+               #                       -multiple=>0,
+               #                       );
                $row_data{tagsubfieldinput} = "<input type=\"hidden\" name=\"tagsubfield\" value=\"".$data->{'tagsubfield'}."\" id=\"tagsubfield\" />";
                $row_data{tagsubfield} = $data->{'tagsubfield'};
                $row_data{liblibrarian} = CGI::escapeHTML($data->{'liblibrarian'});
@@ -285,36 +296,44 @@ if ($op eq 'add_form') {
                                        );
                $row_data{ohidden} = CGI::scrolling_list(-name=>'ohidden',
                                        -id=>"ohidden$i",
-                                       -values=>['0','1','2'],
-                                       -labels => {'0'=>'Show','1'=>'Show Collapsed',
-                                                                       '2' =>'Hide',
-                                                                       },
-                                       -default=>"0",
+                                       #-values=>['0','1','2'],
+                                       #-labels => {'0'=>'Show','1'=>'Show Collapsed',
+                                       #                               '2' =>'Hide',
+                                       #                               },
+                                       -values=>['0','-5'],
+                                       -labels => {'0'=>'Show All','-5'=>'Hide All',},
+                                       #-default=>"0",
+                                       -default=>$data->{'hidden'},
+                                       #-default=>"-5",
                                        -size=>1,
                                        -multiple=>0,
                                        );
 
-               $row_data{ihidden} = CGI::scrolling_list(-name=>'ihidden',
-                                       -id=>"ihidden$i",
-                                       -values=>['0','1','2'],
-                                       -labels => {'0'=>'Show','1'=>'Show Collapsed',
-                                                                       '2' =>'Hide',
-                                                                       },
-                                       -default=>"0",
-                                       -size=>1,
-                                       -multiple=>0,
-                                       );
-               $row_data{ehidden} = CGI::scrolling_list(-name=>'ehidden',
-                                       -id=>"ehidden$i",
-                                       -values=>['0','1','2'],
-                                       -labels => {'0'=>'Show','1'=>'Show Collapsed',
-                                                                       '2' =>'Hide',
-                                                                       },
-                                       -default=>"0",
-                                       -size=>1,
-                                       -multiple=>0,
-                                       );
+               #$row_data{ihidden} = CGI::scrolling_list(-name=>'ihidden',
+               #                       -id=>"ihidden$i",
+               #                       -values=>['0','1','2'],
+               #                       -labels => {'0'=>'Show','1'=>'Show Collapsed',
+               #                                                       '2' =>'Hide',
+               #                                                       },
+               #                       -default=>"0",
+               #                       -size=>1,
+               #                       -multiple=>0,
+               #                       );
+               #$row_data{ehidden} = CGI::scrolling_list(-name=>'ehidden',
+               #                       -id=>"ehidden$i",
+               #                       -values=>['0','1','2'],
+               #                       -labels => {'0'=>'Show','1'=>'Show Collapsed',
+               #                                                       '2' =>'Hide',
+               #                                                       },
+               #                       -default=>"0",
+               #                       -size=>1,
+               #                       -multiple=>0,
+               #                       );
                $row_data{tagsubfieldinput} = "<input type=\"text\" name=\"tagsubfield\" value=\"".$data->{'tagsubfield'}."\" size=\"1\" id=\"tagsubfield\" maxlength=\"1\" />";
+                $row_data{tagsubfieldinput} = 
+                        "<label><input type=\"text\" name=\"tagsubfield\" value=\""
+                        . $data->{'tagsubfield'}
+                        . "\" size=\"1\" id=\"tagsubfield\" maxlength=\"1\" /></label>";
                $row_data{tagsubfield} = $data->{'tagsubfield'};
                $row_data{liblibrarian} = "";
                $row_data{libopac} = "";
@@ -384,8 +403,12 @@ if ($op eq 'add_form') {
 } elsif ($op eq 'add_validate') {
        my $dbh = C4::Context->dbh;
        $template->param(tagfield => "$input->param('tagfield')");
-       my $sth=$dbh->prepare("replace auth_subfield_structure (authtypecode,tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,seealso,authorised_value,frameworkcode,value_builder,hidden,isurl)
+#      my $sth=$dbh->prepare("replace auth_subfield_structure (authtypecode,tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,seealso,authorised_value,frameworkcode,value_builder,hidden,isurl)
+#                                                                      values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
+       my $sth_insert = $dbh->prepare("insert into auth_subfield_structure (authtypecode,tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,seealso,authorised_value,frameworkcode,value_builder,hidden,isurl)
                                                                        values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
+       my $sth_update = $dbh->prepare("update auth_subfield_structure set authtypecode=?, tagfield=?, tagsubfield=?, liblibrarian=?, libopac=?, repeatable=?, mandatory=?, kohafield=?, tab=?, seealso=?, authorised_value=?, frameworkcode=?, value_builder=?, hidden=?, isurl=?
+                                                                       where authtypecode=? and tagfield=? and tagsubfield=?");
        my @tagsubfield = $input->param('tagsubfield');
        my @liblibrarian        = $input->param('liblibrarian');
        my @libopac             = $input->param('libopac');
@@ -394,8 +417,8 @@ if ($op eq 'add_form') {
        my @seealso             = $input->param('seealso');
        my @hidden;
        my @ohidden             = $input->param('ohidden');
-       my @ihidden             = $input->param('ihidden');
-       my @ehidden             = $input->param('ehidden');
+       #my @ihidden            = $input->param('ihidden');
+       #my @ehidden            = $input->param('ehidden');
        my @authorised_values   = $input->param('authorised_value');
        my $authtypecode        = $input->param('authtypecode');
        my @frameworkcodes      = $input->param('frameworkcode');
@@ -414,30 +437,58 @@ if ($op eq 'add_form') {
                my $authorised_value            =$authorised_values[$i];
                my $frameworkcode               =$frameworkcodes[$i];
                my $value_builder=$value_builder[$i];
-               my $hidden = $ohidden[$i].$ihidden[$i].$ehidden[$i]; #collate from 3 hiddens;
+               #my $hidden = $ohidden[$i].$ihidden[$i].$ehidden[$i]; #collate from 3 hiddens;
+               my $hidden = $ohidden[$i]; #collate from 3 hiddens;
                my $isurl = $input->param("isurl$i")?1:0;
                if ($liblibrarian) {
                        unless (C4::Context->config('demo') eq 1) {
-                               $sth->execute($authtypecode,
-                              $tagfield,
-                              $tagsubfield,
-                              $liblibrarian,
-                              $libopac,
-                              $repeatable,
-                              $mandatory,
-                              $kohafield,
-                              $tab,
-                              $seealso,
-                              $authorised_value,
-                              $frameworkcode,
-                              $value_builder,
-                              $hidden,
-                              $isurl,
-                                             );
+                               if (auth_subfield_structure_exists($authtypecode, $tagfield, $tagsubfield)) {
+                                       $sth_update->execute(
+                                               $authtypecode,
+                                               $tagfield,
+                                               $tagsubfield,
+                                               $liblibrarian,
+                                               $libopac,
+                                               $repeatable,
+                                               $mandatory,
+                                               $kohafield,
+                                               $tab,
+                                               $seealso,
+                                               $authorised_value,
+                                               $frameworkcode,
+                                               $value_builder,
+                                               $hidden,
+                                               $isurl,
+                                               (
+                                                       $authtypecode,
+                                                       $tagfield,
+                                                       $tagsubfield
+                                               ),
+                                       );
+                               } else {
+                                       $sth_insert->execute(
+                                               $authtypecode,
+                                               $tagfield,
+                                               $tagsubfield,
+                                               $liblibrarian,
+                                               $libopac,
+                                               $repeatable,
+                                               $mandatory,
+                                               $kohafield,
+                                               $tab,
+                                               $seealso,
+                                               $authorised_value,
+                                               $frameworkcode,
+                                               $value_builder,
+                                               $hidden,
+                                               $isurl,
+                                       );
+                               }
                        }
                }
        }
-       $sth->finish;
+       $sth_insert->finish;
+       $sth_update->finish;
        print "Content-Type: text/html\n\n<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=auth_subfields_structure.pl?tagfield=$tagfield&authtypecode=$authtypecode\"></html>";
        exit;
 
@@ -447,8 +498,7 @@ if ($op eq 'add_form') {
 } elsif ($op eq 'delete_confirm') {
        my $dbh = C4::Context->dbh;
        my $sth=$dbh->prepare("select * from auth_subfield_structure where tagfield=? and tagsubfield=? and authtypecode=?");
-       #FIXME : called with 2 bind variables when 3 are needed
-       $sth->execute($tagfield,$tagsubfield);
+       $sth->execute($tagfield,$tagsubfield,$authtypecode);
        my $data=$sth->fetchrow_hashref;
        $sth->finish;
        $template->param(liblibrarian => $data->{'liblibrarian'},
@@ -474,7 +524,7 @@ if ($op eq 'add_form') {
                                                                                                        # END $OP eq DELETE_CONFIRMED
 ################## DEFAULT ##################################
 } else { # DEFAULT
-       my ($count,$results)=StringSearch($tagfield,$authtypecode);
+       my ($count,$results)=string_search($tagfield,$authtypecode);
        my $toggle=1;
        my @loop_data = ();
        for (my $i=$offset; $i < ($offset+$pagesize<$count?$offset+$pagesize:$count); $i++){