From 3177ad0ccb1af404d08d4ee24793e883f3433483 Mon Sep 17 00:00:00 2001 From: Vitor FERNANDES Date: Wed, 28 Nov 2012 17:25:59 +0000 Subject: [PATCH 2/2] BUG 9163 - Patch2 use user permissions instead of systempreferences New user permission added to access the validation framework, under edit catalogue section. --- cataloguing/addbiblio.pl | 16 ++++++------ cataloguing/addbooks.pl | 26 +++++++++----------- .../data/mysql/de-DE/mandatory/userpermissions.sql | 1 + .../data/mysql/en/mandatory/userpermissions.sql | 1 + .../data/mysql/es-ES/mandatory/userpermissions.sql | 1 + .../mysql/fr-FR/1-Obligatoire/userpermissions.sql | 1 + .../data/mysql/it-IT/necessari/userpermissions.sql | 1 + .../mysql/nb-NO/1-Obligatorisk/userpermissions.sql | 1 + .../data/mysql/pl-PL/mandatory/userpermissions.sql | 1 + installer/data/mysql/sysprefs.sql | 1 - installer/data/mysql/updatedatabase.pl | 2 +- .../en/modules/admin/preferences/cataloguing.pref | 5 ---- 12 files changed, 27 insertions(+), 30 deletions(-) diff --git a/cataloguing/addbiblio.pl b/cataloguing/addbiblio.pl index d9a20c0..6d083d6 100755 --- a/cataloguing/addbiblio.pl +++ b/cataloguing/addbiblio.pl @@ -22,9 +22,9 @@ use strict; #use warnings; FIXME - Bug 2505 use CGI; -use CGI::Session; +use C4::Members; use C4::Output; -use C4::Auth qw/:DEFAULT get_session/; +use C4::Auth; use C4::Biblio; use C4::Search; use C4::AuthoritiesMarc; @@ -735,11 +735,6 @@ my $fa_branch = $input->param('branch'); my $fa_stickyduedate = $input->param('stickyduedate'); my $fa_duedatespec = $input->param('duedatespec'); -# getting userID -my $sessionID = $input->cookie("CGISESSID") ; -my $session = get_session($sessionID); -my $userid = $session->param('id'); - # getting validation variables my $validation = C4::Context->preference('CatalogingValidation'); my $validationframework = C4::Context->preference('CatalogingValidationFramework'); @@ -764,9 +759,12 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); +my $uid = GetMember( borrowernumber => $loggedinuser )->{userid} if ($loggedinuser); +my $validationpermission = haspermission($uid, {'editcatalogue' => 'cataloging_validation_framework'}); + # Clear the framework code if validation is on and the framework code is equal to validation framework but the user is not authorized to use it # Avoid users to user validation framework adding the code to the URL -$frameworkcode = '' if ($validation && ($frameworkcode eq $validationframework && !$validationusers{$userid})); +$frameworkcode = '' if ($validation && ($frameworkcode eq $validationframework && !$validationpermission)); if ($frameworkcode eq 'FA'){ # We need to grab and set some variables in the template for use on the additems screen @@ -793,7 +791,7 @@ foreach my $thisframeworkcode ( keys %$frameworks ) { } # Add the framework code if validation is off. # Add the framework code if validation is on, the framework code is equal to validation framework and the user is not authorized to use it - if (!$validation || ($validation && ($thisframeworkcode ne $validationframework || ($thisframeworkcode eq $validationframework && $validationusers{$userid})))) { + if (!$validation || ($validation && ($thisframeworkcode ne $validationframework || ($thisframeworkcode eq $validationframework && $validationpermission)))) { push @frameworkcodeloop, \%row; } } diff --git a/cataloguing/addbooks.pl b/cataloguing/addbooks.pl index 8d16319..40e6b98 100755 --- a/cataloguing/addbooks.pl +++ b/cataloguing/addbooks.pl @@ -27,8 +27,8 @@ use strict; use warnings; use CGI; -use CGI::Session; -use C4::Auth qw/:DEFAULT get_session/; +use C4::Members; +use C4::Auth; use C4::Biblio; use C4::Breeding; use C4::Output; @@ -37,15 +37,9 @@ use C4::Search; my $input = new CGI; -# getting userID -my $sessionID = $input->cookie("CGISESSID"); -my $session = get_session($sessionID); -my $userid = $session->param('id'); - # getting validation variables my $validation = C4::Context->preference('CatalogingValidation'); my $validationframework = C4::Context->preference('CatalogingValidationFramework'); -my %validationusers = map { $_ => 1 } split(/,/,C4::Context->preference('CatalogingValidationUsers')); my $success = $input->param('biblioitem'); my $query = $input->param('q'); @@ -65,17 +59,21 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); +my $uid = GetMember( borrowernumber => $loggedinuser )->{userid} if ($loggedinuser); +my $validationpermission = haspermission($uid, {'editcatalogue' => 'cataloging_validation_framework'}); + # get framework list my $frameworks = getframeworks; my @frameworkcodeloop; -foreach my $thisframeworkcode ( sort { uc($frameworks->{$a}->{'frameworktext'}) cmp uc($frameworks->{$b}->{'frameworktext'}) } keys %{$frameworks} ) { +foreach my $thisframeworkcode ( sort {$frameworks->{$a} cmp $frameworks->{$b}}keys %{$frameworks} ) { # Add the framework code if validation is off. # Add the framework code if validation is on, the framework code is equal to validation framework and the user is not authorized to use it - if (!$validation || ($validation && ($thisframeworkcode ne $validationframework || ($thisframeworkcode eq $validationframework && $validationusers{$userid})))) { - push @frameworkcodeloop, { - value => $thisframeworkcode, - frameworktext => $frameworks->{$thisframeworkcode}->{'frameworktext'}, - }; + if (!$validation || ($validation && ($thisframeworkcode ne $validationframework || ($thisframeworkcode eq $validationframework && $validationpermission)))) { + push @frameworkcodeloop, { + value => $thisframeworkcode, + frameworktext => $frameworks->{$thisframeworkcode}->{'frameworktext'}, + }; + } } diff --git a/installer/data/mysql/de-DE/mandatory/userpermissions.sql b/installer/data/mysql/de-DE/mandatory/userpermissions.sql index f203a8d..1d0738a 100644 --- a/installer/data/mysql/de-DE/mandatory/userpermissions.sql +++ b/installer/data/mysql/de-DE/mandatory/userpermissions.sql @@ -9,6 +9,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 9, 'edit_catalogue', 'Katalogdaten bearbeiten (Titel- und Exemplardaten ändern)'), ( 9, 'fast_cataloging', 'Schnellaufnahmen anlegen'), ( 9, 'edit_items', 'Exemplare bearbeiten'), + ( 9, 'cataloging_validation_framework', 'Access to the cataloguing validation framework'), (11, 'vendors_manage', 'Lieferanten verwalten'), (11, 'contracts_manage', 'Vereinbarungen verwalten'), (11, 'period_manage', 'Etats verwalten'), diff --git a/installer/data/mysql/en/mandatory/userpermissions.sql b/installer/data/mysql/en/mandatory/userpermissions.sql index 8577ef2..e4fdc7d 100644 --- a/installer/data/mysql/en/mandatory/userpermissions.sql +++ b/installer/data/mysql/en/mandatory/userpermissions.sql @@ -9,6 +9,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 9, 'edit_catalogue', 'Edit catalog (Modify bibliographic/holdings data)'), ( 9, 'fast_cataloging', 'Fast cataloging'), ( 9, 'edit_items', 'Edit Items'), + ( 9, 'cataloging_validation_framework', 'Access to the cataloguing validation framework'), (11, 'vendors_manage', 'Manage vendors'), (11, 'contracts_manage', 'Manage contracts'), (11, 'period_manage', 'Manage periods'), diff --git a/installer/data/mysql/es-ES/mandatory/userpermissions.sql b/installer/data/mysql/es-ES/mandatory/userpermissions.sql index 8577ef2..e4fdc7d 100644 --- a/installer/data/mysql/es-ES/mandatory/userpermissions.sql +++ b/installer/data/mysql/es-ES/mandatory/userpermissions.sql @@ -9,6 +9,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 9, 'edit_catalogue', 'Edit catalog (Modify bibliographic/holdings data)'), ( 9, 'fast_cataloging', 'Fast cataloging'), ( 9, 'edit_items', 'Edit Items'), + ( 9, 'cataloging_validation_framework', 'Access to the cataloguing validation framework'), (11, 'vendors_manage', 'Manage vendors'), (11, 'contracts_manage', 'Manage contracts'), (11, 'period_manage', 'Manage periods'), diff --git a/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql b/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql index 3c57a81..0e7c7f3 100644 --- a/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql +++ b/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql @@ -9,6 +9,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 9, 'edit_catalogue', 'Ajouter et modifier des notices au catalogue'), ( 9, 'fast_cataloging', 'Catalogage rapide'), ( 9, 'edit_items', 'Modifier des exemplaires'), + ( 9, 'cataloging_validation_framework', 'Access to the cataloguing validation framework'), (13, 'edit_news', 'Ecrire des nouvelles pour l''OPAC et l''interface professionnelle'), (13, 'label_creator', 'Créer des étiquettes à partir des données du catalogues et des adhérents'), (13, 'edit_calendar', 'Définir les jours de fermeture de la bibliothèque'), diff --git a/installer/data/mysql/it-IT/necessari/userpermissions.sql b/installer/data/mysql/it-IT/necessari/userpermissions.sql index 31e6e18..73a2cb3 100644 --- a/installer/data/mysql/it-IT/necessari/userpermissions.sql +++ b/installer/data/mysql/it-IT/necessari/userpermissions.sql @@ -11,6 +11,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 9, 'edit_catalogue', 'Cataloga (crea/modifica dati bibliografici e di copia)'), ( 9, 'fast_cataloging', 'Catalogazione veloce'), ( 9, 'edit_items', 'Crea/modifica copie'), + ( 9, 'cataloging_validation_framework', 'Access to the cataloguing validation framework'), (11, 'vendors_manage', 'Crea/modifica fornitori'), (11, 'contracts_manage', 'Crea/modifica contratti'), (11, 'period_manage', 'Gestisci scadenze budgets'), diff --git a/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql b/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql index 7977865..9ea42c9 100644 --- a/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql +++ b/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql @@ -29,6 +29,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 9, 'edit_catalogue', 'Endre katalogen (Endre bibliografiske poster og eksemplaropplysninger)'), ( 9, 'fast_cataloging', 'Hurtigkatalogisering'), ( 9, 'edit_items', 'Endre eksmeplarer'), + ( 9, 'cataloging_validation_framework', 'Access to the cataloguing validation framework'), (11, 'vendors_manage', 'Administrere leverandører'), (11, 'contracts_manage', 'Administrere kontrakter'), (11, 'period_manage', 'Administrere perioder'), diff --git a/installer/data/mysql/pl-PL/mandatory/userpermissions.sql b/installer/data/mysql/pl-PL/mandatory/userpermissions.sql index 02b2551..058482a 100644 --- a/installer/data/mysql/pl-PL/mandatory/userpermissions.sql +++ b/installer/data/mysql/pl-PL/mandatory/userpermissions.sql @@ -9,6 +9,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 9, 'edit_catalogue', 'Edit catalogue'), ( 9, 'fast_cataloging', 'Szybkie katalogowanie'), ( 9, 'edit_items', 'Edit Items'), + ( 9, 'cataloging_validation_framework', 'Access to the cataloguing validation framework'), (11, 'vendors_manage', 'Zarządzanei dostawcami'), (11, 'contracts_manage', 'Zarządzanie kontraktami'), (11, 'period_manage', 'Manage periods'), diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index 29c9c7a..9829aef 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -423,4 +423,3 @@ INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES(' INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('FinesIncludeGracePeriod','1','If enabled, fines calculations will include the grace period.',NULL,'YesNo'); INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('CatalogingValidation', '0','Active cataloging validation',NULL,'YesNo'); INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('CatalogingValidationFramework','','Cataloging validation framework',NULL,'long'); -INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('CatalogingValidationUsers', '','Cataloging validation users',NULL,'long'); diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 0821c8b..516bbb7 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -6536,7 +6536,7 @@ $DBversion = '3.11.00.XXX'; if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('CatalogingValidation', '0','Active cataloging validation',NULL,'YesNo');"); $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('CatalogingValidationFramework','','Cataloging validation framework',NULL,'long');"); - $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('CatalogingValidationUsers', '','Cataloging validation users',NULL,'long');"); + $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES ( 9, 'cataloging_validation_framework', 'Access to the cataloguing validation framework');"); print "Upgrade to $DBversion done (Bug 9163 - Cataloguing validation workflow)\n"; SetVersion($DBversion); } 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 045b63f..9bbccfe 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 @@ -189,8 +189,3 @@ Cataloging: - pref: CatalogingValidationFramework class: long - "
NOTE:
- CatalogingValidation needs to be on.
- The framework needs to be created in the MARC frameworks administration panel.
- The framework needs to have suppress subfield visible." - - - - "The following users (list comma separated) will have access to validation framework:" - - pref: CatalogingValidationUsers - class: long - - "
NOTE:
- CatalogingValidation needs to be on." -- 1.7.10.4