Bugzilla – Attachment 16943 Details for
Bug 8435
new permissions on subscriptions "superserials"
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 8435: If IndependantBranches is on, Serials can't be manage from others libraries
Bug-8435-If-IndependantBranches-is-on-Serials-cant.patch (text/plain), 28.47 KB, created by
Jonathan Druart
on 2013-03-27 15:55:07 UTC
(
hide
)
Description:
Bug 8435: If IndependantBranches is on, Serials can't be manage from others libraries
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2013-03-27 15:55:07 UTC
Size:
28.47 KB
patch
obsolete
>From 2e10417bd07db8b987dccc200376e2c31e1f8bb4 Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@biblibre.com> >Date: Mon, 12 Nov 2012 14:15:42 +0100 >Subject: [PATCH] Bug 8435: If IndependantBranches is on, Serials can't be > manage from others libraries > >In the serial module, we want to hide serials from others libraries. >New permission 'superserials'. If a patron have this permission, he can >override this restriction. > >Test plan: >- Switch on the IndependantBranches syspref >- Add the permission 'superserials' for a patron and test you can > navigate and see all serials >- Remove this permission and test you cannot manage/view subscriptions > from others libraries > >Signed-off-by: Frederic Durand <frederic.durand@unilim.fr> >Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de> >--- > C4/Auth.pm | 4 +- > C4/Serials.pm | 116 +++++++++----------- > .../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 + > .../ru-RU/mandatory/permissions_and_user_flags.sql | 1 + > .../uk-UA/mandatory/permissions_and_user_flags.sql | 1 + > installer/data/mysql/updatedatabase.pl | 10 ++ > .../prog/en/modules/serials/serials-search.tt | 10 +- > serials/serials-collection.pl | 4 +- > serials/serials-edit.pl | 1 + > serials/serials-search.pl | 6 +- > serials/subscription-add.pl | 17 ++- > serials/subscription-detail.pl | 33 ++---- > 18 files changed, 104 insertions(+), 106 deletions(-) > >diff --git a/C4/Auth.pm b/C4/Auth.pm >index ca061b5..e5cefa7 100644 >--- a/C4/Auth.pm >+++ b/C4/Auth.pm >@@ -1573,7 +1573,6 @@ sub getuserflags { > $userflags->{$flag} = 0; > } > } >- > # get subpermissions and merge with top-level permissions > my $user_subperms = get_user_subpermissions($userid); > foreach my $module (keys %$user_subperms) { >@@ -1669,7 +1668,8 @@ sub haspermission { > my ($userid, $flagsrequired) = @_; > my $sth = C4::Context->dbh->prepare("SELECT flags FROM borrowers WHERE userid=?"); > $sth->execute($userid); >- my $flags = getuserflags($sth->fetchrow(), $userid); >+ my $row = $sth->fetchrow(); >+ my $flags = getuserflags($row, $userid); > if ( $userid eq C4::Context->config('user') ) { > # Super User Account from /etc/koha.conf > $flags->{'superlibrarian'} = 1; >diff --git a/C4/Serials.pm b/C4/Serials.pm >index b8b53ed..4649dae 100644 >--- a/C4/Serials.pm >+++ b/C4/Serials.pm >@@ -20,6 +20,7 @@ package C4::Serials; > > use strict; > use warnings; >+use C4::Context; > use C4::Dates qw(format_date format_date_in_iso); > use Date::Calc qw(:all); > use POSIX qw(strftime); >@@ -215,15 +216,7 @@ sub GetSerialInformation { > my ($serialid) = @_; > my $dbh = C4::Context->dbh; > my $query = qq| >- SELECT serial.*, serial.notes as sernotes, serial.status as serstatus,subscription.*,subscription.subscriptionid as subsid |; >- if ( C4::Context->preference('IndependantBranches') >- && C4::Context->userenv >- && C4::Context->userenv->{'flags'} != 1 >- && C4::Context->userenv->{'branch'} ) { >- $query .= " >- , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit "; >- } >- $query .= qq| >+ SELECT serial.*, serial.notes as sernotes, serial.status as serstatus,subscription.*,subscription.subscriptionid as subsid > FROM serial LEFT JOIN subscription ON subscription.subscriptionid=serial.subscriptionid > WHERE serialid = ? > |; >@@ -262,6 +255,7 @@ sub GetSerialInformation { > $data->{ "status" . $data->{'serstatus'} } = 1; > $data->{'subscriptionexpired'} = HasSubscriptionExpired( $data->{'subscriptionid'} ) && $data->{'status'} == 1; > $data->{'abouttoexpire'} = abouttoexpire( $data->{'subscriptionid'} ); >+ $data->{cannotedit} = not can_edit_subscription( $data ); > return $data; > } > >@@ -320,15 +314,7 @@ sub GetSubscription { > subscriptionhistory.*, > aqbooksellers.name AS aqbooksellername, > biblio.title AS bibliotitle, >- subscription.biblionumber as bibnum); >- if ( C4::Context->preference('IndependantBranches') >- && C4::Context->userenv >- && C4::Context->userenv->{'flags'} != 1 >- && C4::Context->userenv->{'branch'} ) { >- $query .= " >- , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit "; >- } >- $query .= qq( >+ subscription.biblionumber as bibnum > FROM subscription > LEFT JOIN subscriptionhistory ON subscription.subscriptionid=subscriptionhistory.subscriptionid > LEFT JOIN aqbooksellers ON subscription.aqbooksellerid=aqbooksellers.id >@@ -336,16 +322,12 @@ sub GetSubscription { > WHERE subscription.subscriptionid = ? > ); > >- # if (C4::Context->preference('IndependantBranches') && >- # C4::Context->userenv && >- # C4::Context->userenv->{'flags'} != 1){ >- # # $debug and warn "flags: ".C4::Context->userenv->{'flags'}; >- # $query.=" AND subscription.branchcode IN ('".C4::Context->userenv->{'branch'}."',\"\")"; >- # } > $debug and warn "query : $query\nsubsid :$subscriptionid"; > my $sth = $dbh->prepare($query); > $sth->execute($subscriptionid); >- return $sth->fetchrow_hashref; >+ my $subscription = $sth->fetchrow_hashref; >+ $subscription->{cannotedit} = not can_edit_subscription( $subscription ); >+ return $subscription; > } > > =head2 GetFullSubscription >@@ -369,15 +351,7 @@ sub GetFullSubscription { > aqbooksellers.name as aqbooksellername, > biblio.title as bibliotitle, > subscription.branchcode AS branchcode, >- subscription.subscriptionid AS subscriptionid |; >- if ( C4::Context->preference('IndependantBranches') >- && C4::Context->userenv >- && C4::Context->userenv->{'flags'} != 1 >- && C4::Context->userenv->{'branch'} ) { >- $query .= " >- , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit "; >- } >- $query .= qq| >+ subscription.subscriptionid AS subscriptionid > FROM serial > LEFT JOIN subscription ON > (serial.subscriptionid=subscription.subscriptionid ) >@@ -391,7 +365,11 @@ sub GetFullSubscription { > $debug and warn "GetFullSubscription query: $query"; > my $sth = $dbh->prepare($query); > $sth->execute($subscriptionid); >- return $sth->fetchall_arrayref( {} ); >+ my $subscriptions = $sth->fetchall_arrayref( {} ); >+ for my $subscription ( @$subscriptions ) { >+ $subscription->{cannotedit} = not can_edit_subscription( $subscription ); >+ } >+ return $subscriptions; > } > > =head2 PrepareSerialsData >@@ -489,13 +467,6 @@ sub GetSubscriptionsFromBiblionumber { > $subs->{ "periodicity" . $subs->{periodicity} } = 1; > $subs->{ "numberpattern" . $subs->{numberpattern} } = 1; > $subs->{ "status" . $subs->{'status'} } = 1; >- $subs->{'cannotedit'} = >- ( C4::Context->preference('IndependantBranches') >- && C4::Context->userenv >- && C4::Context->userenv->{flags} % 2 != 1 >- && C4::Context->userenv->{branch} >- && $subs->{branchcode} >- && ( C4::Context->userenv->{branch} ne $subs->{branchcode} ) ); > > if ( $subs->{enddate} eq '0000-00-00' ) { > $subs->{enddate} = ''; >@@ -504,6 +475,7 @@ sub GetSubscriptionsFromBiblionumber { > } > $subs->{'abouttoexpire'} = abouttoexpire( $subs->{'subscriptionid'} ); > $subs->{'subscriptionexpired'} = HasSubscriptionExpired( $subs->{'subscriptionid'} ); >+ $subs->{cannotedit} = not can_edit_subscription( $subs ); > push @res, $subs; > } > return \@res; >@@ -529,16 +501,7 @@ sub GetFullSubscriptionsFromBiblionumber { > year(IF(serial.publisheddate="00-00-0000",serial.planneddate,serial.publisheddate)) as year, > biblio.title as bibliotitle, > subscription.branchcode AS branchcode, >- subscription.subscriptionid AS subscriptionid|; >- if ( C4::Context->preference('IndependantBranches') >- && C4::Context->userenv >- && C4::Context->userenv->{'flags'} != 1 >- && C4::Context->userenv->{'branch'} ) { >- $query .= " >- , ((subscription.branchcode <>\"" . C4::Context->userenv->{'branch'} . "\") and subscription.branchcode <>\"\" and subscription.branchcode IS NOT NULL) as cannotedit "; >- } >- >- $query .= qq| >+ subscription.subscriptionid AS subscriptionid > FROM serial > LEFT JOIN subscription ON > (serial.subscriptionid=subscription.subscriptionid) >@@ -551,7 +514,11 @@ sub GetFullSubscriptionsFromBiblionumber { > |; > my $sth = $dbh->prepare($query); > $sth->execute($biblionumber); >- return $sth->fetchall_arrayref( {} ); >+ my $subscriptions = $sth->fetchall_arrayref( {} ); >+ for my $subscription ( @$subscriptions ) { >+ $subscription->{cannotedit} = not can_edit_subscription( $subscription ); >+ } >+ return $subscriptions; > } > > =head2 GetSubscriptions >@@ -626,19 +593,11 @@ sub GetSubscriptions { > $debug and warn "GetSubscriptions query: $sql params : ", join( " ", @bind_params ); > $sth = $dbh->prepare($sql); > $sth->execute(@bind_params); >- my @results; >- >- while ( my $line = $sth->fetchrow_hashref ) { >- $line->{'cannotedit'} = >- ( C4::Context->preference('IndependantBranches') >- && C4::Context->userenv >- && C4::Context->userenv->{flags} % 2 != 1 >- && C4::Context->userenv->{branch} >- && $line->{branchcode} >- && ( C4::Context->userenv->{branch} ne $line->{branchcode} ) ); >- push @results, $line; >- } >- return @results; >+ my $subscriptions = $sth->fetchall_arrayref( {} ); >+ for my $subscription ( @$subscriptions ) { >+ $subscription->{cannotedit} = not can_edit_subscription( $subscription ); >+ } >+ return @$subscriptions; > } > > =head2 SearchSubscriptions >@@ -716,6 +675,13 @@ sub SearchSubscriptions { > my $results = $sth->fetchall_arrayref( {} ); > $sth->finish; > >+ for my $subscription ( @$results ) { >+ $subscription->{cannotedit} = not can_edit_subscription( $subscription ); >+ $subscription->{cannotdisplay} = >+ ( C4::Context->preference("IndependantBranches") >+ and $subscription->{branchcode} ne C4::Context->userenv->{'branch'} ) ? 1 : 0; >+ } >+ > return @$results; > } > >@@ -2555,6 +2521,24 @@ sub subscriptionCurrentlyOnOrder { > return $sth->fetchrow_array; > } > >+sub can_edit_subscription { >+ my ( $subscription, $userid ) = @_; >+ my $flags = C4::Context->userenv->{flags}; >+ $userid ||= C4::Context->userenv->{'id'}; >+ my $independant_branches = C4::Context->preference('IndependantBranches'); >+ return 1 unless $independant_branches; >+ if( $flags % 2 == 1 >+ or C4::Auth::haspermission( $userid, {serials => 'superserials'}), >+ or C4::Auth::haspermission( $userid, {serials => 'edit_subscription'}), >+ or not defined $subscription->{branchcode} >+ or $subscription->{branchcode} eq '' >+ or $subscription->{branchcode} eq C4::Context->userenv->{'branch'} >+ ) { >+ return 1; >+ } >+ return 0; >+} >+ > 1; > __END__ > >diff --git a/installer/data/mysql/de-DE/mandatory/userpermissions.sql b/installer/data/mysql/de-DE/mandatory/userpermissions.sql >index 65cd635..19b3207 100644 >--- a/installer/data/mysql/de-DE/mandatory/userpermissions.sql >+++ b/installer/data/mysql/de-DE/mandatory/userpermissions.sql >@@ -51,6 +51,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES > (15, 'receive_serials', 'Zugang von Heften'), > (15, 'renew_subscription', 'Abonnements verlängern'), > (15, 'routing', 'Umlauflisten verwalten'), >+ (15, 'superserials', 'Manage subscriptions from any branch (only applies when IndependantBranches is used)'), > (16, 'execute_reports', 'SQL-Reports ausführen'), > (16, 'create_reports', 'SQL-Reports erstellen'), > (19, 'manage', 'Manage plugins ( install / uninstall )'), >diff --git a/installer/data/mysql/en/mandatory/userpermissions.sql b/installer/data/mysql/en/mandatory/userpermissions.sql >index 124e030..0623bef 100644 >--- a/installer/data/mysql/en/mandatory/userpermissions.sql >+++ b/installer/data/mysql/en/mandatory/userpermissions.sql >@@ -51,6 +51,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES > (15, 'receive_serials', 'Serials receiving'), > (15, 'renew_subscription', 'Renew a subscription'), > (15, 'routing', 'Routing'), >+ (15, 'superserials', 'Manage subscriptions from any branch (only applies when IndependantBranches is used)'), > (16, 'execute_reports', 'Execute SQL reports'), > (16, 'create_reports', 'Create SQL Reports'), > (19, 'manage', 'Manage plugins ( install / uninstall )'), >diff --git a/installer/data/mysql/es-ES/mandatory/userpermissions.sql b/installer/data/mysql/es-ES/mandatory/userpermissions.sql >index 124e030..0623bef 100644 >--- a/installer/data/mysql/es-ES/mandatory/userpermissions.sql >+++ b/installer/data/mysql/es-ES/mandatory/userpermissions.sql >@@ -51,6 +51,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES > (15, 'receive_serials', 'Serials receiving'), > (15, 'renew_subscription', 'Renew a subscription'), > (15, 'routing', 'Routing'), >+ (15, 'superserials', 'Manage subscriptions from any branch (only applies when IndependantBranches is used)'), > (16, 'execute_reports', 'Execute SQL reports'), > (16, 'create_reports', 'Create SQL Reports'), > (19, 'manage', 'Manage plugins ( install / uninstall )'), >diff --git a/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql b/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql >index 0c4a61b..94120be 100644 >--- a/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql >+++ b/installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql >@@ -51,6 +51,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES > (15, 'receive_serials', 'Bulletiner les périodiques'), > (15, 'renew_subscription', 'Renouveler les abonnements'), > (15, 'routing', 'Mettre en circulation'), >+ (15, 'superserials', 'Manage subscriptions from any branch (only applies when IndependantBranches is used)'), > (16, 'execute_reports', 'Lancer les rapports SQL'), > (16, 'create_reports', 'Créer les rapports SQL Reports'), > (19, 'manage', 'Manage plugins ( install / uninstall )'), >diff --git a/installer/data/mysql/it-IT/necessari/userpermissions.sql b/installer/data/mysql/it-IT/necessari/userpermissions.sql >index c0244f6..6847032 100644 >--- a/installer/data/mysql/it-IT/necessari/userpermissions.sql >+++ b/installer/data/mysql/it-IT/necessari/userpermissions.sql >@@ -53,6 +53,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES > (15, 'receive_serials', 'Ricevi fascicoli'), > (15, 'renew_subscription', 'Rinnova un abbonamento'), > (15, 'routing', 'Crea/Manipola liste di distribuzione dei fascicoli ( routing list)'), >+ (15, 'superserials', 'Manage subscriptions from any branch (only applies when IndependantBranches is used)'), > (16, 'execute_reports', 'Esegui reports SQL'), > (16, 'create_reports', 'Crea reports SQL'), > (19, 'manage', 'Manage plugins ( install / uninstall )'), >diff --git a/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql b/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql >index 0b3c34f..168378e 100644 >--- a/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql >+++ b/installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql >@@ -71,6 +71,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES > (15, 'receive_serials', 'Heftemottak'), > (15, 'renew_subscription', 'Fornye abonnementer'), > (15, 'routing', 'Sirkulasjon'), >+ (15, 'superserials', 'Manage subscriptions from any branch (only applies when IndependantBranches is used)'), > (16, 'execute_reports', 'Kjøre SQL-rapporter'), > (16, 'create_reports', 'Opprette SQL-rapporter'), > (19, 'manage', 'Manage plugins ( install / uninstall )'), >diff --git a/installer/data/mysql/pl-PL/mandatory/userpermissions.sql b/installer/data/mysql/pl-PL/mandatory/userpermissions.sql >index a51e20b..f298410 100644 >--- a/installer/data/mysql/pl-PL/mandatory/userpermissions.sql >+++ b/installer/data/mysql/pl-PL/mandatory/userpermissions.sql >@@ -52,6 +52,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES > (15, 'receive_serials', 'Serials receiving'), > (15, 'renew_subscription', 'Renew a subscription'), > (15, 'routing', 'Routing'), >+ (15, 'superserials', 'Manage subscriptions from any branch (only applies when IndependantBranches is used)'), > (16, 'execute_reports', 'Execute SQL reports'), > (16, 'create_reports', 'Create SQL Reports'), > (19, 'manage', 'Manage plugins ( install / uninstall )'), >diff --git a/installer/data/mysql/ru-RU/mandatory/permissions_and_user_flags.sql b/installer/data/mysql/ru-RU/mandatory/permissions_and_user_flags.sql >index cb62c49..fc6592b 100644 >--- a/installer/data/mysql/ru-RU/mandatory/permissions_and_user_flags.sql >+++ b/installer/data/mysql/ru-RU/mandatory/permissions_and_user_flags.sql >@@ -76,6 +76,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES > (15, 'receive_serials', 'Serials receiving'), > (15, 'renew_subscription', 'Renew a subscription'), > (15, 'routing', 'Routing'), >+ (15, 'superserials', 'Manage subscriptions from any branch (only applies when IndependantBranches is used)'), > (16, 'execute_reports', 'Execute SQL reports'), > (16, 'create_reports', 'Create SQL Reports'), > (19, 'manage', 'Manage plugins ( install / uninstall )'), >diff --git a/installer/data/mysql/uk-UA/mandatory/permissions_and_user_flags.sql b/installer/data/mysql/uk-UA/mandatory/permissions_and_user_flags.sql >index 5609c0d..cfa68c1 100644 >--- a/installer/data/mysql/uk-UA/mandatory/permissions_and_user_flags.sql >+++ b/installer/data/mysql/uk-UA/mandatory/permissions_and_user_flags.sql >@@ -76,6 +76,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES > (15, 'receive_serials', 'Serials receiving'), > (15, 'renew_subscription', 'Renew a subscription'), > (15, 'routing', 'Routing'), >+ (15, 'superserials', 'Manage subscriptions from any branch (only applies when IndependantBranches is used)'), > (16, 'execute_reports', 'Execute SQL reports'), > (16, 'create_reports', 'Create SQL Reports'), > (19, 'manage', 'Manage plugins ( install / uninstall )'), >diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl >index 1aee659..acb61f5 100755 >--- a/installer/data/mysql/updatedatabase.pl >+++ b/installer/data/mysql/updatedatabase.pl >@@ -6749,6 +6749,16 @@ if ( CheckVersion($DBversion) ) { > } > > >+ >+ >+ >+$DBversion = "3.11.00.XXX"; >+if ( CheckVersion($DBversion) ) { >+ $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES(15, 'superserials', 'Manage subscriptions from any branch (only applies when IndependantBranches is used)')"); >+ print "Upgrade to $DBversion done (Add superserials permission)\n"; >+ SetVersion($DBversion); >+} >+ > =head1 FUNCTIONS > > =head2 TableExists($table) >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt >index 0c937bf..8609027 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-search.tt >@@ -141,6 +141,7 @@ > </tfoot> > <tbody> > [% FOREACH subscription IN openedsubscriptions %] >+ [% UNLESS subscription.cannotdisplay %] > <tr> > <td> > [% IF ( subscription.issn ) %][% subscription.issn %] >@@ -177,13 +178,12 @@ > <td><a href="/cgi-bin/koha/serials/serials-collection.pl?subscriptionid=[% subscription.subscriptionid %]">Issue history</a> > </td> > <td> >- [% IF ( subscription.cannotedit ) %] >- >- [% ELSE %] >- [% IF ( CAN_user_serials_receive_serials ) %]<a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscription.subscriptionid %]&serstatus=1,3,7">Serial receive</a>[% END %] >+ [% IF ( CAN_user_serials_receive_serials ) %] >+ <a href="/cgi-bin/koha/serials/serials-edit.pl?subscriptionid=[% subscription.subscriptionid %]&serstatus=1,3,7">Serial receive</a> > [% END %] > </td> > </tr> >+ [% END %] > [% END %] > </tbody> > </table> >@@ -218,6 +218,7 @@ > </tfoot> > <tbody> > [% FOREACH subscription IN closedsubscriptions %] >+ [% UNLESS subscription.cannotdisplay %] > <tr> > <td> > [% IF ( subscription.issn ) %] >@@ -249,6 +250,7 @@ > </td> > </tr> > [% END %] >+ [% END %] > </tbody> > </table> > [% ELSE %] >diff --git a/serials/serials-collection.pl b/serials/serials-collection.pl >index ad57e07..7e53a3b 100755 >--- a/serials/serials-collection.pl >+++ b/serials/serials-collection.pl >@@ -37,8 +37,7 @@ my $op = $query->param('op') || q{}; > my $nbissues=$query->param('nbissues'); > my $dbh = C4::Context->dbh; > >-my ($template, $loggedinuser, $cookie); >-($template, $loggedinuser, $cookie) >+my ($template, $loggedinuser, $cookie) > = get_template_and_user({template_name => "serials/serials-collection.tmpl", > query => $query, > type => "intranet", >@@ -105,6 +104,7 @@ if (@subscriptionid){ > foreach my $subscriptionid (@subscriptionid){ > my $subs= GetSubscription($subscriptionid); > $closed = 1 if $subs->{closed}; >+ > $subs->{opacnote} =~ s/\n/\<br\/\>/g; > $subs->{missinglist} =~ s/\n/\<br\/\>/g; > $subs->{recievedlist} =~ s/\n/\<br\/\>/g; >diff --git a/serials/serials-edit.pl b/serials/serials-edit.pl >index 66d3a4e..89bab3e 100755 >--- a/serials/serials-edit.pl >+++ b/serials/serials-edit.pl >@@ -134,6 +134,7 @@ foreach my $serialid (@serialids) { > && !$processedserialid{$serialid} ) > { > my $serinfo = GetSerialInformation($serialid); #TODO duplicates work done by GetSerials2 above >+ > for my $d ( qw( publisheddate planneddate )){ > if ( $serinfo->{$d} =~m/^00/ ) { > $serinfo->{$d} = q{}; >diff --git a/serials/serials-search.pl b/serials/serials-search.pl >index bc84ed6..552500e 100755 >--- a/serials/serials-search.pl >+++ b/serials/serials-search.pl >@@ -96,9 +96,11 @@ if ($routing) { > my (@openedsubscriptions, @closedsubscriptions); > for my $sub ( @subscriptions ) { > unless ( $sub->{closed} ) { >- push @openedsubscriptions, $sub; >+ push @openedsubscriptions, $sub >+ unless $sub->{cannotdisplay}; > } else { >- push @closedsubscriptions, $sub; >+ push @closedsubscriptions, $sub >+ unless $sub->{cannotdisplay}; > } > } > >diff --git a/serials/subscription-add.pl b/serials/subscription-add.pl >index 10bccd1..9a42468 100755 >--- a/serials/subscription-add.pl >+++ b/serials/subscription-add.pl >@@ -69,7 +69,8 @@ if ($op eq 'modify' || $op eq 'dup' || $op eq 'modsubscription') { > > my $subscriptionid = $query->param('subscriptionid'); > $subs = GetSubscription($subscriptionid); >-## FIXME : Check rights to edit if mod. Could/Should display an error message. >+ >+ ## FIXME : Check rights to edit if mod. Could/Should display an error message. > if ($subs->{'cannotedit'} && $op eq 'modify'){ > carp "Attempt to modify subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed"; > print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid"); >@@ -120,10 +121,16 @@ if ($op eq 'modify' || $op eq 'dup' || $op eq 'modsubscription') { > } > } > >-my $onlymine=C4::Context->preference('IndependantBranches') && >- C4::Context->userenv && >- C4::Context->userenv->{flags} % 2 !=1 && >- C4::Context->userenv->{branch}; >+my $userenv = C4::Context->userenv; >+my $onlymine = >+ C4::Context->preference('IndependantBranches') >+ && $userenv >+ && $userenv->{flags} % 2 != 1 >+ && ( >+ not C4::Auth::haspermission( $userenv->{id}, { serials => 'superserials' } ) >+ ) >+ && $userenv->{branch}; >+ > my $branches = GetBranches($onlymine); > my $branchloop; > for my $thisbranch (sort { $branches->{$a}->{branchname} cmp $branches->{$b}->{branchname} } keys %{$branches}) { >diff --git a/serials/subscription-detail.pl b/serials/subscription-detail.pl >index 8bfee43..b34caf8 100755 >--- a/serials/subscription-detail.pl >+++ b/serials/subscription-detail.pl >@@ -34,7 +34,6 @@ my $query = new CGI; > my $op = $query->param('op') || q{}; > my $issueconfirmed = $query->param('issueconfirmed'); > my $dbh = C4::Context->dbh; >-my ($template, $loggedinuser, $cookie, $hemisphere); > my $subscriptionid = $query->param('subscriptionid'); > > if ( $op and $op eq "close" ) { >@@ -43,29 +42,13 @@ if ( $op and $op eq "close" ) { > C4::Serials::ReopenSubscription( $subscriptionid ); > } > >-my $subs = GetSubscription($subscriptionid); >- >-$subs->{enddate} = GetExpirationDate($subscriptionid); >- >-if ($op && $op eq 'del') { >- if ($subs->{'cannotedit'}){ >- carp "Attempt to delete subscription $subscriptionid by ".C4::Context->userenv->{'id'}." not allowed"; >- print $query->redirect("/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=$subscriptionid"); >- } >- DelSubscription($subscriptionid); >- print "Content-Type: text/html\n\n<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=serials-home.pl\"></html>"; >- exit; >-} >- >-my ($totalissues,@serialslist) = GetSerials($subscriptionid); >-$totalissues-- if $totalissues; # the -1 is to have 0 if this is a new subscription (only 1 issue) > # the subscription must be deletable if there is NO issues for a reason or another (should not happend, but...) > > # Permission needed if it is a deletion (del) : delete_subscription > # Permission needed otherwise : * > my $permission = ($op eq "del") ? "delete_subscription" : "*"; > >-($template, $loggedinuser, $cookie) >+my ($template, $loggedinuser, $cookie) > = get_template_and_user({template_name => "serials/subscription-detail.tmpl", > query => $query, > type => "intranet", >@@ -74,7 +57,12 @@ my $permission = ($op eq "del") ? "delete_subscription" : "*"; > debug => 1, > }); > >-$$subs{enddate} ||= GetExpirationDate($subscriptionid); >+ >+my $subs = GetSubscription($subscriptionid); >+$subs->{enddate} ||= GetExpirationDate($subscriptionid); >+ >+my ($totalissues,@serialslist) = GetSerials($subscriptionid); >+$totalissues-- if $totalissues; # the -1 is to have 0 if this is a new subscription (only 1 issue) > > if ($op eq 'del') { > if ($$subs{'cannotedit'}){ >@@ -161,12 +149,7 @@ $template->param( > hasRouting => $hasRouting, > routing => C4::Context->preference("RoutingSerials"), > totalissues => $totalissues, >- hemisphere => $hemisphere, >- cannotedit =>(C4::Context->preference('IndependantBranches') && >- C4::Context->userenv && >- C4::Context->userenv->{flags} % 2 !=1 && >- C4::Context->userenv->{branch} && $subs->{branchcode} && >- (C4::Context->userenv->{branch} ne $subs->{branchcode})), >+ cannotedit => (not C4::Serials::can_edit_subscription( $subs )), > 'periodicity' . $subs->{periodicity} => 1, > 'arrival' . $subs->{dow} => 1, > 'numberpattern' . $subs->{numberpattern} => 1, >-- >1.7.10.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 8435
:
10821
|
11377
|
11411
|
11892
|
13396
|
15673
|
16404
|
16462
|
16740
|
16750
|
16751
|
16798
|
16799
|
16801
|
16802
|
16803
|
16943
|
16944
|
19260
|
19261
|
19266
|
19268
|
20536
|
21286
|
21287
|
21288
|
21289
|
22624
|
22625
|
22626
|
22627
|
22628