character encoding ISO646 => 8859-1, first draft
[koha_gimpoz] / memberentry.pl
index 68093c7..f6200a2 100755 (executable)
@@ -1,5 +1,7 @@
 #!/usr/bin/perl
 
+# $Id$
+
 #script to set up screen for modification of borrower details
 #written 20/12/99 by chris@katipo.co.nz
 
 # Suite 330, Boston, MA  02111-1307 USA
 
 use strict;
+use C4::Auth;
+use C4::Context;
 use C4::Output;
+use C4::Charset;
 use CGI;
 use C4::Search;
-use C4::Database;
 use C4::Koha;
 use HTML::Template;
 
 my $input = new CGI;
 
-my $theme = $input->param('theme'); # only used if allowthemeoverride is set
-my %tmpldata = pathtotemplate ( template => 'memberentry.tmpl', theme => $theme );
-my $template = HTML::Template->new(filename => $tmpldata{'path'}, die_on_bad_params => 0);
+my ($template, $loggedinuser, $cookie)
+    = get_template_and_user({template_name => "members/memberentry.tmpl",
+                            query => $input,
+                            type => "intranet",
+                            authnotrequired => 0,
+                            flagsrequired => {borrowers => 1},
+                            debug => 1,
+                            });
 
 my $member=$input->param('bornum');
 if ($member eq ''){
   $member=NewBorrowerNumber();
 }
 my $type=$input->param('type') || '';
-my $modify=$input->param('modify.x'); 
+my $modify=$input->param('modify.x');
 my $delete=$input->param('delete.x');
 if ($delete){
   print $input->redirect("/cgi-bin/koha/deletemem.pl?member=$member");
@@ -51,30 +60,32 @@ if ($delete){
   } else {
     $template->param( header => 'Add New Member');
   }
-  
+
   my $data=borrdata('',$member);
-  
+
   if ($type eq 'Add'){
     $template->param( updtype => 'I');
   } else {
     $template->param( updtype => 'M');
   }
-  
+
   my $cardnumber=$data->{'cardnumber'};
-  my %systemprefs=systemprefs();
+  my $autonumber_members = C4::Context->preference("autoMemberNum") || 0;
+               # Find out whether member numbers should be generated
+               # automatically. Should be either "1" or something else.
+               # Defaults to "0", which is interpreted as "no".
   # FIXME
   # This logic should probably be moved out of the presentation code.
   # Not tonight though.
   #
-  if ($cardnumber eq '' && $systemprefs{'autoMemberNum'} eq '1') {
-    my $dbh=C4Connect;
+  if ($cardnumber eq '' && $autonumber_members eq '1') {
+    my $dbh = C4::Context->dbh;
     my $query="select max(substring(borrowers.cardnumber,2,7)) from borrowers";
     my $sth=$dbh->prepare($query);
     $sth->execute;
     my $data=$sth->fetchrow_hashref;
     $cardnumber=$data->{'max(substring(borrowers.cardnumber,2,7))'};
     $sth->finish;
-    $dbh->disconnect;
     # purpose: generate checksum'd member numbers.
     # We'll assume we just got the max value of digits 2-8 of member #'s from the database and our job is to
     # increment that by one, determine the 1st and 9th digits and return the full string.
@@ -84,30 +95,31 @@ if ($delete){
     if (! $cardnumber) {                       # If DB has no values, start at 1000000
       $cardnumber = 1000000;
     } else {
-      $cardnumber = $cardnumber + 1;
+      $cardnumber = $cardnumber + 1;           # FIXME - $cardnumber++;
     }
-  
+
     while ($i <8) {                    # step from char 1 to 7.
       my $temp1 = $weightings[$i];     # read weightings, left to right, 1 char at a time
       my $temp2 = substr($cardnumber,$i,1);    # sequence left to right, 1 char at a time
   #print "$temp2<br>";
-      $sum = $sum + ($temp1*$temp2);   # mult each char 1-7 by its corresponding weighting
+      $sum += $temp1*$temp2;   # mult each char 1-7 by its corresponding weighting
       $i++;                            # increment counter
     }
     my $rem = ($sum%11);                       # remainder of sum/11 (eg. 9999999/11, remainder=2)
     if ($rem == 10) {                  # if remainder is 10, use X instead
       $rem = "X";
-    }  
+    }
     $cardnumber="V$cardnumber$rem";
   } else {
     $cardnumber=$data->{'cardnumber'};
   }
-  
+
   if ($data->{'sex'} eq 'F'){
     $template->param(female => 1);
-  } 
-  
+  }
+
   my @titles = ('Miss', 'Mrs', 'Ms', 'Mr', 'Dr', 'Sir');
+       # FIXME - Assumes English. This ought to be made part of i18n.
   my @titledata;
   while (@titles) {
     my %row;
@@ -120,24 +132,24 @@ if ($delete){
     }
     push(@titledata, \%row);
   }
-  
+
   my ($categories,$labels)=ethnicitycategories();
   my $ethnicitycategoriescount=$#{$categories};
   my $ethcatpopup;
   if ($ethnicitycategoriescount>=0) {
-       $ethcatpopup = popup_menu(-name=>'ethnicity',
+       $ethcatpopup = CGI::popup_menu(-name=>'ethnicity',
                                -values=>$categories,
                                -default=>$data->{'ethnicity'},
                                -labels=>$labels);
        $template->param(ethcatpopup => $ethcatpopup); # bad style, has to be fixed
   }
-  
+
   ($categories,$labels)=borrowercategories();
   my $catcodepopup = CGI::popup_menu(-name=>'categorycode',
                                -values=>$categories,
                                -default=>$data->{'categorycode'},
                                -labels=>$labels);
-  
+
   my @areas = ('L','F','S','H','K','O','X','Z','V');
   my %arealabels = ('L' => 'Levin',
                  'F' => 'Foxton',
@@ -148,7 +160,7 @@ if ($delete){
                  'X' => 'Temporary Visitor',
                  'Z' => 'Interloan Libraries',
                  'V' => 'Village');
-                 
+
   my @areadata;
   while (@areas) {
     my %row;
@@ -162,8 +174,8 @@ if ($delete){
     $row{'area'}=$arealabels{$shortcut};
     push(@areadata, \%row);
   }
-  
-  
+
+
   my @relationships = ('workplace', 'relative','friend', 'neighbour');
   my @relshipdata;
   while (@relationships) {
@@ -176,18 +188,18 @@ if ($delete){
     }
     push(@relshipdata, \%row);
   }
-  
+
   # %flags: keys=$data-keys, datas=[formname, HTML-explanation]
   my %flags = ('gonenoaddress' => ['gna', 'Gone no address'],
                'lost'          => ['lost', 'Lost'],
                'debarred'      => ['debarred', 'Debarred']);
-  
+
   my @flagdata;
   foreach (keys(%flags)) {
     my $key = $_;
     my %row =  ('key'   => $key,
-               'name'  => $flags{$key}[0],
-               'html'  => $flags{$key}[1]);
+               'name'  => $flags{$key}[0],
+               'html'  => $flags{$key}[1]);
     if ($data->{$key}) {
       $row{'yes'}=' checked';
       $row{'no'}='';
@@ -201,7 +213,7 @@ if ($delete){
   if ($modify){
     $template->param( modify => 1 );
   }
-  
+
   $template->param( startmenumember => join ('', startmenu('member')),
                        endmenumember   => join ('', endmenu('member')),
                        member          => $member,
@@ -211,7 +223,7 @@ if ($delete){
                        initials        => $data->{'initials'},
                        ethcatpopup     => $ethcatpopup,
                        catcodepopup    => $catcodepopup,
-                       streetaddress   => $data->{'physstreet'},
+                       streetaddress   => $data->{'streetaddress'},
                        streetcity      => $data->{'streetcity'},
                        city            => $data->{'city'},
                        phone           => $data->{'phone'},
@@ -230,8 +242,11 @@ if ($delete){
                        expiry          => $data->{'expiry'},
                        cardnumber      => $cardnumber,
                        dateofbirth     => $data->{'dateofbirth'});
-                       
-  print "Content-Type: text/html\n\n", $template->output;
-  
+
+print $input->header(
+    -type => guesstype($template->output),
+    -cookie => $cookie
+),$template->output;
+
 
 }