From e5bf0a30d95f950ef1c8bb0e8f740323ecbbc5df Mon Sep 17 00:00:00 2001 From: John Beppu Date: Thu, 23 Apr 2009 14:35:53 -0500 Subject: [PATCH] bug 1546 - replacing REPLACE statements replaced REPLACE statements with a pair of INSERT and UPDATE statements. Hopefully, these are the last ones. Signed-off-by: Galen Charlton Signed-off-by: Henri-Damien LAURENT --- admin/auth_subfields_structure.pl | 79 ++++++++++++++++++------- admin/marc_subfields_structure.pl | 96 ++++++++++++++++++++++--------- 2 files changed, 129 insertions(+), 46 deletions(-) diff --git a/admin/auth_subfields_structure.pl b/admin/auth_subfields_structure.pl index a1c636eb0f..133559fb0f 100755 --- a/admin/auth_subfields_structure.pl +++ b/admin/auth_subfields_structure.pl @@ -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'); @@ -384,8 +392,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'); @@ -418,26 +430,53 @@ if ($op eq 'add_form') { 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"; exit; @@ -473,7 +512,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++){ diff --git a/admin/marc_subfields_structure.pl b/admin/marc_subfields_structure.pl index 3c15291bbe..8c1c4504d8 100755 --- a/admin/marc_subfields_structure.pl +++ b/admin/marc_subfields_structure.pl @@ -24,7 +24,7 @@ use CGI; use C4::Context; -sub StringSearch { +sub string_search { my ( $searchstring, $frameworkcode ) = @_; my $dbh = C4::Context->dbh; $searchstring =~ s/\'/\\\'/g; @@ -49,6 +49,14 @@ sub StringSearch { return ( $cnt, \@results ); } +sub marc_subfield_structure_exists { + my ($tagfield, $tagsubfield, $frameworkcode) = @_; + my $dbh = C4::Context->dbh; + my $sql = "select tagfield from marc_subfield_structure where tagfield = ? and tagsubfield = ? and frameworkcode = ?"; + my $rows = $dbh->selectall_arrayref($sql, {}, $tagfield, $tagsubfield, $frameworkcode); + return @$rows > 0; +} + my $input = new CGI; my $tagfield = $input->param('tagfield'); my $tagsubfield = $input->param('tagsubfield'); @@ -382,10 +390,18 @@ 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 marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,seealso,authorised_value,authtypecode,value_builder,hidden,isurl,frameworkcode, link,defaultvalue) - values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)" - ); +# my $sth = $dbh->prepare( +# "replace marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,seealso,authorised_value,authtypecode,value_builder,hidden,isurl,frameworkcode, link,defaultvalue) +# values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)" +# ); + my $sth_insert = $dbh->prepare(qq{ + insert into marc_subfield_structure (tagfield,tagsubfield,liblibrarian,libopac,repeatable,mandatory,kohafield,tab,seealso,authorised_value,authtypecode,value_builder,hidden,isurl,frameworkcode, link,defaultvalue) + values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) + }); + my $sth_update = $dbh->prepare(qq{ + update marc_subfield_structure set tagfield=?, tagsubfield=?, liblibrarian=?, libopac=?, repeatable=?, mandatory=?, kohafield=?, tab=?, seealso=?, authorised_value=?, authtypecode=?, value_builder=?, hidden=?, isurl=?, frameworkcode=?, link=?, defaultvalue=? + where tagfield=? and tagsubfield=? and frameworkcode=? + }); my @tagsubfield = $input->param('tagsubfield'); my @liblibrarian = $input->param('liblibrarian'); my @libopac = $input->param('libopac'); @@ -421,29 +437,57 @@ elsif ( $op eq 'add_validate' ) { if ($liblibrarian) { unless ( C4::Context->config('demo') eq 1 ) { - $sth->execute( - $tagfield, - $tagsubfield, - $liblibrarian, - $libopac, - $repeatable, - $mandatory, - $kohafield, - $tab, - $seealso, - $authorised_value, - $authtypecode, - $value_builder, - $hidden, - $isurl, - $frameworkcode, - $link, - $defaultvalue, - ); + if (marc_subfield_structure_exists($tagfield, $tagsubfield, $frameworkcode)) { + $sth_update->execute( + $tagfield, + $tagsubfield, + $liblibrarian, + $libopac, + $repeatable, + $mandatory, + $kohafield, + $tab, + $seealso, + $authorised_value, + $authtypecode, + $value_builder, + $hidden, + $isurl, + $frameworkcode, + $link, + $defaultvalue, + ( + $tagfield, + $tagsubfield, + $frameworkcode, + ), + ); + } else { + $sth_insert->execute( + $tagfield, + $tagsubfield, + $liblibrarian, + $libopac, + $repeatable, + $mandatory, + $kohafield, + $tab, + $seealso, + $authorised_value, + $authtypecode, + $value_builder, + $hidden, + $isurl, + $frameworkcode, + $link, + $defaultvalue, + ); + } } } } - $sth->finish; + $sth_insert->finish; + $sth_update->finish; print "Content-Type: text/html\n\n"; exit; @@ -494,7 +538,7 @@ elsif ( $op eq 'delete_confirmed' ) { ################## DEFAULT ################################## } else { # DEFAULT - my ( $count, $results ) = StringSearch( $tagfield, $frameworkcode ); + my ( $count, $results ) = string_search( $tagfield, $frameworkcode ); my $toggle = 1; my @loop_data = (); for ( -- 2.39.5