From: Robin Sheat <[email protected]> By default the packages now set up the cron jobs to handle things like overdues and email etc. By default, email is off, 'koha-email-enable' and 'koha-email-disable' can manage this.
Signed-off-by: Chris Cormack <[email protected]> --- debian/koha-common.README.Debian | 2 + debian/koha-common.cron.d | 1 + debian/koha-common.cron.daily | 24 +++++++++++++++++++ debian/koha-common.install | 4 ++- debian/scripts/koha-create | 6 +++++ debian/scripts/koha-email-disable | 36 +++++++++++++++++++++++++++++ debian/scripts/koha-email-enable | 36 +++++++++++++++++++++++++++++ debian/scripts/koha-foreach | 17 ++++++++----- debian/scripts/koha-list | 45 +++++++++++++++++++++++++++++------- misc/cronjobs/cleanup_database.pl | 36 ++++++++++++++++++++++------- 10 files changed, 181 insertions(+), 26 deletions(-) create mode 100644 debian/koha-common.cron.daily create mode 100755 debian/scripts/koha-email-disable create mode 100755 debian/scripts/koha-email-enable mode change 100644 => 100755 debian/scripts/koha-enable diff --git a/debian/koha-common.README.Debian b/debian/koha-common.README.Debian index 42167eb..ba831af 100644 --- a/debian/koha-common.README.Debian +++ b/debian/koha-common.README.Debian @@ -33,6 +33,8 @@ The Debian packaging of Koha puts files in the following places: * /etc/koha -- system configuration files * /etc/cron.hourly/koha-common -- cron job +* /etc/cron.daily/koha-common -- cron job +* /etc/cron.d/koha-common -- cron job * /usr/share/koha -- shared files (HTML templates, Perl code, etc) Each Koha instance has files in the following places: diff --git a/debian/koha-common.cron.d b/debian/koha-common.cron.d index 715d1b0..cd7f3c2 100644 --- a/debian/koha-common.cron.d +++ b/debian/koha-common.cron.d @@ -7,3 +7,4 @@ SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin */5 * * * * root test -x /usr/sbin/koha-rebuild-zebra && koha-rebuild-zebra $(koha-list --enabled) +*/15 * * * * root koha-foreach --enabled --email /usr/share/koha/bin/cronjobs/process_message_queue.pl diff --git a/debian/koha-common.cron.daily b/debian/koha-common.cron.daily new file mode 100644 index 0000000..059682e --- /dev/null +++ b/debian/koha-common.cron.daily @@ -0,0 +1,24 @@ +#!/bin/sh +# /etc/cron.daily/koha-common -- Daily housekeeping tasks for all Kohas. +# Copyright 2010 Catalyst IT, Ltd +# +# This program 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 3 of the License, or +# (at your option) any later version. +# +# This program 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 this program. If not, see <http://www.gnu.org/licenses/>. + +koha-foreach --enabled --email /usr/share/koha/bin/cronjobs/overdue_notices.pl -t +koha-foreach --enabled /usr/share/koha/bin/cronjobs/fines.pl +koha-foreach --enabled --email /usr/share/koha/bin/cronjobs/advance_notices.pl -c +koha-foreach --enabled /usr/share/koha/bin/cronjobs/holds/cancel_expired_holds.pl >/dev/null 2>&1 +koha-foreach --enabled /usr/share/koha/bin/cronjobs/services_throttle.pl > /dev/null 2>&1 +koha-foreach --enabled /usr/share/koha/bin/cronjobs/cleanup_database.pl --sessions --zebraqueue 10 +koha-foreach --enabled --noemail /usr/share/koha/bin/cronjobs/cleanup_database.pl --mail diff --git a/debian/koha-common.install b/debian/koha-common.install index 986aa07..6ed2587 100644 --- a/debian/koha-common.install +++ b/debian/koha-common.install @@ -3,7 +3,7 @@ debian/tmp/usr/* usr debian/tmp/etc/koha/pazpar2 debian/tmp/etc/koha/zebradb/[!z]* debian/templates/* etc/koha -debian/koha-post-install-setup usr/sbin +debian/koha-post-install-setup usr/sbin debian/unavailable.html usr/share/koha/intranet/htdocs debian/unavailable.html usr/share/koha/opac/htdocs debian/templates/* etc/koha @@ -12,6 +12,8 @@ debian/scripts/koha-create-dirs usr/sbin debian/scripts/koha-disable usr/sbin debian/scripts/koha-dump usr/sbin debian/scripts/koha-dump-defaults usr/sbin +debian/scripts/koha-email-disable usr/sbin +debian/scripts/koha-email-enable usr/sbin debian/scripts/koha-enable usr/sbin debian/scripts/koha-foreach usr/sbin debian/scripts/koha-list usr/sbin diff --git a/debian/scripts/koha-create b/debian/scripts/koha-create index 43e7c4e..16786f7 100755 --- a/debian/scripts/koha-create +++ b/debian/scripts/koha-create @@ -233,3 +233,9 @@ if [ "$op" = request ] then koha-disable "$name" fi + +echo <<eoh + +Email for this instance is disabled. When you're ready to enable it, use: +koha-email-enable $name +eoh diff --git a/debian/scripts/koha-email-disable b/debian/scripts/koha-email-disable new file mode 100755 index 0000000..5d381cb --- /dev/null +++ b/debian/scripts/koha-email-disable @@ -0,0 +1,36 @@ +#!/bin/sh +# +# koha-email-disable -- turn off the email for a Koha instance +# Copyright 2010 Catalyst IT, Ltd +# +# This program 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 3 of the License, or +# (at your option) any later version. +# +# This program 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 this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + +if [ "$#" = 0 ] +then + echo "Disables the email for a koha instance." 1>&2 + echo "Usage: $0 instancename..." 1>&2 + exit 1 +fi +libdir=/var/lib/koha +for name in "$@" +do + if [ ! -d $libdir/$name ] + then + echo "$0: no koha instance \"$name\"" 1>&2 + continue + fi + rm -f $libdir/$name/email.enabled +done diff --git a/debian/scripts/koha-email-enable b/debian/scripts/koha-email-enable new file mode 100755 index 0000000..da63589 --- /dev/null +++ b/debian/scripts/koha-email-enable @@ -0,0 +1,36 @@ +#!/bin/sh +# +# koha-email-enable -- turn on the email for a Koha instance +# Copyright 2010 Catalyst IT, Ltd +# +# This program 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 3 of the License, or +# (at your option) any later version. +# +# This program 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 this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + +if [ "$#" = 0 ] +then + echo "Enables email for a koha instance." 1>&2 + echo "Usage: $0 instancename..." 1>&2 + exit 1 +fi +libdir=/var/lib/koha +for name in "$@" +do + if [ ! -d $libdir/$name ] + then + echo "$0: no koha instance \"$name\"" 1>&2 + continue + fi + touch $libdir/$name/email.enabled +done diff --git a/debian/scripts/koha-enable b/debian/scripts/koha-enable old mode 100644 new mode 100755 diff --git a/debian/scripts/koha-foreach b/debian/scripts/koha-foreach index 80152bc..9cf150d 100755 --- a/debian/scripts/koha-foreach +++ b/debian/scripts/koha-foreach @@ -18,15 +18,18 @@ set -e - listopts="" -if [ "$1" = --enabled ] -then - listopts="--enabled" +while [ ! -z "$1" ] +do + case "$1" in + --email) listopts="$listopts --email";; + --noemail) listopts="$listopts --noemail";; + --enabled) listopts="$listopts --enabled";; + *) break;; + esac shift -fi - - +done + for name in $(koha-list $listopts) do sudo -u "$name-koha" \ diff --git a/debian/scripts/koha-list b/debian/scripts/koha-list index af810ae..1e19f1a 100755 --- a/debian/scripts/koha-list +++ b/debian/scripts/koha-list @@ -29,19 +29,46 @@ is_enabled() { fi } -all=yes -if [ "$1" = --enabled ] -then +help() { + echo <<eoh +Lists Koha instances, optionally only those that are enabled or have +email turned on. + +Usage: $0 [--enabled] [--email] [-h] +Options: + --enabled only show instances that are enabled + --email only show instances that have email enabled + --noemail only show instances that do not have email enabled + -h this help + +The filtering options can be combined, and you probably want to do this +(except --email and --noemail, that's just silly.) +eoh +} + +enabled=no +email=no +noemail=no +args=$(getopt -l enabled,email,noemail -o h -n $0 -- "$@") +set -- $args +while [ ! -z "$1" ] +do + case "$1" in + -h) help; exit;; + --email) email=yes;; + --enabled) enabled=yes;; + --noemail) noemail=yes;; + *) break;; + esac shift - all=no -fi +done find /etc/koha/sites -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | sort | while read name do - if [ "$all" = yes ] || is_enabled "$name" - then - echo "$name" - fi + [ "$enabled" = yes ] && ! is_enabled "$name" && continue + [ "$email" = yes ] && [ ! -e /var/lib/koha/$name/email.enabled ] && continue + [ "$noemail" = yes ] && [ -e /var/lib/koha/$name/email.enabled ] && continue + echo "$name" done diff --git a/misc/cronjobs/cleanup_database.pl b/misc/cronjobs/cleanup_database.pl index 20481f5..f811b24 100755 --- a/misc/cronjobs/cleanup_database.pl +++ b/misc/cronjobs/cleanup_database.pl @@ -38,21 +38,27 @@ use Getopt::Long; sub usage { print STDERR <<USAGE; Usage: $0 [-h|--help] [--sessions] [-v|--verbose] [--zebraqueue DAYS] - -h --help prints this help message, and exits, ignoring all other options - --sessions purge the sessions table. If you use this while users are logged - into Koha, they will have to reconnect. - -v --verbose will cause the script to give you a bit more information about the run. - --zebraqueue DAYS purge completed entries from the zebraqueue from more than DAYS days ago. + [-m|--mail] + -h --help prints this help message, and exits, ignoring all + other options + --sessions purge the sessions table. If you use this while users + are logged into Koha, they will have to reconnect. + -v --verbose will cause the script to give you a bit more information + about the run. + --zebraqueue DAYS purge completed entries from the zebraqueue from + more than DAYS days ago. + -m --mail purge the mail queue. USAGE exit $_[0]; } -my ($help, $sessions, $verbose, $zebraqueue_days); +my ($help, $sessions, $verbose, $zebraqueue_days, $mail); GetOptions( - 'h|help' => \$help, - 'sessions' => \$sessions, + 'h|help' => \$help, + 'sessions' => \$sessions, 'v|verbose' => \$verbose, + 'm|mail' => \$mail, 'zebraqueue:i' => \$zebraqueue_days, ) || usage(1); @@ -60,7 +66,7 @@ if ($help) { usage(0); } -if (!($sessions || $zebraqueue_days)){ +if (!($sessions || $zebraqueue_days || $mail)){ print "You did not specify any cleanup work for the script to do.\n\n"; usage(1); } @@ -103,4 +109,16 @@ if ($zebraqueue_days){ print "$count records were deleted.\nDone with zebraqueue purge.\n"; } } + +if ($mail) { + if ($verbose) { + $sth = $dbh->prepare("SELECT COUNT(*) FROM message_queue"); + $sth->execute() or die $dbh->errstr; + my @count_arr = $sth->fetchrow_array; + print "Deleting $count_arr[0] entries from the mail queue.\n"; + } + $sth = $dbh->prepare("TRUNCATE message_queue"); + $sth->execute() or $dbh->errstr; + print "Done with purging the mail queue.\n" if ($verbose); +} exit(0); -- 1.7.0.4 _______________________________________________ Koha-patches mailing list [email protected] http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches
