ffzg/recall_notices.pl: added --interval and --dedup
[koha.git] / installer / onboarding.pl
index 02d4827..77aa120 100755 (executable)
@@ -22,15 +22,14 @@ use C4::Context;
 use C4::InstallAuth;
 use CGI qw ( -utf8 );
 use C4::Output;
-use C4::Members;
+use C4::Members qw(checkcardnumber);
 use Koha::Patrons;
 use Koha::Libraries;
 use Koha::Database;
 use Koha::DateUtils;
+use Koha::Patrons;
 use Koha::Patron::Categories;
-use Koha::Patron::Category;
 use Koha::ItemTypes;
-use Koha::IssuingRule;
 use Koha::IssuingRules;
 
 #Setting variables
@@ -76,12 +75,10 @@ if ( $step == 1 ) {
 
         eval { $library->store; };
         unless ($@) {
-            push @messages,
-              { type => 'message', code => 'success_on_insert_library' };
+            push @messages, { code => 'success_on_insert_library' };
         }
         else {
-            push @messages,
-              { type => 'message', code => 'error_on_insert_library' };
+            push @messages, { code => 'error_on_insert_library' };
         }
     }
 
@@ -130,12 +127,10 @@ if ( $step == 2 ) {
         eval { $category->store; };
 
         unless ($@) {
-            push @messages,
-              { type => 'message', code => 'success_on_insert_category' };
+            push @messages, { code => 'success_on_insert_category' };
         }
         else {
-            push @messages,
-              { type => 'message', code => 'error_on_insert_category' };
+            push @messages, { code => 'error_on_insert_category' };
         }
     }
 
@@ -150,26 +145,27 @@ if ( $step == 3 ) {
         my $cardnumber     = $input->param('cardnumber');
         my $userid         = $input->param('userid');
 
+        my ( $is_valid, $passworderror) = Koha::AuthUtils::is_password_valid( $firstpassword );
+
         if ( my $error_code = checkcardnumber($cardnumber) ) {
             if ( $error_code == 1 ) {
-                push @messages,
-                  {
-                    type => 'alert',
-                    code => 'ERROR_cardnumber_already_exists'
-                  };
+                push @messages, { code => 'ERROR_cardnumber_already_exists' };
             }
             elsif ( $error_code == 2 ) {
-                push @messages,
-                  { type => 'alert', code => 'ERROR_cardnumber_length' };
+                push @messages, { code => 'ERROR_cardnumber_length' };
             }
         }
         elsif ( $firstpassword ne $secondpassword ) {
 
-            push @messages,
-              { type => 'alert', code => 'ERROR_password_mismatch' };
+            push @messages, { code => 'ERROR_password_mismatch' };
         }
-        else {
+        elsif ( $passworderror) {
+                push @messages, { code => 'ERROR_password_too_short'} if $passworderror eq 'too_short';
+                push @messages, { code => 'ERROR_password_too_weak'} if $passworderror eq 'too_weak';
+                push @messages, { code => 'ERROR_password_has_whitespaces'} if $passworderror eq 'has_whitespaces';
 
+        }
+        else {
             my $patron_data = {
                 surname      => scalar $input->param('surname'),
                 firstname    => scalar $input->param('firstname'),
@@ -177,12 +173,10 @@ if ( $step == 3 ) {
                 branchcode   => scalar $input->param('libraries'),
                 categorycode => scalar $input->param('categorycode_entry'),
                 userid       => scalar $input->param('userid'),
-                password     => scalar $input->param('password'),
-                password2    => scalar $input->param('password2'),
                 privacy      => "default",
                 address      => "",
                 city         => "",
-                flags => 1,    # Will be superlibrarian
+                flags        => 1,    # Will be superlibrarian
             };
 
             my $patron_category =
@@ -190,16 +184,18 @@ if ( $step == 3 ) {
             $patron_data->{dateexpiry} =
               $patron_category->get_expiry_date( $patron_data->{dateenrolled} );
 
-            my $borrowernumber = C4::Members::AddMember(%$patron_data);
+            eval {
+                my $patron = Koha::Patron->new($patron_data)->store;
+                $patron->set_password({ password =>  $firstpassword });
+            };
 
             #Error handling checking if the patron was created successfully
-            if ($borrowernumber) {
-                push @messages,
-                  { type => 'message', code => 'success_on_insert_patron' };
+            unless ($@) {
+                push @messages, { code => 'success_on_insert_patron' };
             }
             else {
-                push @messages,
-                  { type => 'error', code => 'error_on_insert_patron' };
+                warn $@;
+                push @messages, { code => 'error_on_insert_patron' };
             }
         }
     }
@@ -221,12 +217,10 @@ if ( $step == 4 ) {
         eval { $itemtype->store; };
 
         unless ($@) {
-            push @messages,
-              { type => 'message', code => 'success_on_insert_itemtype' };
+            push @messages, { code => 'success_on_insert_itemtype' };
         }
         else {
-            push @messages,
-              { type => 'message', code => 'error_on_insert_itemtype' };
+            push @messages, { code => 'error_on_insert_itemtype' };
         }
     }
 
@@ -257,7 +251,6 @@ if ( $step == 5 ) {
             branchcode      => $branchcode,
             categorycode    => $categorycode,
             itemtype        => $itemtype,
-            maxissueqty     => $maxissueqty,
             renewalsallowed => $renewalsallowed,
             renewalperiod   => $renewalperiod,
             issuelength     => $issuelength,
@@ -268,13 +261,29 @@ if ( $step == 5 ) {
         my $issuingrule = Koha::IssuingRule->new($params);
         eval { $issuingrule->store; };
 
-        unless ($@) {
-            push @messages,
-              { type => 'message', code => 'success_on_insert_circ_rule' };
-        }
-        else {
-            push @messages,
-              { type => 'message', code => 'error_on_insert_circ_rule' };
+        if ($@) {
+            push @messages, { code => 'error_on_insert_circ_rule' };
+        } else {
+
+            eval {
+                Koha::CirculationRules->set_rules(
+                    {
+                        categorycode => $categorycode,
+                        itemtype     => $itemtype,
+                        branchcode   => $branchcode,
+                        rules        => {
+                            maxissueqty => $maxissueqty,
+                        }
+                    }
+                );
+            };
+
+            unless ($@) {
+                push @messages, { code => 'success_on_insert_circ_rule' };
+            }
+            else {
+                push @messages, { code => 'error_on_insert_circ_rule' };
+            }
         }
     }
 
@@ -283,22 +292,6 @@ if ( $step == 5 ) {
 
 my $libraries = Koha::Libraries->search( {}, { order_by => ['branchcode'] }, );
 $template_params->{libraries}   = $libraries;
-$template_params->{group_types} = [
-    {
-        categorytype => 'searchdomain',
-        categories   => [
-            Koha::LibraryCategories->search(
-                { categorytype => 'searchdomain' }
-            )
-        ],
-    },
-    {
-        categorytype => 'properties',
-        categories   => [
-            Koha::LibraryCategories->search( { categorytype => 'properties' } )
-        ],
-    },
-];
 
 if ( $step > 5 ) {
     $template_params->{all_done} = 1;    # If step 5 is complete, we are done!