Merge branch 'labels_recon' into to-push
[koha-ffzg.git] / members / memberentry.pl
index d5f04b8..ade31e2 100755 (executable)
@@ -38,6 +38,7 @@ use C4::Input;
 use C4::Log;
 use C4::Letters;
 use C4::Branch; # GetBranches
+use C4::Form::MessagingPreferences;
 
 use vars qw($debug);
 
@@ -148,19 +149,30 @@ if ($op eq 'insert' || $op eq 'modify' || $op eq 'save') {
 
 # remove keys from %newdata that ModMember() doesn't like
 {
-    my @keys_to_delete = qw(
-        BorrowerMandatoryField
-        category_type
-        check_member
-        destination
-        nodouble
-        op
-        save
-        select_roadtype
-        updtype
+    my @keys_to_delete = (
+        qr/^BorrowerMandatoryField$/,
+        qr/^category_type$/,
+        qr/^check_member$/,
+        qr/^destination$/,
+        qr/^nodouble$/,
+        qr/^op$/,
+        qr/^save$/,
+        qr/^select_roadtype$/,
+        qr/^updtype$/,
+        qr/^SMSnumber$/,
+        qr/^setting_extended_patron_attributes$/,
+        qr/^setting_messaging_prefs$/,
+        qr/^digest$/,
+        qr/^modify$/,
+        qr/^step$/,
+        qr/^\d+$/,
+        qr/^\d+-DAYS/,
+        qr/^patron_attr_/,
     );
-    for (@keys_to_delete) {
-        delete($newdata{$_});
+    for my $regexp (@keys_to_delete) {
+        for (keys %newdata) {
+            delete($newdata{$_}) if /$regexp/;
+        }
     }
 }
 
@@ -198,18 +210,19 @@ if ( defined($guarantorid) and
             $newdata{'contactname'}     = $guarantordata->{'surname'};
             $newdata{'contacttitle'}    = $guarantordata->{'title'};
                foreach (qw(streetnumber address streettype address2
-                        zipcode city phone phonepro mobile fax email emailpro branchcode)) {
+                        zipcode country city phone phonepro mobile fax email emailpro branchcode)) {
                        $newdata{$_} = $guarantordata->{$_};
                }
         }
     }
 }
 
-###############test to take the right zipcode and city name ##############
+###############test to take the right zipcode, country and city name ##############
 if (!defined($guarantorid) or $guarantorid eq '' or $guarantorid eq '0') {
     # set only if parameter was passed from the form
     $newdata{'city'}    = $input->param('city')    if defined($input->param('city'));
     $newdata{'zipcode'} = $input->param('zipcode') if defined($input->param('zipcode'));
+    $newdata{'country'} = $input->param('country') if defined($input->param('country'));
 }
 
 #builds default userid
@@ -234,7 +247,7 @@ if ($op eq 'save' || $op eq 'insert'){
     }
   }
   if (C4::Context->preference("IndependantBranches")) {
-    if ($userenv && $userenv->{flags} != 1){
+    if ($userenv && $userenv->{flags} % 2 != 1){
       $debug and print STDERR "  $newdata{'branchcode'} : ".$userenv->{flags}.":".$userenv->{branch};
       unless (!$newdata{'branchcode'} || $userenv->{branch} eq $newdata{'branchcode'}){
         push @errors, "ERROR_branch";
@@ -267,6 +280,10 @@ if ($op eq 'modify' || $op eq 'insert' || $op eq 'save' ){
     }
 }
 
+if ( ( defined $input->param('SMSnumber') ) && ( $input->param('SMSnumber') ne $newdata{'mobile'} ) ) {
+    $newdata{smsalertnumber} = $input->param('SMSnumber');
+}
+
 ###  Error checks should happen before this line.
 $nok = $nok || scalar(@errors);
 if ((!$nok) and $nodouble and ($op eq 'insert' or $op eq 'save')){
@@ -310,6 +327,9 @@ if ((!$nok) and $nodouble and ($op eq 'insert' or $op eq 'save')){
         if (C4::Context->preference('ExtendedPatronAttributes') and $input->param('setting_extended_patron_attributes')) {
             C4::Members::Attributes::SetBorrowerAttributes($borrowernumber, $extended_patron_attributes);
         }
+        if (C4::Context->preference('EnhancedMessagingPreferences') and $input->param('setting_messaging_prefs')) {
+            C4::Form::MessagingPreferences::handle_form_action($input, { borrowernumber => $borrowernumber }, $template);
+        }
        } elsif ($op eq 'save'){ 
                if ($NoUpdateLogin) {
                        delete $newdata{'password'};
@@ -319,6 +339,9 @@ if ((!$nok) and $nodouble and ($op eq 'insert' or $op eq 'save')){
         if (C4::Context->preference('ExtendedPatronAttributes') and $input->param('setting_extended_patron_attributes')) {
             C4::Members::Attributes::SetBorrowerAttributes($borrowernumber, $extended_patron_attributes);
         }
+        if (C4::Context->preference('EnhancedMessagingPreferences') and $input->param('setting_messaging_prefs')) {
+            C4::Form::MessagingPreferences::handle_form_action($input, { borrowernumber => $borrowernumber }, $template);
+        }
        }
        print scalar ($destination eq "circ") ? 
                $input->redirect("/cgi-bin/koha/circ/circulation.pl?borrowernumber=$borrowernumber") :
@@ -337,12 +360,12 @@ if ($nok or !$nodouble){
     %data=%newdata; 
     $template->param( updtype => ($op eq 'add' ?'I':'M'));     # used to check for $op eq "insert"... but we just changed $op!
     unless ($step){  
-        $template->param( step_1 => 1,step_2 => 1,step_3 => 1, step_4 => 1);
+        $template->param( step_1 => 1,step_2 => 1,step_3 => 1, step_4 => 1, step_5 => 1);
     }  
 } 
 if (C4::Context->preference("IndependantBranches")) {
     my $userenv = C4::Context->userenv;
-    if ($userenv->{flags} != 1 && $data{branchcode}){
+    if ($userenv->{flags} % 2 != 1 && $data{branchcode}){
         unless ($userenv->{branch} eq $data{'branchcode'}){
             print $input->redirect("/cgi-bin/koha/members/members-home.pl");
             exit;
@@ -352,11 +375,11 @@ if (C4::Context->preference("IndependantBranches")) {
 if ($op eq 'add'){
     my $arg2 = $newdata{'dateenrolled'} || C4::Dates->today('iso');
     $data{'dateexpiry'} = GetExpiryDate($newdata{'categorycode'},$arg2);
-    $template->param( updtype => 'I', step_1=>1, step_2=>1, step_3=>1, step_4=>1);
+    $template->param( updtype => 'I', step_1=>1, step_2=>1, step_3=>1, step_4=>1, step_5 => 1);
 }
 if ($op eq "modify")  {
     $template->param( updtype => 'M',modify => 1 );
-    $template->param( step_1=>1, step_2=>1, step_3=>1, step_4=>1) unless $step;
+    $template->param( step_1=>1, step_2=>1, step_3=>1, step_4=>1, step_5 => 1) unless $step;
 }
 # my $cardnumber=$data{'cardnumber'};
 $data{'cardnumber'}=fixup_cardnumber($data{'cardnumber'}) if $op eq 'add';
@@ -486,7 +509,7 @@ my %select_branches;
 
 my $onlymine=(C4::Context->preference('IndependantBranches') && 
               C4::Context->userenv && 
-              C4::Context->userenv->{flags} !=1  && 
+              C4::Context->userenv->{flags} % 2 !=1  && 
               C4::Context->userenv->{branch}?1:0);
               
 my $branches=GetBranches($onlymine);
@@ -573,6 +596,16 @@ if (C4::Context->preference('ExtendedPatronAttributes')) {
     patron_attributes_form($template, $borrowernumber);
 }
 
+if (C4::Context->preference('EnhancedMessagingPreferences')) {
+    if ($op eq 'add') {
+        C4::Form::MessagingPreferences::set_form_values({ categorycode => $categorycode }, $template);
+    } else {
+        C4::Form::MessagingPreferences::set_form_values({ borrowernumber => $borrowernumber }, $template);
+    }
+    $template->param(SMSSendDriver => C4::Context->preference("SMSSendDriver"));
+    $template->param(SMSnumber     => defined $data{'smsalertnumber'} ? $data{'smsalertnumber'} : $data{'mobile'});
+}
+
 $template->param( "showguarantor"  => ($category_type=~/A|I|S|X/) ? 0 : 1); # associate with step to know where you are
 $debug and warn "memberentry step: $step";
 $template->param(%data);