X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=admin%2Fz3950servers.pl;h=92cc3e59f68315a34d4389e630b33b289e6484fd;hb=1ad188f9d67c729ff7119f5ede8e06cf3133a750;hp=7d013907cf12f6fbf06609949d89ff22cc4d3313;hpb=36a53b773b16184277d232fba1de6456edf764cc;p=koha.git diff --git a/admin/z3950servers.pl b/admin/z3950servers.pl index 7d013907cf..92cc3e59f6 100755 --- a/admin/z3950servers.pl +++ b/admin/z3950servers.pl @@ -5,7 +5,7 @@ # This software is placed under the gnu General Public License, v2 (http://www.gnu.org/licenses/gpl.html) # ALGO : -# this script use an $op to know what to do. +# this script use ano $op to know what to do. # if $op is empty or none of the above values, # - the default screen is build (with all records, or filtered datas). # - the user can clic on add, modify or delete record. @@ -20,294 +20,194 @@ # - we delete the record having primkey=$primkey use strict; -use C4::Output; +use warnings; use CGI; -use C4::Search; -use C4::Database; use C4::Context; +use C4::Auth; +use C4::Output; sub StringSearch { - my ($env,$searchstring,$type)=@_; + my ($searchstring,$type)=@_; my $dbh = C4::Context->dbh; - $searchstring=~ s/\'/\\\'/g; - my @data=split(' ',$searchstring); - my $count=@data; - my $query="Select host,port,db,userid,password,name,id,checked,rank from -z3950servers where (name like \"$data[0]\%\") order by rank,name"; my -$sth=$dbh->prepare($query); $sth->execute; - my @results; - my $cnt=0; - while (my $data=$sth->fetchrow_hashref) { - push(@results,$data); - $cnt ++; - } - # $sth->execute; - $sth->finish; - $dbh->disconnect; - return ($cnt,\@results); + my @data = ('%'); + my $count = 1; + if ( defined $searchstring ) { + $searchstring =~ s/\'/\\\'/g; + @data=split(' ',$searchstring); + $count=@data; + } + else { + $searchstring = ''; + } + + my $query = "SELECT host,port,db,userid,password,name,id,checked,rank,syntax,encoding,timeout"; + $query .= " FROM z3950servers"; + if ( $searchstring ne '' ) { $query .= " WHERE (name like ?)" } + $query .= " ORDER BY rank,name"; + my $sth=$dbh->prepare($query); + + if ( $searchstring ne '' ) { + $sth->execute("$data[0]\%"); + } + else { + $sth->execute; + } + + my @results; + while (my $data=$sth->fetchrow_hashref) { + push(@results,$data); + } + $sth->finish; + return (scalar(@results),\@results); } my $input = new CGI; my $searchfield=$input->param('searchfield'); -my $reqsel="select host,port,db,userid,password,name,id,checked,rank from -z3950servers where (name = '$searchfield') order by rank,name";my -$reqdel="delete from z3950servers where name='$searchfield'";my -$offset=$input->param('offset');my -$script_name="/cgi-bin/koha/admin/z3950servers.pl"; +my $offset=$input->param('offset') || 0; +my $script_name="/cgi-bin/koha/admin/z3950servers.pl"; + my $pagesize=20; -my $op = $input->param('op'); -$searchfield=~ s/\,//g; -print $input->header; +my $op = $input->param('op') || ''; + +my ($template, $loggedinuser, $cookie) + = get_template_and_user({template_name => "admin/z3950servers.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => {parameters => 'parameters_remaining_permissions'}, + debug => 1, + }); + + +$template->param(script_name => $script_name, + searchfield => $searchfield); -#start the page and read in includes -print startpage(); -print startmenu('admin'); ################## ADD_FORM ################################## # called by default. Used to create form to add or modify a record if ($op eq 'add_form') { + $template->param(add_form => 1); #---- if primkey exists, it's a modify action, so read values to modify... my $data; if ($searchfield) { my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("select -host,port,db,userid,password,name,id,checked,rank from z3950servers where (name -= '$searchfield') order by rank,name"); $sth->execute; -$data=$sth->fetchrow_hashref; $sth->finish; - } - print < - /////////////////////////////////////////////////////////////////////////////// -////////////////////////////////// function isNotNull(f,noalert) { - if (f.value.length ==0) { - return false; - } - return true; - } - /////////////////////////////////////////////////////////////////////////////// -////////////////////////////////// function toUC(f) { - var x=f.value.toUpperCase(); - f.value=x; - return true; - } - /////////////////////////////////////////////////////////////////////////////// -////////////////////////////////// function isNum(v,maybenull) { - var n = new Number(v.value); - if (isNaN(n)) { - return false; - } - if (maybenull==0 && v.value=='') { - return false; - } - return true; - } - /////////////////////////////////////////////////////////////////////////////// -////////////////////////////////// function isDate(f) { - var t = Date.parse(f.value); - if (isNaN(t)) { - return false; - } - } - /////////////////////////////////////////////////////////////////////////////// -////////////////////////////////// function Check(f) { - var ok=1; - var _alertString=""; - var alertString2; - if (f.searchfield.value.length==0) { - _alertString += "- site name missing\\n"; - } - if (f.host.value.length==0) { - _alertString += "- host missing\\n"; - } - if (f.port.value.length==0) { - _alertString += "- port missing\\n"; - } - if (f.db.value.length==0) { - _alertString += "- database missing\\n"; - } - if (isNaN(f.port.value)) { - _alertString += "- port must be a number\\n"; - } - if (isNaN(f.rank.value)) { - _alertString += "- rank must be a number\\n"; - } - if (isNaN(f.checked.value) || f.checked.value<0 || f.checked.value>1) { - _alertString += "- checked must be 0 or 1\\n"; - } - if (_alertString.length==0) { - document.Aform.submit(); - } else { - alertString2 = "Form not submitted because of the following problem(s)\\n"; - alertString2 += -"------------------------------------------------------------------------------- ------\\n\\n"; alertString2 += _alertString; alert(alertString2); - } + my $sth=$dbh->prepare("select host,port,db,userid,password,name,id,checked,rank,syntax,encoding,timeout from z3950servers where (name = ?) order by rank,name"); + $sth->execute($searchfield); + $data=$sth->fetchrow_hashref; + $sth->finish; } - -printend -;#/ - if ($searchfield) { - print "

Modify Z39.50 Server

"; - } else { - print "

Add Z39.50 Server

"; - } - print "
"; - print ""; - print ""; - if ($searchfield) { - print "\n"; } else { - print "\n"; } - print "\n"; print "\n"; print "\n"; print -"\n"; print "\n"; print -""; print -""; print -""; print "
Z39.50 Server$searchfield
Z39.50 Server
Hostname
Port
Database
Userid
Password
Checked (searched by default)
Rank (display order)
 
"; print "
";; - # END $OP eq ADD_FORM################## ADD_VALIDATE -################################### called by add_form, used to insert/modify -data in DB} elsif ($op eq 'add_validate') { my $dbh=C4::Context->dbh; my -$sth=$dbh->prepare("select * from z3950servers where name=?"); -$sth->execute($input->param('searchfield')); if ($sth->rows) { - $sth=$dbh->prepare("update z3950servers set host=?, port=?, db=?, userid=?, -password=?, name=?, checked=?, rank=? where name=?"); -$sth->execute($input->param('host'), $input->param('port'), + $template->param( $_ => $data->{$_} ) + for ( qw( host port db userid password checked rank timeout encoding ) ); + $template->param( $_ . $data->{$_} => 1) + for ( qw( syntax ) ); + # END $OP eq ADD_FORM +################## ADD_VALIDATE ################################## +# called by add_form, used to insert/modify data in DB +} elsif ($op eq 'add_validate') { + $template->param(add_validate => 1); + my $dbh=C4::Context->dbh; + my $sth=$dbh->prepare("select * from z3950servers where name=?"); + $sth->execute($input->param('searchfield')); + my $checked = $input->param('checked') ? 1 : 0; + if ($sth->rows) { + $sth=$dbh->prepare("update z3950servers set host=?, port=?, db=?, userid=?, password=?, name=?, checked=?, rank=?,syntax=?,encoding=?,timeout=? where name=?"); + $sth->execute($input->param('host'), + $input->param('port'), $input->param('db'), $input->param('userid'), $input->param('password'), $input->param('searchfield'), - $input->param('checked'), + $checked, $input->param('rank'), - $input->param('searchfield') - ); - } else { - $sth=$dbh->prepare("insert into z3950servers -(host,port,db,userid,password,name,checked,rank) values (?, ?, ?, ?, ?, ?, ?, -?)"); $sth->execute($input->param('host'), $input->param('port'), - $input->param('db'), - $input->param('userid'), - $input->param('password'), + $input->param('syntax'), + $input->param('encoding'), + $input->param('timeout'), $input->param('searchfield'), - $input->param('checked'), - $input->param('rank'), ); + } + else { + $sth=$dbh->prepare( + "INSERT INTO z3950servers " . + "(host,port,db,userid,password,name,checked,rank,syntax,encoding,timeout) " . + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" ); + $sth->execute( + $input->param( 'host' ), + $input->param( 'port' ), + $input->param( 'db' ), + $input->param( 'userid' ), + $input->param( 'password' ), + $input->param( 'searchfield' ), + $checked, + $input->param( 'rank' ), + $input->param( 'syntax' ), + $input->param( 'encoding' ), + $input->param( 'timeout' ) ); } $sth->finish; - print "data recorded"; - print "
"; - print ""; - print "
"; # END $OP eq ADD_VALIDATE ################## DELETE_CONFIRM ################################## # called by default form, used to confirm deletion of data in DB } elsif ($op eq 'delete_confirm') { + $template->param(delete_confirm => 1); my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("select count(*) as total from borrowers where -branchcode='$searchfield'"); $sth->execute; - my $total = $sth->fetchrow_hashref; - $sth->finish; - print "$reqsel"; - my $sth=$dbh->prepare($reqsel); - $sth->execute; - my $data=$sth->fetchrow_hashref; - $sth->finish; - print mktablehdr; - print mktablerow(2,'#99cc33',bold('Branch -code'),bold("$searchfield"),'/images/background-mem.gif'); print "
"; print "Branch -code$data->{'branchcode'}"; print "  -name$data->{'branchname'}"; print "  -adress$data->{'branchaddress1'}"; print -" $data->{'branchaddress2'}"; print -" $data->{'branchaddress3'}"; print -" phone$data->{'branchphone'}"; print -"  fax$data->{'branchfax'}"; print -"  e-mail$data->{'branchemail'}"; print -"  issuing$data->{'issuing'}"; if -($total->{'total'} >0) { print "This record -is used $total->{'total'} times. Deletion not possible"; print -"
"; } else { print "CONFIRM DELETION"; print "
"; } # END $OP eq -DELETE_CONFIRM################## DELETE_CONFIRMED -################################### called by delete_confirm, used to -effectively confirm deletion of data in DB} elsif ($op eq 'delete_confirmed') { -my $dbh=C4::Context->dbh;# my $searchfield=$input->param('branchcode'); my -$sth=$dbh->prepare($reqdel); $sth->execute; + + my $sth2=$dbh->prepare("select host,port,db,userid,password,name,id,checked,rank,syntax,encoding,timeout from z3950servers where (name = ?) order by rank,name"); + $sth2->execute($searchfield); + my $data=$sth2->fetchrow_hashref; + $sth2->finish; + + $template->param(host => $data->{'host'}, + port => $data->{'port'}, + db => $data->{'db'}, + userid => $data->{'userid'}, + password => $data->{'password'}, + checked => $data->{'checked'}, + rank => $data->{'rank'}, + syntax => $data->{'syntax'}, + timeout => $data->{'timeout'}, + encoding => $data->{'encoding'} ); + + # END $OP eq DELETE_CONFIRM +################## DELETE_CONFIRMED ################################## +# called by delete_confirm, used to effectively confirm deletion of data in DB +} elsif ($op eq 'delete_confirmed') { + $template->param(delete_confirmed => 1); + my $dbh=C4::Context->dbh; + my $sth=$dbh->prepare("delete from z3950servers where name=?"); + $sth->execute($searchfield); $sth->finish; - print "data deleted"; - print "
"; - print ""; - print "
"; # END $OP eq DELETE_CONFIRMED ################## DEFAULT ################################## } else { # DEFAULT - my @inputs=(["text","searchfield",$searchfield], - ["reset","reset","clr"]); - print mkheadr(2,'branches admin'); - print mkformnotable("$script_name",@inputs); - print <param(else => 1); + my ($count,$results)=StringSearch($searchfield,'web'); + my @loop; -printend - ; - if ($searchfield ne '') { - print "You Searched for $searchfield

"; - } - print mktablehdr; - print mktablerow(10,'#99cc33',bold('Site'),bold('hostname'),bold('port'), - bold('database'),bold('Userid'),bold('Password'),bold('Checked'),bold('Rank'), - ' ',' ','/images/background-mem.gif'); - my $env; - my ($count,$results)=StringSearch($env,$searchfield,'web'); - my $toggle="white"; - for (my $i=$offset; $i < ($offset+$pagesize<$count?$offset+$pagesize:$count); -$i++){ if ($toggle eq 'white'){ - $toggle="#ffffcc"; - } else { - $toggle="white"; - } - + for (my $i=$offset; $i < ($offset+$pagesize<$count?$offset+$pagesize:$count); $i++){ my $urlsearchfield=$results->[$i]{name}; $urlsearchfield=~s/ /%20/g; - print mktablerow(10,$toggle, - $results->[$i]{'name'}, - $results->[$i]{'host'}, - $results->[$i]{'port'}, - $results->[$i]{'db'}, - $results->[$i]{'userid'}, - ($results->[$i]{'password'}) ? ('#######') : (' '), - $results->[$i]{'checked'}, - $results->[$i]{'rank'}, - mklink("$script_name?op=add_form&searchfield=$urlsearchfield".'','Edit'), - -mklink("$script_name?op=delete_confirm&searchfield=$urlsearchfield",'Delete')); -} print mktableft; - print "

"; - print ""; + my %row = ( name => $results->[$i]{'name'}, + host => $results->[$i]{'host'}, + port => $results->[$i]{'port'}, + db => $results->[$i]{'db'}, + userid =>$results->[$i]{'userid'}, + password => ($results->[$i]{'password'}) ? ('#######') : (' '), + checked => $results->[$i]{'checked'}, + rank => $results->[$i]{'rank'}, + syntax => $results->[$i]{'syntax'}, + encoding => $results->[$i]{'encoding'}, + timeout => $results->[$i]{'timeout'}); + push @loop, \%row; + + } + $template->param(loop => \@loop); if ($offset>0) { - my $prevpage = $offset-$pagesize; - print mklink("$script_name?offset=".$prevpage,'<< Prev'); + $template->param(offsetgtzero => 1, + prevpage => $offset-$pagesize); } - print "      "; if ($offset+$pagesize<$count) { - my $nextpage =$offset+$pagesize; - print mklink("$script_name?offset=".$nextpage,'Next >>'); + $template->param(ltcount => 1, + nextpage => $offset+$pagesize); } - print "

"; print "
"; } #---- END $OP eq DEFAULT -print endmenu('admin'); -print endpage(); +output_html_with_http_headers $input, $cookie, $template->output;