From: Joshua Ferraro Date: Wed, 8 Aug 2007 12:27:26 +0000 (-0500) Subject: Merge branch 'master' of /usr/local/git/koha_base.git/ X-Git-Tag: v3.00.00-alpha~1909^2 X-Git-Url: http://git.rot13.org/?a=commitdiff_plain;h=8ee881174fbb75e983e9ea09f70b2fcecee396ab;hp=e24c2479150b35bc1f5cdba315a474a374fcdc3b;p=koha.git Merge branch 'master' of /usr/local/git/koha_base.git/ --- diff --git a/C4/Accounts.pm b/C4/Accounts.pm index 82262f2b1a..d47c4386c2 100755 --- a/C4/Accounts.pm +++ b/C4/Accounts.pm @@ -24,12 +24,14 @@ require Exporter; use C4::Context; use C4::Stats; use C4::Members; + #use C4::Circulation; use vars qw($VERSION @ISA @EXPORT); # set the version for version checking -$VERSION = do { my @v = '$Revision$' =~ /\d+/g; -shift(@v) . "." . join("_", map {sprintf "%03d", $_ } @v); }; +$VERSION = do { my @v = '$Revision$' =~ /\d+/g; + shift(@v) . "." . join( "_", map { sprintf "%03d", $_ } @v ); +}; =head1 NAME @@ -49,10 +51,9 @@ patron. =cut -@ISA = qw(Exporter); +@ISA = qw(Exporter); @EXPORT = qw(&recordpayment &fixaccounts &makepayment &manualinvoice -&getnextacctno &reconcileaccount); - + &getnextacctno &reconcileaccount); =head2 recordpayment @@ -70,49 +71,64 @@ will be credited to the next one. =cut #' -sub recordpayment{ - #here we update both the accountoffsets and the account lines - my ($borrowernumber,$data)=@_; - my $dbh = C4::Context->dbh; - my $newamtos = 0; - my $accdata = ""; - my $branch=C4::Context->userenv->{'branch'}; - my $amountleft = $data; - # begin transaction - my $nextaccntno = getnextacctno($borrowernumber); - # get lines with outstanding amounts to offset - my $sth = $dbh->prepare("SELECT * FROM accountlines +sub recordpayment { + + #here we update both the accountoffsets and the account lines + my ( $borrowernumber, $data ) = @_; + my $dbh = C4::Context->dbh; + my $newamtos = 0; + my $accdata = ""; + my $branch = C4::Context->userenv->{'branch'}; + my $amountleft = $data; + + # begin transaction + my $nextaccntno = getnextacctno($borrowernumber); + + # get lines with outstanding amounts to offset + my $sth = $dbh->prepare( + "SELECT * FROM accountlines WHERE (borrowernumber = ?) AND (amountoutstanding<>0) - ORDER BY date"); - $sth->execute($borrowernumber); - # offset transactions - while (($accdata=$sth->fetchrow_hashref) and ($amountleft>0)){ - if ($accdata->{'amountoutstanding'} < $amountleft) { - $newamtos = 0; - $amountleft -= $accdata->{'amountoutstanding'}; - } else { - $newamtos = $accdata->{'amountoutstanding'} - $amountleft; - $amountleft = 0; - } - my $thisacct = $accdata->{accountno}; - my $usth = $dbh->prepare("UPDATE accountlines SET amountoutstanding= ? - WHERE (borrowernumber = ?) AND (accountno=?)"); - $usth->execute($newamtos,$borrowernumber,$thisacct); - $usth->finish; - $usth = $dbh->prepare("INSERT INTO accountoffsets + ORDER BY date" + ); + $sth->execute($borrowernumber); + + # offset transactions + while ( ( $accdata = $sth->fetchrow_hashref ) and ( $amountleft > 0 ) ) { + if ( $accdata->{'amountoutstanding'} < $amountleft ) { + $newamtos = 0; + $amountleft -= $accdata->{'amountoutstanding'}; + } + else { + $newamtos = $accdata->{'amountoutstanding'} - $amountleft; + $amountleft = 0; + } + my $thisacct = $accdata->{accountno}; + my $usth = $dbh->prepare( + "UPDATE accountlines SET amountoutstanding= ? + WHERE (borrowernumber = ?) AND (accountno=?)" + ); + $usth->execute( $newamtos, $borrowernumber, $thisacct ); + $usth->finish; + $usth = $dbh->prepare( + "INSERT INTO accountoffsets (borrowernumber, accountno, offsetaccount, offsetamount) - VALUES (?,?,?,?)"); - $usth->execute($borrowernumber,$accdata->{'accountno'},$nextaccntno,$newamtos); - $usth->finish; - } - # create new line - my $usth = $dbh->prepare("INSERT INTO accountlines + VALUES (?,?,?,?)" + ); + $usth->execute( $borrowernumber, $accdata->{'accountno'}, + $nextaccntno, $newamtos ); + $usth->finish; + } + + # create new line + my $usth = $dbh->prepare( + "INSERT INTO accountlines (borrowernumber, accountno,date,amount,description,accounttype,amountoutstanding) - VALUES (?,?,now(),?,'Payment,thanks','Pay',?)"); - $usth->execute($borrowernumber,$nextaccntno,0-$data,0-$amountleft); - $usth->finish; - UpdateStats($branch,'payment',$data,'','','',$borrowernumber); - $sth->finish; + VALUES (?,?,now(),?,'Payment,thanks','Pay',?)" + ); + $usth->execute( $borrowernumber, $nextaccntno, 0 - $data, 0 - $amountleft ); + $usth->finish; + UpdateStats( $branch, 'payment', $data, '', '', '', $borrowernumber ); + $sth->finish; } =head2 makepayment @@ -133,53 +149,61 @@ was made. #' # FIXME - I'm not at all sure about the above, because I don't # understand what the acct* tables in the Koha database are for. -sub makepayment{ - #here we update both the accountoffsets and the account lines - #updated to check, if they are paying off a lost item, we return the item - # from their card, and put a note on the item record - my ($borrowernumber,$accountno,$amount,$user,$branch)=@_; - my $dbh = C4::Context->dbh; - # begin transaction - my $nextaccntno = getnextacctno($borrowernumber); - my $newamtos=0; - my $sth=$dbh->prepare("SELECT * FROM accountlines WHERE borrowernumber=? AND accountno=?"); - $sth->execute($borrowernumber,$accountno); - my $data=$sth->fetchrow_hashref; - $sth->finish; - - $dbh->do("UPDATE accountlines +sub makepayment { + + #here we update both the accountoffsets and the account lines + #updated to check, if they are paying off a lost item, we return the item + # from their card, and put a note on the item record + my ( $borrowernumber, $accountno, $amount, $user, $branch ) = @_; + my $dbh = C4::Context->dbh; + + # begin transaction + my $nextaccntno = getnextacctno($borrowernumber); + my $newamtos = 0; + my $sth = + $dbh->prepare( + "SELECT * FROM accountlines WHERE borrowernumber=? AND accountno=?"); + $sth->execute( $borrowernumber, $accountno ); + my $data = $sth->fetchrow_hashref; + $sth->finish; + + $dbh->do( + "UPDATE accountlines SET amountoutstanding = 0 WHERE borrowernumber = $borrowernumber AND accountno = $accountno - "); + " + ); -# print $updquery; - $dbh->do(" + # print $updquery; + $dbh->do( " INSERT INTO accountoffsets (borrowernumber, accountno, offsetaccount, offsetamount) VALUES ($borrowernumber, $accountno, $nextaccntno, $newamtos) - "); + " ); - # create new line - my $payment=0-$amount; - $dbh->do(" + # create new line + my $payment = 0 - $amount; + $dbh->do( " INSERT INTO accountlines (borrowernumber, accountno, date, amount, description, accounttype, amountoutstanding) VALUES ($borrowernumber, $nextaccntno, now(), $payment, 'Payment,thanks - $user', 'Pay', 0) - "); - - # FIXME - The second argument to &UpdateStats is supposed to be the - # branch code. - # UpdateStats is now being passed $accountno too. MTJ - UpdateStats($user,'payment',$amount,'','','',$borrowernumber,$accountno); - $sth->finish; - #check to see what accounttype - if ($data->{'accounttype'} eq 'Rep' || $data->{'accounttype'} eq 'L'){ - returnlost($borrowernumber,$data->{'itemnumber'}); - } + " ); + + # FIXME - The second argument to &UpdateStats is supposed to be the + # branch code. + # UpdateStats is now being passed $accountno too. MTJ + UpdateStats( $user, 'payment', $amount, '', '', '', $borrowernumber, + $accountno ); + $sth->finish; + + #check to see what accounttype + if ( $data->{'accounttype'} eq 'Rep' || $data->{'accounttype'} eq 'L' ) { + returnlost( $borrowernumber, $data->{'itemnumber'} ); + } } =head2 getnextacctno @@ -194,18 +218,20 @@ borrower number. #' # FIXME - Okay, so what does the above actually _mean_? sub getnextacctno { - my ($borrowernumber)=@_; - my $nextaccntno = 1; - my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare("SELECT * FROM accountlines + my ($borrowernumber) = @_; + my $nextaccntno = 1; + my $dbh = C4::Context->dbh; + my $sth = $dbh->prepare( + "SELECT * FROM accountlines WHERE (borrowernumber = ?) - ORDER BY accountno DESC"); - $sth->execute($borrowernumber); - if (my $accdata=$sth->fetchrow_hashref){ - $nextaccntno = $accdata->{'accountno'} + 1; - } - $sth->finish; - return($nextaccntno); + ORDER BY accountno DESC" + ); + $sth->execute($borrowernumber); + if ( my $accdata = $sth->fetchrow_hashref ) { + $nextaccntno = $accdata->{'accountno'} + 1; + } + $sth->finish; + return ($nextaccntno); } =head2 fixaccounts @@ -217,41 +243,48 @@ sub getnextacctno { #' # FIXME - I don't understand what this function does. sub fixaccounts { - my ($borrowernumber,$accountno,$amount)=@_; - my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("SELECT * FROM accountlines WHERE borrowernumber=? - AND accountno=?"); - $sth->execute($borrowernumber,$accountno); - my $data=$sth->fetchrow_hashref; - # FIXME - Error-checking - my $diff=$amount-$data->{'amount'}; - my $outstanding=$data->{'amountoutstanding'}+$diff; - $sth->finish; - - $dbh->do(<dbh; + my $sth = $dbh->prepare( + "SELECT * FROM accountlines WHERE borrowernumber=? + AND accountno=?" + ); + $sth->execute( $borrowernumber, $accountno ); + my $data = $sth->fetchrow_hashref; + + # FIXME - Error-checking + my $diff = $amount - $data->{'amount'}; + my $outstanding = $data->{'amountoutstanding'} + $diff; + $sth->finish; + + $dbh->do(<dbh; - my $borrower=GetMember($borrowernumber,'borrowernumber'); - my $sth=$dbh->prepare("UPDATE issues SET returndate=now() WHERE - borrowernumber=? AND itemnumber=? AND returndate IS NULL"); - $sth->execute($borrowernumber,$itemnum); - $sth->finish; - my @datearr = localtime(time); - my $date = (1900+$datearr[5])."-".($datearr[4]+1)."-".$datearr[3]; - my $bor="$borrower->{'firstname'} $borrower->{'surname'} $borrower->{'cardnumber'}"; - $sth=$dbh->prepare("UPDATE items SET paidfor=? WHERE itemnumber=?"); - $sth->execute("Paid for by $bor $date",$itemnum); - $sth->finish; +sub returnlost { + my ( $borrowernumber, $itemnum ) = @_; + my $dbh = C4::Context->dbh; + my $borrower = GetMember( $borrowernumber, 'borrowernumber' ); + my $sth = $dbh->prepare( + "UPDATE issues SET returndate=now() WHERE + borrowernumber=? AND itemnumber=? AND returndate IS NULL" + ); + $sth->execute( $borrowernumber, $itemnum ); + $sth->finish; + my @datearr = localtime(time); + my $date = + ( 1900 + $datearr[5] ) . "-" . ( $datearr[4] + 1 ) . "-" . $datearr[3]; + my $bor = +"$borrower->{'firstname'} $borrower->{'surname'} $borrower->{'cardnumber'}"; + $sth = $dbh->prepare("UPDATE items SET paidfor=? WHERE itemnumber=?"); + $sth->execute( "Paid for by $bor $date", $itemnum ); + $sth->finish; } =head2 manualinvoice @@ -270,57 +303,70 @@ should be the empty string. #' # FIXME - Okay, so what does this function do, really? -sub manualinvoice{ - my ($borrowernumber,$itemnum,$desc,$type,$amount,$user)=@_; - my $dbh = C4::Context->dbh; - my $notifyid=0; - my $insert; - $itemnum=~ s/ //g; - my $accountno=getnextacctno($borrowernumber); - my $amountleft=$amount; - - if ($type eq 'CS' || $type eq 'CB' || $type eq 'CW' - || $type eq 'CF' || $type eq 'CL'){ - my $amount2=$amount*-1; # FIXME - $amount2 = -$amount - $amountleft=fixcredit($borrowernumber,$amount2,$itemnum,$type,$user); - } - if ($type eq 'N'){ - $desc.="New Card"; - } - if ($type eq 'F'){ - $desc.="Fine"; - } - if ($type eq 'A'){ - $desc.="Account Management fee"; - } - if ($type eq 'M'){ - $desc.="Sundry"; - } - - if ($type eq 'L' && $desc eq ''){ - - $desc="Lost Item"; - } - if ($type eq 'REF'){ - $desc.="Cash Refund"; - $amountleft=refund('',$borrowernumber,$amount); - } - if(($type eq 'L') or ($type eq 'F') or ($type eq 'A') or ($type eq 'N') or ($type eq 'M') ){ - $notifyid=1; - } - - if ($itemnum ne ''){ - $desc.=" ".$itemnum; - my $sth=$dbh->prepare("INSERT INTO accountlines +sub manualinvoice { + my ( $borrowernumber, $itemnum, $desc, $type, $amount, $user ) = @_; + my $dbh = C4::Context->dbh; + my $notifyid = 0; + my $insert; + $itemnum =~ s/ //g; + my $accountno = getnextacctno($borrowernumber); + my $amountleft = $amount; + + if ( $type eq 'CS' + || $type eq 'CB' + || $type eq 'CW' + || $type eq 'CF' + || $type eq 'CL' ) + { + my $amount2 = $amount * -1; # FIXME - $amount2 = -$amount + $amountleft = + fixcredit( $borrowernumber, $amount2, $itemnum, $type, $user ); + } + if ( $type eq 'N' ) { + $desc .= "New Card"; + } + if ( $type eq 'F' ) { + $desc .= "Fine"; + } + if ( $type eq 'A' ) { + $desc .= "Account Management fee"; + } + if ( $type eq 'M' ) { + $desc .= "Sundry"; + } + + if ( $type eq 'L' && $desc eq '' ) { + + $desc = "Lost Item"; + } + if ( $type eq 'REF' ) { + $desc .= "Cash Refund"; + $amountleft = refund( '', $borrowernumber, $amount ); + } + if ( ( $type eq 'L' ) + or ( $type eq 'F' ) + or ( $type eq 'A' ) + or ( $type eq 'N' ) + or ( $type eq 'M' ) ) + { + $notifyid = 1; + } + + if ( $itemnum ne '' ) { + $desc .= " " . $itemnum; + my $sth = $dbh->prepare( + "INSERT INTO accountlines (borrowernumber, accountno, date, amount, description, accounttype, amountoutstanding, itemnumber,notify_id) VALUES (?, ?, now(), ?,?, ?,?,?,?)"); $sth->execute($borrowernumber, $accountno, $amount, $desc, $type, $amountleft, $itemnum,$notifyid) || return $sth->errstr; } else { my $sth=$dbh->prepare("INSERT INTO accountlines (borrowernumber, accountno, date, amount, description, accounttype, amountoutstanding,notify_id) - VALUES (?, ?, now(), ?, ?, ?, ?,?)"); - $sth->execute($borrowernumber, $accountno, $amount, $desc, $type, $amountleft,$notifyid); - } + VALUES (?, ?, now(), ?, ?, ?, ?,?)" + ); + $sth->execute( $borrowernumber, $accountno, $amount, $desc, $type, + $amountleft, $notifyid ); + } } =head2 fixcredit @@ -332,82 +378,103 @@ sub manualinvoice{ =cut -sub fixcredit{ - #here we update both the accountoffsets and the account lines - my ($borrowernumber,$data,$barcode,$type,$user)=@_; - my $dbh = C4::Context->dbh; - my $newamtos = 0; - my $accdata = ""; - my $amountleft = $data; - if ($barcode ne ''){ - my $item=GetBiblioFromItemNumber('',$barcode); - my $nextaccntno = getnextacctno($borrowernumber); - my $query="SELECT * FROM accountlines WHERE (borrowernumber=? +sub fixcredit { + + #here we update both the accountoffsets and the account lines + my ( $borrowernumber, $data, $barcode, $type, $user ) = @_; + my $dbh = C4::Context->dbh; + my $newamtos = 0; + my $accdata = ""; + my $amountleft = $data; + if ( $barcode ne '' ) { + my $item = GetBiblioFromItemNumber( '', $barcode ); + my $nextaccntno = getnextacctno($borrowernumber); + my $query = "SELECT * FROM accountlines WHERE (borrowernumber=? AND itemnumber=? AND amountoutstanding > 0)"; - if ($type eq 'CL'){ - $query.=" AND (accounttype = 'L' OR accounttype = 'Rep')"; - } elsif ($type eq 'CF'){ - $query.=" AND (accounttype = 'F' OR accounttype = 'FU' OR + if ( $type eq 'CL' ) { + $query .= " AND (accounttype = 'L' OR accounttype = 'Rep')"; + } + elsif ( $type eq 'CF' ) { + $query .= " AND (accounttype = 'F' OR accounttype = 'FU' OR accounttype='Res' OR accounttype='Rent')"; - } elsif ($type eq 'CB'){ - $query.=" and accounttype='A'"; - } -# print $query; - my $sth=$dbh->prepare($query); - $sth->execute($borrowernumber,$item->{'itemnumber'}); - $accdata=$sth->fetchrow_hashref; - $sth->finish; - if ($accdata->{'amountoutstanding'} < $amountleft) { - $newamtos = 0; - $amountleft -= $accdata->{'amountoutstanding'}; - } else { - $newamtos = $accdata->{'amountoutstanding'} - $amountleft; - $amountleft = 0; - } - my $thisacct = $accdata->{accountno}; - my $usth = $dbh->prepare("UPDATE accountlines SET amountoutstanding= ? - WHERE (borrowernumber = ?) AND (accountno=?)"); - $usth->execute($newamtos,$borrowernumber,$thisacct); - $usth->finish; - $usth = $dbh->prepare("INSERT INTO accountoffsets + } + elsif ( $type eq 'CB' ) { + $query .= " and accounttype='A'"; + } + + # print $query; + my $sth = $dbh->prepare($query); + $sth->execute( $borrowernumber, $item->{'itemnumber'} ); + $accdata = $sth->fetchrow_hashref; + $sth->finish; + if ( $accdata->{'amountoutstanding'} < $amountleft ) { + $newamtos = 0; + $amountleft -= $accdata->{'amountoutstanding'}; + } + else { + $newamtos = $accdata->{'amountoutstanding'} - $amountleft; + $amountleft = 0; + } + my $thisacct = $accdata->{accountno}; + my $usth = $dbh->prepare( + "UPDATE accountlines SET amountoutstanding= ? + WHERE (borrowernumber = ?) AND (accountno=?)" + ); + $usth->execute( $newamtos, $borrowernumber, $thisacct ); + $usth->finish; + $usth = $dbh->prepare( + "INSERT INTO accountoffsets (borrowernumber, accountno, offsetaccount, offsetamount) - VALUES (?,?,?,?)"); - $usth->execute($borrowernumber,$accdata->{'accountno'},$nextaccntno,$newamtos); - $usth->finish; - } - # begin transaction - my $nextaccntno = getnextacctno($borrowernumber); - # get lines with outstanding amounts to offset - my $sth = $dbh->prepare("SELECT * FROM accountlines + VALUES (?,?,?,?)" + ); + $usth->execute( $borrowernumber, $accdata->{'accountno'}, + $nextaccntno, $newamtos ); + $usth->finish; + } + + # begin transaction + my $nextaccntno = getnextacctno($borrowernumber); + + # get lines with outstanding amounts to offset + my $sth = $dbh->prepare( + "SELECT * FROM accountlines WHERE (borrowernumber = ?) AND (amountoutstanding >0) - ORDER BY date"); - $sth->execute($borrowernumber); -# print $query; - # offset transactions - while (($accdata=$sth->fetchrow_hashref) and ($amountleft>0)){ - if ($accdata->{'amountoutstanding'} < $amountleft) { - $newamtos = 0; - $amountleft -= $accdata->{'amountoutstanding'}; - } else { - $newamtos = $accdata->{'amountoutstanding'} - $amountleft; - $amountleft = 0; - } - my $thisacct = $accdata->{accountno}; - my $usth = $dbh->prepare("UPDATE accountlines SET amountoutstanding= ? - WHERE (borrowernumber = ?) AND (accountno=?)"); - $usth->execute($newamtos,$borrowernumber,$thisacct); - $usth->finish; - $usth = $dbh->prepare("INSERT INTO accountoffsets + ORDER BY date" + ); + $sth->execute($borrowernumber); + + # print $query; + # offset transactions + while ( ( $accdata = $sth->fetchrow_hashref ) and ( $amountleft > 0 ) ) { + if ( $accdata->{'amountoutstanding'} < $amountleft ) { + $newamtos = 0; + $amountleft -= $accdata->{'amountoutstanding'}; + } + else { + $newamtos = $accdata->{'amountoutstanding'} - $amountleft; + $amountleft = 0; + } + my $thisacct = $accdata->{accountno}; + my $usth = $dbh->prepare( + "UPDATE accountlines SET amountoutstanding= ? + WHERE (borrowernumber = ?) AND (accountno=?)" + ); + $usth->execute( $newamtos, $borrowernumber, $thisacct ); + $usth->finish; + $usth = $dbh->prepare( + "INSERT INTO accountoffsets (borrowernumber, accountno, offsetaccount, offsetamount) - VALUE (?,?,?,?)"); - $usth->execute($borrowernumber,$accdata->{'accountno'},$nextaccntno,$newamtos); - $usth->finish; - } - $sth->finish; - $type="Credit ".$type; - UpdateStats($user,$type,$data,$user,'','',$borrowernumber); - $amountleft*=-1; - return($amountleft); + VALUE (?,?,?,?)" + ); + $usth->execute( $borrowernumber, $accdata->{'accountno'}, + $nextaccntno, $newamtos ); + $usth->finish; + } + $sth->finish; + $type = "Credit " . $type; + UpdateStats( $user, $type, $data, $user, '', '', $borrowernumber ); + $amountleft *= -1; + return ($amountleft); } @@ -417,49 +484,60 @@ sub fixcredit{ =cut -sub refund{ - #here we update both the accountoffsets and the account lines - my ($borrowernumber,$data)=@_; - my $dbh = C4::Context->dbh; - my $newamtos = 0; - my $accdata = ""; - my $amountleft = $data *-1; - - # begin transaction - my $nextaccntno = getnextacctno($borrowernumber); - # get lines with outstanding amounts to offset - my $sth = $dbh->prepare("SELECT * FROM accountlines +sub refund { + + #here we update both the accountoffsets and the account lines + my ( $borrowernumber, $data ) = @_; + my $dbh = C4::Context->dbh; + my $newamtos = 0; + my $accdata = ""; + my $amountleft = $data * -1; + + # begin transaction + my $nextaccntno = getnextacctno($borrowernumber); + + # get lines with outstanding amounts to offset + my $sth = $dbh->prepare( + "SELECT * FROM accountlines WHERE (borrowernumber = ?) AND (amountoutstanding<0) - ORDER BY date"); - $sth->execute($borrowernumber); -# print $amountleft; - # offset transactions - while (($accdata=$sth->fetchrow_hashref) and ($amountleft<0)){ - if ($accdata->{'amountoutstanding'} > $amountleft) { - $newamtos = 0; - $amountleft -= $accdata->{'amountoutstanding'}; - } else { - $newamtos = $accdata->{'amountoutstanding'} - $amountleft; - $amountleft = 0; - } -# print $amountleft; - my $thisacct = $accdata->{accountno}; - my $usth = $dbh->prepare("UPDATE accountlines SET amountoutstanding= ? - WHERE (borrowernumber = ?) AND (accountno=?)"); - $usth->execute($newamtos,$borrowernumber,$thisacct); - $usth->finish; - $usth = $dbh->prepare("INSERT INTO accountoffsets + ORDER BY date" + ); + $sth->execute($borrowernumber); + + # print $amountleft; + # offset transactions + while ( ( $accdata = $sth->fetchrow_hashref ) and ( $amountleft < 0 ) ) { + if ( $accdata->{'amountoutstanding'} > $amountleft ) { + $newamtos = 0; + $amountleft -= $accdata->{'amountoutstanding'}; + } + else { + $newamtos = $accdata->{'amountoutstanding'} - $amountleft; + $amountleft = 0; + } + + # print $amountleft; + my $thisacct = $accdata->{accountno}; + my $usth = $dbh->prepare( + "UPDATE accountlines SET amountoutstanding= ? + WHERE (borrowernumber = ?) AND (accountno=?)" + ); + $usth->execute( $newamtos, $borrowernumber, $thisacct ); + $usth->finish; + $usth = $dbh->prepare( + "INSERT INTO accountoffsets (borrowernumber, accountno, offsetaccount, offsetamount) - VALUES (?,?,?,?)"); - $usth->execute($borrowernumber,$accdata->{'accountno'},$nextaccntno,$newamtos); - $usth->finish; - } - $sth->finish; - return($amountleft); + VALUES (?,?,?,?)" + ); + $usth->execute( $borrowernumber, $accdata->{'accountno'}, + $nextaccntno, $newamtos ); + $usth->finish; + } + $sth->finish; + return ($amountleft); } - -END { } # module clean-up code here (global destructor) +END { } # module clean-up code here (global destructor) 1; __END__ diff --git a/C4/Auth.pm b/C4/Auth.pm index ca99f8161e..14ae8da1a9 100644 --- a/C4/Auth.pm +++ b/C4/Auth.pm @@ -22,6 +22,8 @@ package C4::Auth; use strict; use Digest::MD5 qw(md5_base64); +use CGI::Session; + require Exporter; use C4::Context; @@ -393,34 +395,32 @@ sub checkauth { # Using Basic Authentication, no cookies required $cookie = $query->cookie( - -name => 'sessionID', + -name => 'CGISESSID', -value => '', -expires => '' ); $loggedin = 1; } - elsif ( $sessionID = $query->cookie('sessionID') ) { + elsif ( $sessionID = $query->cookie("CGISESSID")) { + my $session = new CGI::Session("driver:MySQL", $sessionID, {Handle=>$dbh}); + C4::Context->_new_userenv($sessionID); - if ( my %hash = $query->cookie('userenv') ) { - C4::Context::set_userenv( - $hash{number}, $hash{id}, - $hash{cardnumber}, $hash{firstname}, - $hash{surname}, $hash{branch}, - $hash{branchname}, $hash{flags}, - $hash{emailaddress}, $hash{branchprinter} + if ($session){ + C4::Context::set_userenv( + $session->param('number'), $session->param('id'), + $session->param('cardnumber'), $session->param('firstname'), + $session->param('surname'), $session->param('branch'), + $session->param('branchname'), $session->param('flags'), + $session->param('emailaddress'), $session->param('branchprinter') ); } - my ( $ip, $lasttime ); - - ( $userid, $ip, $lasttime ) = - $dbh->selectrow_array( - "SELECT userid,ip,lasttime FROM sessions WHERE sessionid=?", - undef, $sessionID ); + my $ip=$session->param('ip'); + $userid = $session->param('id'); + my $lasttime = $session->param('lasttime'); if ($logout) { # voluntary logout the user - $dbh->do( "DELETE FROM sessions WHERE sessionID=?", - undef, $sessionID ); + $session->delete; C4::Context->_unset_userenv($sessionID); $sessionID = undef; $userid = undef; @@ -431,12 +431,12 @@ sub checkauth { close L; } if ($userid) { + warn "here $userid"; if ( $lasttime < time() - $timeout ) { # timed logout $info{'timed_out'} = 1; - $dbh->do( "DELETE FROM sessions WHERE sessionID=?", - undef, $sessionID ); + $session->delete(); C4::Context->_unset_userenv($sessionID); $userid = undef; $sessionID = undef; @@ -452,8 +452,7 @@ sub checkauth { $info{'oldip'} = $ip; $info{'newip'} = $ENV{'REMOTE_ADDR'}; $info{'different_ip'} = 1; - $dbh->do( "DELETE FROM sessions WHERE sessionID=?", - undef, $sessionID ); + $session->delete(); C4::Context->_unset_userenv($sessionID); $sessionID = undef; $userid = undef; @@ -465,13 +464,9 @@ sub checkauth { close L; } else { - $cookie = $query->cookie( - -name => 'sessionID', - -value => $sessionID, - -expires => '' + $cookie = $query->cookie(CGISESSID => $session->id ); - $dbh->do( "UPDATE sessions SET lasttime=? WHERE sessionID=?", - undef, ( time(), $sessionID ) ); + $session->param('lasttime',time()); $flags = haspermission( $dbh, $userid, $flagsrequired ); if ($flags) { $loggedin = 1; @@ -483,30 +478,20 @@ sub checkauth { } } unless ($userid) { - $sessionID = int( rand() * 100000 ) . '-' . time(); + my $session = new CGI::Session("driver:MySQL", undef, {Handle=>$dbh}); + my $sessionID = $session->id; $userid = $query->param('userid'); C4::Context->_new_userenv($sessionID); my $password = $query->param('password'); C4::Context->_new_userenv($sessionID); my ( $return, $cardnumber ) = checkpw( $dbh, $userid, $password ); if ($return) { - $dbh->do( "DELETE FROM sessions WHERE sessionID=? AND userid=?", - undef, ( $sessionID, $userid ) ); - $dbh->do( -"INSERT INTO sessions (sessionID, userid, ip,lasttime) VALUES (?, ?, ?, ?)", - undef, - ( $sessionID, $userid, $ENV{'REMOTE_ADDR'}, time() ) - ); open L, ">>/tmp/sessionlog"; my $time = localtime( time() ); printf L "%20s from %16s logged in at %30s.\n", $userid, $ENV{'REMOTE_ADDR'}, $time; close L; - $cookie = $query->cookie( - -name => 'sessionID', - -value => $sessionID, - -expires => '' - ); + $cookie = $query->cookie(CGISESSID => $sessionID); if ( $flags = haspermission( $dbh, $userid, $flagsrequired ) ) { $loggedin = 1; } @@ -580,39 +565,34 @@ sub checkauth { $branchname = $branches->{$br}->{'branchname'}; } } - my $hash = C4::Context::set_userenv( - $borrowernumber, $userid, $cardnumber, - $firstname, $surname, $branchcode, - $branchname, $userflags, $emailaddress, - $branchprinter, - ); - - $envcookie = $query->cookie( - -name => 'userenv', - -value => $hash, - -expires => '' - ); + + $session->param('number',$borrowernumber); + $session->param('id',$userid); + $session->param('cardnumber',$cardnumber); + $session->param('firstname',$firstname); + $session->param('surname',$surname); + $session->param('branch',$branchcode); + $session->param('branchname',$branchname); + $session->param('flags',$userflags); + $session->param('emailaddress',$emailaddress); + $session->param('ip',$session->remote_addr()); + $session->param('lasttime',time()); } elsif ( $return == 2 ) { #We suppose the user is the superlibrarian - my $hash = C4::Context::set_userenv( - 0, - 0, - C4::Context->config('user'), - C4::Context->config('user'), - C4::Context->config('user'), - "", - "NO_LIBRARY_SET", - 1, - C4::Context->preference('KohaAdminEmailAddress') - ); - $envcookie = $query->cookie( - -name => 'userenv', - -value => $hash, - -expires => '' - ); - } + $session->param('number',0); + $session->param('id',C4::Context->config('user')); + $session->param('cardnumber',C4::Context->config('user')); + $session->param('firstname',C4::Context->config('user')); + $session->param('surname',C4::Context->config('user'),); + $session->param('branch','NO_LIBRARY_SET'); + $session->param('branchname','NO_LIBRARY_SET'); + $session->param('flags',1); + $session->param('emailaddress', C4::Context->preference('KohaAdminEmailAddress')); + $session->param('ip',$session->remote_addr()); + $session->param('lasttime',time()); + } } else { if ($userid) { @@ -626,21 +606,13 @@ sub checkauth { # finished authentification, now respond if ( $loggedin || $authnotrequired || ( defined($insecure) && $insecure ) ) { - # successful login unless ($cookie) { - $cookie = $query->cookie( - -name => 'sessionID', - -value => '', - -expires => '' + $cookie = $query->cookie( CGISESSID => '' ); } - if ($envcookie) { - return ( $userid, [ $cookie, $envcookie ], $sessionID, $flags ); - } - else { - return ( $userid, $cookie, $sessionID, $flags ); - } + return ( $userid, $cookie, $sessionID, $flags ); + } # else we have a problem... @@ -684,11 +656,8 @@ sub checkauth { LibraryName => => C4::Context->preference("LibraryName"), ); $template->param( \%info ); - $cookie = $query->cookie( - -name => 'sessionID', - -value => $sessionID, - -expires => '' - ); +# $cookie = $query->cookie(CGISESSID => $session->id +# ); print $query->header( -type => 'utf-8', -cookie => $cookie diff --git a/about.pl b/about.pl index 6e411c0d55..99b9fd55d5 100755 --- a/about.pl +++ b/about.pl @@ -1,5 +1,5 @@ -#!/usr/bin/perl - +รถ#!/usr/bin/perl + # This file is part of Koha. # # Koha is free software; you can redistribute it and/or modify it under the @@ -15,11 +15,10 @@ # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, # Suite 330, Boston, MA 02111-1307 USA - use strict; require Exporter; -use C4::Output; # contains gettemplate +use C4::Output; # contains gettemplate use C4::Auth; use C4::Context; use CGI; @@ -27,50 +26,52 @@ use LWP::Simple; use XML::Simple; my $query = new CGI; -my ($template, $loggedinuser, $cookie) - = get_template_and_user({template_name => "about.tmpl", - query => $query, - type => "intranet", - authnotrequired => 0, - flagsrequired => {parameters => 1}, - debug => 1, - }); +my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { + template_name => "about.tmpl", + query => $query, + type => "intranet", + authnotrequired => 0, + flagsrequired => { parameters => 1 }, + debug => 1, + } +); -my $kohaVersion = C4::Context->config("kohaversion"); -my $osVersion = `uname -a`; -my $perlVersion = $]; -my $mysqlVersion = `mysql -V`; -my $apacheVersion = `httpd -v`; -$apacheVersion = `httpd2 -v` unless $apacheVersion; +my $kohaVersion = C4::Context->config("kohaversion"); +my $osVersion = `uname -a`; +my $perlVersion = $]; +my $mysqlVersion = `mysql -V`; +my $apacheVersion = `httpd -v`; +$apacheVersion = `httpd2 -v` unless $apacheVersion; my $zebraVersion = `zebraidx -V`; + # $apacheVersion = (`/usr/sbin/apache2 -V`)[0]; $template->param( - kohaVersion => $kohaVersion, - osVersion => $osVersion, - perlVersion => $perlVersion, - mysqlVersion => $mysqlVersion, - apacheVersion => $apacheVersion, - zebraVersion => $zebraVersion, - ); - + kohaVersion => $kohaVersion, + osVersion => $osVersion, + perlVersion => $perlVersion, + mysqlVersion => $mysqlVersion, + apacheVersion => $apacheVersion, + zebraVersion => $zebraVersion, +); my @component_names = qw/MARC::File::XML MARC::Charset Class::Accessor LWP::Simple XML::Simple Net::Z3950 Event Net::LDAP PDF::API2 Mail::Sendmail MARC::Record Digest::MD5 HTML::Template DBD::mysql Date::Manip - DBI Smart::Comments Net::Z3950::ZOOM + DBI Net::Z3950::ZOOM Date::Calc /; my @components = (); -foreach my $component (sort @component_names) { +foreach my $component ( sort @component_names ) { my $version; - if (eval "require $component") { + if ( eval "require $component" ) { $version = $component->VERSION; - if ($version eq '' ) { + if ( $version eq '' ) { $version = 'unknown'; } } @@ -78,7 +79,7 @@ foreach my $component (sort @component_names) { $version = 'module is missing'; } - push ( + push( @components, { name => $component, @@ -87,8 +88,6 @@ foreach my $component (sort @component_names) { ); } -$template->param( - components => \@components -); +$template->param( components => \@components ); output_html_with_http_headers $query, $cookie, $template->output; diff --git a/help.pl b/help.pl index 0917f9b15d..0a76f6eb17 100755 --- a/help.pl +++ b/help.pl @@ -2,26 +2,26 @@ # Copyright 2006 Katipo Communications # -# This file is part of Koha. -# -# Koha is free software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. -# -# Koha is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, # Suite 330, Boston, MA 02111-1307 USA - use strict; require Exporter; -use C4::Output; # contains gettemplate +use C4::Output; # contains gettemplate use C4::Output; + # use C4::Auth; use C4::Context; use CGI; @@ -30,40 +30,45 @@ my $query = new CGI; # find the script that called the online help using the CGI referer() -my $refer = $query->referer(); +my $refer = $query->referer(); + # workaround for popup not functioning correctly in IE my $referurl = $query->param('url'); -if($referurl){ +if ($referurl) { $refer = $query->param('url'); } $refer =~ /.*koha\/(.*)\.pl.*/; my $from = "help/$1.tmpl"; -my $template = gethelptemplate($from,"intranet"); +my $template = gethelptemplate( $from, "intranet" ); + # my $template output_html_with_http_headers $query, "", $template->output; - sub gethelptemplate { - my ($tmplbase) = @_; + my ($tmplbase) = @_; - my $htdocs; - $htdocs = C4::Context->config('intrahtdocs'); - my ($theme, $lang) = themelanguage($htdocs, $tmplbase, "intranet"); - unless (-e "$htdocs/$theme/$lang/$tmplbase") { - $tmplbase="help/nohelp.tmpl"; - ($theme, $lang) = themelanguage($htdocs, $tmplbase, "intranet"); - } - my $template = HTML::Template->new(filename => "$htdocs/$theme/$lang/$tmplbase", - die_on_bad_params => 0, - global_vars => 1, - path => ["$htdocs/$theme/$lang/includes"]); + my $htdocs; + $htdocs = C4::Context->config('intrahtdocs'); + my ( $theme, $lang ) = themelanguage( $htdocs, $tmplbase, "intranet" ); + unless ( -e "$htdocs/$theme/$lang/$tmplbase" ) { + $tmplbase = "help/nohelp.tmpl"; + ( $theme, $lang ) = themelanguage( $htdocs, $tmplbase, "intranet" ); + } + my $template = HTML::Template->new( + filename => "$htdocs/$theme/$lang/$tmplbase", + die_on_bad_params => 0, + global_vars => 1, + path => ["$htdocs/$theme/$lang/includes"] + ); - # XXX temporary patch for Bug 182 for themelang - $template->param(themelang => '/intranet-tmpl' . "/$theme/$lang", - interface => '/intranet-tmpl', - theme => $theme, - lang => $lang); - return $template; + # XXX temporary patch for Bug 182 for themelang + $template->param( + themelang => '/intranet-tmpl' . "/$theme/$lang", + interface => '/intranet-tmpl', + theme => $theme, + lang => $lang + ); + return $template; } diff --git a/installer/kohastructure.sql b/installer/kohastructure.sql index 561a6e2f57..144e7d5bb9 100644 --- a/installer/kohastructure.sql +++ b/installer/kohastructure.sql @@ -1374,13 +1374,11 @@ CREATE TABLE `sessionqueries` ( -- Table structure for table `sessions` -- -DROP TABLE IF EXISTS `sessions`; -CREATE TABLE `sessions` ( - `sessionID` varchar(255) NOT NULL default '', - `userid` varchar(255) default NULL, - `ip` varchar(16) default NULL, - `lasttime` int(11) default NULL, - PRIMARY KEY (`sessionID`) +DROP TABLE IF EXISTS sessions; +CREATE TABLE sessions ( + `id` char(32) NOT NULL, + `a_session` text NOT NULL, + UNIQUE KEY id (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/action-catalogue.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/action-catalogue.inc index 781514d764..33791aace6 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/action-catalogue.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/action-catalogue.inc @@ -47,7 +47,7 @@ &title=&author=" > - Issue history + Circulation history diff --git a/mainpage.pl b/mainpage.pl index 057cc7b874..cdd6a9ab44 100755 --- a/mainpage.pl +++ b/mainpage.pl @@ -29,8 +29,10 @@ my $query = new CGI; my $authtypes = getauthtypes; my @authtypesloop; -foreach my $thisauthtype ( sort { $authtypes->{$a} <=> $authtypes->{$b} } - keys %$authtypes ) +foreach my $thisauthtype ( + sort { $authtypes->{$a} <=> $authtypes->{$b} } + keys %$authtypes + ) { my %row = ( value => $thisauthtype, @@ -46,9 +48,9 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( type => "intranet", authnotrequired => 0, flagsrequired => { - catalogue => 1, - circulate => 1, - borrowers => 1, + catalogue => 1, + circulate => 1, + borrowers => 1, }, } ); @@ -60,7 +62,7 @@ $template->param( authtypesloop => \@authtypesloop ); -my $all_koha_news = &GetNewsToDisplay("koha"); +my $all_koha_news = &GetNewsToDisplay("koha"); my $koha_news_count = scalar @$all_koha_news; $template->param( diff --git a/opac/opac-ics.pl b/opac/opac-ics.pl new file mode 100755 index 0000000000..ec03b70b04 --- /dev/null +++ b/opac/opac-ics.pl @@ -0,0 +1,93 @@ +#!/usr/bin/perl + +# Copyright 2007 Liblime Ltd + +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, +# Suite 330, Boston, MA 02111-1307 USA + +# This script builds an ICalendar file (rfc 2445) for use in programs such as Ical + +use strict; +use CGI; +use Data::ICal; +use Data::ICal::Entry::Event; +use Date::ICal; +use Date::Calc qw (Parse_Date); + +use C4::Auth; +use C4::Koha; +use C4::Circulation::Circ2; +use C4::Date; + +my $query = new CGI; +my ( $template, $borrowernumber, $cookie ) = get_template_and_user( + { + template_name => "opac-user.tmpl", + query => $query, + type => "opac", + authnotrequired => 0, + flagsrequired => { borrow => 1 }, + debug => 1, + } +); + +# get borrower information .... +my ( $borr, $flags ) = getpatroninformation( undef, $borrowernumber ); + +# Create Calendar +my $calendar = Data::ICal->new(); + +# get issued items .... +my $issues = getissues($borr); + +foreach my $key ( keys %$issues ) { + my $issue = $issues->{$key}; + my $vevent = Data::ICal::Entry::Event->new(); + my ($year,$month,$day)=Parse_Date($issue->{'date_due'}); + ($year,$month,$day)=split /-|\/|\.|:/,$issue->{'date_due'} unless ($year && $month); +# Decode_Date_EU2($string)) + my $datestart = Date::ICal->new( + day => $day, + month => $month, + year => $year, + hour => 9, + min => 0, + sec => 0 + )->ical; + my $dateend = Date::ICal->new( + day => $day, + month => $month, + year => $year, + hour => 10, + min => 0, + sec => 0 + )->ical; + $vevent->add_properties( + summary => "$issue->{'title'} Due", + description => +"Your copy of $issue->{'title'} barcode $issue->{'barcode'} is due back at the library today", + dtstart => $datestart, + dtend => $dateend, + ); + $calendar->add_entry($vevent); +} + +print $query->header( + -type => 'application/octet-stream', + -attachment => 'koha.ics' +); + + +print $calendar->as_string; diff --git a/opac/opac-logout.pl b/opac/opac-logout.pl index b73ea3ccc0..1a877e63dd 100755 --- a/opac/opac-logout.pl +++ b/opac/opac-logout.pl @@ -19,9 +19,9 @@ use CGI; use C4::Context; use C4::Output; -my $query = new CGI; +my $query = new CGI; my $sessionID = $query->cookie('sessionID'); -my $dbh = C4::Context->dbh; +my $dbh = C4::Context->dbh; # Check that this is the ip that created the session before deleting it my $sth = $dbh->prepare("select userid,ip from sessions where sessionID=?"); diff --git a/opac/opac-main.pl b/opac/opac-main.pl index e878d0f227..cc42d1e50f 100755 --- a/opac/opac-main.pl +++ b/opac/opac-main.pl @@ -23,11 +23,11 @@ use CGI; use C4::Auth; # get_template_and_user use C4::Output; use C4::BookShelves; -use C4::Languages; # getTranslatedLanguages -use C4::Branch; # GetBranches -use C4::Members; # GetMember -use C4::NewsChannels; # get_opac_news -use C4::Acquisition; # GetRecentAcqui +use C4::Languages; # getTranslatedLanguages +use C4::Branch; # GetBranches +use C4::Members; # GetMember +use C4::NewsChannels; # get_opac_news +use C4::Acquisition; # GetRecentAcqui my $input = new CGI; my $dbh = C4::Context->dbh; @@ -44,52 +44,59 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( } ); -if($limit) { +if ($limit) { my $recentacquiloop = GetRecentAcqui($limit); -# warn Data::Dumper::Dumper($recentacquiloop); - $template->param( - recentacquiloop => $recentacquiloop, - ); + + # warn Data::Dumper::Dumper($recentacquiloop); + $template->param( recentacquiloop => $recentacquiloop, ); } # SearchMyLibraryFirst -if (C4::Context->preference("SearchMyLibraryFirst")){ - if (C4::Context->userenv){ - my $branches = GetBranches(); - my @branchloop; - - foreach my $thisbranch (keys %$branches) { - my $selected = 1 if (C4::Context->userenv && ($thisbranch eq C4::Context->userenv->{branch})); +if ( C4::Context->preference("SearchMyLibraryFirst") ) { + if ( C4::Context->userenv ) { + my $branches = GetBranches(); + my @branchloop; + + foreach my $thisbranch ( keys %$branches ) { + my $selected = 1 + if ( C4::Context->userenv + && ( $thisbranch eq C4::Context->userenv->{branch} ) ); + # warn $thisbranch; # warn C4::Context->userenv; # warn C4::Context->userenv->{branch}; # warn " => ".C4::Context->userenv && ($thisbranch eq C4::Context->userenv->{branch}); - my %row =(value => $thisbranch, - selected => $selected, - branchname => $branches->{$thisbranch}->{'branchname'}, - ); - push @branchloop, \%row; - } - $template->param("mylibraryfirst"=>1,branchloop=>\@branchloop); - } else { - $template->param("mylibraryfirst"=>0) - } + my %row = ( + value => $thisbranch, + selected => $selected, + branchname => $branches->{$thisbranch}->{'branchname'}, + ); + push @branchloop, \%row; + } + $template->param( "mylibraryfirst" => 1, branchloop => \@branchloop ); + } + else { + $template->param( "mylibraryfirst" => 0 ); + } } - my $borrower = GetMember( $borrowernumber,'borrowernumber' ); +my $borrower = GetMember( $borrowernumber, 'borrowernumber' ); my @languages; -my $counter = 0; +my $counter = 0; my $langavail = getTranslatedLanguages('opac'); -foreach my $language ( @$langavail ) { - # next if $currently_selected_languages->{$language}; - # FIXME: could incorporate language_name and language_locale_name for better display - push @languages, { language => $language->{'language_code'}, counter => $counter }; +foreach my $language (@$langavail) { + +# next if $currently_selected_languages->{$language}; +# FIXME: could incorporate language_name and language_locale_name for better display + push @languages, + { language => $language->{'language_code'}, counter => $counter }; $counter++; } # Template params if ( $counter > 1 ) { - $template->param(languages => \@languages) if C4::Context->preference('opaclanguagesdisplay'); + $template->param( languages => \@languages ) + if C4::Context->preference('opaclanguagesdisplay'); } $template->param( @@ -99,11 +106,11 @@ $template->param( # display news # use cookie setting for language, bug default to syspref if it's not set -my $news_lang = $input->cookie('KohaOpacLanguage') || C4::Context->preference('opaclanguages'); -my $all_koha_news = &GetNewsToDisplay( $news_lang ); +my $news_lang = $input->cookie('KohaOpacLanguage') + || C4::Context->preference('opaclanguages'); +my $all_koha_news = &GetNewsToDisplay($news_lang); my $koha_news_count = scalar @$all_koha_news; - $template->param( koha_news => $all_koha_news, koha_news_count => $koha_news_count diff --git a/opac/opac-rss.pl b/opac/opac-rss.pl index fc625d305f..c7b463e4ec 100755 --- a/opac/opac-rss.pl +++ b/opac/opac-rss.pl @@ -154,6 +154,5 @@ if ($RDF_update_needed) { # save the rss feed. $rss->save("rss/$filename"); } - print $cgi->header( -type => "application/rss+xml" ); print $rss->as_string;