From 5c2c7f87572394a8e0903d1c8dfb5d75d9610856 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Thu, 23 Oct 2025 12:04:26 +0000 Subject: [PATCH] Bug 13811: MOve POD and script to top --- .../borrowers-force-messaging-defaults.pl | 151 +++++++++--------- 1 file changed, 76 insertions(+), 75 deletions(-) diff --git a/misc/maintenance/borrowers-force-messaging-defaults.pl b/misc/maintenance/borrowers-force-messaging-defaults.pl index 5a65d9ed7d6..ec560f42893 100755 --- a/misc/maintenance/borrowers-force-messaging-defaults.pl +++ b/misc/maintenance/borrowers-force-messaging-defaults.pl @@ -27,81 +27,6 @@ use C4::Members::Messaging; use Getopt::Long qw( GetOptions ); use Pod::Usage qw( pod2usage ); -sub usage { - pod2usage( -verbose => 2 ); - exit; -} - -sub force_borrower_messaging_defaults { - my ( $doit, $since, $not_expired, $no_overwrite, $category, $branchcode, $message_name, $verbose ) = @_; - - print "Since: $since\n" if $since; - my $update_statement = $doit ? "Updating" : "Would have updated"; - - my $dbh = C4::Context->dbh; - $dbh->{AutoCommit} = 0; - - my $sql = q|SELECT DISTINCT bo.borrowernumber, bo.categorycode FROM borrowers bo -LEFT JOIN borrower_message_preferences mp USING (borrowernumber) -WHERE 1|; - - if ($since) { - $sql .= " AND bo.dateenrolled >= ?"; - } - if ($not_expired) { - $sql .= " AND bo.dateexpiry >= NOW()"; - } - if ($no_overwrite) { - $sql .= " AND mp.borrowernumber IS NULL"; - } - $sql .= " AND bo.categorycode = ?" if $category; - $sql .= " AND bo.branchcode = ?" if $branchcode; - my $sth = $dbh->prepare($sql); - $sth->execute( $since || (), $category || (), $branchcode || () ); - my $cnt = 0; - while ( my ( $borrowernumber, $categorycode ) = $sth->fetchrow ) { - print "$update_statement borrowernumber: $borrowernumber : category ($categorycode)\n" if $verbose; - next unless $doit; - my $options = { - borrowernumber => $borrowernumber, - categorycode => $categorycode, - }; - $options->{message_name} = $message_name if defined $message_name; - C4::Members::Messaging::SetMessagingPreferencesFromDefaults($options); - $cnt++; - } - $dbh->commit(); - print "Total borrowers updated: $cnt\n" if $doit; -} - -my ( $doit, $since, $help, $not_expired, $no_overwrite, $category, $branchcode, $message_name, $verbose ); -my $result = GetOptions( - 'doit' => \$doit, - 'since:s' => \$since, - 'not-expired' => \$not_expired, - 'no-overwrite' => \$no_overwrite, - 'category:s' => \$category, - 'library:s' => \$branchcode, - 'message-name:s' => \$message_name, - 'help|h' => \$help, - 'verbose|v+' => \$verbose, -); - -my $command_line_options = join( " ", @ARGV ); - -if ($doit) { - cronlogaction( { action => 'Run', info => $command_line_options } ); -} else { - print "Running in dry-run mode, provide --doit to apply the changes\n"; -} - -usage() if $help; - -force_borrower_messaging_defaults( - $doit, $since, $not_expired, $no_overwrite, $category, $branchcode, $message_name, - $verbose -); - =head1 NAME borrowers-force-messaging-defaults.pl @@ -178,3 +103,79 @@ Examples: =back =cut + +my ( $doit, $since, $help, $not_expired, $no_overwrite, $category, $branchcode, $message_name, $verbose ); +my $result = GetOptions( + 'doit' => \$doit, + 'since:s' => \$since, + 'not-expired' => \$not_expired, + 'no-overwrite' => \$no_overwrite, + 'category:s' => \$category, + 'library:s' => \$branchcode, + 'message-name:s' => \$message_name, + 'help|h' => \$help, + 'verbose|v+' => \$verbose, +); + +my $command_line_options = join( " ", @ARGV ); + +if ($doit) { + cronlogaction( { action => 'Run', info => $command_line_options } ); +} else { + print "Running in dry-run mode, provide --doit to apply the changes\n"; +} + +usage() if $help; + +force_borrower_messaging_defaults( + $doit, $since, $not_expired, $no_overwrite, $category, $branchcode, $message_name, + $verbose +); + +sub usage { + pod2usage( -verbose => 2 ); + exit; +} + +sub force_borrower_messaging_defaults { + my ( $doit, $since, $not_expired, $no_overwrite, $category, $branchcode, $message_name, $verbose ) = @_; + + print "Since: $since\n" if $since; + my $update_statement = $doit ? "Updating" : "Would have updated"; + + my $dbh = C4::Context->dbh; + $dbh->{AutoCommit} = 0; + + my $sql = q|SELECT DISTINCT bo.borrowernumber, bo.categorycode FROM borrowers bo +LEFT JOIN borrower_message_preferences mp USING (borrowernumber) +WHERE 1|; + + if ($since) { + $sql .= " AND bo.dateenrolled >= ?"; + } + if ($not_expired) { + $sql .= " AND bo.dateexpiry >= NOW()"; + } + if ($no_overwrite) { + $sql .= " AND mp.borrowernumber IS NULL"; + } + $sql .= " AND bo.categorycode = ?" if $category; + $sql .= " AND bo.branchcode = ?" if $branchcode; + my $sth = $dbh->prepare($sql); + $sth->execute( $since || (), $category || (), $branchcode || () ); + my $cnt = 0; + while ( my ( $borrowernumber, $categorycode ) = $sth->fetchrow ) { + print "$update_statement borrowernumber: $borrowernumber : category ($categorycode)\n" if $verbose; + next unless $doit; + my $options = { + borrowernumber => $borrowernumber, + categorycode => $categorycode, + }; + $options->{message_name} = $message_name if defined $message_name; + C4::Members::Messaging::SetMessagingPreferencesFromDefaults($options); + $cnt++; + } + $dbh->commit(); + print "Total borrowers updated: $cnt\n" if $doit; +} + -- 2.39.5