Merge commit 'kc/master'
[koha.git] / admin / systempreferences.pl
index 29dbcec..9e90d61 100755 (executable)
 # 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., 59 Temple Place,
-# Suite 330, Boston, MA  02111-1307 USA
+# 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.
 
 =head1 systempreferences.pl
 
-ALGO :
+ALSO :
  this script use an $op to know what to do.
  if $op is empty or none of the above values,
     - the default screen is build (with all records, or filtered datas).
@@ -44,6 +44,7 @@ use strict;
 use warnings;
 
 use CGI;
+use MIME::Base64;
 use C4::Auth;
 use C4::Context;
 use C4::Koha;
@@ -67,10 +68,14 @@ use C4::Output;
 my %tabsysprefs;
 
 # Acquisitions
-$tabsysprefs{acquisitions}              = "Acquisitions";
-$tabsysprefs{gist}                      = "Acquisitions";
-$tabsysprefs{emailPurchaseSuggestions}  = "Acquisitions";
-$tabsysprefs{RenewSerialAddsSuggestion} = "Acquisitions";
+    $tabsysprefs{acquisitions}="Acquisitions";
+    $tabsysprefs{gist}="Acquisitions";
+    $tabsysprefs{emailPurchaseSuggestions}="Acquisitions";
+    $tabsysprefs{RenewSerialAddsSuggestion}="Acquisitions";
+    $tabsysprefs{AcqCreateItem}="Acquisitions";
+    $tabsysprefs{OrderPdfFormat}="Acquisitions";
+    $tabsysprefs{OrderPdfTemplate}="Acquisitions";
+    $tabsysprefs{CurrencyFormat}="Acquisitions";
 
 # Admin
 $tabsysprefs{singleBranchMode}      = "Admin";
@@ -92,7 +97,6 @@ $tabsysprefs{DebugLevel}            = "Admin";
 $tabsysprefs{SessionStorage}        = "Admin";
 $tabsysprefs{noItemTypeImages}      = "Admin";
 $tabsysprefs{OPACBaseURL}           = "Admin";
-$tabsysprefs{GranularPermissions}   = "Admin";
 
 # Authorities
 $tabsysprefs{authoritysep}          = "Authorities";
@@ -101,27 +105,29 @@ $tabsysprefs{dontmerge}             = "Authorities";
 $tabsysprefs{BiblioAddsAuthorities} = "Authorities";
 
 # Cataloguing
-$tabsysprefs{advancedMARCEditor}          = "Cataloguing";
-$tabsysprefs{autoBarcode}                 = "Cataloguing";
-$tabsysprefs{hide_marc}                   = "Cataloguing";
-$tabsysprefs{IntranetBiblioDefaultView}   = "Cataloguing";
-$tabsysprefs{ISBD}                        = "Cataloguing";
-$tabsysprefs{itemcallnumber}              = "Cataloguing";
-$tabsysprefs{LabelMARCView}               = "Cataloguing";
-$tabsysprefs{marc}                        = "Cataloguing";
-$tabsysprefs{marcflavour}                 = "Cataloguing";
-$tabsysprefs{MARCOrgCode}                 = "Cataloguing";
-$tabsysprefs{z3950AuthorAuthFields}       = "Cataloguing";
-$tabsysprefs{z3950NormalizeAuthor}        = "Cataloguing";
-$tabsysprefs{Stemming}                    = "Cataloguing";
-$tabsysprefs{WeightFields}                = "Cataloguing";
-$tabsysprefs{NoZebra}                     = "Cataloguing";
-$tabsysprefs{NoZebraIndexes}              = "Cataloguing";
-$tabsysprefs{ReceiveBackIssues}           = "Cataloguing";
-$tabsysprefs{DefaultClassificationSource} = "Cataloguing";
-$tabsysprefs{RoutingSerials}              = "Cataloguing";
-$tabsysprefs{'item-level_itypes'}         = "Cataloguing";
-$tabsysprefs{OpacSuppression}             = "Cataloguing";
+$tabsysprefs{advancedMARCeditor}          = "Cataloging";
+$tabsysprefs{autoBarcode}                 = "Cataloging";
+$tabsysprefs{hide_marc}                   = "Cataloging";
+$tabsysprefs{IntranetBiblioDefaultView}   = "Cataloging";
+$tabsysprefs{ISBD}                        = "Cataloging";
+$tabsysprefs{itemcallnumber}              = "Cataloging";
+$tabsysprefs{LabelMARCView}               = "Cataloging";
+$tabsysprefs{marc}                        = "Cataloging";
+$tabsysprefs{marcflavour}                 = "Cataloging";
+$tabsysprefs{MARCOrgCode}                 = "Cataloging";
+$tabsysprefs{z3950AuthorAuthFields}       = "Cataloging";
+$tabsysprefs{z3950NormalizeAuthor}        = "Cataloging";
+$tabsysprefs{Stemming}                    = "Cataloging";
+$tabsysprefs{WeightFields}                = "Cataloging";
+$tabsysprefs{NoZebra}                     = "Cataloging";
+$tabsysprefs{NoZebraIndexes}              = "Cataloging";
+$tabsysprefs{ReceiveBackIssues}           = "Cataloging";
+$tabsysprefs{DefaultClassificationSource} = "Cataloging";
+$tabsysprefs{RoutingSerials}              = "Cataloging";
+$tabsysprefs{'item-level_itypes'}         = "Cataloging";
+$tabsysprefs{OpacSuppression}             = "Cataloging";
+$tabsysprefs{SpineLabelFormat}            = "Cataloging";
+$tabsysprefs{SpineLabelAutoPrint}         = "Cataloging";
 
 # Circulation
 $tabsysprefs{maxoutstanding}                 = "Circulation";
@@ -131,6 +137,7 @@ $tabsysprefs{IssuingInProcess}               = "Circulation";
 $tabsysprefs{patronimages}                   = "Circulation";
 $tabsysprefs{printcirculationslips}          = "Circulation";
 $tabsysprefs{ReturnBeforeExpiry}             = "Circulation";
+$tabsysprefs{ceilingDueDate}                 = "Circulation";
 $tabsysprefs{SpecifyDueDate}                 = "Circulation";
 $tabsysprefs{AutomaticItemReturn}            = "Circulation";
 $tabsysprefs{ReservesMaxPickUpDelay}         = "Circulation";
@@ -141,11 +148,13 @@ $tabsysprefs{CircAutocompl}                  = "Circulation";
 $tabsysprefs{AllowRenewalLimitOverride}      = "Circulation";
 $tabsysprefs{canreservefromotherbranches}    = "Circulation";
 $tabsysprefs{finesMode}                      = "Circulation";
+$tabsysprefs{numReturnedItemsToShow}         = "Circulation";
 $tabsysprefs{emailLibrarianWhenHoldIsPlaced} = "Circulation";
 $tabsysprefs{globalDueDate}                  = "Circulation";
 $tabsysprefs{holdCancelLength}               = "Circulation";
 $tabsysprefs{itemBarcodeInputFilter}         = "Circulation";
 $tabsysprefs{WebBasedSelfCheck}              = "Circulation";
+$tabsysprefs{ShowPatronImageInWebBasedSelfCheck} = "Circulation";
 $tabsysprefs{CircControl}                    = "Circulation";
 $tabsysprefs{finesCalendar}                  = "Circulation";
 $tabsysprefs{previousIssuesDefaultSortOrder} = "Circulation";
@@ -158,6 +167,19 @@ $tabsysprefs{AllowHoldsOnDamagedItems}       = "Circulation";
 $tabsysprefs{UseBranchTransferLimits}        = "Circulation";
 $tabsysprefs{AllowHoldPolicyOverride}        = "Circulation";
 $tabsysprefs{BranchTransferLimitsType}       = "Circulation";
+$tabsysprefs{AllowNotForLoanOverride}        = "Circulation";
+$tabsysprefs{RenewalPeriodBase}              = "Circulation";
+$tabsysprefs{FilterBeforeOverdueReport}      = "Circulation";
+$tabsysprefs{AllowHoldDateInFuture}          = "Circulation";
+$tabsysprefs{OPACFineNoRenewals}             = "Circulation";
+$tabsysprefs{InProcessingToShelvingCart}     = "Circulation";
+$tabsysprefs{NewItemsDefaultLocation}        = "Circulation";
+$tabsysprefs{ReturnToShelvingCart}           = "Circulation";
+$tabsysprefs{DisplayClearScreenButton}       = "Circulation";
+$tabsysprefs{AllowAllMessageDeletion}        = "Circulation";
+$tabsysprefs{OverdueNoticeBcc}               = "Circulation";
+$tabsysprefs{OverduesBlockCirc}              = "Circulation";
+
 
 # Staff Client
 $tabsysprefs{TemplateEncoding}        = "StaffClient";
@@ -168,6 +190,9 @@ $tabsysprefs{intranetcolorstylesheet} = "StaffClient";
 $tabsysprefs{intranetuserjs}          = "StaffClient";
 $tabsysprefs{yuipath}                 = "StaffClient";
 $tabsysprefs{IntranetmainUserblock}   = "StaffClient";
+$tabsysprefs{viewMARC}                = "StaffClient";
+$tabsysprefs{viewLabeledMARC}         = "StaffClient";
+$tabsysprefs{viewISBD}                = "StaffClient";
 
 # Patrons
 $tabsysprefs{autoMemberNum}                = "Patrons";
@@ -175,14 +200,12 @@ $tabsysprefs{checkdigit}                   = "Patrons";
 $tabsysprefs{intranetreadinghistory}       = "Patrons";
 $tabsysprefs{NotifyBorrowerDeparture}      = "Patrons";
 $tabsysprefs{memberofinstitution}          = "Patrons";
-$tabsysprefs{ReadingHistory}               = "Patrons";
 $tabsysprefs{BorrowerMandatoryField}       = "Patrons";
 $tabsysprefs{borrowerRelationship}         = "Patrons";
 $tabsysprefs{BorrowersTitles}              = "Patrons";
 $tabsysprefs{patronimages}                 = "Patrons";
-$tabsysprefs{MinPasswordLength}            = "Patrons";
+$tabsysprefs{minPasswordLength}            = "Patrons";
 $tabsysprefs{uppercasesurnames}            = "Patrons";
-$tabsysprefs{NoReturnSetLost}              = "Patrons";
 $tabsysprefs{MaxFine}                      = "Patrons";
 $tabsysprefs{NotifyBorrowerDeparture}      = "Patrons";
 $tabsysprefs{AddPatronLists}               = "Patrons";
@@ -192,6 +215,8 @@ $tabsysprefs{AutoEmailOpacUser}            = "Patrons";
 $tabsysprefs{AutoEmailPrimaryAddress}      = "Patrons";
 $tabsysprefs{EnhancedMessagingPreferences} = "Patrons";
 $tabsysprefs{'SMSSendDriver'}              = 'Patrons';
+$tabsysprefs{HidePatronName}               = "Patrons";
+
 
 # I18N/L10N
 $tabsysprefs{dateformat}    = "I18N/L10N";
@@ -215,15 +240,24 @@ $tabsysprefs{sortbynonfiling}         = "Searching";
 $tabsysprefs{QueryAutoTruncate}       = "Searching";
 $tabsysprefs{QueryRemoveStopwords}    = "Searching";
 $tabsysprefs{AdvancedSearchTypes}     = "Searching";
+$tabsysprefs{DisplayMultiPlaceHold}   = "Searching";
 
 # EnhancedContent
-$tabsysprefs{AmazonContent}          = "EnhancedContent";
+$tabsysprefs{AmazonEnabled}          = "EnhancedContent";
+$tabsysprefs{OPACAmazonEnabled}      = "EnhancedContent";
+$tabsysprefs{AmazonCoverImages}      = "EnhancedContent";
+$tabsysprefs{OPACAmazonCoverImages}  = "EnhancedContent";
 $tabsysprefs{AWSAccessKeyID}         = "EnhancedContent";
+$tabsysprefs{AWSPrivateKey}          = "EnhancedContent";
 $tabsysprefs{AmazonLocale}           = "EnhancedContent";
 $tabsysprefs{AmazonAssocTag}         = "EnhancedContent";
 $tabsysprefs{AmazonSimilarItems}     = "EnhancedContent";
-$tabsysprefs{OPACAmazonContent}      = "EnhancedContent";
 $tabsysprefs{OPACAmazonSimilarItems} = "EnhancedContent";
+$tabsysprefs{AmazonReviews}          = "EnhancedContent";
+$tabsysprefs{OPACAmazonReviews}      = "EnhancedContent";
+
+# Babelthèque
+$tabsysprefs{Babeltheque}            = "EnhancedContent";
 
 # Baker & Taylor
 $tabsysprefs{BakerTaylorBookstoreURL} = 'EnhancedContent';
@@ -231,6 +265,11 @@ $tabsysprefs{BakerTaylorEnabled}      = 'EnhancedContent';
 $tabsysprefs{BakerTaylorPassword}     = 'EnhancedContent';
 $tabsysprefs{BakerTaylorUsername}     = 'EnhancedContent';
 
+# Library Thing for Libraries
+$tabsysprefs{LibraryThingForLibrariesID} = "EnhancedContent";
+$tabsysprefs{LibraryThingForLibrariesEnabled} = "EnhancedContent";
+$tabsysprefs{LibraryThingForLibrariesTabbedView} = "EnhancedContent";
+
 # Syndetics
 $tabsysprefs{SyndeticsClientCode}     = 'EnhancedContent';
 $tabsysprefs{SyndeticsEnabled}        = 'EnhancedContent';
@@ -238,14 +277,19 @@ $tabsysprefs{SyndeticsCoverImages}    = 'EnhancedContent';
 $tabsysprefs{SyndeticsTOC}            = 'EnhancedContent';
 $tabsysprefs{SyndeticsSummary}        = 'EnhancedContent';
 $tabsysprefs{SyndeticsEditions}       = 'EnhancedContent';
-$tabsysprefs{SyndeticsExcerpt}       = 'EnhancedContent';
+$tabsysprefs{SyndeticsExcerpt}        = 'EnhancedContent';
+$tabsysprefs{SyndeticsReviews}        = 'EnhancedContent';
+$tabsysprefs{SyndeticsAuthorNotes}    = 'EnhancedContent';
+$tabsysprefs{SyndeticsAwards}         = 'EnhancedContent';
+$tabsysprefs{SyndeticsSeries}         = 'EnhancedContent';
+$tabsysprefs{SyndeticsCoverImageSize} = 'EnhancedContent';
+
 
 # FRBR
 $tabsysprefs{FRBRizeEditions}     = "EnhancedContent";
 $tabsysprefs{XISBN}               = "EnhancedContent";
 $tabsysprefs{OCLCAffiliateID}     = "EnhancedContent";
 $tabsysprefs{XISBNDailyLimit}     = "EnhancedContent";
-$tabsysprefs{PINESISBN}           = "EnhancedContent";
 $tabsysprefs{ThingISBN}           = "EnhancedContent";
 $tabsysprefs{OPACFRBRizeEditions} = "EnhancedContent";
 
@@ -271,20 +315,24 @@ $tabsysprefs{opacsmallimage}             = "OPAC";
 $tabsysprefs{opacstylesheet}             = "OPAC";
 $tabsysprefs{opacthemes}                 = "OPAC";
 $tabsysprefs{opacuserjs}                 = "OPAC";
-$tabsysprefs{SubscriptionHistory}        = "OPAC";
 $tabsysprefs{opacheader}                 = "OPAC";
-$tabsysprefs{noOPACUserLogin}            = "OPAC";
 $tabsysprefs{hideBiblioNumber}           = "OPAC";
-$tabsysprefs{OPACDisplayExtendedSubInfo} = "OPAC";
 $tabsysprefs{OpacMainUserBlock}          = "OPAC";
-$tabsysprefs{OPACSubscriptionDisplay}    = "OPAC";
 $tabsysprefs{OPACURLOpenInNewWindow}     = "OPAC";
 $tabsysprefs{OPACUserCSS}                = "OPAC";
 $tabsysprefs{OPACHighlightedWords}       = "OPAC";
 $tabsysprefs{OPACViewOthersSuggestions}  = "OPAC";
 $tabsysprefs{URLLinkText}                = "OPAC";
+$tabsysprefs{OPACSearchForTitleIn}       = "OPAC";
 $tabsysprefs{OPACShelfBrowser}           = "OPAC";
 $tabsysprefs{OPACDisplayRequestPriority} = "OPAC";
+$tabsysprefs{OPACAllowHoldDateInFuture}  = "OPAC";
+$tabsysprefs{OPACPatronDetails}  = "OPAC";
+$tabsysprefs{OPACFinesTab}  = "OPAC";
+$tabsysprefs{DisplayOPACiconsXSLT}      = "OPAC";
+$tabsysprefs{AutoSelfCheckAllowed}      = "OPAC";
+$tabsysprefs{AutoSelfCheckID}           = "OPAC";
+$tabsysprefs{AutoSelfCheckPass}                 = "OPAC";
 
 # OPAC
 $tabsysprefs{SearchMyLibraryFirst} = "OPAC";
@@ -309,6 +357,16 @@ $tabsysprefs{OPACItemHolds}        = "OPAC";
 $tabsysprefs{OPACGroupResults}     = "OPAC";
 $tabsysprefs{XSLTDetailsDisplay}   = "OPAC";
 $tabsysprefs{XSLTResultsDisplay}   = "OPAC";
+$tabsysprefs{OPACShowCheckoutName}   = "OPAC";
+
+# Serials
+$tabsysprefs{RoutingListAddReserves}      = "Serials";
+$tabsysprefs{OPACSerialIssueDisplayCount}  = "Serials";
+$tabsysprefs{StaffSerialIssueDisplayCount} = "Serials";
+$tabsysprefs{OPACDisplayExtendedSubInfo}   = "Serials";
+$tabsysprefs{OPACSubscriptionDisplay}      = "Serials";
+$tabsysprefs{RenewSerialAddsSuggestion}    = "Serials";
+$tabsysprefs{SubscriptionHistory}          = "Serials";
 
 # LOGFeatures
 $tabsysprefs{CataloguingLog}  = "Logs";
@@ -326,6 +384,13 @@ $tabsysprefs{'OAI-PMH:MaxCount'}  = "OAI-PMH";
 $tabsysprefs{'OAI-PMH:Set'}       = "OAI-PMH";
 $tabsysprefs{'OAI-PMH:Subset'}    = "OAI-PMH";
 
+# ILS-DI variables
+$tabsysprefs{'ILS-DI'} = "ILS-DI";
+
+# Creator variables
+
+$tabsysprefs{'ImageLimit'} = "Creators";
+
 sub StringSearch {
     my ( $searchstring, $type ) = @_;
     my $dbh = C4::Context->dbh;
@@ -357,8 +422,8 @@ sub StringSearch {
         if ( $type and $type eq 'all' ) {
             $sth = $dbh->prepare( "
             SELECT *
-              FROM systempreferences 
-              WHERE variable LIKE ? OR explanation LIKE ? 
+              FROM systempreferences
+              WHERE variable LIKE ? OR explanation LIKE ?
               ORDER BY VARIABLE" );
             $sth->execute( "%$searchstring%", "%$searchstring%" );
         } else {
@@ -402,6 +467,8 @@ sub GetPrefParams {
     if ( not defined( $data->{'type'} ) ) {
         $params->{'type-free'} = 1;
         $params->{'fieldlength'} = ( defined( $data->{'options'} ) and $data->{'options'} and $data->{'options'} > 0 );
+    } elsif ( $data->{'type'} eq 'Upload' ) {
+        $params->{'type-upload'} = 1;
     } elsif ( $data->{'type'} eq 'Choice' ) {
         $params->{'type-choice'} = 1;
     } elsif ( $data->{'type'} eq 'YesNo' ) {
@@ -634,6 +701,13 @@ if ( $op eq 'add_form' ) {
             $value = $params->{'value'};
         }
     }
+
+    if ( $input->param('preftype') eq 'Upload' ) {
+        my $lgtfh = $input->upload('value');
+        $value = join '', <$lgtfh>;
+        $value = encode_base64($value);
+    }
+
     if ( $sth->rows ) {
         unless ( C4::Context->config('demo') ) {
             my $sth = $dbh->prepare("update systempreferences set value=?,explanation=?,type=?,options=? where variable=?");