From abde5352a48aef47f0e459160d9d6e91a9b39df4 Mon Sep 17 00:00:00 2001
From: Mirko Tietgen <5p4m@gmx.de>
Date: Tue, 24 Jul 2012 01:31:28 +0200
Subject: [PATCH] Bug 8492 [ENH] Restrict OpacSuppression to IP adresses outside of an IP range
Content-Type: text/plain; charset="utf-8"
This enhancement extends the OpacSuppression feature with an optional IP address range within which results are _not_ suppressed.
To test
* turn on OpacSuppression (Administration->System preferences->Cataloging) and enter an IP address range in the OpacSuppressionByIPRange field.
* set at least one bibliographic record to suppress=1 (enter '1' in 942$n)
* fully reindex your data
* do an OPAC search that should bring up your suppressed record
* try with IP ranges that match your IP and ranges that don't
---
installer/data/mysql/sysprefs.sql | 2 ++
installer/data/mysql/updatedatabase.pl | 7 +++++++
.../en/modules/admin/preferences/cataloguing.pref | 4 ++++
opac/opac-search.pl | 12 +++++++++++-
4 files changed, 24 insertions(+), 1 deletions(-)
diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql
index 6a53379..75913c5 100644
--- a/installer/data/mysql/sysprefs.sql
+++ b/installer/data/mysql/sysprefs.sql
@@ -375,3 +375,5 @@ INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES (
INSERT INTO systempreferences (variable,value,explanation,type) VALUES('EnableBorrowerFiles','0','If enabled, allows librarians to upload and attach arbitrary files to a borrower record.','YesNo');
INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('UpdateTotalIssuesOnCirc','0','Whether to update the totalissues field in the biblio on each circ.',NULL,'YesNo');
INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('IntranetSlipPrinterJS','','Use this JavaScript for printing slips. Define at least function printThenClose(). For use e.g. with Firefox PlugIn jsPrintSetup, see http://jsprintsetup.mozdev.org/','','Free');
+INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacSuppressionByIPRange','','Restrict the suppression to IP adresses outside of the IP range','','free');
+
diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl
index 608a1bf..e5e30ad 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -5566,6 +5566,13 @@ if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
SetVersion ($DBversion);
}
+$DBversion = 'XXX';
+if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
+ $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacSuppressionByIPRange','','Restrict the suppression to IP adresses outside of the IP range','','free');");
+ print "Upgrade to $DBversion done (Add OpacSuppressionByIPRange syspref)\n";
+ SetVersion ($DBversion);
+}
+
=head1 FUNCTIONS
=head2 TableExists($table)
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/cataloguing.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/cataloguing.pref
index fe5fd05..0545c3a 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/cataloguing.pref
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/cataloguing.pref
@@ -141,4 +141,8 @@ Cataloging:
yes: Hide
no: "Don't hide"
- items marked as suppressed from OPAC search results. Note that you must have the Suppress
index set up in Zebra and at least one suppressed item, or your searches will be broken.
+ - Restrict the suppression to IP adresses outside of the IP range
+ - pref: OpacSuppressionByIPRange
+ class: short
+ - (Leave blank if not used. Define a range like 192.168.
.)
diff --git a/opac/opac-search.pl b/opac/opac-search.pl
index 1e5a0d7..5646443 100755
--- a/opac/opac-search.pl
+++ b/opac/opac-search.pl
@@ -449,7 +449,17 @@ my @limit_inputs = $limit_cgi ? _input_cgi_parse($limit_cgi) : ();
#
# add OPAC suppression - requires at least one item indexed with Suppress
if (C4::Context->preference('OpacSuppression')) {
- $query = "($query) not Suppress=1";
+ # OPAC suppression by IP address
+ if (C4::Context->preference('OpacSuppressionByIPRange')) {
+ my $IPAddress = $ENV{'REMOTE_ADDR'};
+ my $IPRange = C4::Context->preference('OpacSuppressionByIPRange');
+ if ($IPAddress !~ /^$IPRange/) {
+ $query = "($query) not Suppress=1";
+ }
+ }
+ else {
+ $query = "($query) not Suppress=1";
+ }
}
$template->param ( LIMIT_INPUTS => \@limit_inputs );
--
1.7.2.5