From c657234d7f5f4b5690e46055f03fabe1f148014d 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 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 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