diff --git a/misc/maintenance/borrowers-force-messaging-defaults b/misc/maintenance/borrowers-force-messaging-defaults new file mode 100755 index 0000000000..11f2228de0 --- /dev/null +++ b/misc/maintenance/borrowers-force-messaging-defaults @@ -0,0 +1,117 @@ +#!/usr/bin/perl +# +# Copyright (C) 2011 Tamil s.a.r.l. +# +# 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., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +use strict; +use warnings; +BEGIN { + # find Koha's Perl modules + # test carefully before changing this + use FindBin; + eval { require "$FindBin::Bin/../kohalib.pl" }; +} + +use C4::Context; +use C4::Members::Messaging; +use Getopt::Long; +use Pod::Usage; + + +sub usage { + pod2usage( -verbose => 2 ); + exit; +} + + +sub force_borrower_messaging_defaults { + my ($doit, $truncate) = @_; + + my $dbh = C4::Context->dbh; + $dbh->{AutoCommit} = 0; + + if ( $doit && $truncate ) { + my $sth = $dbh->prepare("TRUNCATE borrower_message_preferences"); + $sth->execute(); + } + + my $sth = $dbh->prepare("SELECT borrowernumber, categorycode FROM borrowers"); + $sth->execute(); + while ( my ($borrowernumber, $categorycode) = $sth->fetchrow ) { + print "$borrowernumber: $categorycode\n"; + next unless $doit; + C4::Members::Messaging::SetMessagingPreferencesFromDefaults( { + borrowernumber => $borrowernumber, + categorycode => $categorycode, + } ); + } + $dbh->commit(); +} + + +my ($doit, $truncate, $help); +my $result = GetOptions( + 'doit' => \$doit, + 'truncate' => \$truncate, + 'help|h' => \$help, +); + +usage() if $help; + +force_borrower_messaging_defaults( $doit, $truncate); + +=head1 NAME + +force-borrower-messaging-defaults + +=head1 SYNOPSIS + + force-borrower-messaging-defaults + force-borrower-messaging-defaults --help + force-borrower-messaging-defaults --doit + force-borrower-messaging-defaults --doit --truncate + +=head1 DESCRIPTION + +If the EnhancedMessagingPreferences syspref is enabled after borrowers have +been created in the DB, those borrowers won't have messaging transport +preferences default values as defined for their borrower category. So you would +have to modify each borrower one by one if you would like to send them 'Hold +Filled' notice for example. + +This script create transport preferences for all existing borrowers and set +them to default values defined for the category they belong to. + +=over 8 + +=item B<--help> + +Prints this help + +=item B<--doit> + +Process actually the borrowers. + +=item B<--truncate> + +Truncate all borrowers transport preferences before (re-)creating them. It +affects borrower_message_preferences table. + +=back + +=cut +