[Koha-patches] [PATCH] Bug 8492 [ENH] Restrict OpacSuppression to IP adresses outside of an IP range
Mirko Tietgen
5p4m at gmx.de
Tue Jul 24 01:36:04 CEST 2012
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 7009155..2ffe89b 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 bb96644..237cd47 100755
--- a/installer/data/mysql/updatedatabase.pl
+++ b/installer/data/mysql/updatedatabase.pl
@@ -5536,6 +5536,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 <code>Suppress</code> 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 <code>192.168.</code>.)
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
More information about the Koha-patches
mailing list